/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--radius-lg:.5rem;--ease-out:cubic-bezier(0, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.relative{position:relative}.static{position:static}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mt-28{margin-top:calc(var(--spacing) * 28)}.flex{display:flex}.hidden{display:none}.inline{display:inline}.inline-table{display:inline-table}.table{display:table}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.border{border-style:var(--tw-border-style);border-width:1px}.px-5{padding-inline:calc(var(--spacing) * 5)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:400 500;font-display:swap;src:url("/assets/SourceSerif4-latin-88e013b5.woff2")format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:400 500;font-display:swap;src:url("/assets/SourceSerif4-latin-ext-45521d1e.woff2")format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{--bg:#fafaf7;--bg-2:#f4f3ee;--bg-3:#edebe2;--surface:#fff;--ink:#0a0a0a;--ink-2:#262623;--ink-3:#4a4944;--ink-4:#6b6a62;--ink-5:#898780;--line:#e5e2d8;--line-2:#d6d2c4;--sidebar-bg-hover:#1a1a18;--sidebar-line:#26231f;--sidebar-ink:#b5b3aa;--sidebar-ink-dim:#888783;--sidebar-ink-muted:#848280;--accent:oklch(76% .14 70);--accent-ink:#2a1f08;--danger:oklch(58% .22 25);--danger-bg:oklch(95% .04 25);--success:oklch(55% .14 150);--success-bg:oklch(95% .04 150);--info:oklch(55% .12 240);--info-bg:oklch(95% .03 240);--warn:oklch(65% .14 70);--warn-bg:oklch(95% .05 70);--radius:6px;--radius-lg:10px;--sans:"Geist", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--mono:"Geist Mono", "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--serif:"Source Serif 4", "Source Serif Pro", "Charter", "Iowan Old Style", Georgia, "Times New Roman", serif;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-7:28px;--space-8:32px;--ease-out:cubic-bezier(.2, .8, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--dur-1:.12s;--dur-2:.16s;--dur-3:.22s;--text-display:28px;--text-h1:22px;--text-h2:18px;--text-h3:15px;--text-body:14px;--text-caption:12px;--text-label:11px;--text-editorial-xl:clamp(40px, 4.2vw + 14px, 56px);--text-editorial-lg:clamp(34px, 3.2vw + 12px, 46px);--text-editorial-md:clamp(28px, 2.2vw + 10px, 36px);--space-editorial:clamp(48px, 6vw, 72px);--sidebar-width:240px;--page-max:1800px;--page-pad-x:clamp(20px, 2.35vw, 44px);--page-pad-y:clamp(24px, 2.2vw, 40px);--touch-target:44px}*{box-sizing:border-box;margin:0;padding:0}html,body{min-height:100%}body{font-family:var(--sans);background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;font-feature-settings:"ss01", "cv11";font-size:14px;line-height:1.5;overflow-x:hidden}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer;color:inherit;background:0 0;border:none}button:disabled{cursor:not-allowed;opacity:.68;filter:grayscale(.15)}input,select,textarea{font:inherit;color:inherit}img{max-width:100%;display:block}h1,h2,h3,h4{letter-spacing:0;font-weight:500}main,section,article,aside,header,footer{min-width:0}.t-display{letter-spacing:-.01em;font-size:28px;font-weight:500;line-height:1.2}.t-h1{font-size:22px;font-weight:500;line-height:1.3}.t-h2{font-size:18px;font-weight:500;line-height:1.35}.t-h3{font-size:15px;font-weight:500;line-height:1.4}.t-body{font-size:14px;line-height:1.55}.t-caption{color:var(--ink-4);font-size:12px;line-height:1.45}.t-label{font-size:11px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-4)}.t-muted{color:var(--ink-4)}.t-measure{max-width:72ch}.t-editorial{font-family:var(--serif);letter-spacing:-.015em;color:var(--ink);font-feature-settings:"ss01", "onum";font-style:normal;font-weight:400;line-height:1.05}.t-editorial-xl{font-family:var(--serif);letter-spacing:-.02em;color:var(--ink);font-weight:400;line-height:1.02;font-size:var(--text-editorial-xl)}.t-editorial-lg{font-family:var(--serif);letter-spacing:-.015em;color:var(--ink);font-weight:400;line-height:1.05;font-size:var(--text-editorial-lg)}.t-editorial-md{font-family:var(--serif);letter-spacing:-.01em;color:var(--ink);font-weight:400;line-height:1.1;font-size:var(--text-editorial-md)}:focus{outline:none}:focus-visible{outline:2px solid var(--ink);outline-offset:2px;border-radius:4px}.app-sidebar :focus-visible,.auth-brand :focus-visible{outline-color:var(--accent)}.skip-link{background:var(--ink);color:var(--surface);z-index:100;border-radius:5px;padding:8px 14px;font-size:13px;font-weight:500;transition:top .14s ease-out;position:absolute;top:-48px;left:12px}.skip-link:focus-visible{outline-color:var(--accent);top:12px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.mono{font-family:var(--mono);font-feature-settings:"zero", "ss01"}.num{font-family:var(--mono);font-variant-numeric:tabular-nums}.eyebrow{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-4);font-size:11px}.app-shell{grid-template-columns:var(--sidebar-width) minmax(0, 1fr);min-height:100vh;display:grid}.app-sidebar{background:var(--ink);color:var(--bg);flex-direction:column;height:100vh;padding:20px 14px;display:flex;position:sticky;top:0}.app-sidebar-backdrop,.app-mobile-menu-button,.app-mobile-logout-link{display:none}.app-sidebar .brand{align-items:center;gap:10px;padding:4px 10px 24px;display:flex}.app-sidebar .brand img{filter:invert();width:auto;height:22px}.app-sidebar .brand small{font-family:var(--mono);color:var(--sidebar-ink-dim);letter-spacing:.1em;text-transform:uppercase;font-size:10px}.app-sidebar nav{flex-direction:column;gap:2px;display:flex}.app-sidebar nav a{color:var(--sidebar-ink);border-radius:5px;align-items:center;gap:10px;min-height:36px;padding:10px 12px;font-size:13px;transition:background .12s,color .12s;display:flex}.app-sidebar nav a:hover{background:var(--sidebar-bg-hover);color:var(--surface)}.app-sidebar nav a.active{background:var(--surface);color:var(--ink);font-weight:500}.app-sidebar nav a .badge{background:var(--accent);color:var(--accent-ink);font-family:var(--mono);border-radius:3px;margin-left:auto;padding:1px 6px;font-size:10px}.app-sidebar nav a.active .badge{background:var(--ink);color:var(--accent)}.app-sidebar .sb-group{font-family:var(--mono);color:var(--sidebar-ink-muted);letter-spacing:.1em;text-transform:uppercase;padding:16px 10px 8px;font-size:10px}.app-sidebar .sb-footer{border-top:1px solid var(--sidebar-line);align-items:center;gap:10px;margin-top:auto;padding:12px 10px;display:flex}.app-sidebar .sb-footer .avatar{background:var(--accent);width:28px;height:28px;color:var(--accent-ink);border-radius:50%;place-items:center;font-size:12px;font-weight:600;display:grid}.app-sidebar .sb-footer .who{font-size:12px}.app-sidebar .sb-footer .who small{color:var(--sidebar-ink-dim);font-size:11px}.app-main{flex-direction:column;min-width:0;display:flex}.topbar{background:var(--bg);border-bottom:1px solid var(--line);padding:14px var(--page-pad-x);z-index:10;align-items:center;gap:16px;display:flex;position:sticky;top:0}.topbar .crumbs{min-width:0;color:var(--ink-4);font-size:12px;font-family:var(--mono);margin-right:auto}.topbar .crumbs ol{align-items:center;gap:6px;min-width:0;margin:0;padding:0;list-style:none;display:flex}.topbar .crumbs li{align-items:center;gap:6px;display:inline-flex}.topbar .crumbs li.cur{min-width:0}.topbar .crumbs li.cur span[aria-current=page]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.topbar .crumbs .sep{opacity:.4}.topbar .crumbs li.cur>span:not(.sep){color:var(--ink)}kbd{font-family:var(--mono);background:var(--bg-2);color:var(--ink-4);border:1px solid var(--line);border-radius:3px;padding:2px 5px;font-size:10px}.topbar .actions{align-items:center;gap:8px;display:flex}.topbar .actions form,.portal-topbar .right form{margin:0}.topbar .icon-btn{border:1px solid var(--line);background:var(--surface);width:36px;height:36px;color:var(--ink-3);border-radius:5px;place-items:center;transition:background .12s,color .12s,border-color .12s;display:grid}.topbar .icon-btn:hover{background:var(--bg-2);color:var(--ink);border-color:var(--line-2)}.notification-menu{position:relative}.notification-button{padding-inline:9px}.notification-popover{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);z-index:40;width:min(360px,100vw - 32px);display:none;position:absolute;top:calc(100% + 8px);right:0;overflow:hidden;box-shadow:0 18px 45px #0a0a0a24}.notification-popover.is-open{display:block}.notification-hd{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:12px 14px;display:flex}.notification-hd strong{font-size:13px;font-weight:500}.notification-hd span{font-family:var(--mono);color:var(--ink-4);font-size:11px}.notification-list{max-height:360px;overflow:auto}.notification-item{border-bottom:1px solid var(--line);gap:10px;padding:12px 14px;display:flex}.notification-item:last-child{border-bottom:none}.notification-item:hover{background:var(--bg-2)}.notification-icon{background:var(--bg-2);width:28px;height:28px;color:var(--ink-3);border-radius:6px;flex:none;place-items:center;display:grid}.notification-icon.danger{background:var(--danger-bg);color:var(--danger)}.notification-icon.active{background:var(--success-bg);color:var(--success)}.notification-icon.info{background:var(--info-bg);color:var(--info)}.notification-copy{gap:3px;min-width:0;display:grid}.notification-copy strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:500;overflow:hidden}.notification-copy span{color:var(--ink-4);font-size:11px;font-family:var(--mono)}.notification-empty{color:var(--ink-4);justify-items:center;gap:8px;padding:22px 16px;font-size:12px;display:grid}.page{padding:var(--page-pad-y) var(--page-pad-x) 48px;max-width:var(--page-max);width:100%;margin-inline:auto}.page-hd{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:32px;display:flex}.page-hd .page-hd-copy{min-width:0;max-width:720px}.page-hd .eyebrow{margin-bottom:8px}.page-hd h1{font-family:var(--serif);font-size:var(--text-editorial-md);letter-spacing:-.012em;color:var(--ink);font-weight:400;line-height:1.06}.page-hd p.sub{color:var(--ink-3);max-width:62ch;margin-top:12px;font-size:15px;line-height:1.55}.page-hd .actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.page-hd.is-amount h1{font-size:var(--text-editorial-xl);letter-spacing:-.02em;font-variant-numeric:tabular-nums oldstyle-nums;line-height:1}.btn{white-space:nowrap;border:1px solid #0000;border-radius:5px;justify-content:center;align-items:center;gap:6px;padding:7px 14px;font-size:13px;font-weight:500;transition:all .12s;display:inline-flex}.btn svg{width:14px;height:14px}.btn-primary{background:var(--ink);color:var(--bg)}.btn-primary:hover:not(:disabled){background:var(--ink-2)}.btn-secondary{background:var(--surface);color:var(--ink);border-color:var(--line-2)}.btn-secondary:hover:not(:disabled){background:var(--bg-2)}.btn-ghost{color:var(--ink-3)}.btn-ghost:hover:not(:disabled){background:var(--bg-2);color:var(--ink)}.btn-danger{background:var(--danger);color:var(--surface)}.btn-danger:hover:not(:disabled){filter:brightness(.92)}.btn-accent{background:var(--accent);color:var(--accent-ink);font-weight:600}.btn-accent:hover:not(:disabled){filter:brightness(.96)}.btn-sm{min-height:30px;padding:6px 12px;font-size:12px}.btn-lg{width:100%;min-height:44px;padding:11px 20px;font-size:14px}.btn:focus-visible{outline-offset:2px}.btn-primary:focus-visible,.btn-secondary:focus-visible,.btn-ghost:focus-visible{outline-color:var(--ink)}.btn-danger:focus-visible{outline-color:var(--danger)}.btn-accent:focus-visible{outline-color:var(--accent);outline-offset:3px}.btn.is-loading{pointer-events:none;position:relative;color:#0000!important}.btn.is-loading svg{opacity:0}.btn.is-loading:after{content:"";width:14px;height:14px;color:var(--bg);border:2px solid;border-top-color:#0000;border-radius:50%;margin:auto;animation:.7s linear infinite spin;position:absolute;inset:0}.btn-secondary.is-loading:after,.btn-ghost.is-loading:after{color:var(--ink-3)}.btn-accent.is-loading:after{color:var(--accent-ink)}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg, var(--bg-2), var(--bg-3), var(--bg-2));vertical-align:middle;background-size:200% 100%;border-radius:3px;width:70%;height:.9em;animation:1.4s ease-in-out infinite skeleton-shimmer;display:inline-block}.skeleton--short{width:40%}.skeleton--long{width:90%}.skeleton--block{width:100%;height:14px;margin:4px 0;display:block}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes sidebarDrawerIn{0%{transform:translate(-105%)}to{transform:translate(0)}}.error-boundary{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);text-align:center;color:var(--ink-3);justify-items:center;gap:10px;padding:32px 24px;display:grid}.error-boundary .icon{background:var(--danger-bg);width:36px;height:36px;color:var(--danger);border-radius:50%;place-items:center;display:grid}.error-boundary h4{color:var(--ink);font-size:15px}.error-boundary p{max-width:420px;font-size:13px}.error-boundary .actions{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:8px;display:flex}.link{color:var(--ink);text-underline-offset:3px;-webkit-text-decoration:none;text-decoration:none;transition:color .12s,text-decoration-color .12s}.link:hover{text-decoration:underline}.link:focus-visible{outline-offset:3px;border-radius:3px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);min-width:0}.card-hd{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.card-hd h3{color:var(--ink);letter-spacing:-.005em;font-size:14px;font-weight:500;line-height:1.4}.card-hd .link{color:var(--ink-4);font-size:11px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em}.card-hd .link:hover{color:var(--ink)}.card-actions-inline{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;display:inline-flex}.card-bd{padding:18px}.card-ft{border-top:1px solid var(--line);color:var(--ink-4);padding:12px 18px;font-size:12px}.metric-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,238px),1fr));gap:16px;display:grid}.metric{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);min-height:128px;transition:border-color var(--dur-1) var(--ease-out), transform var(--dur-1) var(--ease-out);animation:metricFadeIn .28s var(--ease-out) both;flex-direction:column;padding:20px 20px 18px;display:flex;position:relative;overflow:hidden}.metric:hover{border-color:var(--line-2);transform:translateY(-1px)}.metric:first-child{animation-delay:0s}.metric:nth-child(2){animation-delay:40ms}.metric:nth-child(3){animation-delay:80ms}.metric:nth-child(4){animation-delay:.12s}.metric .label{font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-4);margin-bottom:10px;font-size:11px}.metric .value{font-family:var(--serif);letter-spacing:-.01em;font-variant-numeric:tabular-nums oldstyle-nums;color:var(--ink);margin-top:auto;font-size:38px;font-weight:400;line-height:1}.metric .delta{font-size:12px;font-family:var(--mono);color:var(--ink-4);margin-top:10px}@keyframes metricFadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.metric.alert{background:var(--danger-bg);border-color:oklch(85% .08 25)}.metric.alert .label,.metric.alert .value{color:var(--danger)}.table-wrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);min-width:0;max-width:100%;overflow:auto hidden}.card>.table-wrap{border:0;border-radius:0}table.tbl{border-collapse:collapse;width:100%;min-width:680px;font-size:13px}table.tbl th{text-align:left;font-weight:500;font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-4);background:var(--bg-2);border-bottom:1px solid var(--line);padding:10px 14px;font-size:11px}table.tbl td{border-bottom:1px solid var(--line);vertical-align:middle;padding:12px 14px}table.tbl tr:last-child td{border-bottom:none}table.tbl tr:hover td{background:var(--bg-2)}table.tbl td.num,table.tbl th.num{font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:right}table.tbl td.col-id{font-family:var(--mono);color:var(--ink-4);font-size:12px}table.tbl .row-muted td{color:var(--ink-4)}table.tbl td.action-cell{text-align:right;white-space:nowrap;width:1%}table.tbl tr.clickable-row{cursor:pointer}table.tbl tr.clickable-row:focus-visible{outline:2px solid var(--ink);outline-offset:-2px;background:var(--bg-2)}.cell-title{color:var(--ink);font-weight:500}.cell-sub{color:var(--ink-4);font-size:11px}.badge{font-size:11px;font-weight:500;font-family:var(--mono);text-transform:uppercase;letter-spacing:.04em;border:1px solid #0000;border-radius:3px;align-items:center;gap:5px;padding:2px 8px;display:inline-flex}.badge .dot{background:currentColor;border-radius:50%;width:6px;height:6px}.badge-draft{background:var(--bg-2);color:var(--ink-4);border-color:var(--line)}.badge-active{background:var(--success-bg);color:var(--success);border-color:oklch(85% .08 150)}.badge-danger{background:var(--danger-bg);color:var(--danger);border-color:oklch(85% .08 25)}.badge-warn{background:var(--warn-bg);color:var(--warn);border-color:oklch(85% .08 70)}.badge-info{background:var(--info-bg);color:var(--info);border-color:oklch(85% .06 240)}.badge-ink{background:var(--ink);color:var(--bg)}.form-row{gap:6px;margin-bottom:16px;display:grid}.form-row label{color:var(--ink-3);font-size:12px;font-weight:500}.form-row label .req{color:var(--danger)}.form-row .hint{color:var(--ink-4);font-size:11px}.field-label-row{justify-content:space-between;align-items:center;gap:16px;display:flex}.field-link{color:var(--ink-4);font-size:11px}.field-link:hover{color:var(--ink)}.form-row input[type=text],.form-row input[type=email],.form-row input[type=password],.form-row input[type=number],.form-row input[type=date],.form-row select,.form-row textarea{background:var(--surface);border:1px solid var(--line-2);border-radius:5px;outline:none;width:100%;padding:8px 12px;font-size:13px;transition:border-color .12s,box-shadow .12s}.form-row input:focus,.form-row select:focus,.form-row textarea:focus{border-color:var(--ink);box-shadow:0 0 0 3px #0a0a0a14}.form-row input:focus-visible,.form-row select:focus-visible,.form-row textarea:focus-visible{outline:none}.form-row input:disabled{color:var(--ink-3);background:var(--bg-2)}.form-row input[readonly],.form-row textarea[readonly]{background:var(--bg-2);color:var(--ink-3);font-family:var(--mono);border-color:var(--line);cursor:default;font-size:13px}.form-row input[readonly]:focus,.form-row input[readonly]:focus-visible{box-shadow:none;border-color:var(--line);outline:none}.form-row textarea{resize:vertical;min-height:80px}.form-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:16px;display:grid}.form-row .err{color:var(--danger);align-items:center;gap:5px;font-size:11px;display:flex}.form-row .err:before{content:"!";background:var(--danger);width:14px;height:14px;color:var(--surface);font-size:10px;font-weight:700;font-family:var(--mono);border-radius:50%;flex-shrink:0;place-items:center;display:inline-grid}.form-row.has-error input,.form-row.has-error select,.form-row.has-error textarea{border-color:var(--danger);background:var(--danger-bg)}.form-row.has-success input,.form-row.has-success select,.form-row.has-success textarea{border-color:var(--success)}.form-row.has-warning input,.form-row.has-warning select,.form-row.has-warning textarea{border-color:var(--warn);background:var(--warn-bg)}.form-section-title{margin:22px 0 14px}.form-section-title:first-child{margin-top:0}.form-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.form-actions>div{flex-wrap:wrap;gap:8px;display:flex}.inline-actions{margin-top:18px}.form-page{max-width:860px}.filter-search{min-width:min(360px,100%);margin-bottom:0}.filter-select{min-width:180px;margin-bottom:0}.client-filters{align-items:end}.chk{border:1px solid var(--line);cursor:pointer;background:var(--surface);border-radius:5px;align-items:flex-start;gap:8px;padding:8px 10px;display:flex}.chk input{accent-color:var(--ink);margin-top:2px}.chk .ck-bd{font-size:13px}.chk .ck-bd small{color:var(--ink-4);margin-top:2px;font-size:11px;display:block}.chk.active{border-color:var(--ink);background:var(--bg-2)}.terms-card{margin-top:12px}.permission-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.permission-grid.compact{grid-template-columns:repeat(3,minmax(0,1fr))}.timeline{padding-left:22px;position:relative}.timeline:before{content:"";background:var(--line);width:1px;position:absolute;top:4px;bottom:4px;left:7px}.tl-item{padding:0 0 18px;position:relative}.tl-item:before{content:"";background:var(--surface);border:2px solid var(--ink-3);border-radius:50%;width:8px;height:8px;position:absolute;top:4px;left:-19px}.tl-item.is-active:before{background:var(--accent);border-color:var(--accent)}.tl-item.is-danger:before{background:var(--danger);border-color:var(--danger)}.tl-item .tl-t{color:var(--ink-4);font-size:12px;font-family:var(--mono)}.tl-item .tl-b{color:var(--ink-2);font-size:13px}.tl-item .tl-b strong{color:var(--ink);font-weight:500}a.tl-item{color:inherit;display:block}a.tl-item:hover .tl-b{color:var(--ink)}.empty{text-align:center;border:1px dashed var(--line-2);border-radius:var(--radius-lg);color:var(--ink-4);background:0 0;padding:60px 24px}.empty-icon{background:var(--bg-2);width:44px;height:44px;color:var(--ink-3);border:1px solid var(--line);border-radius:8px;place-items:center;margin:0 auto 18px;display:grid}.empty h4{font-family:var(--serif);color:var(--ink);letter-spacing:-.01em;margin-bottom:6px;font-size:20px;font-weight:400;line-height:1.2}.empty p{max-width:420px;color:var(--ink-4);margin:0 auto 16px;font-size:14px;line-height:1.55}.empty .empty-actions{margin-top:var(--space-3);gap:var(--space-2);flex-wrap:wrap;justify-content:center;display:inline-flex}.card-bd>.empty{padding:var(--space-8) var(--space-4);background:var(--bg);border:1px dashed var(--line-2)}.filters{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px;display:flex}.chip{border:1px solid var(--line-2);background:var(--surface);color:var(--ink-3);border-radius:4px;align-items:center;gap:6px;min-height:32px;padding:7px 12px;font-size:12px;transition:background .12s,border-color .12s,color .12s;display:inline-flex}.chip:hover{background:var(--bg-2);border-color:var(--line)}.chip:focus-visible{outline:2px solid var(--ink);outline-offset:2px;border-color:var(--ink)}.chip.active{background:var(--ink);color:var(--bg);border-color:var(--ink)}.chip.active:focus-visible{outline-color:var(--accent)}.chip .count{font-family:var(--mono);opacity:.7}.bar{background:var(--bg-3);border-radius:2px;height:3px;overflow:hidden}.bar .fill{background:var(--ink);height:100%;width:var(--progress-width,0%);transition:width var(--dur-3) var(--ease-out)}.bar.thin{height:2px}.bar .fill.accent{background:var(--accent)}.progress-pct-0{--progress-width:0%}.progress-pct-1{--progress-width:1%}.progress-pct-2{--progress-width:2%}.progress-pct-3{--progress-width:3%}.progress-pct-4{--progress-width:4%}.progress-pct-5{--progress-width:5%}.progress-pct-6{--progress-width:6%}.progress-pct-7{--progress-width:7%}.progress-pct-8{--progress-width:8%}.progress-pct-9{--progress-width:9%}.progress-pct-10{--progress-width:10%}.progress-pct-11{--progress-width:11%}.progress-pct-12{--progress-width:12%}.progress-pct-13{--progress-width:13%}.progress-pct-14{--progress-width:14%}.progress-pct-15{--progress-width:15%}.progress-pct-16{--progress-width:16%}.progress-pct-17{--progress-width:17%}.progress-pct-18{--progress-width:18%}.progress-pct-19{--progress-width:19%}.progress-pct-20{--progress-width:20%}.progress-pct-21{--progress-width:21%}.progress-pct-22{--progress-width:22%}.progress-pct-23{--progress-width:23%}.progress-pct-24{--progress-width:24%}.progress-pct-25{--progress-width:25%}.progress-pct-26{--progress-width:26%}.progress-pct-27{--progress-width:27%}.progress-pct-28{--progress-width:28%}.progress-pct-29{--progress-width:29%}.progress-pct-30{--progress-width:30%}.progress-pct-31{--progress-width:31%}.progress-pct-32{--progress-width:32%}.progress-pct-33{--progress-width:33%}.progress-pct-34{--progress-width:34%}.progress-pct-35{--progress-width:35%}.progress-pct-36{--progress-width:36%}.progress-pct-37{--progress-width:37%}.progress-pct-38{--progress-width:38%}.progress-pct-39{--progress-width:39%}.progress-pct-40{--progress-width:40%}.progress-pct-41{--progress-width:41%}.progress-pct-42{--progress-width:42%}.progress-pct-43{--progress-width:43%}.progress-pct-44{--progress-width:44%}.progress-pct-45{--progress-width:45%}.progress-pct-46{--progress-width:46%}.progress-pct-47{--progress-width:47%}.progress-pct-48{--progress-width:48%}.progress-pct-49{--progress-width:49%}.progress-pct-50{--progress-width:50%}.progress-pct-51{--progress-width:51%}.progress-pct-52{--progress-width:52%}.progress-pct-53{--progress-width:53%}.progress-pct-54{--progress-width:54%}.progress-pct-55{--progress-width:55%}.progress-pct-56{--progress-width:56%}.progress-pct-57{--progress-width:57%}.progress-pct-58{--progress-width:58%}.progress-pct-59{--progress-width:59%}.progress-pct-60{--progress-width:60%}.progress-pct-61{--progress-width:61%}.progress-pct-62{--progress-width:62%}.progress-pct-63{--progress-width:63%}.progress-pct-64{--progress-width:64%}.progress-pct-65{--progress-width:65%}.progress-pct-66{--progress-width:66%}.progress-pct-67{--progress-width:67%}.progress-pct-68{--progress-width:68%}.progress-pct-69{--progress-width:69%}.progress-pct-70{--progress-width:70%}.progress-pct-71{--progress-width:71%}.progress-pct-72{--progress-width:72%}.progress-pct-73{--progress-width:73%}.progress-pct-74{--progress-width:74%}.progress-pct-75{--progress-width:75%}.progress-pct-76{--progress-width:76%}.progress-pct-77{--progress-width:77%}.progress-pct-78{--progress-width:78%}.progress-pct-79{--progress-width:79%}.progress-pct-80{--progress-width:80%}.progress-pct-81{--progress-width:81%}.progress-pct-82{--progress-width:82%}.progress-pct-83{--progress-width:83%}.progress-pct-84{--progress-width:84%}.progress-pct-85{--progress-width:85%}.progress-pct-86{--progress-width:86%}.progress-pct-87{--progress-width:87%}.progress-pct-88{--progress-width:88%}.progress-pct-89{--progress-width:89%}.progress-pct-90{--progress-width:90%}.progress-pct-91{--progress-width:91%}.progress-pct-92{--progress-width:92%}.progress-pct-93{--progress-width:93%}.progress-pct-94{--progress-width:94%}.progress-pct-95{--progress-width:95%}.progress-pct-96{--progress-width:96%}.progress-pct-97{--progress-width:97%}.progress-pct-98{--progress-width:98%}.progress-pct-99{--progress-width:99%}.progress-pct-100{--progress-width:100%}.documents-page{max-width:none}.col-select{width:40px}.col-ticket-number{width:72px}.metric-badge{margin-top:8px}.grid-2{grid-template-columns:minmax(0,1.9fr) minmax(min(100%,340px),.9fr);gap:16px;display:grid}.grid-3{grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:16px;display:grid}.split-hd{justify-content:space-between;align-items:baseline;margin-bottom:14px;display:flex}.split-hd h2{font-family:var(--serif);letter-spacing:-.01em;color:var(--ink);font-size:20px;font-weight:400;line-height:1.2}.split-hd .link{font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-4);font-size:11px}.split-hd .link:hover{color:var(--ink)}.dashboard-page,.portal-dashboard{width:100%}.dashboard-stack,.portal-stack{align-content:start;gap:16px;min-width:0;display:grid}.dashboard-grid,.portal-grid{margin-top:20px}.portal-dashboard-layout{grid-template-columns:minmax(0,1.45fr) minmax(300px,.72fr);align-items:start;gap:16px;margin-top:22px;display:grid}.dashboard-hd .sub,.portal-hero p,.portal-dashboard-hd p{max-width:720px}.portal-dashboard-hd{max-width:920px;margin-bottom:34px}.portal-dashboard-hd h1{font-family:var(--serif);font-size:var(--text-editorial-xl);letter-spacing:-.02em;color:var(--ink);margin-top:12px;font-weight:400;line-height:1.02}.portal-dashboard-hd p{color:var(--ink-3);max-width:60ch;margin-top:14px;font-size:16px;line-height:1.55}.portal-metric-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.portal-metric-grid .metric{background:linear-gradient(180deg, var(--surface), var(--surface));border-radius:8px;min-height:118px;padding:18px 20px 16px}@supports (color:color-mix(in lab, red, red)){.portal-metric-grid .metric{background:linear-gradient(180deg, var(--surface), color-mix(in oklab, var(--surface) 88%, var(--bg-2)))}}.portal-panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;min-width:0;overflow:hidden}.portal-panel-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:14px;padding:18px 20px 14px;display:flex}.portal-panel-head h2{font-family:var(--serif);letter-spacing:-.01em;color:var(--ink);font-size:22px;font-weight:400;line-height:1.15}.portal-panel-head .link{font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-4);flex:none;font-size:11px}.portal-panel-head .link:hover{color:var(--ink)}.portal-panel-empty{border-top:0;padding:30px 20px}.card-table .table-wrap{border:none;border-radius:0}.table-wrap-card{border:none;border-radius:0;overflow-x:auto}.flush-list{padding:0}.dashboard-row{border-bottom:1px solid var(--line);color:var(--ink);justify-content:space-between;align-items:center;gap:14px;padding:14px 18px;display:flex}.dashboard-row:last-child{border-bottom:none}.dashboard-row:hover{background:var(--bg-2)}.dashboard-row:focus-visible{outline:2px solid var(--ink);outline-offset:-2px;background:var(--bg-2)}.row-main{flex:1;gap:3px;min-width:0;display:grid}.row-title{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500;overflow:hidden}.row-sub{color:var(--ink-4);font-size:11px;line-height:1.45}.progress-line{align-items:center;gap:10px;width:100%;min-width:0;margin-top:6px;display:flex}.progress-line .bar{flex:1;min-width:72px}.progress-line .mono{text-align:right;width:42px;color:var(--ink-4);font-size:11px}.project-row{align-items:flex-start}.project-card-list{gap:0;padding:0;display:grid}.portal-project-preview-list{padding:0}.portal-project-preview-card{border-bottom:1px solid var(--line);color:var(--ink);transition:background var(--dur-1) var(--ease-out), padding var(--dur-1) var(--ease-out);gap:12px;padding:20px;display:grid}.portal-project-preview-card:last-child{border-bottom:none}.portal-project-preview-card:hover{background:var(--bg-2)}.project-card-top{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.project-card-title{font-size:16px;font-weight:500;display:block}.project-card-sub,.project-card-foot{color:var(--ink-4);margin-top:3px;font-size:12px;line-height:1.45;display:block}.project-card-foot strong{color:var(--ink);font-weight:500}.action-row{justify-content:flex-start}.action-row .btn{margin-left:auto}.portal-panel .portal-flat-list{border-top:0}.portal-panel .dashboard-row{padding:16px 20px}.portal-panel .portal-flat-timeline{padding:16px 20px 18px}.portal-contact-body{padding:20px}.action-icon{background:var(--bg-2);width:32px;height:32px;color:var(--ink-3);border-radius:6px;flex:none;place-items:center;display:grid}.action-icon.danger{background:var(--danger-bg);color:var(--danger)}.action-icon.active{background:var(--success-bg);color:var(--success)}.action-icon.info{background:var(--info-bg);color:var(--info)}.contact-lines{color:var(--ink-4);font-size:12px;font-family:var(--mono);gap:4px;margin-top:14px;line-height:1.6;display:grid}.contact-cta{justify-content:center;width:100%;margin-top:14px}.quick-links{gap:8px;display:grid}.quick-link{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);align-items:flex-start;gap:12px;padding:12px 14px;transition:background .12s,border-color .12s,transform .12s;display:flex}.quick-link:hover{background:var(--bg-2);border-color:var(--line-2);transform:translateY(-1px)}.quick-link svg{flex:none;margin-top:1px}.quick-link .ql-bd{min-width:0}.quick-link .ql-bd strong{font-size:13px;font-weight:500;display:block}.quick-link .ql-bd span{color:var(--ink-4);margin-top:2px;font-size:11px;line-height:1.45;display:block}.quick-link-static{pointer-events:none}.portal-hero{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:22px;display:flex}.portal-hero .hero-copy{max-width:720px}.portal-hero h1{font-family:var(--serif);font-size:var(--text-editorial-xl);letter-spacing:-.02em;color:var(--ink);margin-top:10px;font-weight:400;line-height:1.02}.portal-tags{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.portal-summary{gap:10px;width:min(360px,100%);display:grid}.portal-summary .summary-line{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);justify-content:space-between;gap:16px;padding:12px 14px;display:flex}.portal-summary .summary-line span{color:var(--ink-4);font-size:12px}.portal-summary .summary-line strong{text-align:right;font-size:13px;font-weight:500}.portal-module{align-items:flex-start;gap:12px;display:flex}.portal-module-grid{gap:16px;display:grid}.portal-module .module-icon{background:var(--bg-2);width:38px;height:38px;color:var(--ink);border-radius:6px;flex:none;place-items:center;display:grid}.portal-module .module-copy{gap:10px;min-width:0;display:grid}.portal-module .module-copy p{color:var(--ink-3);font-size:13px;line-height:1.6}.support-block{align-items:center;gap:12px;display:flex}.support-avatar{background:var(--ink);width:42px;height:42px;color:var(--accent);border-radius:50%;place-items:center;font-weight:600;display:grid}.support-copy{gap:2px;min-width:0;display:grid}.support-copy strong{font-size:14px;font-weight:500}.support-copy span{color:var(--ink-4);font-size:12px}.section-note{color:var(--ink-4);margin-top:10px;font-size:12px;line-height:1.55}.detail-list.compact dt{color:var(--ink-4)}.detail-list.compact dd{color:var(--ink)}.foundation-grid{margin-top:20px}.muted-copy{color:var(--ink-4);margin-top:12px;font-size:13px}.section-card{margin-top:16px}.project-filters{align-items:end}.chk.compact{align-self:end;align-items:center;min-height:58px}.project-grid{align-items:stretch}.project-card{transition:transform .12s,border-color .12s,background .12s;display:block}.project-card:hover{border-color:var(--line-2);background:var(--surface);transform:translateY(-2px)}.project-card-top{justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:12px;display:flex}.project-card-title{color:var(--ink);margin-bottom:4px;font-size:15px;font-weight:500}.project-card-client{color:var(--ink-4);margin-bottom:16px;font-size:12px;line-height:1.45}.project-progress-line{align-items:center;gap:10px;margin-bottom:12px;display:flex}.project-progress-line .bar{flex:1}.project-progress-line .mono,.project-progress-line .num{text-align:right;min-width:42px;color:var(--ink-3);flex:none;font-size:12px}.project-card-meta{color:var(--ink-4);font-family:var(--mono);justify-content:space-between;gap:12px;font-size:11px;line-height:1.45;display:flex}.project-stack{align-content:start;gap:16px;display:grid}.project-detail-grid{align-items:start;margin-top:20px}.portal-filter-strip{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.portal-project-list{gap:14px;display:grid}.portal-project-list-enhanced{gap:16px}.portal-project-card--list{transition:border-color var(--dur-1) var(--ease-out), background var(--dur-1) var(--ease-out), transform var(--dur-1) var(--ease-out);border-radius:8px;padding:0;display:block;overflow:hidden}.portal-project-card--list:hover{border-color:var(--line-2);background:var(--surface);transform:translateY(-1px)}.portal-project-card--list .project-card-title{letter-spacing:-.005em;font-size:17px}.portal-project-card--list .project-card-client{max-width:72ch;margin-bottom:0}.portal-project-card--list .project-card-meta{border-top:1px solid var(--line);padding-top:14px}.portal-project-card--list .badge{flex:none}.portal-project-card-inner{gap:18px;padding:26px 30px;display:grid}.portal-project-main{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:0;display:flex}.portal-project-copy{min-width:0;max-width:76ch}.portal-project-progress{margin-bottom:0;padding-top:4px}.portal-project-progress .bar{height:4px}.back-link{font-family:var(--mono);color:var(--ink-4);margin-bottom:18px;font-size:12px;display:inline-flex}.back-link:hover{color:var(--ink)}.portal-project-heading{max-width:820px;margin-bottom:36px}.project-heading-meta{color:var(--ink-4);align-items:center;gap:14px;margin-bottom:14px;display:flex}.portal-project-heading h1{font-family:var(--serif);font-size:var(--text-editorial-lg);letter-spacing:-.018em;color:var(--ink);font-weight:400;line-height:1.04}.portal-project-heading p{color:var(--ink-3);max-width:62ch;margin-top:14px;font-size:16px;line-height:1.6}.progress-card{margin-bottom:28px;padding:28px 28px 24px}.progress-card .bar{margin-bottom:22px}.progress-card-head{justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:14px;display:flex}.progress-card-head h3{font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-4);font-size:11px;font-weight:400}.progress-card-head .num{font-family:var(--serif);letter-spacing:-.015em;font-variant-numeric:tabular-nums oldstyle-nums;color:var(--ink);font-size:44px;font-weight:400;line-height:1}.progress-stats{border-top:1px solid var(--line);grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;padding-top:18px;display:grid}.progress-stats>div{padding-left:0}.progress-stats strong{font-family:var(--serif);letter-spacing:-.01em;font-variant-numeric:tabular-nums oldstyle-nums;color:var(--ink);margin-bottom:6px;font-size:28px;font-weight:400;line-height:1;display:block}.progress-stats span{color:var(--ink-4);font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;font-size:10px;display:block}.template-grid{align-items:stretch}.template-card{transition:transform .12s,border-color .12s;display:block}.template-card:hover{border-color:var(--line-2);transform:translateY(-2px)}.compact-metrics{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:16px}.card-bd.no-pad{padding:0}.empty-pad{padding:18px}.table-wrap.inline-table{border:none;border-radius:0;width:100%;display:block;container-type:inline-size}.project-items-table td strong,.portal-task-table td strong{color:var(--ink);font-weight:500;display:block}.project-items-table td span,.portal-task-table td span{color:var(--ink-4);margin-top:2px;font-size:12px;display:block}.portal-task-table td strong.is-complete{color:var(--ink-4);font-weight:400;text-decoration:line-through}.row-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;display:flex}.row-actions form{margin:0}.button-link{color:var(--ink-3);background:0 0;border:none;padding:0}.button-link:hover{color:var(--ink)}@container (max-width:820px){table.responsive-task-table{min-width:0}.responsive-task-table thead{display:none}.responsive-task-table,.responsive-task-table tbody,.responsive-task-table tr,.responsive-task-table td{width:100%;display:block}.responsive-task-table tr{border-bottom:1px solid var(--line);padding:12px 14px}.responsive-task-table tr:last-child{border-bottom:none}table.responsive-task-table td{text-align:left;border-bottom:none;grid-template-columns:minmax(72px,.32fr) minmax(0,1fr);align-items:start;gap:12px;min-width:0;padding:6px 0;display:grid}.responsive-task-table td:before{content:attr(data-label);color:var(--ink-4);font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;font-size:10px;line-height:1.7}table.responsive-task-table td.action-cell{white-space:normal;width:100%}.responsive-task-table .action-cell .row-actions,.responsive-task-table .action-cell{justify-content:flex-start}.responsive-task-table .row-actions{gap:14px}.responsive-task-table .badge{justify-self:start}.responsive-task-table .task-check-cell{width:100%}}@container (max-width:420px){table.responsive-task-table td{grid-template-columns:1fr;gap:4px}.responsive-task-table td:before{line-height:1.2}}.milestone-list{display:grid}.milestone-row{border-bottom:1px solid var(--line);grid-template-columns:auto minmax(0,1fr) auto auto auto;align-items:center;gap:12px;padding:14px 18px;display:grid}.milestone-row:last-child{border-bottom:none}.milestone-icon{background:var(--bg-2);width:28px;height:28px;color:var(--ink-4);border-radius:5px;place-items:center;display:grid}.milestone-icon.in_progress{background:var(--accent);color:var(--accent-ink)}.milestone-icon.completed{background:var(--success);color:var(--surface)}.milestone-copy{gap:2px;min-width:0;display:grid}.milestone-copy strong{color:var(--ink);font-size:13px;font-weight:500}.milestone-copy span{color:var(--ink-4);font-size:11px;font-family:var(--mono)}.template-apply-form{gap:12px;display:grid}.task-check-cell{width:42px}.task-check{border:1.5px solid var(--line-2);width:18px;height:18px;color:var(--surface);border-radius:4px;place-items:center;display:grid}.task-check.is-done{border-color:var(--success);background:var(--success)}.client-detail-grid{align-items:start}.detail-list{grid-template-columns:110px 1fr;gap:10px 14px;font-size:13px;display:grid}.detail-list dt{color:var(--ink-4)}.detail-list dd{min-width:0}.detail-list p{margin:0}.membership-list{display:grid}.membership-row{border-bottom:1px solid var(--line);padding:16px 18px}.membership-row:last-child{border-bottom:none}.membership-main{grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:12px;display:grid}.member-avatar{background:var(--info-bg);width:36px;height:36px;color:var(--info);border-radius:50%;place-items:center;font-size:12px;font-weight:600;display:grid}.permission-line{color:var(--ink-4);font-size:11px;font-family:var(--mono);margin-top:4px}.membership-status{justify-items:end;gap:6px;display:grid}.permission-form{gap:12px;margin-top:14px;display:grid}.membership-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.membership-actions form{margin:0}.secondary-actions{margin-top:8px}.pagination-row{color:var(--ink-4);justify-content:space-between;align-items:center;gap:12px;margin-top:14px;font-size:12px;display:flex}.pagination-row>div{gap:6px;display:flex}.pagination-row a,.pagination-row .btn{transition:color var(--dur-1) var(--ease-out)}.btn.is-disabled,.pagination-row [aria-disabled=true]{opacity:.45;pointer-events:none;color:var(--ink-5);border-color:var(--line);background:var(--bg-2)}.settings-note{background:var(--bg-2);color:var(--ink-4);border-radius:5px;margin-top:16px;padding:12px;font-size:12px}.portal-shell{background:var(--bg);flex-direction:column;min-height:100vh;display:flex}.portal-topbar{background:var(--surface);border-bottom:1px solid var(--line);z-index:10;align-items:center;gap:24px;padding:14px 36px;display:flex;position:sticky;top:0}.portal-topbar .brand{align-items:center;gap:10px;min-width:0;display:flex}.portal-topbar .brand img{width:auto;height:20px}.portal-topbar .brand small{font-family:var(--mono);color:var(--ink-4);letter-spacing:.1em;text-transform:uppercase;border-left:1px solid var(--line);white-space:nowrap;margin-left:4px;padding-left:12px;font-size:10px}.portal-topbar nav{gap:4px;margin-left:24px;display:flex}.portal-topbar nav a{color:var(--ink-3);border-radius:5px;padding:8px 14px;font-size:13px}.portal-topbar nav a:hover{background:var(--bg-2);color:var(--ink)}.portal-topbar nav a.active{background:var(--ink);color:var(--bg)}.portal-topbar nav .portal-mobile-logout{display:none}.portal-topbar nav .portal-mobile-logout-link{width:100%;color:var(--ink-3);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:5px;justify-content:center;align-items:center;gap:6px;padding:8px 14px;font-size:13px;display:flex}.portal-topbar nav .portal-mobile-logout-link:hover{background:var(--bg-2);color:var(--ink)}.portal-topbar .right{align-items:center;gap:12px;margin-left:auto;display:flex}.portal-user{border-radius:5px;align-items:center;gap:10px;padding:4px 4px 4px 10px;font-size:13px;display:flex}.portal-avatar{background:var(--info-bg);width:32px;height:32px;color:var(--info);border-radius:50%;place-items:center;font-size:12px;font-weight:600;display:grid}.mobile-menu-button{border:1px solid var(--line);background:var(--surface);width:44px;height:44px;color:var(--ink-3);border-radius:5px;place-items:center;margin-left:auto;transition:background .12s,color .12s;display:none}.mobile-menu-button:hover{background:var(--bg-2);color:var(--ink)}.portal-content{padding:var(--page-pad-y) var(--page-pad-x) 48px;max-width:var(--page-max);width:100%;margin:0 auto}.portal-heading{max-width:820px;margin-bottom:44px}.portal-heading h1{font-family:var(--serif);font-size:var(--text-editorial-lg);letter-spacing:-.018em;color:var(--ink);margin-top:10px;font-weight:400;line-height:1.04}.portal-heading p{color:var(--ink-3);max-width:62ch;margin-top:12px;font-size:16px;line-height:1.6}.auth-wrap{grid-template-columns:minmax(0,1fr) minmax(420px,1fr);min-height:100vh;display:grid}.auth-brand{background:var(--ink);color:var(--bg);flex-direction:column;padding:48px;display:flex;position:relative;overflow:hidden}.auth-brand .logo{position:relative}.auth-brand .logo img{filter:invert();width:auto;height:28px}.auth-brand .pitch{margin-top:auto;position:relative}.auth-brand .pitch .eyebrow{color:var(--accent);margin-bottom:12px}.auth-brand .pitch h2{font-family:var(--serif);letter-spacing:-.018em;max-width:440px;color:var(--bg);font-size:clamp(28px,2.6vw + 12px,40px);font-weight:400;line-height:1.04}.auth-brand .pitch p{color:var(--sidebar-ink-dim);max-width:400px;margin-top:16px;font-size:15px;line-height:1.6}.auth-brand .grid-bg{background-image:linear-gradient(to right, var(--sidebar-bg-hover) 1px, transparent 1px), linear-gradient(to bottom, var(--sidebar-bg-hover) 1px, transparent 1px);opacity:.5;background-size:40px 40px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(#000 0%,#0000 70%);mask-image:radial-gradient(#000 0%,#0000 70%)}.auth-meta{color:var(--sidebar-ink-dim);font-size:12px;font-family:var(--mono);flex-wrap:wrap;gap:24px;margin-top:40px;display:flex;position:relative}.auth-form{justify-content:center;align-items:center;padding:48px;display:flex}.auth-form .box{width:100%;max-width:380px}.auth-form .eyebrow{margin-bottom:4px}.auth-form h1{font-family:var(--serif);letter-spacing:-.02em;color:var(--ink);margin-bottom:10px;font-size:clamp(34px,3vw + 14px,46px);font-weight:400;line-height:1.02}.auth-form .sub{color:var(--ink-3);margin-bottom:32px;font-size:15px;line-height:1.55}.auth-form .btn-row{margin-top:24px}.auth-form .helper{color:var(--ink-4);text-align:center;margin-top:18px;font-size:12px;line-height:1.7}.auth-form .helper a{color:var(--ink);text-underline-offset:3px;font-weight:500;text-decoration-color:#0000;transition:text-decoration-color .12s}.auth-form .helper a:hover{text-decoration:underline}.password-rules{background:var(--bg-2);color:var(--ink-4);font-size:11px;font-family:var(--mono);border-radius:5px;padding:12px;line-height:1.7}.password-rules div{align-items:center;gap:6px;display:flex}.invite-summary{background:var(--bg-2);border:1px solid var(--line);border-radius:6px;align-items:center;gap:12px;margin-bottom:24px;padding:14px;display:flex}.invite-mark{background:var(--ink);width:34px;height:34px;color:var(--accent);border-radius:6px;place-items:center;font-weight:600;display:grid}.invite-summary span{color:var(--ink-4)}.flash-stack{z-index:100;pointer-events:none;gap:8px;display:grid;position:fixed;top:16px;right:16px}.flash{border:1px solid var(--line);background:var(--surface);border-radius:6px;align-items:center;gap:8px;min-width:min(360px,100vw - 32px);padding:10px 12px;font-size:13px;display:flex;box-shadow:0 16px 30px -22px #00000059}.flash-active{background:var(--success-bg);color:var(--success);border-color:oklch(85% .08 150)}.flash-warn{background:var(--warn-bg);color:var(--warn);border-color:oklch(85% .08 70)}.flash-danger{background:var(--danger-bg);color:var(--danger);border-color:oklch(85% .08 25)}.flash-info{background:var(--info-bg);color:var(--info);border-color:oklch(85% .06 240)}turbo-frame .empty{padding:28px 18px}.modal{color:inherit;background:0 0;border:none;border-radius:8px;padding:0}.modal::backdrop{background:#0a0a0a6b}.modal-box{background:var(--surface);border:1px solid var(--line);border-radius:8px;width:min(420px,100vw - 32px);padding:22px;box-shadow:0 30px 80px -40px #00000080}.modal-icon{background:var(--danger-bg);width:36px;height:36px;color:var(--danger);border-radius:7px;place-items:center;margin-bottom:14px;display:grid}.modal-box h2{margin-bottom:6px;font-size:18px}.modal-box p{color:var(--ink-4);font-size:13px}.modal-actions{justify-content:flex-end;gap:8px;margin-top:20px;display:flex}.danger-text{color:var(--danger)}.form-error{pointer-events:auto;margin-bottom:16px}.invoice-form-grid,.invoice-detail-grid{grid-template-columns:minmax(0,1fr) minmax(320px,380px);align-items:start;gap:20px;display:grid}.invoice-form-side,.invoice-side-stack{gap:16px;display:grid}.invoice-total-card{position:sticky;top:82px}.invoice-lines-wrap{overflow-x:auto}.invoice-lines-table{min-width:860px}.invoice-lines-table th:first-child{width:72px}.invoice-lines-table th:nth-child(3){width:96px}.invoice-lines-table th:nth-child(4),.invoice-lines-table th:nth-child(5),.invoice-lines-table th:nth-child(6),.invoice-lines-table th:nth-child(7){width:128px}.line-input,.line-position{background:0 0;border:none;width:100%;min-height:28px;padding:0}.line-input:focus-visible,.line-position:focus-visible{outline:2px solid var(--ink);outline-offset:2px;border-radius:2px}.line-position{text-align:center;color:var(--ink-4);font-family:var(--mono)}.line-total{white-space:nowrap;font-weight:500}.add-line-button{margin-top:10px}.total-line{justify-content:space-between;gap:16px;padding:8px 0;font-size:13px;display:flex}.total-line span{color:var(--ink-4)}.total-line.grand-total{border-top:1px solid var(--line);margin-top:6px;padding-top:14px;font-size:18px}.invoice-currency{color:var(--ink-4);font-family:var(--mono);text-align:right;font-size:11px}.invoices-table-wrap,.portal-invoices-table{margin-top:18px;overflow-x:auto}.invoices-table{min-width:920px}.invoice-detail-grid{margin-top:20px}.invoice-detail-grid.portal-version{grid-template-columns:minmax(0,1fr) minmax(300px,340px)}.invoice-paper{padding:46px;overflow-x:auto}.invoice-paper-top{justify-content:space-between;align-items:flex-start;gap:28px;margin-bottom:34px;display:flex}.invoice-paper-logo{width:auto;height:22px;margin-bottom:18px}.invoice-party{color:var(--ink-3);font-size:12px;line-height:1.6}.invoice-paper-number{text-align:right}.invoice-paper-number .mono{margin-top:6px;font-size:22px}.invoice-badge{margin-top:12px}.invoice-paper-meta{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:1fr 1fr 1fr;gap:24px;margin-bottom:26px;padding:18px 0;font-size:13px;display:grid}.invoice-paper-meta.two-col{grid-template-columns:1fr 1fr}.invoice-meta-spacer{margin-top:12px}.invoice-paper-total{margin-top:6px;font-size:20px;display:block}.invoice-paper-lines{border-collapse:collapse;width:100%;min-width:720px;font-size:13px}.invoice-paper-lines th{text-align:left;border-bottom:1px solid var(--ink);padding:10px 0;font-weight:500}.invoice-paper-lines td{border-bottom:1px solid var(--line);vertical-align:top;padding:12px 0}.invoice-paper-lines th.num,.invoice-paper-lines td.num{text-align:right;white-space:nowrap;padding-left:14px}.invoice-paper-totals{width:min(320px,100%);margin-top:22px;margin-left:auto}.invoice-paper-totals>div{justify-content:space-between;gap:16px;padding:6px 0;font-size:13px;display:flex}.invoice-paper-totals .grand-total{border-top:1px solid var(--ink);align-items:baseline;margin-top:6px;padding-top:14px;font-size:13px;font-weight:400}.invoice-paper-totals .grand-total span{font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-4);font-size:11px}.invoice-paper-totals .grand-total strong{font-family:var(--serif);letter-spacing:-.01em;font-variant-numeric:tabular-nums oldstyle-nums;font-size:26px;font-weight:400}.invoice-paper-totals.compact{width:240px}.invoice-paper-notes{border-top:1px solid var(--line);color:var(--ink-4);margin-top:34px;padding-top:22px;font-size:12px;line-height:1.7}.invoice-status-line{color:var(--ink-4);align-items:center;gap:10px;margin-top:10px;font-size:12px;display:flex}.portal-invoice-hd{justify-content:space-between;align-items:flex-end;gap:20px;margin:14px 0 24px;display:flex}.portal-invoice-hd h1{font-family:var(--serif);font-size:var(--text-editorial-xl);letter-spacing:-.02em;font-variant-numeric:tabular-nums oldstyle-nums;color:var(--ink);font-weight:400;line-height:1.02}.portal-pdf-note{border:1px solid var(--line);color:var(--ink-4);background:var(--surface);border-radius:5px;align-items:center;gap:8px;padding:9px 12px;font-size:12px;display:inline-flex}.back-link{color:var(--ink-4);margin-bottom:4px;display:inline-block}.align-right{text-align:right}.invoice-payment-summary{border:1px solid var(--line);background:var(--bg);border-radius:6px;gap:2px;margin-bottom:14px;padding:12px;display:grid}.invoice-payment-summary>div{justify-content:space-between;gap:14px;padding:6px 0;font-size:13px;display:flex}.invoice-payment-summary span{color:var(--ink-4)}.invoice-payment-summary .grand{border-top:1px solid var(--line);margin-top:4px;padding-top:10px;font-weight:500}.invoice-snapshot-box{border:1px solid var(--line);background:var(--surface);border-radius:6px;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:10px;margin-bottom:14px;padding:12px;display:grid}.invoice-snapshot-box svg{color:var(--success);margin-top:2px}.invoice-snapshot-box.muted svg{color:var(--ink-4)}.invoice-snapshot-box strong,.invoice-snapshot-box span{display:block}.invoice-snapshot-box span{color:var(--ink-4);overflow-wrap:anywhere;font-size:11px}.invoice-payment-list{gap:8px;margin-bottom:14px;display:grid}.invoice-payment-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:14px;padding-bottom:8px;font-size:13px;display:flex}.invoice-payment-row:last-child{border-bottom:0}.invoice-payment-row span{color:var(--ink-4);margin-top:2px;font-size:11px;display:block}.payment-form{border-top:1px solid var(--line);gap:10px;margin-top:12px;padding-top:14px;display:grid}.muted-copy{color:var(--ink-4);font-size:13px;line-height:1.55}.settings-grid{align-items:start}.settings-stack{gap:16px;display:grid}.invoice-next-number{font-size:24px}.settings-layout{grid-template-columns:minmax(190px,220px) minmax(0,1fr);align-items:start;gap:24px;display:grid}.settings-nav{flex-direction:column;gap:2px;font-size:13px;display:flex}.settings-nav a{color:var(--ink-3);border-radius:5px;padding:8px 12px}.settings-nav a:hover{background:var(--bg-2);color:var(--ink)}.settings-nav a.active{background:var(--ink);color:var(--bg);font-weight:500}.settings-panel{min-width:0}.settings-subtitle{margin:20px 0 12px}.ops-list{display:grid}.ops-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;padding:12px 18px;display:flex}.ops-row:last-child{border-bottom:none}.ops-row-main{align-items:center;gap:12px;min-width:0;display:flex}.ops-row-title{color:var(--ink);font-size:13px}.ops-row-detail{color:var(--ink-4);font-size:11px;font-family:var(--mono);overflow-wrap:anywhere}.ops-row-muted{color:var(--ink-5);font-family:var(--mono);font-size:12px}.ops-detail-list{font-family:var(--mono);grid-template-columns:130px 1fr}.ops-summary-grid{grid-template-columns:minmax(0,1.45fr) minmax(min(100%,340px),.9fr)}.ops-runbook-list{font-family:var(--sans);grid-template-columns:1fr;gap:6px}.ops-runbook-list dt{font-family:var(--mono);font-size:11px}.ops-runbook-list dd{overflow-wrap:break-word;line-height:1.5}.ops-runbook-list code{font-family:var(--mono);white-space:nowrap;font-size:12px}.page-split{grid-template-columns:minmax(220px,280px) minmax(0,1fr);gap:20px;display:grid}.documents-split{align-items:start}.tree-panel{padding:8px}.tree{gap:2px;font-size:13px;display:grid}.tree .tn{color:var(--ink-3);cursor:pointer;border-radius:4px;align-items:center;gap:8px;padding:6px 10px;display:flex}.tree .tn:hover{background:var(--bg-2);color:var(--ink)}.tree .tn.active{background:var(--ink);color:var(--bg)}.tree .tn.active svg{color:var(--bg)}.tree .tn svg{color:var(--ink-4);flex:none}.tree .children{border-left:1px solid var(--line);margin:3px 0 4px 11px;padding-left:18px}.tree-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.tree-count{font-size:10px;font-family:var(--mono);opacity:.72}.muted-tree-row{color:var(--ink-5);cursor:default}.muted-tree-row:hover{color:var(--ink-5);background:0 0}.document-pathbar{justify-content:space-between;gap:14px}.document-breadcrumb,.portal-document-crumb{min-width:0;font-family:var(--mono);color:var(--ink-4);align-items:center;gap:8px;font-size:12px;display:flex}.document-breadcrumb a,.portal-document-crumb a{color:var(--ink-4)}.document-breadcrumb a:hover,.portal-document-crumb a:hover{color:var(--ink)}.document-breadcrumb .sep,.portal-document-crumb .sep{opacity:.4}.document-breadcrumb .cur,.portal-document-crumb .cur,.portal-document-crumb>span:first-child{color:var(--ink)}.document-actions{flex-wrap:wrap;gap:6px;margin-left:auto;display:flex}.document-panel{margin-bottom:16px}.card-subline{color:var(--ink-4);margin-top:2px;font-size:11px}.permission-strip{flex-wrap:wrap;gap:20px;display:flex}.permission-dot-row{align-items:center;gap:6px;font-size:12px;display:flex}.permission-dot-row .muted{color:var(--ink-5)}.permission-dot{background:var(--bg-2);width:14px;height:14px;color:var(--surface);border-radius:3px;place-items:center;display:grid}.permission-dot.on{background:var(--success)}.document-name-cell{align-items:center;gap:10px;min-width:0;display:flex}.document-name-cell span{overflow-wrap:anywhere;min-width:0}.document-share-card,.document-table-wrap{margin-bottom:16px}.document-dropzone{border:2px dashed var(--line-2);text-align:center;color:var(--ink-4);border-radius:8px;justify-items:center;gap:8px;margin-top:20px;padding:20px;display:grid}.document-dropzone.compact{text-align:left;justify-items:stretch;margin-top:0}.document-dropzone .dropzone-copy{gap:4px;font-size:13px;display:grid}.document-dropzone .dropzone-copy label{color:var(--ink-4);cursor:pointer}.document-dropzone .dropzone-copy span{color:var(--ink);font-weight:500}.document-dropzone .dropzone-copy div{font-size:11px;font-family:var(--mono);color:var(--ink-4)}.document-dropzone input[type=file]{max-width:100%;font-size:12px}.upload-progress{color:var(--ink-4);gap:7px;margin-top:12px;font-size:12px;display:grid}.upload-progress[hidden]{display:none}.upload-progress-bar{background:var(--bg-3);border:1px solid var(--line);border-radius:999px;height:7px;overflow:hidden}.upload-progress-bar span{border-radius:inherit;background:var(--ink);width:0;height:100%;transition:width .16s;display:block}.upload-progress-status{font-family:var(--mono);font-size:11px}.document-preview-layout{grid-template-columns:minmax(0,1fr) minmax(260px,320px);align-items:start;gap:16px;display:grid}.document-preview-card{min-width:0}.document-preview-body{place-items:stretch stretch;min-height:520px;display:grid}.document-pdf-preview{border:1px solid var(--line);background:var(--bg-2);border-radius:6px;width:100%;min-height:72vh}.document-image-preview{background:var(--bg-2);border:1px solid var(--line);border-radius:6px;place-items:center;min-height:520px;display:grid;overflow:auto}.document-image-preview img{width:auto;max-height:72vh}.document-preview-meta{position:sticky;top:78px}.portal-documents-header{justify-content:space-between;align-items:flex-end;gap:18px;margin-bottom:24px;display:flex}.portal-documents-header h1{font-family:var(--serif);font-size:var(--text-editorial-lg);letter-spacing:-.018em;color:var(--ink);font-weight:400;line-height:1.04}.portal-documents-header p{color:var(--ink-3);max-width:60ch;margin-top:12px;font-size:16px;line-height:1.55}.portal-documents-header .actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.portal-folder-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:14px;margin-bottom:28px;display:grid}.portal-folder-card{transition:transform .12s,border-color .12s,background .12s;display:block}.portal-folder-card:hover,.portal-folder-card.active{border-color:var(--line-2);background:var(--bg-2);transform:translateY(-1px)}.portal-folder-title{align-items:center;gap:10px;margin-bottom:10px;display:flex}.portal-folder-title span{overflow-wrap:anywhere;min-width:0;font-size:15px;font-weight:500}.portal-folder-permissions{color:var(--ink-4);font-size:11px;font-family:var(--mono);margin-top:6px}.portal-document-section-hd{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:12px;display:flex}.portal-document-section-hd h2{font-size:16px;font-weight:500}.tickets-page .metric-grid{margin-bottom:18px}.ticket-filters{align-items:end}.tickets-table-wrap{overflow-x:auto}.tickets-table{min-width:980px}.ticket-detail-grid{align-items:start}.ticket-main-stack,.ticket-side-stack{align-content:start;gap:16px;display:grid}.ticket-side-stack{position:sticky;top:82px}.ticket-badges{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.msg{border-bottom:1px solid var(--line);gap:12px;padding:14px 0;display:flex}.msg:last-child{border-bottom:none}.msg .avatar{border-radius:50%;flex-shrink:0;place-items:center;width:32px;height:32px;font-size:12px;font-weight:600;display:grid}.msg .avatar.client{background:var(--info-bg);color:var(--info)}.msg .avatar.admin{background:var(--ink);color:var(--bg)}.msg .avatar.note{background:var(--warn-bg);color:var(--warn)}.msg .bd{flex:1;min-width:0}.msg .hdr{flex-wrap:wrap;align-items:baseline;gap:8px;margin-bottom:4px;font-size:12px;display:flex}.msg .hdr .who{color:var(--ink);font-weight:500}.msg .hdr .when{color:var(--ink-4);font-family:var(--mono);font-size:11px}.msg-role{color:var(--info);font-size:11px}.msg-body{color:var(--ink-2);overflow-wrap:anywhere;font-size:13px;line-height:1.6}.msg-body p{margin-bottom:10px}.msg-body p:last-child{margin-bottom:0}.msg.is-note{background:var(--warn-bg);border:1px solid oklch(88% .08 70);border-radius:5px;margin:8px 0;padding:14px}.msg.is-note .hdr .who{color:var(--warn)}.ticket-attachments{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.ticket-attachment{font-size:11px;font-family:var(--mono);background:var(--bg-2);color:var(--ink-3);border-radius:3px;align-items:center;gap:4px;max-width:100%;padding:3px 8px;display:inline-flex}.ticket-attachment span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.ticket-attachment small{color:var(--ink-4)}.ticket-composer{border-top:1px solid var(--line);margin-top:18px;padding-top:18px}.ticket-composer-title{color:var(--ink-3);margin-bottom:10px;font-size:12px;font-weight:500}.ticket-composer-actions,.ticket-upload-line{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.ticket-composer-actions>span,.ticket-upload-line span{color:var(--ink-4);font-family:var(--mono);font-size:11px}.is-note-composer{background:var(--warn-bg);border:1px solid oklch(88% .08 70);border-radius:6px;padding:14px}.portal-ticket-list{overflow:hidden}.portal-ticket-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:16px;padding:16px 20px;transition:background .12s;display:flex}.portal-ticket-row:hover{background:var(--bg-2)}.portal-ticket-row.last{border-bottom:none}.portal-ticket-main{flex:1;gap:3px;min-width:0;display:grid}.portal-ticket-main strong{color:var(--ink);font-size:14px;font-weight:500}.portal-ticket-main>span:last-child{color:var(--ink-4);font-size:12px}.portal-ticket-meta{align-items:center;gap:8px;margin-bottom:2px;display:flex}.portal-ticket-meta .mono{color:var(--ink-4);font-size:11px}.portal-ticket-form-page{max-width:720px}.portal-ticket-detail-page{max-width:860px}.portal-ticket-heading{justify-content:space-between;align-items:flex-start;gap:16px;margin:14px 0 20px;display:flex}.portal-ticket-heading h1{font-family:var(--serif);font-size:var(--text-editorial-md);letter-spacing:-.012em;color:var(--ink);font-weight:400;line-height:1.08}.ticket-number{color:var(--ink-4);margin-bottom:6px;font-size:11px}.ticket-form-footer{justify-content:space-between}.ticket-closed-note{border:1px solid var(--line);background:var(--bg-2);color:var(--ink-4);border-radius:6px;align-items:center;gap:8px;margin-top:18px;padding:12px 14px;font-size:12px;display:flex}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--line-2);border:2px solid var(--bg);border-radius:10px}::-webkit-scrollbar-thumb:hover{background:var(--ink-5)}.portal-section{display:block}.portal-section+.portal-section{border-top:1px solid var(--line);margin-top:44px;padding-top:44px}.portal-section-hd{border-bottom:none;justify-content:space-between;align-items:baseline;margin-bottom:18px;padding-bottom:0;display:flex}.portal-section-hd h2{font-family:var(--serif);letter-spacing:-.01em;color:var(--ink);font-size:22px;font-weight:400;line-height:1.15}.portal-section-hd .link{color:var(--ink-4);font-size:12px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em}.portal-section-hd .link:hover{color:var(--ink)}.portal-flat-list{border-top:1px solid var(--line);flex-direction:column;display:flex}.portal-flat-list>a,.portal-flat-list>.dashboard-row{border-bottom:1px solid var(--line);transition:background var(--dur-1) var(--ease-out), padding var(--dur-1) var(--ease-out);background:0 0;border-radius:0;padding:18px 4px}.portal-flat-list>a:hover,.portal-flat-list>.dashboard-row:hover{background:var(--bg-2);padding-left:10px;padding-right:10px}.portal-flat-quick{border-top:1px solid var(--line);gap:0}.portal-flat-quick .quick-link{border:none;border-bottom:1px solid var(--line);border-radius:0;padding:14px 4px;transform:none!important}.portal-flat-quick .quick-link:hover{background:var(--bg-2);border-bottom-color:var(--line);padding-left:10px;padding-right:10px}.portal-flat-timeline{padding:4px 0 0}.portal-flat-empty{border-top:1px solid var(--line);padding:36px 0}@media (max-width:1120px){.grid-2,.portal-dashboard-layout,.project-detail-grid,.ticket-detail-grid,.client-detail-grid,.settings-grid,.ops-summary-grid,.invoice-form-grid,.invoice-detail-grid,.invoice-detail-grid.portal-version,.document-preview-layout{grid-template-columns:1fr}.invoice-total-card,.document-preview-meta,.ticket-side-stack{position:static}.portal-topbar{gap:14px}.portal-topbar nav{margin-left:8px}.portal-topbar nav a{padding-inline:10px}.portal-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:980px){:root{--page-pad-x:16px;--page-pad-y:24px;--space-editorial:40px}.app-shell{min-height:100vh;display:block}.app-sidebar{z-index:50;visibility:hidden;opacity:1;pointer-events:none;width:min(320px,100vw - 28px);height:100dvh;transition:transform var(--dur-3) var(--ease-out), visibility var(--dur-3) var(--ease-out);will-change:transform;position:fixed;inset:0 auto 0 0;overflow-y:auto;transform:translate(-105%);box-shadow:24px 0 60px #0a0a0a3d}.app-sidebar.is-open{visibility:visible;pointer-events:auto;transform:translate(0)}.app-sidebar[aria-hidden=true]{visibility:hidden;pointer-events:none;transform:translate(-105%)}.app-sidebar nav{grid-template-columns:1fr;display:grid}.app-sidebar nav a{min-height:var(--touch-target)}.app-mobile-logout-link{width:100%;min-height:var(--touch-target);color:var(--sidebar-ink);border-radius:5px;justify-content:center;align-items:center;gap:8px;margin-top:10px;padding:10px 12px;display:flex}.app-mobile-logout-link:hover{background:var(--sidebar-bg-hover);color:var(--surface)}.app-sidebar-backdrop{z-index:40;opacity:0;pointer-events:none;transition:opacity var(--dur-2) var(--ease-out);background:#0a0a0a52;display:block;position:fixed;inset:0}.app-sidebar-backdrop[hidden]{display:none}.app-sidebar-backdrop.is-open{opacity:1;pointer-events:auto}.app-mobile-menu-button{width:var(--touch-target);height:var(--touch-target);border:1px solid var(--line);background:var(--surface);color:var(--ink-3);border-radius:5px;flex:none;place-items:center;display:grid}.app-mobile-menu-button:hover{background:var(--bg-2);color:var(--ink)}.topbar{gap:10px;padding:10px 16px}.topbar .crumbs{flex:1;margin-right:0}.topbar .actions{margin-left:auto}.topbar .actions .btn{min-height:var(--touch-target)}.topbar .actions form{display:none}.page{padding:24px 16px 36px}.grid-2,.grid-3,.page-split,.settings-layout{grid-template-columns:1fr}.permission-grid.compact{grid-template-columns:repeat(2,minmax(0,1fr))}.portal-topbar{flex-wrap:wrap;gap:12px;padding:12px 16px}.portal-topbar .brand small{display:none}.portal-topbar .right{margin-left:0;display:flex}.portal-topbar .right form,.portal-topbar .portal-user{display:none}.mobile-menu-button{display:grid}.portal-topbar nav{order:4;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;margin:0;display:none}.portal-topbar nav.is-open{display:grid}.portal-topbar nav a{text-align:center}.portal-topbar nav .portal-mobile-logout{grid-column:1/-1;margin:0;display:block}.portal-topbar nav a,.portal-topbar nav .portal-mobile-logout-link{min-height:var(--touch-target)}.portal-content{padding:28px 16px 40px}.portal-hero{flex-direction:column;align-items:flex-start}.portal-dashboard-hd{margin-bottom:28px}.portal-summary{width:100%}.portal-module-grid{grid-template-columns:1fr}.portal-module{align-items:flex-start}.auth-wrap{grid-template-columns:1fr}.auth-brand{min-height:auto;padding:28px 24px}.auth-brand .pitch{margin-top:80px}.auth-brand .pitch h2{font-size:28px}.auth-form{align-items:flex-start;padding:32px 24px}.portal-invoice-hd,.portal-documents-header{flex-direction:column;align-items:flex-start}}@media (max-width:560px){.page-hd{align-items:start;gap:14px;display:grid}.page{padding:22px 16px 32px}.metric-grid,.portal-metric-grid{grid-template-columns:1fr}.portal-panel-head{flex-direction:column;align-items:flex-start;gap:8px;padding:16px}.portal-panel .dashboard-row{flex-wrap:wrap;align-items:flex-start;padding:15px 16px}.portal-panel .dashboard-row .btn{width:100%;margin-left:0}.portal-project-preview-card{padding:16px}.portal-project-card-inner{gap:14px;padding:20px 18px}.portal-project-progress{grid-template-columns:minmax(0,1fr) auto}.project-card-meta{gap:6px}.page-hd .actions,.portal-documents-header .actions,.form-actions,.form-actions>div,.pagination-row>div{width:100%}.page-hd .actions,.portal-documents-header .actions{justify-content:flex-start}.page-hd .actions .btn,.portal-documents-header .actions .btn,.form-actions .btn,.pagination-row .btn{min-height:var(--touch-target);flex:160px}.btn-sm,.chip{min-height:var(--touch-target)}.filters{grid-template-columns:1fr;align-items:stretch;display:grid}.portal-filter-strip{scrollbar-width:none;flex-wrap:nowrap;align-items:center;margin-inline:-16px;padding:0 16px 4px;display:flex;overflow-x:auto}.portal-filter-strip::-webkit-scrollbar{display:none}.portal-filter-strip .chip{flex:none}.filter-search,.filter-select{width:100%;min-width:0}.app-sidebar nav{grid-template-columns:1fr}.portal-heading{margin-bottom:28px}.portal-dashboard-hd{margin-bottom:36px}.portal-project-heading{margin-bottom:24px}.table-wrap{overflow-x:auto}table.tbl{min-width:620px}table.tbl.responsive-task-table{min-width:0}.invoice-lines-table{min-width:760px}.invoice-paper{padding:22px 18px}.settings-nav{grid-template-columns:repeat(2,minmax(0,1fr));padding-bottom:0;display:grid;overflow:visible}.settings-nav a{text-align:center}.ops-row{flex-direction:column;align-items:flex-start}.ops-row-muted{display:none}.form-grid,.permission-grid,.permission-grid.compact{grid-template-columns:1fr}.membership-main{grid-template-columns:auto minmax(0,1fr)}.membership-status{grid-column:1/-1;justify-items:start}.detail-list{grid-template-columns:1fr}.project-card-meta,.portal-project-main,.project-heading-meta{flex-direction:column;align-items:flex-start}.progress-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.progress-card{padding:18px}.milestone-row{grid-template-columns:auto minmax(0,1fr);align-items:start}.milestone-row>.badge,.milestone-row>.link,.milestone-row>.row-actions{grid-column:2;justify-self:start}.pagination-row{flex-direction:column;align-items:flex-start}.quick-links{gap:10px}.quick-link{padding:11px 12px}.portal-folder-grid{grid-template-columns:1fr}.document-pathbar{flex-direction:column;align-items:flex-start}.document-actions{margin-left:0}.permission-strip{gap:10px}.portal-ticket-row,.portal-ticket-heading{flex-direction:column}.ticket-composer-actions,.ticket-upload-line{flex-direction:column;align-items:flex-start}.invoice-paper-top,.invoice-paper-meta,.invoice-paper-meta.two-col{text-align:left;grid-template-columns:1fr;display:grid}.invoice-paper-number,.align-right{text-align:left}.invoice-paper-lines{min-width:0;display:block}.invoice-paper-lines thead{display:none}.invoice-paper-lines tbody,.invoice-paper-lines tr,.invoice-paper-lines td{width:100%;display:block}.invoice-paper-lines tr{border-bottom:1px solid var(--line);padding:10px 0}.invoice-paper-lines td{text-align:right;white-space:normal;border-bottom:0;justify-content:space-between;gap:18px;padding:5px 0;display:flex}.invoice-paper-lines td:before{content:attr(data-label);color:var(--ink-4);font-family:var(--mono);letter-spacing:.06em;text-align:left;text-transform:uppercase;flex:none;font-size:11px}.invoice-paper-lines td:first-child{text-align:left;padding-bottom:8px;display:block}.invoice-paper-lines td:first-child:before{margin-bottom:3px;display:block}.auth-brand{padding:22px 18px}.auth-brand .pitch{margin-top:42px}.auth-form{padding:28px 18px}.auth-form h1{font-size:36px}.document-dropzone{text-align:left;align-items:stretch}.portal-ticket-meta{flex-wrap:wrap}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.skeleton{background:var(--bg-2);animation:none}.btn.is-loading:after{animation-duration:.9s!important}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}