:root{box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);--bg: #F7F8FA;--surface: #FFFFFF;--surface-2: #F2F1F7;--line: #E6E4EE;--line-2: #D8D5E4;--ink: #1F1D2B;--ink-2: #4B4860;--ink-3: #7D7A92;--brand: #3A1F73;--brand-2: #5B3AA6;--brand-soft: #EFEAFB;--brand-ink: #FFFFFF;--teal: #0E8C8A;--teal-soft: #E3F4F3;--ok: #1F8A4C;--ok-soft: #E4F4EA;--warn: #B7791F;--warn-soft: #FBF1DE;--bad: #C0392B;--bad-soft: #FBE7E4;--info: #2F6FD1;--info-soft: #E6EFFC;--client: #C2410C;--client-soft: #FDEDE3;--shadow: 0 1px 2px rgba(31, 29, 43, .05), 0 6px 20px -8px rgba(58, 31, 115, .14);--r-lg: 18px;--r-md: 12px;--r-sm: 8px;--serif: "Newsreader", Georgia, "Times New Roman", serif;--sans: "Manrope", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #12111A;--surface: #1B1A26;--surface-2: #232132;--line: #2E2C40;--line-2: #3A3850;--ink: #EDEBF5;--ink-2: #BDB9D0;--ink-3: #8E8AA6;--brand: #9C85E8;--brand-2: #B7A5F0;--brand-soft: #2A2345;--brand-ink: #15121F;--teal: #3CC3BF;--teal-soft: #16302F;--ok: #4CC37F;--ok-soft: #173022;--warn: #E3AE4F;--warn-soft: #352A15;--bad: #EE7B6E;--bad-soft: #3A1D1B;--info: #6FA3F0;--info-soft: #18263D;--client-soft: #3A2418;--shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 8px 24px -10px rgba(0, 0, 0, .5)}}:root[data-theme=dark]{--bg: #12111A;--surface: #1B1A26;--surface-2: #232132;--line: #2E2C40;--line-2: #3A3850;--ink: #EDEBF5;--ink-2: #BDB9D0;--ink-3: #8E8AA6;--brand: #9C85E8;--brand-2: #B7A5F0;--brand-soft: #2A2345;--brand-ink: #15121F;--teal: #3CC3BF;--teal-soft: #16302F;--ok: #4CC37F;--ok-soft: #173022;--warn: #E3AE4F;--warn-soft: #352A15;--bad: #EE7B6E;--bad-soft: #3A1D1B;--info: #6FA3F0;--info-soft: #18263D;--client-soft: #3A2418;--shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 8px 24px -10px rgba(0, 0, 0, .5)}*,*:before,*:after{box-sizing:inherit}html{height:100%;scroll-padding-top:env(safe-area-inset-top,0px)}body{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}img,svg{max-width:100%}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--brand);text-decoration:none}:focus-visible{outline:2px solid var(--brand-2);outline-offset:2px;border-radius:6px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.serif{font-family:var(--serif)}.muted{color:var(--ink-3)}.small{font-size:13px}.tiny{font-size:12px}.hidden{display:none!important}svg.ico{flex:none;vertical-align:-3px}.login{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}.login-art{position:relative;overflow:hidden;background:radial-gradient(circle at 85% 15%,#381b68,#221244 55%,#15092a);color:#f3eeff;padding:48px clamp(28px,5vw,72px);display:flex;flex-direction:column;justify-content:space-between}.login-art svg.bg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;overflow:visible}.login-art-content{position:relative;z-index:2;display:flex;flex-direction:column;justify-content:space-between;height:100%;min-height:100%}.ambient-blob{position:absolute;border-radius:50%;pointer-events:none;filter:blur(80px);mix-blend-mode:screen;will-change:transform,opacity;z-index:0}.blob-purple-top{top:-60px;right:-40px;width:440px;height:440px;background:radial-gradient(circle,rgba(168,117,255,.45) 0%,rgba(110,68,196,.18) 60%,transparent 100%);animation:blobPulse1 6s ease-in-out infinite alternate}.blob-teal-mid{bottom:220px;right:40px;width:360px;height:360px;background:radial-gradient(circle,rgba(60,195,191,.38) 0%,rgba(37,165,161,.15) 60%,transparent 100%);animation:blobPulse2 7s ease-in-out infinite alternate}.blob-violet-bottom{bottom:-60px;left:20px;width:400px;height:400px;background:radial-gradient(circle,rgba(126,76,232,.35) 0%,rgba(68,30,138,.15) 60%,transparent 100%);animation:blobPulse3 8s ease-in-out infinite alternate}@keyframes blobPulse1{0%{transform:scale(1) translate(0);opacity:.8}50%{transform:scale(1.12) translate(-25px,20px);opacity:1}to{transform:scale(.92) translate(20px,-15px);opacity:.75}}@keyframes blobPulse2{0%{transform:scale(.92) translate(0);opacity:.7}50%{transform:scale(1.15) translate(-20px,-22px);opacity:.95}to{transform:scale(1.02) translate(24px,18px);opacity:.8}}@keyframes blobPulse3{0%{transform:scale(1) translate(0);opacity:.75}50%{transform:scale(1.1) translate(20px,-18px);opacity:.9}to{transform:scale(.94) translate(-18px,20px);opacity:.7}}.chart-lines-group{animation:chartFloat 6s ease-in-out infinite alternate;transform-origin:300px 500px}@keyframes chartFloat{0%{transform:translateY(0)}50%{transform:translateY(-8px)}to{transform:translateY(4px)}}.fiber-stream-purple{stroke-dasharray:18 14;animation:fiberFlowPurple .75s linear infinite;opacity:.9}.fiber-stream-teal{stroke-dasharray:14 12;animation:fiberFlowTeal .65s linear infinite;opacity:.9}@keyframes fiberFlowPurple{0%{stroke-dashoffset:32}to{stroke-dashoffset:0}}@keyframes fiberFlowTeal{0%{stroke-dashoffset:26}to{stroke-dashoffset:0}}.shooting-laser-purple{stroke-dasharray:130 1800;animation:shootLaserPurple 2.2s cubic-bezier(.4,0,.2,1) infinite}.shooting-laser-teal{stroke-dasharray:110 1800;animation:shootLaserTeal 2s cubic-bezier(.4,0,.2,1) infinite;animation-delay:.9s}@keyframes shootLaserPurple{0%{stroke-dashoffset:1000;opacity:0}15%{opacity:1}85%{opacity:1}to{stroke-dashoffset:-1000;opacity:0}}@keyframes shootLaserTeal{0%{stroke-dashoffset:1000;opacity:0}15%{opacity:1}85%{opacity:1}to{stroke-dashoffset:-1000;opacity:0}}.moving-comet{will-change:transform;pointer-events:none}.moving-comet.purple-comet{filter:drop-shadow(0 0 10px #A875FF)}.moving-comet.teal-comet{filter:drop-shadow(0 0 10px #4DFDF6)}.radar-ping{transform-box:fill-box;transform-origin:center;animation:radarRing 2.2s cubic-bezier(0,.5,.25,1) infinite}.radar-ping.delay-1{animation-delay:1.1s}.radar-ping.teal-ping{stroke:#3cc3bf}.radar-ping.purple-ping{stroke:#c49bff}@keyframes radarRing{0%{transform:scale(.9);opacity:.95;stroke-width:2.5px}60%{opacity:.45;stroke-width:1.6px}to{transform:scale(3.8);opacity:0;stroke-width:.6px}}.twinkle-dot{animation:twinkleGlow 2.5s ease-in-out infinite alternate;transform-box:fill-box;transform-origin:center}.twinkle-dot.dot-1{animation-duration:2.2s}.twinkle-dot.dot-2{animation-duration:3.4s;animation-delay:.8s}.twinkle-dot.dot-3{animation-duration:1.8s;animation-delay:1.4s}@keyframes twinkleGlow{0%{opacity:.2;transform:scale(.85)}50%{opacity:.95;transform:scale(1.4)}to{opacity:.3;transform:scale(.9)}}.hero-logo-badge{background:#fff;padding:6px 14px;border-radius:12px;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 24px #00000040,0 0 0 1px #ffffff2e;transition:transform .2s ease,box-shadow .2s ease;flex:none}.hero-logo-badge:hover{transform:translateY(-2px);box-shadow:0 12px 28px #00000052,0 0 0 1px #ffffff47}.hero-logo-img{height:40px;width:auto;object-fit:contain;display:block}.login-form-brand{display:flex;align-items:center;margin-bottom:22px}.login-form-brand img{height:44px;width:auto;object-fit:contain}.sidebar-logo-img{height:32px;width:auto;object-fit:contain;background:#fff;padding:4px 8px;border-radius:8px;box-shadow:0 2px 8px #00000014}.login-art .brandrow{position:relative;display:flex;align-items:center;gap:16px}.login-art h1{position:relative;font-family:var(--serif);font-weight:400;font-size:clamp(34px,4.2vw,56px);line-height:1.05;margin:0 0 20px;max-width:13ch;letter-spacing:-.01em}.login-art p{position:relative;max-width:42ch;color:#cfc4ee;margin:0}.login-art .stats{position:relative;display:flex;gap:36px;margin-top:36px;flex-wrap:wrap}.login-art .stats b{display:block;font-family:var(--serif);font-size:30px;font-weight:500;color:#fff}.login-art .stats span{font-size:13px;color:#b9ace0}.login-form{display:flex;align-items:center;justify-content:center;padding:40px 24px;background:var(--surface)}.login-form .box{width:100%;max-width:400px}.login-form h2{font-family:var(--serif);font-weight:500;font-size:34px;margin:0 0 6px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.field label{font-size:13px;font-weight:600;color:var(--ink-2)}.input,select.input,textarea.input{width:100%;padding:12px 14px;border:1px solid var(--line-2);border-radius:var(--r-md);background:var(--surface);transition:border-color .15s,box-shadow .15s}.input:focus{outline:none;border-color:var(--brand-2);box-shadow:0 0 0 3px var(--brand-soft)}textarea.input{min-height:84px;resize:vertical}.row-between{display:flex;justify-content:space-between;align-items:center;gap:12px}.check{display:inline-flex;align-items:center;gap:8px;font-size:14px;cursor:pointer}.check input{accent-color:var(--brand)}.err{background:var(--bad-soft);color:var(--bad);padding:10px 12px;border-radius:var(--r-sm);font-size:13px;margin-bottom:14px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;border-radius:10px;border:1px solid var(--line-2);background:var(--surface);font-weight:600;font-size:14px;cursor:pointer;transition:background .15s,border-color .15s;white-space:nowrap}.btn:hover{border-color:var(--brand-2);background:var(--surface-2)}.btn.primary{background:var(--brand);border-color:var(--brand);color:var(--brand-ink)}.btn.primary:hover{background:var(--brand-2);border-color:var(--brand-2)}.btn.teal{background:var(--teal);border-color:var(--teal);color:#fff}.btn.ghost{border-color:transparent;background:transparent}.btn.ghost:hover{background:var(--surface-2)}.btn.sm{padding:7px 12px;font-size:13px;border-radius:8px}.btn.block{width:100%;padding:13px}.btn svg{width:16px;height:16px}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;background:var(--surface-2);color:var(--ink-2);white-space:nowrap}.badge .dot{width:7px;height:7px;border-radius:50%;background:currentColor}.b-ok{background:var(--ok-soft);color:var(--ok)}.b-warn{background:var(--warn-soft);color:var(--warn)}.b-bad{background:var(--bad-soft);color:var(--bad)}.b-info{background:var(--info-soft);color:var(--info)}.b-brand{background:var(--brand-soft);color:var(--brand)}.b-teal{background:var(--teal-soft);color:var(--teal)}.b-mute{background:var(--surface-2);color:var(--ink-3)}.seg{display:inline-flex;background:var(--surface-2);border-radius:10px;padding:3px;gap:2px;flex-wrap:wrap}.seg button{border:0;background:transparent;padding:7px 14px;border-radius:8px;font-size:13px;font-weight:600;color:var(--ink-3);cursor:pointer}.seg button.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.app{display:grid;grid-template-columns:252px 1fr;min-height:100vh}.app.collapsed{grid-template-columns:76px 1fr}.sidebar{position:sticky;top:env(safe-area-inset-top,0px);height:calc(100vh - env(safe-area-inset-top,0px));background:var(--surface);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:18px 12px;overflow-y:auto;z-index:30}.sb-brand{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:4px 6px 16px;border-bottom:1px solid var(--line);margin-bottom:8px}.sb-logo-card{background:#fff;padding:6px 12px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #00000014;border:1px solid rgba(0,0,0,.06);max-width:100%}.sidebar-logo-img{height:30px;width:auto;max-width:190px;object-fit:contain;display:block}.portal-badge-pill{display:inline-block;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--brand);background:var(--brand-soft);padding:2px 8px;border-radius:6px}.nav{display:flex;flex-direction:column;gap:2px}.nav a,.nav button.nav-btn{display:flex;align-items:center;gap:12px;padding:9px 12px;border-radius:10px;color:var(--ink-2);font-weight:600;font-size:14px;position:relative;border:0;background:transparent;width:100%;cursor:pointer;text-align:left}.nav a svg,.nav button.nav-btn svg{width:19px;height:19px;flex:none;stroke-width:1.7}.nav a:hover,.nav button.nav-btn:hover{background:var(--surface-2);color:var(--ink)}.nav a.on,.nav button.nav-btn.on{background:var(--brand-soft);color:var(--brand)}.nav a.on:before,.nav button.nav-btn.on:before{content:"";position:absolute;left:-12px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--brand)}.nav .count{margin-left:auto;background:var(--brand);color:var(--brand-ink);font-size:11px;font-weight:700;border-radius:999px;padding:1px 7px}.nav-group{font-size:11.5px;color:var(--ink-3);font-weight:600;padding:16px 12px 6px}.app.collapsed .nav a span,.app.collapsed .nav button.nav-btn span,.app.collapsed .nav .count,.app.collapsed .nav-group,.app.collapsed .portal-badge-pill,.app.collapsed .sb-foot{display:none}.app.collapsed .sb-brand{align-items:center;padding:4px 2px 14px}.app.collapsed .sb-logo-card{padding:4px;width:44px;height:44px;overflow:hidden}.app.collapsed .sidebar-logo-img{max-width:36px;height:auto}.app.collapsed .nav a,.app.collapsed .nav button.nav-btn{justify-content:center}.sb-foot{margin-top:auto;padding:14px 10px 4px;border-top:1px solid var(--line);font-size:12px;color:var(--ink-3)}.main{min-width:0;display:flex;flex-direction:column}.header{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line);padding:12px clamp(16px,3vw,32px);padding-top:calc(12px + env(safe-area-inset-top,0px));margin-top:calc(-1*env(safe-area-inset-top,0px));display:flex;align-items:center;gap:16px}.cobrand{display:flex;align-items:center;gap:12px;min-width:0}.cobrand .x{color:var(--ink-3);font-size:14px}.cobrand .cname{font-weight:700;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.period{margin:0 auto;font-size:13px;color:var(--ink-3);display:flex;gap:8px;align-items:center;white-space:nowrap}.period b{color:var(--ink-2);font-weight:600}.hdr-right{display:flex;align-items:center;gap:8px;margin-left:auto}.iconbtn{position:relative;width:40px;height:40px;border-radius:10px;border:1px solid transparent;background:transparent;display:grid;place-items:center;cursor:pointer;color:var(--ink-2)}.iconbtn:hover{background:var(--surface-2)}.iconbtn svg{width:20px;height:20px}.iconbtn .pip{position:absolute;top:8px;right:8px;width:8px;height:8px;border-radius:50%;background:var(--bad);border:2px solid var(--bg)}.avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:13px;background:var(--client-soft);color:var(--client);flex:none}.userbtn{display:flex;align-items:center;gap:10px;padding:4px 8px 4px 4px;border-radius:12px;border:0;background:transparent;cursor:pointer}.userbtn:hover{background:var(--surface-2)}.userbtn .who{text-align:left;line-height:1.2}.userbtn .who b{display:block;font-size:13.5px}.userbtn .who span{font-size:12px;color:var(--ink-3)}.dropdown{position:absolute;right:clamp(16px,3vw,32px);top:calc(64px + env(safe-area-inset-top,0px));background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow);padding:6px;min-width:200px;z-index:50}.dropdown button{display:flex;width:100%;gap:10px;align-items:center;padding:9px 12px;border:0;background:transparent;border-radius:8px;font-size:14px;cursor:pointer;text-align:left}.dropdown button:hover{background:var(--surface-2)}.dropdown svg{width:17px;height:17px}.content{padding:clamp(16px,3vw,32px);max-width:1360px;width:100%;margin:0 auto;flex:1}.footer{padding:24px clamp(16px,3vw,32px) 32px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:13px;color:var(--ink-3)}.footer b{color:var(--ink-2)}.mobile-only,.bottomnav{display:none}.pagehead{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:24px}.pagehead h1{font-family:var(--serif);font-weight:500;font-size:clamp(26px,3vw,34px);margin:0;letter-spacing:-.01em;line-height:1.15}.pagehead p{margin:4px 0 0;color:var(--ink-3);max-width:70ch}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:22px;box-shadow:var(--shadow)}.card.flat{box-shadow:none}.card h3{margin:0;font-size:16px;font-weight:700;letter-spacing:-.005em}.card-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}.grid{display:grid;gap:20px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}.g-dash{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr)}.stack{display:flex;flex-direction:column;gap:20px}.mt{margin-top:20px}.mt-s{margin-top:10px}.divider{height:1px;background:var(--line);margin:16px 0}.progress{height:8px;background:var(--surface-2);border-radius:999px;overflow:hidden}.progress i{display:block;height:100%;background:var(--brand);border-radius:999px;transition:width .6s ease}.progress.teal i{background:var(--teal)}.progress.lg{height:12px}.tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch}table.t{width:100%;border-collapse:collapse;font-size:14px;min-width:560px}table.t th{text-align:left;font-weight:600;color:var(--ink-3);font-size:12.5px;padding:10px 12px;border-bottom:1px solid var(--line)}table.t td{padding:12px;border-bottom:1px solid var(--line);vertical-align:middle}table.t tr:last-child td{border-bottom:0}table.t tr.click{cursor:pointer}table.t tr.click:hover td{background:var(--surface-2)}.empty{padding:36px;text-align:center;color:var(--ink-3)}.empty b{display:block;color:var(--ink);font-size:16px;margin-bottom:4px}.hero{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:20px;margin-bottom:20px}.welcome{background:var(--brand);color:#f4f0ff;border-radius:var(--r-lg);padding:28px;position:relative;overflow:hidden;border:0}:root[data-theme=dark] .welcome{background:#2a1c55}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .welcome{background:#2a1c55}}.welcome svg.deco{position:absolute;right:-40px;bottom:-60px;width:320px;opacity:.9;pointer-events:none}.welcome h1{font-family:var(--serif);font-weight:400;font-size:clamp(28px,3.2vw,40px);margin:0 0 6px;line-height:1.1;position:relative}.welcome p{margin:0;color:#d6ccf5;position:relative;max-width:48ch}.welcome .meta{display:flex;gap:28px;margin-top:22px;flex-wrap:wrap;position:relative;font-size:13px;color:#c7baee}.welcome .meta b{display:block;color:#fff;font-size:14.5px;font-weight:600}.welcome .bigprog{position:relative;margin-top:22px}.welcome .bigprog .progress{background:#ffffff29}.welcome .bigprog .progress i{background:#fff}.welcome .bigprog .row-between{font-size:13px;margin-bottom:8px;color:#d6ccf5}.welcome .bigprog .row-between b{font-family:var(--serif);font-size:26px;color:#fff;font-weight:500}.nowcard{display:flex;flex-direction:column;gap:14px}.nowrow{display:flex;gap:14px;align-items:flex-start;padding:12px 0;border-bottom:1px solid var(--line)}.nowrow:last-child{border-bottom:0;padding-bottom:0}.nowrow .ic{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;flex:none}.nowrow .ic svg{width:18px;height:18px}.nowrow .lbl{font-size:12px;color:var(--ink-3);font-weight:600}.nowrow .val{font-weight:600;font-size:14.5px;line-height:1.35}.kpi{position:relative}.kpi .k-lbl{font-size:13px;color:var(--ink-3);font-weight:600;display:flex;justify-content:space-between;align-items:center}.kpi .k-lbl svg{width:18px;height:18px;color:var(--ink-3)}.kpi .k-val{font-family:var(--serif);font-size:40px;font-weight:500;line-height:1.1;margin:8px 0 4px;letter-spacing:-.01em}.kpi .k-val small{font-size:18px;color:var(--ink-3)}.kpi .k-sub{font-size:13px;color:var(--ink-3)}.up{color:var(--ok);font-weight:700}.rail{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));position:relative;margin-top:8px}.rail:before{content:"";position:absolute;left:calc(100%/12);right:calc(100%/12);top:23px;height:2px;background:var(--line-2)}.rail .fill{position:absolute;left:calc(100%/12);top:23px;height:2px;background:var(--brand);transition:width .8s ease}.stop{position:relative;text-align:center;padding:0 4px;cursor:pointer;border:0;background:none}.stop .node{width:48px;height:48px;margin:0 auto 10px;border-radius:50%;display:grid;place-items:center;background:var(--surface);border:2px solid var(--line-2);position:relative;z-index:1;font-weight:700;font-size:12.5px;color:var(--ink-3)}.stop.done .node{background:var(--brand);border-color:var(--brand);color:var(--brand-ink)}.stop.now .node{border-color:var(--brand);color:var(--brand);box-shadow:0 0 0 6px var(--brand-soft)}.stop .mn{font-weight:700;font-size:14px}.stop .th{font-size:12.5px;color:var(--ink-3);line-height:1.3;margin-top:2px}.stop:hover .mn{color:var(--brand)}.li{display:flex;gap:12px;align-items:flex-start;padding:12px 0;border-bottom:1px solid var(--line)}.li:last-child{border-bottom:0}.li .tick{width:22px;height:22px;border-radius:50%;border:2px solid var(--line-2);flex:none;display:grid;place-items:center;margin-top:1px}.li .tick.on{background:var(--ok);border-color:var(--ok);color:#fff}.li .tick svg{width:13px;height:13px}.li .grow{flex:1;min-width:0}.li .ttl{font-weight:600;font-size:14.5px}.li .sub{font-size:13px;color:var(--ink-3)}.clickable{cursor:pointer}.clickable:hover .ttl{color:var(--brand)}.sess{border:1px solid var(--line);border-radius:var(--r-md);padding:18px;background:var(--surface)}.sess .date{display:flex;gap:14px;align-items:center}.datebox{width:54px;flex:none;text-align:center;border-radius:10px;background:var(--brand-soft);color:var(--brand);padding:6px 0;line-height:1.1}.datebox b{display:block;font-family:var(--serif);font-size:22px;font-weight:500}.datebox span{font-size:11px;font-weight:700}.kv{display:grid;grid-template-columns:140px 1fr;gap:8px 16px;font-size:14px}.kv dt{color:var(--ink-3)}.kv dd{margin:0;font-weight:500}.monthgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.mcard{border:1px solid var(--line);border-radius:var(--r-lg);padding:20px;background:var(--surface);cursor:pointer;text-align:left;transition:border-color .15s,transform .15s}.mcard:hover{border-color:var(--brand-2)}.mcard .mnum{font-size:12px;font-weight:700;color:var(--brand)}.mcard h4{font-family:var(--serif);font-weight:500;font-size:22px;margin:4px 0 2px}.mcard.now{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.vtl{position:relative;padding-left:34px}.vtl:before{content:"";position:absolute;left:11px;top:6px;bottom:6px;width:2px;background:var(--line-2)}.vtl .ev{position:relative;padding-bottom:22px}.vtl .ev:before{content:"";position:absolute;left:-29px;top:4px;width:14px;height:14px;border-radius:50%;background:var(--surface);border:3px solid var(--line-2)}.vtl .ev.done:before{background:var(--brand);border-color:var(--brand)}.vtl .ev.now:before{border-color:var(--brand)}.item{border:1px solid var(--line);border-radius:var(--r-md);padding:16px;background:var(--surface);display:flex;flex-direction:column;gap:10px}.item .top{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.item h5{margin:0;font-size:15px;font-weight:700}.item .meta{display:flex;gap:14px;flex-wrap:wrap;font-size:13px;color:var(--ink-3)}.item .meta b{color:var(--ink-2);font-weight:600}.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;background:var(--line);gap:1px}.cal .dow{background:var(--surface-2);padding:8px;font-size:12px;font-weight:700;color:var(--ink-3);text-align:center}.cal .day{background:var(--surface);min-height:104px;padding:6px;display:flex;flex-direction:column;gap:3px;min-width:0}.cal .day.out{background:var(--bg)}.cal .day.out .dn{color:var(--ink-3);opacity:.5}.cal .dn{font-size:12.5px;font-weight:700;color:var(--ink-2);padding:2px 4px}.cal .day.today .dn{background:var(--brand);color:var(--brand-ink);border-radius:6px;display:inline-block;align-self:flex-start}.chip{font-size:11.5px;font-weight:600;padding:3px 6px;border-radius:5px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-left:3px solid currentColor}.c-session{background:var(--brand-soft);color:var(--brand)}.c-deadline{background:var(--warn-soft);color:var(--warn)}.c-event{background:var(--teal-soft);color:var(--teal)}.c-milestone{background:var(--ok-soft);color:var(--ok)}.c-review{background:var(--info-soft);color:var(--info)}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:13px;color:var(--ink-3)}.legend span{display:inline-flex;align-items:center;gap:6px}.legend i{width:10px;height:10px;border-radius:3px;display:inline-block}.week{display:grid;grid-template-columns:repeat(7,minmax(120px,1fr));gap:10px;min-width:840px}.week .wd{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:10px;min-height:220px;display:flex;flex-direction:column;gap:6px}.week .wd.today{border-color:var(--brand)}.gal-feature{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:16px}.photo{position:relative;border-radius:var(--r-md);overflow:hidden;cursor:pointer;background:var(--surface-2);aspect-ratio:4/3}.photo svg{width:100%;height:100%;display:block}.photo .cap{position:absolute;left:0;right:0;bottom:0;padding:28px 14px 12px;background:linear-gradient(transparent,#0f0a1ec7);color:#fff;font-size:13px}.photo .cap b{display:block;font-size:14px}.photo.big{aspect-ratio:16/10}.pgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.fileic{width:42px;height:48px;border-radius:8px;flex:none;display:grid;place-items:center;font-size:10.5px;font-weight:800;color:#fff;position:relative}.ft-pdf{background:#c0392b}.ft-docx{background:#2f6fd1}.ft-xlsx{background:#1f8a4c}.ft-pptx{background:#c2410c}.ft-zip{background:#6b7280}.score-wrap{display:grid;grid-template-columns:auto 1fr;gap:28px;align-items:center}.ring-label{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;text-align:center}.ring-label b{font-family:var(--serif);font-size:48px;font-weight:500;line-height:1;display:block}.ring-label span{font-size:13px;color:var(--ink-3)}.bars .b{display:grid;grid-template-columns:110px 1fr 44px;gap:12px;align-items:center;font-size:14px;margin-bottom:12px}.bars .b:last-child{margin-bottom:0}.bars .b span:last-child{text-align:right;font-weight:700}.upd{display:flex;gap:14px;padding:16px 0;border-bottom:1px solid var(--line)}.upd:last-child{border-bottom:0}.upd .ic{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;flex:none}.upd .ic svg{width:19px;height:19px}.upd.unread .ttl:after{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--brand);margin-left:8px;vertical-align:middle}.evbanner{border-radius:var(--r-md);overflow:hidden;aspect-ratio:16/7;margin-bottom:14px}.evbanner svg{width:100%;height:100%;display:block}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#120c2480;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:100;display:flex;align-items:flex-start;justify-content:center;padding:calc(40px + env(safe-area-inset-top,0px)) 16px calc(40px + env(safe-area-inset-bottom,0px));overflow-y:auto;animation:fade .15s ease}.modal{background:var(--surface);border-radius:var(--r-lg);width:100%;max-width:720px;box-shadow:0 30px 80px -20px #0006;animation:rise .2s ease}.modal.wide{max-width:920px}.modal .mh{padding:22px 24px 0;display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.modal .mh h2{margin:0;font-family:var(--serif);font-weight:500;font-size:26px;line-height:1.2}.modal .mb{padding:18px 24px 24px}.modal .mf{padding:16px 24px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}.modal h4{font-size:13px;color:var(--ink-3);font-weight:700;margin:20px 0 8px}.modal ul,.modal ol{margin:0;padding-left:20px}.modal li{margin:4px 0}@keyframes fade{0%{opacity:0}}@keyframes rise{0%{opacity:0;transform:translateY(12px)}}.stars{display:flex;gap:6px}.stars button{background:none;border:0;cursor:pointer;padding:2px;color:var(--line-2)}.stars button svg{width:32px;height:32px}.stars button.on{color:#e0a526}.radio-list{display:flex;flex-direction:column;gap:8px}.radio-list label{display:flex;gap:10px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:10px;cursor:pointer;font-size:14px}.radio-list label:has(input:checked){border-color:var(--brand);background:var(--brand-soft)}.radio-list input{accent-color:var(--brand)}.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom,0px));transform:translate(-50%);background:var(--ink);color:var(--bg);padding:12px 18px;border-radius:12px;font-size:14px;font-weight:600;z-index:200;box-shadow:var(--shadow);animation:rise .2s ease}.toast-leave-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a66;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);z-index:99998;animation:fadeIn .18s ease}.toast-leave-confirm{position:fixed;bottom:32px;left:50%;transform:translate(-50%);z-index:99999;background:linear-gradient(135deg,#181428,#241d3b);color:#fff;padding:16px 20px;border-radius:16px;box-shadow:0 24px 50px #00000073,0 0 0 1px #ffffff1f;display:flex;align-items:center;justify-content:space-between;gap:16px;max-width:560px;width:calc(100% - 32px);animation:rise .22s cubic-bezier(.16,1,.3,1);box-sizing:border-box}@media (max-width: 768px){.toast-leave-confirm{bottom:calc(76px + env(safe-area-inset-bottom,0px));flex-direction:column;align-items:stretch;gap:12px;padding:14px 16px}}.fb-banner{display:flex;gap:16px;align-items:center;justify-content:space-between;flex-wrap:wrap;background:var(--teal-soft);border:1px solid color-mix(in srgb,var(--teal) 30%,transparent);border-radius:var(--r-lg);padding:16px 20px;margin-bottom:20px}.fb-banner b{color:var(--teal)}.toggle{position:relative;width:42px;height:24px;flex:none}.toggle input{opacity:0;width:0;height:0}.toggle span{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--line-2);border-radius:999px;cursor:pointer;transition:.2s}.toggle span:after{content:"";position:absolute;left:3px;top:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:.2s}.toggle input:checked+span{background:var(--brand)}.toggle input:checked+span:after{transform:translate(18px)}.setrow{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:14px 0;border-bottom:1px solid var(--line)}.setrow:last-child{border-bottom:0}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:20px;overflow-x:auto}.tabs button{border:0;background:none;padding:10px 14px;font-weight:600;font-size:14px;color:var(--ink-3);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}.tabs button.on{color:var(--brand);border-color:var(--brand)}.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}.filters button{border:1px solid var(--line);background:var(--surface);padding:6px 14px;border-radius:999px;font-size:13px;font-weight:600;color:var(--ink-2);cursor:pointer}.filters button.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}.admin-strip{background:var(--ink);color:var(--bg);padding:8px clamp(16px,3vw,32px);font-size:13px;display:flex;justify-content:space-between;align-items:center;gap:12px}.admin-strip button{background:transparent;border:1px solid color-mix(in srgb,var(--bg) 40%,transparent);color:var(--bg);border-radius:8px;padding:4px 10px;font-size:12.5px;cursor:pointer}@media (max-width: 1180px){.g4{grid-template-columns:repeat(2,minmax(0,1fr))}.pgrid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width: 1024px){.hero,.g-dash{grid-template-columns:1fr}.monthgrid,.g3{grid-template-columns:repeat(2,minmax(0,1fr))}.period{display:none}}@media (max-width: 860px){.login{grid-template-columns:1fr}.login-art{min-height:auto;padding:32px 24px}.login-art .stats{display:none}.app,.app.collapsed{grid-template-columns:1fr}.sidebar{position:fixed;left:0;top:0;bottom:0;height:auto;width:280px;transform:translate(-100%);transition:transform .25s ease;box-shadow:0 0 60px #00000040;padding-top:calc(18px + env(safe-area-inset-top,0px))}.sidebar.open{transform:none}.app.collapsed .nav a span,.app.collapsed .nav button.nav-btn span,.app.collapsed .nav .count,.app.collapsed .nav-group,.app.collapsed .sb-brand .wordmark,.app.collapsed .sb-foot{display:revert}.app.collapsed .nav a,.app.collapsed .nav button.nav-btn{justify-content:flex-start}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;z-index:25}.mobile-only{display:grid}.desk-only{display:none!important}.g2,.gal-feature{grid-template-columns:1fr}.userbtn .who,.cobrand .cname{display:none}.content{padding-bottom:calc(96px + env(safe-area-inset-bottom,0px))}.bottomnav{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;background:var(--surface);border-top:1px solid var(--line);padding:6px 4px;padding-bottom:calc(6px + env(safe-area-inset-bottom,0px));z-index:40}.bottomnav a,.bottomnav button{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:11px;font-weight:600;color:var(--ink-3);padding:6px 0;background:transparent;border:0;cursor:pointer}.bottomnav a svg,.bottomnav button svg{width:22px;height:22px}.bottomnav a.on,.bottomnav button.on{color:var(--brand)}.footer{padding-bottom:calc(96px + env(safe-area-inset-bottom,0px))}.score-wrap{grid-template-columns:1fr;justify-items:center}.score-wrap .bars{width:100%}.kv{grid-template-columns:1fr;gap:2px}.kv dd{margin-bottom:10px}}@media (max-width: 640px){.g4{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.g4 .card{padding:16px}.kpi .k-val{font-size:32px}.monthgrid,.g3{grid-template-columns:1fr}.pgrid{grid-template-columns:repeat(2,minmax(0,1fr))}.rail{grid-template-columns:repeat(6,minmax(64px,1fr));overflow-x:auto}.stop .th{display:none}.stop .node{width:40px;height:40px;font-size:11px}.rail:before,.rail .fill{top:19px}.cal .day{min-height:64px;padding:3px}.cal .chip{font-size:0;padding:0;height:6px;border-left:0;border-radius:3px;background:currentColor}.modal .mh,.modal .mb,.modal .mf{padding-left:18px;padding-right:18px}.bars .b{grid-template-columns:90px 1fr 40px}}.btn.danger{background:var(--bad);border-color:var(--bad);color:#fff}.btn.danger:hover{opacity:.9}.btn.danger-t{color:var(--bad)}.linkbtn{border:0;background:none;padding:0;color:var(--brand);font-weight:700;cursor:pointer;text-align:left;word-break:break-all}.qa{display:flex;gap:8px;flex-wrap:wrap}.fgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px}.fgrid .full{grid-column:1 / -1}.fhead{font-size:13px;font-weight:700;color:var(--brand);padding:6px 0 10px;border-bottom:1px solid var(--line);margin-bottom:14px}.fgrid .fhead:not(:first-child){margin-top:6px}input[type=color].input{height:46px;padding:6px;cursor:pointer}.filedrop{display:flex;align-items:center;gap:10px;padding:14px;border:1.5px dashed var(--line-2);border-radius:var(--r-md);cursor:pointer;font-size:14px;font-weight:600;color:var(--ink-2);background:var(--bg)}.filedrop:hover{border-color:var(--brand-2);color:var(--brand)}.filedrop input{position:absolute;opacity:0;width:1px;height:1px}.clientpick{display:flex;flex-direction:column;gap:6px;max-height:200px;overflow:auto;padding:10px;border:1px solid var(--line);border-radius:var(--r-md)}.clientpick .check{gap:10px}.thread{display:flex;flex-direction:column;gap:10px;padding:12px;background:var(--bg);border-radius:var(--r-md);margin-bottom:14px;max-height:200px;overflow:auto}.pickgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.pick{display:flex;flex-direction:column;gap:6px;align-items:flex-start;text-align:left;padding:18px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);cursor:pointer}.pick:hover{border-color:var(--brand-2);background:var(--brand-soft)}.pick svg{width:22px;height:22px;color:var(--brand)}.wshead{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:18px;padding:18px 22px}.tabs a,.tabs button{padding:10px 14px;font-weight:600;font-size:14px;color:var(--ink-3);border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}.tabs a.on,.tabs button.on{color:var(--brand);border-color:var(--brand)}.tabs a:hover,.tabs button:hover{color:var(--ink)}.contentgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.cc{border:1px solid var(--line);border-radius:var(--r-md);padding:12px;display:flex;flex-direction:column;gap:6px}.cc a{display:flex;flex-direction:column;color:var(--ink)}.cc a b{font-size:30px;font-weight:500;line-height:1}.cc a span{font-size:13px;color:var(--ink-3)}.cc .btn{align-self:flex-start;padding:4px 8px}.mblock{margin-bottom:16px}.mblock.now{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}select.input.sm-input,.input.sm-input{padding:6px 8px;font-size:13px;border-radius:8px;min-width:130px}.kanban{display:grid;grid-template-columns:repeat(5,minmax(210px,1fr));gap:12px;min-width:1080px}.kcol{background:var(--surface-2);border-radius:var(--r-md);padding:10px;display:flex;flex-direction:column;gap:10px;min-height:200px}.khead{display:flex;justify-content:space-between;align-items:center;padding:2px 2px 4px}.kcard{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:12px}.cchip{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--ink-2)}.cchip svg,.cchip img{width:20px;height:20px}.ccard{display:flex;flex-direction:column}.bcard{display:flex;flex-direction:column;gap:10px;align-items:flex-start}.bcard .ic{width:42px;height:42px;border-radius:12px;display:grid;place-items:center}.bcard .ic svg{width:20px;height:20px}.bcard p{margin:0;flex:1}.logoimg{object-fit:contain;background:#fff;border-radius:10px;border:1px solid var(--line);flex:none}.photo img,.evbanner img{width:100%;height:100%;object-fit:cover;display:block}.loading{min-height:100vh;display:grid;place-items:center;color:var(--ink-3);font-size:14px}.loading .spin{width:28px;height:28px;border:3px solid var(--line);border-top-color:var(--brand);border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 12px}.banner-note{background:var(--warn-soft);color:var(--warn);padding:8px clamp(16px,3vw,32px);font-size:13px;font-weight:600}@media (max-width: 1024px){.contentgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 640px){.fgrid,.pickgrid{grid-template-columns:1fr}.wshead{padding:16px}}
