:root{--logo-charcoal: #2F3438;--copper: #B87333;--copper-ink: #89501F;--copper-wash: #FAF1E9;--brand: #0F6B4F;--brand-strong: #0B503B;--brand-soft: #A9CABB;--brand-wash: #EDF5F1;--canvas: #FFFFFF;--surface: #FFFFFF;--surface-pure: #FFFFFF;--surface-sunk: #F4F5F5;--surface-hover: #EDF5F1;--ink: #2F3438;--ink-soft: #596166;--ink-faint: #626B70;--ink-inverse: #FFFFFF;--line: #DEE2E3;--line-strong: #AEB8B5;--positive: #0F6B4F;--positive-wash: #EDF5F1;--negative: #B23B3B;--negative-wash: #FBEDED;--warning: #8A5A00;--warning-wash: #FAF1DD;--info: #2F3438;--info-wash: #F1F3F3;--neutral: #626B70;--disabled: #D5DADA;--chart-1: #0F6B4F;--chart-2: #B87333;--chart-3: #2F3438;--chart-4: #567D6D;--chart-5: #89501F;--chart-6: #818B90;--sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;--logo: "Nunito", var(--sans);--size-1: .72rem;--size-2: .78rem;--size-3: .86rem;--size-4: .95rem;--size-5: 1.1rem;--size-6: 1.35rem;--size-7: 1.75rem;--size-8: 2.25rem;--weight-regular: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--leading-tight: 1.2;--leading-normal: 1.5;--leading-relaxed: 1.65;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-7: 2rem;--space-8: 2.5rem;--space-9: 3rem;--space-10: 4rem;--radius-xs: 4px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--radius-pill: 999px;--shadow-raise-1: -2px -2px 5px rgba(255, 255, 255, .85), 3px 3px 7px rgba(47, 52, 56, .14);--shadow-raise-2: -3px -3px 8px rgba(255, 255, 255, .9), 5px 5px 14px rgba(47, 52, 56, .18);--shadow-float: -4px -4px 12px rgba(255, 255, 255, .75), 10px 14px 32px rgba(47, 52, 56, .22);--shadow-inset: inset 2px 2px 5px rgba(47, 52, 56, .18), inset -2px -2px 4px rgba(255, 255, 255, .9);--shadow-press: inset 1px 1px 3px rgba(47, 52, 56, .22), inset -1px -1px 2px rgba(255, 255, 255, .6);--shadow-focus: 0 0 0 3px rgba(15, 107, 79, .25);--shadow-focus-strong: 0 0 0 3px rgba(15, 107, 79, .4);--dur-1: .12s;--dur-2: .18s;--dur-3: .24s;--ease-standard: cubic-bezier(.2, 0, 0, 1);--ease-emphasised: cubic-bezier(.3, 0, 0, 1);--sidebar-w: 240px;--sidebar-w-collapsed: 68px;--topbar-h: 64px;--content-max: 1320px;--content-pad: var(--space-7);--z-base: 1;--z-topbar: 20;--z-sidebar: 30;--z-popover: 50;--z-dialog: 60;--z-toast: 70}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--canvas);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:var(--leading-normal);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4,h5{margin:0;font-weight:var(--weight-semibold);letter-spacing:-.015em;color:var(--ink);line-height:var(--leading-tight)}h1{font-size:var(--size-7);font-weight:var(--weight-bold);letter-spacing:-.025em}h2{font-size:var(--size-5)}h3{font-size:var(--size-4)}h4{font-size:var(--size-3);color:var(--ink-soft);text-transform:uppercase;letter-spacing:.06em;font-weight:var(--weight-semibold)}p{margin:0 0 var(--space-3)}a{color:var(--brand);text-decoration:none;transition:color var(--dur-1) var(--ease-standard)}a:hover{color:var(--brand-strong)}::selection{background:var(--brand-wash);color:var(--brand-strong)}.shell{min-height:100vh;display:grid;grid-template-columns:var(--sidebar-w) 1fr;grid-template-rows:var(--topbar-h) 1fr;grid-template-areas:"sidebar topbar" "sidebar main";background:var(--canvas)}.shell.unauthed{grid-template-columns:1fr;grid-template-rows:1fr;grid-template-areas:"main"}.sidebar{grid-area:sidebar;background:var(--surface);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:var(--space-5) var(--space-3);gap:var(--space-2);position:sticky;top:0;height:100vh;z-index:var(--z-sidebar)}.sidebar .brand{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3) var(--space-5);font-family:var(--logo);font-weight:800;font-size:var(--size-5);letter-spacing:-.02em;color:var(--ink)}.sidebar jw-brand{--wordmark-size: 1.65rem}.topbar jw-brand.mobile-brand{display:none}.nav{display:flex;flex-direction:column;gap:2px}.nav a{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);color:var(--ink-soft);font-size:var(--size-3);font-weight:var(--weight-medium);line-height:1.3;transition:background var(--dur-1) var(--ease-standard),color var(--dur-1) var(--ease-standard)}.nav a:hover{color:var(--ink);background:var(--surface-hover);text-decoration:none}.nav a.active{background:var(--surface-pure);color:var(--brand-strong);box-shadow:var(--shadow-raise-1)}.nav a lucide-icon,.nav a .icon{flex-shrink:0;color:currentColor}.nav-section{margin-top:var(--space-5);padding:0 var(--space-3);font-size:var(--size-1);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);font-weight:var(--weight-semibold)}.sidebar .footer{margin-top:auto;padding-top:var(--space-5);border-top:1px solid var(--line);display:flex;flex-direction:column;gap:var(--space-2)}.topbar{grid-area:topbar;display:flex;align-items:center;gap:var(--space-4);padding:0 var(--space-7);background:var(--canvas);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:var(--z-topbar)}.topbar .spacer{flex:1}.topbar .who{display:flex;align-items:center;gap:var(--space-3);font-size:var(--size-3);color:var(--ink-soft)}.topbar .email{font-weight:var(--weight-medium);color:var(--ink)}.main{grid-area:main;overflow-y:auto}.page{width:100%;max-width:var(--content-max);margin:0 auto;padding:var(--space-7) var(--content-pad) var(--space-10)}.page-head{display:flex;align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-6)}.page-head .spacer{flex:1}.lede{color:var(--ink-soft);font-size:var(--size-4);max-width:68ch;margin:var(--space-2) 0 0}.card.flat{background:var(--surface-pure);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-5) var(--space-6);margin-bottom:var(--space-5);box-shadow:none}.card{background:var(--surface);border:1px solid transparent;border-radius:var(--radius-md);padding:var(--space-5) var(--space-6);margin-bottom:var(--space-5);box-shadow:var(--shadow-raise-1)}.card.raised{background:var(--surface-pure);box-shadow:var(--shadow-raise-2)}.card.floating{background:var(--surface-pure);box-shadow:var(--shadow-float)}.card.inset,.well{background:var(--surface-sunk);border-radius:var(--radius-md);padding:var(--space-5);box-shadow:var(--shadow-inset);border:none;margin-bottom:var(--space-5)}.card>header,.card-head{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4)}.card>header .spacer,.card-head .spacer{flex:1}.card>header h2,.card-head h2{font-size:var(--size-5);font-weight:var(--weight-semibold)}.card-note{font-size:var(--size-2);color:var(--ink-soft);margin:var(--space-4) 0 0;padding-top:var(--space-4);border-top:1px dashed var(--line);max-width:78ch;line-height:var(--leading-relaxed)}.grid{display:grid;gap:var(--space-5)}.grid.two{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}.grid.three{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.grid.four{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.grid.six{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}.stack{display:flex;flex-direction:column;gap:var(--space-4)}.row{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.kpi{background:var(--surface);border-radius:var(--radius-md);padding:var(--space-5);box-shadow:var(--shadow-raise-1);transition:transform var(--dur-2) var(--ease-standard),box-shadow var(--dur-2) var(--ease-standard);display:flex;flex-direction:column;gap:var(--space-2);min-height:120px}.kpi:hover{transform:translateY(-2px);box-shadow:var(--shadow-raise-2)}.kpi .label{font-size:var(--size-1);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);font-weight:var(--weight-semibold);display:flex;align-items:center;gap:var(--space-2)}.kpi .value{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:var(--size-6);font-weight:var(--weight-medium);letter-spacing:-.02em;color:var(--ink);line-height:1.1}.kpi .sub{font-size:var(--size-2);color:var(--ink-soft)}.kpi.accent{background:linear-gradient(135deg,var(--brand) 0%,var(--brand-strong) 100%);color:var(--ink-inverse);box-shadow:var(--shadow-raise-2)}.kpi.accent .label{color:#ffffffbf}.kpi.accent .value{color:var(--ink-inverse)}.kpi.accent .sub{color:#fffc}.kpi.good .value{color:var(--positive)}.kpi.warn .value{color:var(--warning)}.kpi.bad .value{color:var(--negative)}.kpi .icon-tile{width:36px;height:36px;border-radius:var(--radius-sm);background:var(--brand-wash);color:var(--brand-strong);display:inline-flex;align-items:center;justify-content:center;margin-left:auto}.num{font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.negative{color:var(--negative)}.positive{color:var(--positive)}.muted{color:var(--ink-faint)}.table-scroll{overflow-x:auto;margin:0 calc(var(--space-5) * -1);padding:0 var(--space-5)}table{width:100%;border-collapse:collapse;font-size:var(--size-3)}thead th{text-align:left;font-size:var(--size-1);text-transform:uppercase;letter-spacing:.07em;color:var(--ink-faint);font-weight:var(--weight-semibold);padding:var(--space-3) var(--space-3);border-bottom:1px solid var(--line-strong);background:transparent}thead th.num{text-align:right}tbody td{padding:var(--space-3);border-bottom:1px solid var(--line);vertical-align:middle;color:var(--ink)}tbody tr{transition:background var(--dur-1) var(--ease-standard)}tbody tr:hover{background:var(--surface-hover)}tbody tr:last-child td{border-bottom:none}tbody tr.subtotal td{font-weight:var(--weight-semibold);background:var(--surface-sunk)}tbody tr.subtotal:hover td{background:var(--surface-sunk)}tbody tr.total td{font-weight:var(--weight-bold);background:var(--brand-wash);border-top:2px solid var(--brand);color:var(--brand-strong)}tbody tr.total:hover td{background:var(--brand-wash)}tbody tr.muted td{color:var(--ink-faint)}.chip{display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--size-1);font-weight:var(--weight-semibold);padding:2px 10px;border-radius:var(--radius-pill);border:1px solid transparent;white-space:nowrap;text-transform:uppercase;letter-spacing:.05em;line-height:1.6}.chip .chip-x{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;margin-right:-4px;padding:0;border:none;border-radius:var(--radius-pill);background:transparent;color:inherit;font:inherit;font-size:12px;line-height:1;cursor:pointer;box-shadow:none;opacity:.7}.chip .chip-x:hover:not(:disabled){opacity:1;background:#2f34381a;box-shadow:none;transform:none;border:none}.chip.proved,.chip.ok,.chip.success{background:var(--positive-wash);color:var(--positive);border-color:#a9cabb}.chip.claimed,.chip.warning,.chip.pending{background:var(--warning-wash);color:var(--warning);border-color:#ebd9a4}.chip.conflicted,.chip.error,.chip.bad{background:var(--negative-wash);color:var(--negative);border-color:#edbcbc}.chip.bare,.chip.neutral{background:var(--surface-sunk);color:var(--ink-faint);border-color:var(--line-strong)}.chip.brand{background:var(--brand-wash);color:var(--brand-strong);border-color:var(--brand-soft)}.chip.info{background:var(--info-wash);color:var(--info);border-color:#dee2e3}.chip.plain{background:var(--surface-sunk);color:var(--ink-soft);border-color:var(--line);text-transform:none;letter-spacing:0;font-weight:var(--weight-medium)}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--neutral);margin-right:var(--space-2)}.dot.ok{background:var(--positive)}.dot.warn{background:var(--warning)}.dot.bad{background:var(--negative)}.dot.info{background:var(--info)}.dot.brand{background:var(--brand)}.tabs{display:flex;flex-wrap:wrap;gap:var(--space-1);background:var(--surface);padding:var(--space-1);border-radius:var(--radius-md);box-shadow:var(--shadow-inset);margin:0 0 var(--space-6);width:fit-content;max-width:100%}.tabs a{padding:var(--space-2) var(--space-4);font-size:var(--size-3);font-weight:var(--weight-medium);color:var(--ink-soft);white-space:nowrap;border-radius:var(--radius-sm);transition:background var(--dur-1) var(--ease-standard),color var(--dur-1) var(--ease-standard),box-shadow var(--dur-1) var(--ease-standard)}.tabs a:hover{color:var(--ink);text-decoration:none}.tabs a.active{background:var(--surface-pure);color:var(--brand-strong);box-shadow:var(--shadow-raise-1)}.tabs a.gated{margin-left:auto;color:var(--brand-strong)}.bar{height:10px;border-radius:var(--radius-pill);background:var(--surface-sunk);box-shadow:var(--shadow-inset);overflow:hidden;display:flex}.bar span{display:block;height:100%}.bar .proved{background:var(--positive)}.bar .claimed{background:var(--warning)}.bar .conflicted{background:var(--negative)}.bar .bare{background:var(--neutral)}.legend{display:flex;flex-wrap:wrap;gap:var(--space-4);margin-top:var(--space-3);font-size:var(--size-2);color:var(--ink-soft)}.legend .key{display:inline-flex;align-items:center;gap:var(--space-2)}.legend .swatch{width:10px;height:10px;border-radius:3px;display:inline-block}label.field{display:block;margin-bottom:var(--space-4);width:100%}label.field>span{display:block;font-size:var(--size-2);font-weight:var(--weight-semibold);color:var(--ink);margin-bottom:var(--space-2);letter-spacing:.01em}label.field>small{display:block;font-size:var(--size-2);color:var(--ink-faint);margin-top:var(--space-2);line-height:var(--leading-relaxed)}input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=submit]):not([type=button]):not([type=reset]):not([type=hidden]):not([type=image]):not([type=color]):not([type=range]),select,textarea{display:block;width:100%;min-height:42px;padding:10px var(--space-4);font:inherit;font-size:var(--size-3);line-height:1.4;color:var(--ink);background:var(--surface-pure);border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:inset 1px 1px 2px #2f343812,inset -1px -1px 2px #ffffffd9;transition:border-color var(--dur-1) var(--ease-standard),box-shadow var(--dur-1) var(--ease-standard),background var(--dur-1) var(--ease-standard);appearance:none;-webkit-appearance:none;box-sizing:border-box}input::placeholder,textarea::placeholder{color:var(--ink-faint);opacity:1}input.mono,textarea.mono{font-family:var(--mono);letter-spacing:.01em}input:hover:not(:focus):not(:disabled),select:hover:not(:focus):not(:disabled),textarea:hover:not(:focus):not(:disabled){border-color:var(--line-strong);background-color:var(--surface)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);background-color:var(--surface-pure);caret-color:var(--brand);box-shadow:inset 1px 1px 2px #2f34380d,0 0 0 2px var(--brand),0 0 0 7px #0f6b4f24}@media(forced-colors:active){input:focus,select:focus,textarea:focus{outline:2px solid Highlight}}input:disabled,select:disabled,textarea:disabled{background-color:var(--surface-sunk);color:var(--ink-faint);cursor:not-allowed;box-shadow:none}select{padding-right:40px;cursor:pointer;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiM1OTYxNjYiIHN0cm9rZS13aWR0aD0iMi4yIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwb2x5bGluZSBwb2ludHM9IjYgOSAxMiAxNSAxOCA5Ii8+PC9zdmc+);background-repeat:no-repeat;background-position:right 12px center;background-size:16px 16px}select:focus{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwQjUwM0IiIHN0cm9rZS13aWR0aD0iMi40IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwb2x5bGluZSBwb2ludHM9IjYgOSAxMiAxNSAxOCA5Ii8+PC9zdmc+)}select::-ms-expand{display:none}input[type=date],input[type=time],input[type=datetime-local]{padding-right:40px;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiM1OTYxNjYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cmVjdCB4PSIzIiB5PSI0IiB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHJ4PSIyIi8+PGxpbmUgeDE9IjE2IiB5MT0iMiIgeDI9IjE2IiB5Mj0iNiIvPjxsaW5lIHgxPSI4IiB5MT0iMiIgeDI9IjgiIHkyPSI2Ii8+PGxpbmUgeDE9IjMiIHkxPSIxMCIgeDI9IjIxIiB5Mj0iMTAiLz48L3N2Zz4=);background-repeat:no-repeat;background-position:right 12px center;background-size:16px 16px}input[type=date]::-webkit-calendar-picker-indicator,input[type=time]::-webkit-calendar-picker-indicator,input[type=datetime-local]::-webkit-calendar-picker-indicator{position:absolute;right:0;top:0;width:100%;height:100%;padding:0;margin:0;cursor:pointer;opacity:0}input[type=date]::-webkit-datetime-edit,input[type=time]::-webkit-datetime-edit{color:var(--ink);font-family:var(--mono);font-variant-numeric:tabular-nums}input[type=date]::-webkit-datetime-edit-fields-wrapper{padding:0}input[type=date]::-webkit-datetime-edit-year-field:focus,input[type=date]::-webkit-datetime-edit-month-field:focus,input[type=date]::-webkit-datetime-edit-day-field:focus{background:var(--brand-wash);color:var(--brand-strong);outline:none}input[type=date]:in-range::-webkit-datetime-edit-text,input[type=date]:in-range::-webkit-datetime-edit-year-field,input[type=date]:in-range::-webkit-datetime-edit-month-field,input[type=date]:in-range::-webkit-datetime-edit-day-field{color:var(--ink)}@-moz-document url-prefix(){input[type=date]{background-image:none;padding-right:var(--space-4)}}input[type=search],input.sunken{background:var(--surface-sunk);border-color:transparent;box-shadow:var(--shadow-inset)}input[type=search]:hover,input.sunken:hover{background:var(--surface-sunk);border-color:transparent}input[type=search]:focus,input.sunken:focus{background:var(--surface-pure);box-shadow:inset 1px 1px 2px #2f34380d,0 0 0 2px var(--brand),0 0 0 7px #0f6b4f24;border-color:var(--brand)}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none;appearance:none}textarea{min-height:96px;padding:var(--space-3) var(--space-4);resize:vertical;line-height:var(--leading-normal)}.field-static{display:flex;align-items:center;min-height:42px;padding:10px var(--space-4);font-family:var(--mono);font-variant-numeric:tabular-nums;background:var(--surface-sunk);color:var(--ink);border-radius:var(--radius-sm);box-shadow:var(--shadow-inset)}.input-icon{position:relative;width:100%}.input-icon>svg,.input-icon>lucide-icon,.input-icon>:first-child{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--ink-faint);pointer-events:none;width:16px;height:16px}.input-icon>input{padding-left:40px}.input-group{display:flex;width:100%;box-shadow:inset 1px 1px 2px #2f343812,inset -1px -1px 2px #ffffffd9;border-radius:var(--radius-sm);background:var(--surface-pure)}.input-group>input,.input-group>select{box-shadow:none;background-color:transparent;border-radius:0;border-right-width:0}.input-group>:first-child{border-top-left-radius:var(--radius-sm);border-bottom-left-radius:var(--radius-sm)}.input-group>:last-child{border-top-right-radius:var(--radius-sm);border-bottom-right-radius:var(--radius-sm);border-right-width:1px}input[aria-invalid=true],select[aria-invalid=true],textarea[aria-invalid=true]{border-color:var(--negative);background-color:var(--negative-wash)}input[aria-invalid=true]:focus,select[aria-invalid=true]:focus,textarea[aria-invalid=true]:focus{box-shadow:inset 1px 1px 2px #2f34380d,0 0 0 2px var(--negative),0 0 0 7px #b23b3b24}.field-err{display:flex;align-items:center;gap:var(--space-1);margin-top:var(--space-1);font-size:var(--size-2);font-weight:var(--weight-medium);color:var(--negative)}button,.btn{font:inherit;font-size:var(--size-3);font-weight:var(--weight-semibold);padding:var(--space-3) var(--space-5);border-radius:var(--radius-sm);border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);cursor:pointer;box-shadow:var(--shadow-raise-1);transition:transform var(--dur-1) var(--ease-standard),box-shadow var(--dur-1) var(--ease-standard),background var(--dur-1) var(--ease-standard),color var(--dur-1) var(--ease-standard),border-color var(--dur-1) var(--ease-standard);display:inline-flex;align-items:center;gap:var(--space-2);line-height:1.2}button:hover:not(:disabled),.btn:hover:not(:disabled){box-shadow:var(--shadow-raise-2);transform:translateY(-1px);border-color:var(--ink-faint)}button:active:not(:disabled),.btn:active:not(:disabled){box-shadow:var(--shadow-press);transform:translateY(0)}a:focus-visible,button:focus-visible,.btn:focus-visible{outline:2px solid var(--brand);outline-offset:3px;box-shadow:var(--shadow-raise-1),var(--shadow-focus)}button:disabled,.btn:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}button.primary,.btn.primary{background:linear-gradient(180deg,var(--brand) 0%,var(--brand-strong) 100%);border-color:var(--brand-strong);color:var(--ink-inverse)}button.primary:hover:not(:disabled),.btn.primary:hover:not(:disabled){background:linear-gradient(180deg,var(--brand-strong) 0%,var(--brand-strong) 100%);border-color:var(--brand-strong)}button.quiet,.btn.quiet{border-color:transparent;background:transparent;box-shadow:none;color:var(--ink-soft)}button.quiet:hover:not(:disabled),.btn.quiet:hover:not(:disabled){background:var(--surface-hover);color:var(--ink);box-shadow:none;transform:none;border-color:transparent}button.ghost,.btn.ghost{border-color:var(--copper);background:transparent;color:var(--copper-ink);box-shadow:none}button.ghost:hover:not(:disabled),.btn.ghost:hover:not(:disabled){background:var(--copper-wash);box-shadow:none;transform:none}button.danger,.btn.danger{color:var(--negative);border-color:#e8bfbf}button.danger:hover:not(:disabled),.btn.danger:hover:not(:disabled){background:var(--negative-wash);border-color:var(--negative)}button.icon,.btn.icon{padding:var(--space-2);width:36px;height:36px;justify-content:center}.actions{display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap;margin-top:var(--space-4)}.notices{position:fixed;right:var(--space-5);bottom:var(--space-5);z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--space-2);max-width:420px}.notice{display:flex;gap:var(--space-3);align-items:flex-start;padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);font-size:var(--size-3);box-shadow:var(--shadow-float);background:var(--surface-pure);border:1px solid var(--line);animation:notice-in var(--dur-3) var(--ease-emphasised)}@keyframes notice-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.notice.error{background:var(--negative-wash);border-color:#edbcbc;color:#6d1f1f}.notice.ok{background:var(--positive-wash);border-color:#a9cabb;color:var(--brand-strong)}.notice button{padding:0;border:none;background:none;color:inherit;opacity:.6;font-size:1rem;line-height:1;box-shadow:none;width:auto;height:auto}.notice button:hover{opacity:1;box-shadow:none;transform:none}.callout{border-left:3px solid var(--brand);background:var(--brand-wash);padding:var(--space-3) var(--space-4);border-radius:0 var(--radius-sm) var(--radius-sm) 0;font-size:var(--size-3);color:var(--ink);margin-bottom:var(--space-4);max-width:82ch;line-height:var(--leading-relaxed)}.callout.warn{border-left-color:var(--warning);background:var(--warning-wash)}.callout.bad{border-left-color:var(--negative);background:var(--negative-wash)}.callout.good{border-left-color:var(--positive);background:var(--positive-wash)}.callout.info{border-left-color:var(--info);background:var(--info-wash)}.callout strong{font-weight:var(--weight-semibold)}.empty{text-align:center;padding:var(--space-9) var(--space-5);color:var(--ink-faint);font-size:var(--size-4);background:var(--surface);border-radius:var(--radius-md);box-shadow:var(--shadow-raise-1);display:flex;flex-direction:column;align-items:center;gap:var(--space-3)}.empty .empty-icon{width:56px;height:56px;border-radius:var(--radius-md);background:var(--brand-wash);color:var(--brand);display:inline-flex;align-items:center;justify-content:center;box-shadow:var(--shadow-raise-1)}.empty strong{color:var(--ink);font-weight:var(--weight-semibold)}.loading{padding:var(--space-7) 0;color:var(--ink-faint);font-size:var(--size-3);display:flex;align-items:center;gap:var(--space-3)}.loading:before{content:"";width:16px;height:16px;border-radius:50%;border:2px solid var(--line-strong);border-top-color:var(--brand);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.skel{background:linear-gradient(90deg,var(--surface-sunk) 0%,var(--surface-hover) 50%,var(--surface-sunk) 100%);background-size:200% 100%;border-radius:var(--radius-xs);animation:shimmer 1.4s linear infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.derivation{font-size:var(--size-2);color:var(--ink-faint);font-style:normal;line-height:var(--leading-relaxed)}.gate{min-height:100vh;display:grid;place-items:center;padding:var(--space-6);background:radial-gradient(ellipse at top left,rgba(15,107,79,.08),transparent 50%),radial-gradient(ellipse at bottom right,rgba(184,115,51,.07),transparent 50%),var(--canvas)}.gate .panel{width:100%;max-width:480px;background:var(--surface-pure);border-radius:var(--radius-lg);padding:var(--space-7);box-shadow:var(--shadow-float)}.gate .gate-split .panel{max-width:none}.gate .brand{display:flex;align-items:center;gap:var(--space-3);font-family:var(--logo);font-weight:800;font-size:var(--size-6);letter-spacing:-.02em;margin-bottom:var(--space-2)}.gate jw-brand{--wordmark-size: 2.15rem}.dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);padding:var(--space-8) var(--space-6);background:var(--surface-sunk);border:2px dashed var(--line-strong);border-radius:var(--radius-md);color:var(--ink-soft);text-align:center;cursor:pointer;transition:border-color var(--dur-1) var(--ease-standard),background var(--dur-1) var(--ease-standard),color var(--dur-1) var(--ease-standard)}.dropzone:hover,.dropzone.hover{border-color:var(--brand);background:var(--brand-wash);color:var(--brand-strong)}.dropzone .drop-icon{width:48px;height:48px;border-radius:var(--radius-md);background:var(--surface-pure);color:var(--brand);display:inline-flex;align-items:center;justify-content:center;box-shadow:var(--shadow-raise-1)}.dropzone strong{color:var(--ink);font-weight:var(--weight-semibold)}.typeahead{position:relative}.typeahead-menu{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:var(--z-popover);background:var(--surface-pure);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-float);overflow:hidden;max-height:264px;overflow-y:auto}.typeahead-menu button{display:flex;align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-4);border:none;border-radius:0;background:transparent;box-shadow:none;font-weight:var(--weight-medium);font-size:var(--size-3);color:var(--ink);text-align:left;cursor:pointer}.typeahead-menu button:hover:not(:disabled),.typeahead-menu button.active{background:var(--brand-wash);color:var(--brand-strong);box-shadow:none;transform:none;border:none}.typeahead-menu .code{margin-left:auto;font-family:var(--mono);font-size:var(--size-1);font-weight:var(--weight-semibold);color:var(--brand-strong);background:var(--brand-wash);padding:1px 8px;border-radius:var(--radius-pill)}.typeahead-menu .empty-note{padding:var(--space-3) var(--space-4);font-size:var(--size-2);color:var(--ink-faint)}.file-list{display:flex;flex-direction:column;gap:var(--space-2);margin-top:var(--space-3)}.file-row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);background:var(--surface-pure);border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow-raise-1)}.file-row .file-name{font-weight:var(--weight-medium);font-size:var(--size-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}.file-row .file-size{font-family:var(--mono);font-size:var(--size-1);color:var(--ink-faint);white-space:nowrap}.file-row select{width:auto;min-height:30px;padding:3px 30px 3px 10px;font-size:var(--size-2)}.file-row .remove{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--ink-faint);box-shadow:none;cursor:pointer}.file-row .remove:hover:not(:disabled){background:var(--negative-wash);color:var(--negative);box-shadow:none;transform:none;border:none}.chip-row{display:flex;flex-wrap:wrap;gap:var(--space-2);padding:var(--space-2);background:var(--surface-sunk);border-radius:var(--radius-sm);box-shadow:var(--shadow-inset);min-height:42px;align-items:center}.chip-row:empty{display:none}.mono{font-family:var(--mono)}.hide{display:none!important}.space{height:var(--space-5)}.spread{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3)}@media(max-width:1024px){:root{--sidebar-w: 64px;--content-pad: var(--space-5)}.sidebar{padding:var(--space-4) var(--space-2)}.sidebar .brand{font-size:0;justify-content:center;padding:var(--space-2) 0 var(--space-5)}.sidebar jw-brand .wordmark{display:none}.sidebar jw-brand .compact-wordmark{display:inline-flex}.nav a{justify-content:center;padding:var(--space-3);font-size:0}.nav a .nav-label,.nav-section,.sidebar .footer{display:none}}@media(max-width:720px){.shell{grid-template-columns:1fr;grid-template-rows:var(--topbar-h) 1fr;grid-template-areas:"topbar" "main"}.sidebar{display:none}.topbar jw-brand.mobile-brand{display:inline-flex;--wordmark-size: 1.35rem}.topbar{padding:0 var(--space-5)}.page{padding:var(--space-5) var(--space-4) var(--space-8)}.page-head{flex-direction:column;align-items:stretch}.topbar .email{display:none}.grid.two,.grid.three,.grid.four,.grid.six{grid-template-columns:1fr}}@media print{.sidebar,.topbar,.tabs,.notices,.actions,button{display:none!important}.shell{grid-template-columns:1fr;grid-template-areas:"main"}.page{max-width:none;padding:0}.card{break-inside:avoid;box-shadow:none;border:1px solid #ccc}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.kpi:hover,button:hover:not(:disabled){transform:none}}
