:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0a0a0b;--surface:#141416;--surface-2:#1c1c1f;--accent:#2f8bff;--good:#8fd0a0;--text:#f4f4f5;--text-2:#c4c4c8;--text-3:#8e8e94;--line:#2a2a2e;--track:#232326;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--radius:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,system-ui,sans-serif}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);padding-bottom:env(safe-area-inset-bottom);margin:0;font-size:1rem;line-height:1.45}a{color:inherit}h1,h2,h3,p{margin:0}.num{font-variant-numeric:tabular-nums}a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible,.trend:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.wrap{max-width:1200px;padding:0 max(var(--s4), env(safe-area-inset-left));margin:0 auto}main.wrap{padding-top:var(--s5)}.topbar{z-index:10;-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line);padding-top:env(safe-area-inset-top);background:#0a0a0bdb;position:sticky;top:0}.topbar .wrap{justify-content:space-between;align-items:center;height:60px;display:flex}.wordmark{letter-spacing:.22em;align-items:center;min-height:44px;font-size:.95rem;font-weight:800;text-decoration:none;display:inline-flex}.wordmark span{color:var(--accent)}.client{align-items:center;gap:var(--s2);color:var(--text-2);font-size:.875rem;display:flex}.avatar{background:var(--surface-2);width:36px;height:36px;color:var(--text);border:1px solid var(--line);border-radius:50%;place-items:center;font-size:.8rem;font-weight:700;display:grid}.signout{min-height:44px;padding:0 var(--s3);color:var(--text-2);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:999px;font-size:.875rem}.signout:hover{color:var(--text)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:var(--s4)}.card h2{font-size:1rem;font-weight:600}.sub{color:var(--text-3);margin-top:2px;font-size:.8125rem}.card-head{justify-content:space-between;align-items:baseline;gap:var(--s3);margin-bottom:var(--s4);display:flex}.live{align-items:center;gap:var(--s2);color:var(--text-2);font-size:.8125rem;display:inline-flex}.dot{background:var(--accent);border-radius:50%;flex:none;width:8px;height:8px;position:relative}.dot:after{content:"";border:2px solid var(--accent);opacity:0;border-radius:50%;animation:2.4s ease-out infinite pulse;position:absolute;inset:-4px}.dot.is-late{background:var(--text-3)}.dot.is-late:after{display:none}@keyframes pulse{0%{opacity:.8;transform:scale(.5)}to{opacity:0;transform:scale(1.6)}}@media (prefers-reduced-motion:reduce){.dot:after{animation:none}}.chip{letter-spacing:.02em;border:1px solid var(--line);color:var(--text-2);border-radius:999px;align-items:center;gap:6px;padding:2px 10px;font-size:.75rem;font-weight:600;display:inline-flex}.chip.is-live{background:color-mix(in srgb, var(--accent) 14%, transparent);color:var(--text);border-color:color-mix(in srgb, var(--accent) 40%, transparent)}.chip.is-ended{color:var(--text-3)}.chip.is-draft{color:var(--text);border-style:dashed}.chips{gap:var(--s2);display:flex}.meter{background:var(--track);border-radius:999px;gap:2px;height:8px;display:flex;position:relative}.meter i{background:var(--accent);border-radius:999px;height:100%;display:block}.meter i+i{background:var(--good)}.meter .tick{background:var(--text);border-radius:1px;width:2px;position:absolute;top:-4px;bottom:-4px}.good{color:var(--good)}.badge{background:var(--surface-2);color:var(--text-2);border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:.8125rem;font-weight:600;display:inline-flex}.badge.is-good{color:var(--good);background:#8fd0a01f}.note{color:var(--text-2);background:var(--surface-2);border:1px solid var(--line);padding:var(--s2) var(--s3);border-radius:10px;font-size:.8125rem}.empty{text-align:center;padding:var(--s7) var(--s4);color:var(--text-3)}.empty h2{color:var(--text);margin-bottom:var(--s2)}.login{min-height:100dvh;padding:var(--s5) var(--s4);place-items:center;display:grid}.login-box{gap:var(--s5);width:100%;max-width:380px;display:grid}.login-logo{width:160px;height:auto;margin:0 auto;display:block}.login h1{font-size:1.375rem;font-weight:700}.login-help{text-align:center;color:var(--text-3);text-wrap:balance;font-size:.8125rem}.form{gap:var(--s4);margin-top:var(--s5);display:grid}.form label{gap:var(--s1);color:var(--text-2);font-size:.875rem;display:grid}.form input{min-height:48px;padding:0 var(--s3);border:1px solid var(--line);background:var(--bg);color:var(--text);font:inherit;border-radius:10px;font-size:1rem}.form input:focus{border-color:var(--accent)}.form-error{color:var(--text);background:var(--surface-2);border-left:3px solid var(--text-2);padding:var(--s2) var(--s3);border-radius:6px;font-size:.875rem}.btn{justify-content:center;align-items:center;gap:var(--s2);min-height:48px;padding:0 var(--s5);background:var(--accent);color:#fff;font:inherit;cursor:pointer;border:0;border-radius:999px;font-weight:600;text-decoration:none;display:inline-flex}.btn:disabled{opacity:.6;cursor:default}.btn.is-quiet{color:var(--text);border:1px solid var(--line);min-height:44px;padding:0 var(--s4);background:0 0;font-size:.875rem}.btn.is-quiet:hover{border-color:var(--accent)}.page-head{justify-content:space-between;align-items:flex-end;gap:var(--s3);margin-bottom:var(--s5);flex-wrap:wrap;display:flex}.page-head h1{letter-spacing:-.01em;font-size:1.75rem;font-weight:700}.eyebrow{color:var(--text-3);margin-bottom:var(--s1);font-size:.8125rem}.summary{gap:var(--s2);margin-bottom:var(--s5);grid-template-columns:repeat(3,1fr);display:grid}.summary .card{padding:var(--s3)}.summary b{font-size:1.25rem;font-weight:700;display:block}.summary span{color:var(--text-3);font-size:.75rem;line-height:1.3;display:block}.filters{gap:var(--s2);margin-bottom:var(--s4);display:flex;overflow-x:auto}.filters a{white-space:nowrap;min-height:44px;padding:0 var(--s4);border:1px solid var(--line);color:var(--text-2);border-radius:999px;align-items:center;font-size:.875rem;text-decoration:none;display:inline-flex}.filters a[aria-current=true]{background:color-mix(in srgb, var(--accent) 16%, transparent);color:var(--text);border-color:var(--accent);font-weight:600}.group+.group{margin-top:var(--s5)}.group-title{margin-bottom:var(--s3);font-size:1rem;font-weight:600}.camps{gap:var(--s3);margin:0;padding:0;list-style:none;display:grid}.camp{text-decoration:none;transition:border-color .2s,transform .2s;display:block}.camp:hover{border-color:color-mix(in srgb, var(--accent) 50%, transparent)}.camp:active{transform:scale(.99)}@media (prefers-reduced-motion:reduce){.camp{transition:none}.camp:active{transform:none}}.camp-top{justify-content:space-between;align-items:center;gap:var(--s2);margin-bottom:var(--s3);display:flex}.brand{letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);font-size:.75rem;font-weight:600}.camp h3{overflow-wrap:anywhere;margin-bottom:2px;font-size:1.0625rem;font-weight:600}.camp .dates{color:var(--text-3);margin-bottom:var(--s4);font-size:.8125rem}.camp-stats{justify-content:space-between;align-items:baseline;gap:var(--s2);margin-bottom:var(--s2);color:var(--text-2);font-size:.875rem;display:flex}.camp-stats strong{color:var(--text);font-size:1.125rem;font-weight:700}.camp-foot{justify-content:space-between;gap:var(--s2);margin-top:var(--s3);color:var(--text-3);font-size:.75rem;display:flex}.back{align-items:center;gap:var(--s1);min-height:44px;color:var(--text-2);font-size:.875rem;text-decoration:none;display:inline-flex}.detail-top{justify-content:space-between;align-items:center;gap:var(--s3);margin-bottom:var(--s2);flex-wrap:wrap;display:flex}.detail-tags{gap:var(--s2);flex-wrap:wrap;align-items:center;display:flex}.detail-head h1{letter-spacing:-.01em;margin:var(--s2) 0;overflow-wrap:anywhere;font-size:1.625rem;font-weight:700}.meta{gap:var(--s1) var(--s4);color:var(--text-3);margin-bottom:var(--s5);flex-wrap:wrap;font-size:.8125rem;display:flex}.meta b{color:var(--text-2);font-weight:500}.grid{gap:var(--s3);display:grid}.hero{background:linear-gradient(160deg, var(--surface-2), var(--surface) 70%);padding:var(--s5) var(--s4)}.hero-label{color:var(--text-2);font-size:.875rem}.hero-num{letter-spacing:-.02em;margin:var(--s1) 0;font-size:3rem;font-weight:700;line-height:1.1}.hero-of{color:var(--text-2);margin-bottom:var(--s5);font-size:.9375rem}.hero-of strong{color:var(--text)}.hero .meter{height:12px}.hero .tick{top:-6px;bottom:-6px}.scale{justify-content:space-between;gap:var(--s2);color:var(--text-3);margin-top:var(--s2);font-size:.75rem;display:flex}.hero-foot{justify-content:space-between;align-items:center;gap:var(--s3);margin-top:var(--s4);color:var(--text-2);flex-wrap:wrap;font-size:.875rem;display:flex}.booked .row{justify-content:space-between;align-items:baseline;gap:var(--s3);padding:var(--s3) 0;border-top:1px solid var(--line);color:var(--text-2);font-size:.875rem;display:flex}.booked .row:first-of-type{border-top:0}.booked .row b{color:var(--text);text-align:right;font-size:1.0625rem;font-weight:600}.booked .row small{color:var(--text-3);font-size:.8125rem;font-weight:400}.booked .big b{font-size:1.5rem}.kpis{gap:var(--s3);grid-template-columns:1fr;display:grid}.kpi{align-items:end;gap:var(--s2);grid-template-columns:1fr auto;display:grid}.kpi-label{color:var(--text-2);font-size:.8125rem}.kpi-val{letter-spacing:-.01em;font-size:1.75rem;font-weight:700}.kpi-delta{color:var(--text-3);font-size:.8125rem}.kpi svg{display:block}.trend-wrap{min-height:220px;position:relative}.trend{touch-action:pan-y;width:100%;display:block}.tip{pointer-events:none;background:var(--bg);border:1px solid var(--line);padding:var(--s2) var(--s3);white-space:nowrap;opacity:0;border-radius:10px;font-size:.8125rem;transition:opacity .15s;position:absolute;top:0;box-shadow:0 8px 24px #00000059}.tip b{font-size:1rem;display:block}.tip span{color:var(--text-3)}details.table{margin-top:var(--s3);color:var(--text-3);font-size:.8125rem}details.table summary{cursor:pointer;min-height:32px}details.table table{border-collapse:collapse;width:100%;margin-top:var(--s2);color:var(--text-2)}details.table td,details.table th{text-align:right;border-bottom:1px solid var(--line);padding:4px 0;font-weight:400}details.table td:first-child,details.table th:first-child{text-align:left}.bars{gap:var(--s3);display:grid}.bar-row{gap:6px var(--s3);grid-template-columns:minmax(0,1fr) auto;align-items:center;font-size:.875rem;display:grid}.bar-row .name{color:var(--text-2);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.bar-row .val{text-align:right;font-weight:600}.bar{background:var(--track);border-radius:4px;grid-column:1/-1;height:8px}.bar i{background:var(--accent);border-radius:4px;height:100%;display:block}.completion .sub.foot{margin-top:var(--s4)}.phase{padding:var(--s4) 0;border-top:1px solid var(--line)}.phase:first-of-type{border-top:0;padding-top:0}.phase-top{justify-content:space-between;align-items:baseline;gap:var(--s3);margin-bottom:var(--s1);display:flex}.phase-top h3{font-size:1rem;font-weight:600}.phase-top .pct{white-space:nowrap;font-size:1.125rem;font-weight:700}.phase-top .pct.is-later{color:var(--text-2);font-size:.875rem;font-weight:600}.phase-sub{justify-content:space-between;gap:var(--s3);color:var(--text-3);margin-bottom:var(--s3);flex-wrap:wrap;font-size:.8125rem;display:flex}.phase .sub{margin-top:var(--s2)}footer{text-align:center;color:var(--text-3);padding:var(--s7) 0 var(--s6);font-size:.8125rem}footer b{color:var(--text-2);letter-spacing:.02em;font-weight:600}@media (min-width:720px){.wrap{padding:0 var(--s6)}main.wrap{padding-top:var(--s6)}.camps{gap:var(--s4);grid-template-columns:repeat(2,1fr)}.summary{gap:var(--s3)}.summary .card{padding:var(--s4)}.summary b{font-size:1.5rem}.kpis{grid-template-columns:repeat(3,1fr)}.card{padding:var(--s5)}.hero{padding:var(--s6)}.grid{gap:var(--s4)}}@media (min-width:1080px){.page-head h1,.detail-head h1{font-size:2.25rem}.hero-num{font-size:4rem}.top,.mid{grid-template-columns:2fr 1fr}.completion{flex-direction:column;display:flex}.completion .bars{flex:1;align-content:space-evenly}.three{column-gap:var(--s6);grid-template-columns:repeat(3,minmax(0,1fr))}.three .phase{border-top:0;padding:0}}
