:root{--paper:#f2f4f7;--surface:#ffffff;--sunk:#f7f8fa;--ink:#172033;--ink-2:#4b566a;--ink-3:#8790a0;--line:#e1e5ec;--line-2:#cfd5df;--accent:#6d5efc;--accent-ink:#ffffff;--accent-soft:color-mix(in srgb,var(--accent) 12%,transparent);--good:#17784f;--good-soft:#e3f3ea;--bad:#be3a22;--bad-soft:#fbe9e5;--warn:#9c5d00;--warn-soft:#fbf0dc;--info:#35558f;--info-soft:#e7edf8;--display:"Bricolage Grotesque","Instrument Sans",system-ui,sans-serif;--body:"Instrument Sans",system-ui,-apple-system,"Segoe UI",sans-serif;--r-lg:18px;--r-md:12px;--r-sm:8px;--shadow:0 1px 0 rgba(23,32,51,0.04),0 6px 24px -12px rgba(23,32,51,0.18);--ease:cubic-bezier(0.2,0.7,0.1,1);color-scheme:light}*{box-sizing:border-box}body,html{margin:0;background:var(--paper);color:var(--ink);font-family:var(--body);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:inherit}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.num,table{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}h1,h2,h3{font-family:var(--display);font-weight:600;letter-spacing:-.02em;margin:0;line-height:1.15}h1{font-size:30px}h2{font-size:20px}h3{font-size:16px;letter-spacing:-.01em}p{margin:0}.muted{color:var(--ink-2)}.faint{color:var(--ink-3)}.small{font-size:13px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.frame{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:100vh}.rail{position:-webkit-sticky;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:4px;padding:20px 14px;background:var(--surface);border-right:1px solid var(--line);overflow-y:auto}.brandmark{display:flex;align-items:center;gap:10px;padding:4px 8px 16px;text-decoration:none;font-family:var(--display);font-weight:600;font-size:17px;letter-spacing:-.02em}.brandmark svg{flex:none}.rail-client{display:flex;align-items:center;gap:10px;padding:10px 8px;margin:6px 0 10px;border-radius:var(--r-md);background:var(--sunk);border:1px solid var(--line)}.rail-client strong{display:block;font-size:14px;line-height:1.2}.rail-client span{font-size:12px;color:var(--ink-3)}.rail-client select{width:100%;border:0;background:transparent;font-weight:600;font-size:14px;padding:0;cursor:pointer}.nav{flex-direction:column;gap:2px}.nav,.nav a{display:flex}.nav a{align-items:center;gap:10px;padding:8px 10px;border-radius:var(--r-sm);text-decoration:none;color:var(--ink-2);font-weight:500;font-size:14px}.nav a:hover{background:var(--sunk);color:var(--ink)}.nav a[aria-current=page]{background:var(--accent-soft);color:var(--ink)}.nav a[aria-current=page] svg{color:var(--accent)}.nav-label{font-size:12px;color:var(--ink-3);padding:14px 10px 4px}.rail-foot{margin-top:auto;padding:12px 8px 0;border-top:1px solid var(--line);font-size:13px;color:var(--ink-3);gap:6px}.main,.rail-foot{display:flex;flex-direction:column}.main{min-width:0}.page{padding:24px 32px 64px;display:flex;flex-direction:column;gap:24px;max-width:1360px;width:100%}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}.page-head p{margin-top:6px;max-width:64ch}.mobile-top{display:none}.filterbar{position:-webkit-sticky;position:sticky;top:0;z-index:20;flex-wrap:wrap;gap:10px 18px;padding:12px 32px;background:color-mix(in srgb,var(--paper) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.fb-item,.filterbar{display:flex;align-items:center}.fb-item{gap:8px;font-size:13px;color:var(--ink-2)}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:999px;border:1px solid var(--line-2);background:var(--surface);font-size:13px;font-weight:500;color:var(--ink-2);cursor:pointer;line-height:1.3}.chip:hover{border-color:var(--ink-3)}.chip[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:#fff}.chip .dot{width:8px;height:8px;border-radius:50%}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:9px 16px;border-radius:10px;border:1px solid var(--line-2);background:var(--surface);font-weight:600;font-size:14px;cursor:pointer;text-decoration:none;white-space:nowrap;transition:background .15s,border-color .15s,transform .1s}.btn:hover{border-color:var(--ink-3)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--ink);border-color:var(--ink);color:#fff}.btn-primary:hover{background:#26324a;border-color:#26324a}.btn-accent{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn-danger{color:var(--bad)}.btn-sm{padding:6px 11px;font-size:13px;border-radius:8px}.btn-ghost{border-color:transparent;background:transparent}.btn-ghost:hover{background:var(--sunk);border-color:transparent}.input,.select{width:100%;padding:9px 12px;border-radius:10px;border:1px solid var(--line-2);background:var(--surface);font-size:14px}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:32px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5 6 7.5 9 4.5' fill='none' stroke='%234b566a' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 11px center;cursor:pointer}.select.compact{width:auto;padding:6px 30px 6px 11px;font-size:13px;font-weight:600;border-radius:999px}.input:focus,.select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.field{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600;color:var(--ink-2)}.field .hint{font-weight:400;color:var(--ink-3)}.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));grid-gap:14px;gap:14px}.row{align-items:center;gap:10px;flex-wrap:wrap}.row,.stack{display:flex}.stack{flex-direction:column;gap:16px}.spread{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.seg{display:inline-flex;padding:3px;border-radius:10px;background:var(--sunk);border:1px solid var(--line)}.seg button{border:0;background:transparent;padding:5px 12px;border-radius:7px;font-size:13px;font-weight:600;color:var(--ink-2);cursor:pointer}.seg button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgba(23,32,51,.12)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:20px;box-shadow:var(--shadow);min-width:0}.card-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px}.card-head p{font-size:13px;color:var(--ink-3)}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:20px}.grid-2,.grid-3-2{display:grid;gap:20px}.grid-3-2{grid-template-columns:minmax(0,3fr) minmax(0,2fr);grid-gap:20px}.banner{padding:12px 14px;border-radius:var(--r-md);font-size:14px;border:1px solid transparent}.banner.info{background:var(--info-soft);color:var(--info)}.banner.error{background:var(--bad-soft);color:var(--bad)}.banner.ok{background:var(--good-soft);color:var(--good)}.banner.warn{background:var(--warn-soft);color:var(--warn)}.empty{border:1.5px dashed var(--line-2);border-radius:var(--r-lg);padding:40px 24px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:12px}.empty p{max-width:52ch;color:var(--ink-2)}.hero{position:relative;padding:28px 28px 24px;border-radius:24px;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);overflow:hidden}.hero:before{content:"";position:absolute;inset:0 0 auto 0;height:4px;background:var(--accent)}.hero-top{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;align-items:center;color:var(--ink-3);font-size:13px}.hero-sentence{font-family:var(--display);font-size:clamp(26px,3.2vw,42px);font-weight:400;line-height:1.18;letter-spacing:-.025em;margin:14px 0 22px;max-width:30ch;text-wrap:balance}.hero-sentence b{font-weight:700}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));border-top:1px solid var(--line)}.kpi{padding:14px 16px 4px 0;min-width:0}.kpi+.kpi{padding-left:16px;border-left:1px solid var(--line)}.kpi-label{font-size:13px;color:var(--ink-2);display:flex;align-items:center;gap:6px}.kpi-value{font-family:var(--display);font-size:26px;font-weight:600;letter-spacing:-.02em;margin:2px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kpi-foot{display:flex;gap:8px;color:var(--ink-3)}.delta,.kpi-foot{align-items:center;font-size:12px}.delta{display:inline-flex;gap:2px;font-weight:600;padding:1px 7px;border-radius:999px;white-space:nowrap}.delta.good{background:var(--good-soft);color:var(--good)}.delta.bad{background:var(--bad-soft);color:var(--bad)}.delta.flat{background:var(--sunk);color:var(--ink-3)}.target-flag{font-size:11px;font-weight:600;padding:1px 6px;border-radius:4px}.target-flag.miss{background:var(--warn-soft);color:var(--warn)}.target-flag.hit{background:var(--good-soft);color:var(--good)}.chart{width:100%;display:block;overflow:visible}.chart text{font-family:var(--body);font-size:11px;fill:var(--ink-3)}.chart .grid{stroke:var(--line);stroke-width:1}.bar-grow{transform-box:fill-box;transform-origin:bottom;animation:grow .9s var(--ease) both}@keyframes grow{0%{transform:scaleY(0)}}.line-draw{stroke-dasharray:var(--len,2000);stroke-dashoffset:var(--len,2000);animation:draw 1.2s .35s var(--ease) forwards}@keyframes draw{to{stroke-dashoffset:0}}.fade-in{animation:fadein .6s .8s var(--ease) both}@keyframes fadein{0%{opacity:0}}.timeline-col{cursor:pointer}.timeline-col:hover .tl-hit{fill:var(--sunk)}.legend{display:flex;flex-wrap:wrap;gap:14px;font-size:12px;color:var(--ink-2)}.legend span{display:inline-flex;align-items:center;gap:6px}.legend i{width:10px;height:10px;border-radius:3px;display:inline-block}.legend i.line{height:3px;border-radius:2px;width:14px}.tooltip{position:absolute;pointer-events:none;z-index:5;background:var(--ink);color:#fff;font-size:12px;padding:8px 10px;border-radius:8px;white-space:nowrap;box-shadow:0 8px 24px -8px rgba(0,0,0,.35);transform:translate(-50%,calc(-100% - 10px))}.tooltip b{font-weight:600}.tooltip .t-row{display:flex;justify-content:space-between;gap:16px}.pace-meter{position:relative;height:14px;border-radius:999px;background:var(--sunk);border:1px solid var(--line);overflow:visible}.pace-fill{position:absolute;inset:0 auto 0 0;border-radius:999px;background:var(--accent);transform-origin:left;animation:fill 1s .2s var(--ease) both}@keyframes fill{0%{transform:scaleX(0)}}.pace-fill.over{background:var(--bad)}.pace-marker{position:absolute;top:-5px;bottom:-5px;width:2px;background:var(--ink);border-radius:2px}.pace-status{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:2px 9px;border-radius:999px}.pace-status.done,.pace-status.on-track{background:var(--good-soft);color:var(--good)}.pace-status.under{background:var(--warn-soft);color:var(--warn)}.pace-status.over{background:var(--bad-soft);color:var(--bad)}.pace-status.future,.pace-status.no-budget{background:var(--sunk);color:var(--ink-3)}.facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px 16px;gap:12px 16px;margin-top:14px}.facts div span{display:block;font-size:12px;color:var(--ink-3)}.facts div strong{font-family:var(--display);font-size:18px;font-weight:600;letter-spacing:-.01em}.insights{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));grid-gap:12px;gap:12px}.insight{display:grid;grid-template-columns:28px 1fr;grid-gap:10px;gap:10px;padding:14px 16px;border-radius:var(--r-md);background:var(--sunk);border:1px solid var(--line)}.insight .ico{width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center}.insight.warning .ico{background:var(--bad-soft);color:var(--bad)}.insight.opportunity .ico{background:var(--info-soft);color:var(--info)}.insight.win .ico{background:var(--good-soft);color:var(--good)}.insight.info .ico{background:var(--warn-soft);color:var(--warn)}.insight h3,.insight p{overflow-wrap:anywhere}.insight h3{font-family:var(--body);font-size:14px;font-weight:600;letter-spacing:0;line-height:1.35}.insight p{font-size:13px;color:var(--ink-2);margin-top:4px}.table-wrap{overflow-x:auto;margin:0 -20px;padding:0 20px}table.data{width:100%;border-collapse:collapse;font-size:13px}table.data th{text-align:right;font-weight:600;color:var(--ink-3);font-size:12px;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none}table.data th button{all:unset;cursor:pointer}table.data th button:focus-visible{outline:2px solid var(--accent)}table.data td:first-child,table.data th:first-child{text-align:left}table.data td{text-align:right;padding:9px 10px;border-bottom:1px solid var(--line);white-space:nowrap}table.data td.name{white-space:normal;min-width:240px;max-width:420px;font-weight:500;line-height:1.35}.long-name,table.data td.name{overflow-wrap:anywhere}table.data tbody tr:hover td{background:var(--sunk)}table.data tfoot td{font-weight:700;border-bottom:0;border-top:1.5px solid var(--line-2)}table.data td .sub{display:block;font-size:11px;color:var(--ink-3)}table.data td .sub.good{color:var(--good)}table.data td .sub.bad{color:var(--bad)}.share-bar{display:inline-block;height:6px;border-radius:3px;background:var(--accent);vertical-align:middle;margin-right:8px;opacity:.8}.platform-tag{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-2)}.platform-tag i{width:8px;height:8px;border-radius:50%}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));grid-gap:18px;gap:18px}.client-card{position:relative;display:flex;flex-direction:column;gap:14px;padding:20px;border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);text-decoration:none;overflow:hidden;transition:transform .2s var(--ease),box-shadow .2s var(--ease)}.client-card:hover{transform:translateY(-2px);box-shadow:0 1px 0 rgba(23,32,51,.04),0 14px 32px -14px rgba(23,32,51,.28)}.client-card .stripe{position:absolute;inset:0 auto 0 0;width:4px}.logo{flex:none;display:flex;align-items:center;justify-content:center;border-radius:10px;overflow:hidden;font-family:var(--display);font-weight:700;color:#fff}.logo img{width:100%;height:100%;object-fit:contain;background:#fff}.dropzone{border:1.5px dashed var(--line-2);border-radius:var(--r-lg);padding:36px 20px;text-align:center;background:var(--sunk);cursor:pointer;transition:border-color .15s,background .15s}.dropzone.over,.dropzone:hover{border-color:var(--accent);background:var(--accent-soft)}.map-table td,.map-table th{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;font-size:13px;vertical-align:middle}.map-table{width:100%;border-collapse:collapse}.sample{color:var(--ink-3);font-size:12px;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progress{height:8px;border-radius:999px;background:var(--sunk);overflow:hidden;border:1px solid var(--line)}.progress>div{height:100%;background:var(--accent);transition:width .3s var(--ease)}.steps{display:flex;gap:8px;flex-wrap:wrap;font-size:13px;color:var(--ink-3)}.steps span[aria-current=step]{color:var(--ink);font-weight:600}.group-list{display:flex;flex-wrap:wrap;gap:10px}.group-pill{display:inline-flex;align-items:center;gap:8px;padding:8px 12px 8px 10px;border-radius:12px;border:1px solid var(--line-2);background:var(--surface);font-weight:600;font-size:14px;cursor:pointer}.group-pill[aria-pressed=false]{opacity:.5;font-weight:500}.group-pill .swatch{width:12px;height:12px;border-radius:4px}.group-pill .edit{color:var(--ink-3);font-weight:500;font-size:12px;border-left:1px solid var(--line);padding-left:8px}.drawer-backdrop{position:fixed;inset:0;background:rgba(23,32,51,.32);z-index:40;animation:fadein .2s both}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(560px,100vw);background:var(--surface);z-index:41;display:flex;flex-direction:column;box-shadow:-20px 0 50px -20px rgba(0,0,0,.3);animation:slidein .28s var(--ease) both}@keyframes slidein{0%{transform:translateX(40px);opacity:0}}.drawer-foot,.drawer-head{padding:18px 22px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px}.drawer-foot{border-bottom:0;border-top:1px solid var(--line)}.drawer-body{padding:20px 22px;overflow-y:auto;flex:1 1;display:flex;flex-direction:column;gap:18px}.rule{display:grid;grid-template-columns:1fr 1fr 1.2fr auto;grid-gap:6px;gap:6px;align-items:center}.pick-list{max-height:260px;overflow-y:auto;border:1px solid var(--line);border-radius:var(--r-md)}.pick-list label{display:flex;align-items:center;gap:10px;padding:7px 12px;font-size:13px;border-bottom:1px solid var(--line);cursor:pointer}.pick-list label:last-child{border-bottom:0}.pick-list label .faint{margin-left:auto;white-space:nowrap}.swatches{display:flex;gap:8px;flex-wrap:wrap}.swatches button{width:26px;height:26px;border-radius:8px;border:2px solid transparent;cursor:pointer}.swatches button[aria-pressed=true]{border-color:var(--ink);box-shadow:inset 0 0 0 2px #fff}.slide-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:14px;gap:14px}.slide-thumb{border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);overflow:hidden;cursor:pointer;display:flex;flex-direction:column}.slide-thumb .art{aspect-ratio:16/9;background:var(--sunk);border-bottom:1px solid var(--line);position:relative;padding:10px}.slide-thumb .cap{padding:10px 12px;display:flex;gap:10px;align-items:flex-start;font-size:13px}.slide-thumb[aria-checked=false] .art{opacity:.35}.login-page{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}.login-art{background:var(--ink);color:#fff;padding:48px;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;position:relative}.login-art h1{font-size:clamp(32px,4vw,52px);max-width:14ch;font-weight:500}.login-form{display:flex;align-items:center;justify-content:center;padding:32px 20px}.login-form>div{width:100%;max-width:380px}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.001ms!important;animation-delay:0s!important;transition-duration:.001ms!important}.line-draw{stroke-dashoffset:0}}@media (max-width:1080px){.grid-2,.grid-3-2{grid-template-columns:1fr}}@media (max-width:860px){.frame{grid-template-columns:1fr}.rail{position:fixed;inset:0 auto 0 0;width:280px;z-index:50;transform:translateX(-100%);transition:transform .25s var(--ease);box-shadow:20px 0 40px -20px rgba(0,0,0,.3)}.rail.open{transform:none}.mobile-top{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:var(--surface);border-bottom:1px solid var(--line)}.page{padding:18px 16px 48px}.filterbar{padding:10px 16px;position:static}.hero{padding:20px 18px}.kpi+.kpi{border-left:0;padding-left:0}.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.kpi-value{font-size:20px}.kpi-foot{flex-wrap:wrap;gap:4px}.kpi{border-bottom:1px solid var(--line);padding-right:8px}.kpi:nth-child(2n){padding-left:12px!important;border-left:1px solid var(--line)!important}.rule{grid-template-columns:1fr 1fr}.login-page{grid-template-columns:1fr}.login-art{min-height:260px;padding:28px 20px}}.budget-line{display:grid;grid-template-columns:1fr 1fr 1.2fr .9fr auto;grid-gap:8px;gap:8px;align-items:center}@media (max-width:860px){.budget-line{grid-template-columns:1fr 1fr}}.type-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:10px;gap:10px}.type-chip{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:var(--r-md);border:1px solid var(--line);background:var(--sunk);text-align:left;cursor:pointer;font-size:14px}.type-chip:hover{border-color:var(--ink-3)}.type-chip .swatch{width:12px;height:12px;border-radius:4px;flex:none}.budget-table td.diff{font-weight:600}.budget-table td.diff.good{color:var(--good)}.budget-table td.diff.bad{color:var(--bad)}.budget-table td.diff.warn{color:var(--warn)}table.data.budget-table th{white-space:normal;vertical-align:bottom;line-height:1.25;min-width:64px;max-width:104px}table.data.budget-table td,table.data.budget-table th{padding-left:8px;padding-right:8px}table.data.budget-table td.plan{white-space:normal;min-width:128px}table.data.budget-table td.plan .sub{white-space:normal}table.data.budget-table .mini-bar{width:72px;margin-left:auto}.mini-bar{display:block;height:4px;margin-top:4px;border-radius:2px;background:var(--line);overflow:hidden}.mini-bar>span{display:block;height:100%;background:var(--accent)}.mini-bar>span.over{background:var(--bad)}