:root{--bg:#f1f1ee;--bg2:#e6e6e1;--surface:#fff;--surface-2:#f7f7f4;--glass:#ffffffdb;--ink:#15171a;--ink-2:#33383e;--muted:#555c64;--line:#d6d7d1;--accent:#3f5d78;--accent-ink:#fff;--accent-soft:#e3ebf2;--accent-text:#2e4a63;--cyan:#0b6e86;--cyan-soft:#d9f0f5;--green:#137a4a;--green-soft:#d8f1e3;--amber:#9a5b00;--amber-soft:#fbeccb;--violet:#5b3fb3;--violet-soft:#e7e0fa;--red:#c4262f;--red-soft:#fde1e3;--pink:#2e4a63;--pink-soft:#e3ebf2;--c1:#3f5d78;--c2:#2f6fd0;--c3:#c98200;--c4:#0f8f82;--c5:#7a55d6;--c6:#d2662a;--c7:#4a5560;--c8:#91a31f;--sb-bg:#111315;--sb-ink:#d3d7dc;--sb-muted:#98a0a8;--sb-line:#ffffff17;--sb-hover:#ffffff12;--shadow:0 1px 0 #14161a0a, 0 6px 20px #14161a0f;--shadow-lg:0 24px 60px #0a0c0f47;--r:10px;--sidebar:252px;--ease:cubic-bezier(.2,.8,.2,1);--dots:#282c3212;--wire:#282c3238;--mono:ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#0d0f11;--bg2:#181b1f;--surface:#14171a;--surface-2:#191d21;--glass:#14171adb;--ink:#e9ebed;--ink-2:#c9ced3;--muted:#9ba3ab;--line:#2a2f34;--accent:#8db2d2;--accent-ink:#0c1620;--accent-soft:#1d2b38;--accent-text:#a9c8e3;--cyan:#52c7e0;--cyan-soft:#0f3340;--green:#4ccf8a;--green-soft:#103324;--amber:#f2b13c;--amber-soft:#3a2d12;--violet:#b4a0ff;--violet-soft:#2a2250;--red:#ff7b84;--red-soft:#3d1b22;--pink:#a9c8e3;--pink-soft:#1d2b38;--c1:#8db2d2;--c2:#6aa2ff;--c3:#f2b13c;--c4:#3fd0bf;--c5:#a68bff;--c6:#ff9254;--c7:#9aa6b2;--c8:#c4d84a;--sb-bg:#090a0c;--sb-line:#ffffff12;--shadow:0 1px 0 #0006, 0 8px 26px #00000059;--shadow-lg:0 24px 60px #000000a6;--dots:#ffffff0b;--wire:#fff3;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.45;overflow-x:clip}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}input,select,textarea{font:inherit;color:inherit}a{color:inherit;text-decoration:none}h1,h2,h3,h4{letter-spacing:-.02em;line-height:1.2}:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:8px}.mono{font-variant-numeric:tabular-nums;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace}.muted{color:var(--muted)}.small{font-size:12px}.bold{font-weight:700}.right{text-align:right}.center{text-align:center}.row{align-items:center;gap:10px;display:flex}.between{justify-content:space-between}.wrap{flex-wrap:wrap}.col{flex-direction:column;gap:10px;display:flex}.grow{flex:1;min-width:0}.show-sm{display:none!important}.clamp1{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.clamp2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.sr{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.app{grid-template-columns:var(--sidebar) minmax(0,1fr);min-height:100%;transition:grid-template-columns .4s var(--ease);display:grid;position:relative}.app.collapsed{grid-template-columns:76px minmax(0,1fr)}.sidebar{z-index:5;background:var(--sb-bg);height:100vh;color:var(--sb-ink);flex-direction:column;gap:6px;padding:16px 12px;display:flex;position:sticky;top:0;overflow:hidden}.sidebar:before{content:"";pointer-events:none;background:repeating-linear-gradient(90deg,#0000 0 38px,#ffffff06 38px 39px),repeating-linear-gradient(0deg,#0000 0 38px,#ffffff06 38px 39px);position:absolute;inset:0}.sidebar>*{position:relative}.brand{align-items:center;gap:10px;padding:6px 8px 14px;display:flex}.brand-mark{background:linear-gradient(135deg, var(--accent), #2e4a63);color:#fff;border-radius:12px;flex:none;place-items:center;width:40px;height:40px;display:grid;box-shadow:0 6px 18px #3f5d7859}.brand-txt{flex-direction:column;min-width:0;display:flex}.brand-txt b{color:#fff;font-size:16px}.brand-txt small{color:var(--sb-muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.nav{scrollbar-width:thin;flex-direction:column;flex:1;gap:2px;padding-right:2px;display:flex;position:relative;overflow-y:auto}.nav-pill{pointer-events:none;z-index:0;background:linear-gradient(90deg,#3f5d7847,#3f5d7847);border-radius:12px;height:40px;position:absolute;top:0;left:0;right:2px}.nav a{z-index:1;min-height:40px;color:var(--sb-ink);border-radius:12px;align-items:center;gap:12px;padding:0 12px;font-weight:600;display:flex;position:relative}.nav a.active{color:#fff}.nav-sec-btn{letter-spacing:.08em;text-transform:uppercase;min-height:36px;color:var(--sb-muted);text-align:left;z-index:1;border-radius:10px;justify-content:space-between;align-items:center;width:100%;margin-top:8px;padding:0 12px;font-size:12px;font-weight:800;display:flex;position:relative}.nav-sec-btn .chev{transition:transform .25s var(--ease)}.nav-sec-btn[aria-expanded=false] .chev{transform:rotate(-90deg)}.nav a[data-shut="1"]{display:none}.nav-tools{z-index:1;gap:6px;padding:2px 4px 6px;display:flex;position:relative}.nav-tools button{color:var(--sb-muted);border-radius:8px;min-height:40px;padding:6px 8px;font-size:12px;font-weight:700}@media (hover:hover){.nav a:hover{background:var(--sb-hover)}.nav a.active:hover{background:0 0}.nav-tools button:hover{background:var(--sb-hover);color:#fff}}.cnt{background:var(--accent);min-width:22px;height:20px;color:var(--accent-ink);border-radius:99px;place-items:center;margin-left:auto;padding:0 7px;font-size:12px;font-weight:800;display:grid}:root:not([data-theme=dark]) .cnt{color:#2e4a63;background:#fff}.cnt.warn{background:var(--amber);color:#1b1200}.side-foot{border-top:1px solid var(--sb-line);flex-direction:column;gap:4px;padding-top:10px;display:flex}.side-foot .btn{color:var(--sb-ink)}.app.collapsed .sidebar:not(.as-drawer) .lbl,.app.collapsed .sidebar:not(.as-drawer) .brand-txt,.app.collapsed .sidebar:not(.as-drawer) .nav-sec-btn,.app.collapsed .sidebar:not(.as-drawer) .nav-tools,.app.collapsed .sidebar:not(.as-drawer) .hide-collapsed,.app.collapsed .sidebar:not(.as-drawer) .cnt{display:none}.app.collapsed .sidebar:not(.as-drawer) .nav a[data-shut]{display:flex}.app.collapsed .sidebar:not(.as-drawer) .nav a{justify-content:center;padding:0}.main{background-image:radial-gradient(var(--dots) 1px, transparent 1.2px);background-size:22px 22px;min-width:0;padding-bottom:28px;position:relative}.demo-banner{background:var(--accent-soft);color:var(--ink);border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:8px 20px;font-size:12px;display:flex}.demo-banner svg{color:var(--accent-text);flex:none}.topbar{z-index:10;background:var(--glass);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:10px 24px;display:flex;position:sticky;top:0}.search{border:1px solid var(--line);background:var(--surface);min-width:0;max-width:460px;min-height:44px;color:var(--muted);border-radius:14px;flex:1;align-items:center;gap:8px;padding:0 14px;display:flex;overflow:hidden}.search input{background:0 0;border:0;outline:0;flex:1;min-width:0;font-size:16px}.kbd{border:1px solid var(--line);background:var(--bg2);color:var(--muted);border-radius:7px;padding:2px 7px;font-family:ui-monospace,monospace;font-size:12px}.icon-btn{width:44px;height:44px;color:var(--ink-2);border-radius:14px;flex:none;place-items:center;display:grid;position:relative}@media (hover:hover){.icon-btn:hover{background:var(--bg2)}}.icon-btn .dot{background:var(--accent);border:2px solid var(--surface);border-radius:50%;width:9px;height:9px;position:absolute;top:9px;right:10px}.avatar{background:linear-gradient(135deg, var(--accent), #2e4a63);width:44px;height:44px;color:var(--accent-ink);border-radius:13px;flex:none;place-items:center;font-weight:800;display:grid}.menu-btn{display:none}.page{max-width:1480px;margin:0 auto;padding:26px 28px 40px}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:20px;display:flex}.page-head h1{align-items:center;gap:12px;font-size:27px;display:flex}.page-head h1 .ph-ic{background:var(--accent-soft);width:44px;height:44px;color:var(--accent-text);border-radius:13px;flex:none;place-items:center;display:grid}.page-head p{color:var(--muted);max-width:64ch;margin-top:4px}.actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);min-width:0;padding:18px;position:relative}.card.tight{padding:12px}.card.pad0{padding:0;overflow:hidden}.card h3{font-size:16px}.card-h{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;display:flex}.card-h h3{align-items:center;gap:8px;display:flex}.card-h h3 svg{color:var(--accent-text)}.g2,.g3,.g4{gap:16px;display:grid}.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-main{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:16px;display:grid}.g-main>*,.g2>*,.g3>*,.g4>*{min-width:0}.stack{flex-direction:column;gap:16px;display:flex}.kpi{flex-direction:column;gap:6px;display:flex;overflow:hidden}.kpi .k-ic{background:var(--accent-soft);width:40px;height:40px;color:var(--accent-text);border-radius:12px;place-items:center;display:grid}.kpi .k-v{letter-spacing:-.03em;font-size:30px;font-weight:800;line-height:1.1}.kpi .k-l{color:var(--muted);font-size:13px;font-weight:600}.delta{border-radius:99px;align-items:center;gap:3px;padding:2px 8px;font-size:12px;font-weight:800;display:inline-flex}.delta.up{background:var(--green-soft)}.delta.down{background:var(--red-soft)}.spark{display:block}.btn{border:1px solid var(--line);background:var(--surface);min-height:44px;transition:transform .15s var(--ease), background .2s, box-shadow .2s;white-space:nowrap;border-radius:13px;justify-content:center;align-items:center;gap:8px;padding:0 16px;font-weight:700;display:inline-flex}.btn:active{transform:scale(.97)}@media (hover:hover){.btn:hover{background:var(--bg2)}.btn.primary:hover{filter:brightness(1.1);background:var(--accent)}}.btn.primary{background:var(--accent);color:var(--accent-ink);box-shadow:0 8px 20px color-mix(in srgb, var(--accent) 35%, transparent);border-color:#0000}.btn.ghost{background:0 0;border-color:#0000}.btn.block{width:100%;display:flex}.btn.lg{min-height:52px;font-size:15px}.btn.sm{min-height:40px;padding:0 12px;font-size:13px}.btn[disabled]{opacity:.5;cursor:not-allowed}@media (pointer:coarse){.btn.sm{min-height:44px}}.input,select.input,textarea.input{border:1px solid var(--line);background:var(--surface);border-radius:12px;outline:0;width:100%;min-height:44px;padding:10px 14px;font-size:16px;transition:border-color .2s,box-shadow .2s}textarea.input{resize:vertical;min-height:88px;line-height:1.45}textarea.input.mono{font-size:14px}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 24%, transparent)}.input.bad{border-color:var(--red)}.field{flex-direction:column;gap:6px;min-width:0;display:flex}.field label,.lab{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-size:12px;font-weight:800}.hint{color:var(--muted);font-size:12px}.hint.err{color:var(--red);font-weight:600}input[type=checkbox],input[type=radio]{width:20px;height:20px;accent-color:var(--accent);flex:none}input[type=range]{width:100%;accent-color:var(--accent);min-height:32px}.switch{background:var(--bg2);border:1px solid var(--line);border-radius:99px;flex:none;width:48px;height:28px;transition:background .25s;position:relative}.switch i{background:var(--ink-2);width:20px;height:20px;transition:transform .3s var(--ease), background .2s;border-radius:50%;position:absolute;top:3px;left:3px}.switch.on{background:var(--accent);border-color:#0000}.switch.on i{background:var(--accent-ink);transform:translate(20px)}.switch:after{content:"";position:absolute;inset:-8px -2px}.seg{background:var(--bg2);scrollbar-width:none;border-radius:14px;max-width:100%;padding:4px;display:inline-flex;position:relative;overflow-x:auto}.seg::-webkit-scrollbar{display:none}.seg .thumb{background:var(--surface);width:0;box-shadow:var(--shadow);border-radius:11px;position:absolute;top:4px;bottom:4px;left:0}.seg button{z-index:1;min-height:40px;color:var(--ink-2);white-space:nowrap;border-radius:11px;padding:0 14px;font-weight:700;position:relative}.seg button.on{color:var(--ink)}.tabs{border-bottom:1px solid var(--line);scrollbar-width:none;gap:4px;margin-bottom:18px;display:flex;overflow-x:auto}.tabs button{min-height:44px;color:var(--muted);white-space:nowrap;border-bottom:3px solid #0000;padding:0 16px;font-weight:700}.tabs button.on{color:var(--ink);border-color:var(--accent)}.badge,.chip{background:var(--bg2);color:var(--ink-2);white-space:nowrap;border-radius:99px;align-items:center;gap:6px;padding:3px 10px;font-size:12px;font-weight:700;display:inline-flex}.chip i.d{background:var(--muted);border-radius:50%;width:8px;height:8px}.chip.green i.d{background:var(--green)}.chip.amber i.d{background:var(--amber)}.chip.red i.d{background:var(--red)}.chip.accent i.d{background:var(--accent)}button.chip{border:1px solid var(--line);min-height:40px;padding:0 14px}button.chip.on{background:var(--accent);color:var(--accent-ink);border-color:#0000}.tag{background:var(--accent-soft);color:var(--accent-text);border-radius:8px;padding:2px 9px;font-size:12px;font-weight:700;display:inline-flex}.bar{background:var(--bg2);border-radius:99px;height:9px;overflow:hidden}.bar i{background:linear-gradient(90deg, var(--accent), #8db2d2);border-radius:99px;width:0;height:100%;display:block}.bar.green i{background:var(--green)}.bar.amber i{background:var(--amber)}.bar.red i{background:var(--red)}.legend{color:var(--muted);flex-wrap:wrap;gap:14px;font-size:12px;display:flex}.legend i{vertical-align:-1px;border-radius:3px;width:10px;height:10px;margin-right:6px;display:inline-block}.av{color:#fff;border-radius:50%;flex:none;place-items:center;font-weight:800;display:inline-grid}.empty{text-align:center;color:var(--ink-2);flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:34px 16px;display:flex}.empty-ic{background:var(--accent-soft);width:60px;height:60px;color:var(--accent-text);border-radius:18px;place-items:center;margin-bottom:6px;display:grid}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%}th{text-align:left;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--line);white-space:nowrap;padding:10px 12px;font-size:12px;font-weight:800}td{border-bottom:1px solid var(--line);vertical-align:middle;padding:11px 12px}tbody tr:last-child td{border-bottom:0}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}th.sortable button{font:inherit;text-transform:inherit;letter-spacing:inherit;color:inherit;align-items:center;gap:4px;min-height:32px;display:inline-flex}@media (hover:hover){tbody tr.click:hover{background:var(--surface-2);cursor:pointer}}.list-row{text-align:left;border-radius:14px;align-items:center;gap:12px;width:100%;min-height:56px;padding:12px;display:flex}@media (hover:hover){.list-row:hover{background:var(--surface-2)}}.filters{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px;display:flex}.filters .input{flex:0 200px;width:auto;min-width:140px}.filters .search-f{flex:220px;max-width:360px}.code{color:#e2d5f2;white-space:pre;background:#0d0f11;border-radius:14px;max-height:360px;padding:14px;font-family:ui-monospace,Menlo,monospace;font-size:12px;line-height:1.55;overflow:auto}.code.wrapc{white-space:pre-wrap;overflow-wrap:anywhere}.copyline{border:1px solid var(--line);background:var(--surface-2);border-radius:12px;align-items:center;gap:8px;min-width:0;padding:6px 6px 6px 12px;font-family:ui-monospace,monospace;font-size:12px;display:flex}.copyline span{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.overlay{z-index:50;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#08090b99;place-items:center;padding:16px;animation:.25s both fade;display:grid;position:fixed;inset:0}.modal{background:var(--surface);width:min(520px,100%);max-height:92vh;box-shadow:var(--shadow-lg);animation:pop .4s var(--ease) both;border:1px solid var(--line);border-radius:22px;padding:24px;overflow-y:auto}.modal h3{margin-bottom:4px;font-size:19px}.sheet{background:var(--surface);width:100%;padding:18px 16px calc(96px + env(safe-area-inset-bottom));animation:rise .35s var(--ease) both;border-radius:24px 24px 0 0;grid-template-columns:repeat(3,1fr);gap:8px;max-height:80vh;display:grid;overflow-y:auto}.sheet a{background:var(--bg2);text-align:center;border-radius:16px;flex-direction:column;justify-content:center;align-items:center;gap:6px;min-height:76px;padding:4px;font-size:12px;font-weight:700;display:flex}.sheet a.active{background:var(--accent);color:var(--accent-ink)}.toasts{z-index:80;flex-direction:column;gap:10px;display:flex;position:fixed;bottom:20px;right:20px}.toast{background:var(--ink);color:var(--bg);box-shadow:var(--shadow-lg);animation:slidein .45s var(--ease) both;border-radius:14px;align-items:center;gap:10px;max-width:360px;padding:12px 16px;font-weight:600;display:flex}.wipe{z-index:100;pointer-events:none;position:fixed;inset:0}.tour-mask{z-index:90;pointer-events:none;transition:all .45s var(--ease);border-radius:14px;position:fixed;box-shadow:0 0 0 9999px #08090bb3}.tour-tip{z-index:91;background:var(--surface);width:min(330px,100vw - 24px);box-shadow:var(--shadow-lg);border:1px solid var(--line);animation:pop .4s var(--ease) both;border-radius:20px;padding:16px;position:fixed}.tour-tip h4{margin-bottom:4px;font-size:15px}.tour-dots{gap:5px;display:flex}.tour-dots i{background:var(--line);border-radius:99px;width:6px;height:6px}.tour-dots i.on{background:var(--accent);width:18px}.drag-ghost{z-index:200;pointer-events:none;background:var(--accent);color:var(--accent-ink);box-shadow:var(--shadow-lg);white-space:nowrap;text-overflow:ellipsis;border-radius:12px;max-width:240px;padding:8px 12px;font-size:13px;font-weight:700;position:fixed;top:0;left:0;overflow:hidden}body.is-dragging{-webkit-user-select:none;user-select:none;cursor:grabbing}.palette-pop{z-index:70;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-lg);width:min(320px,100vw - 24px);max-height:60vh;animation:pop .25s var(--ease) both;border-radius:18px;padding:8px;position:fixed;overflow-y:auto}.bottomnav{left:10px;right:10px;bottom:calc(10px + env(safe-area-inset-bottom));z-index:61;background:var(--glass);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid var(--line);box-shadow:var(--shadow-lg);border-radius:22px;justify-content:space-around;padding:6px;display:none;position:fixed}.bottomnav a,.bottomnav button{min-width:52px;min-height:48px;color:var(--muted);border-radius:16px;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:4px 8px;font-size:12px;font-weight:700;display:flex}.bottomnav a.active{color:var(--accent-ink);background:var(--accent)}.scrim{z-index:69;background:#08090b99;animation:.25s both fade;position:fixed;inset:0}.sidebar.as-drawer{z-index:70;width:min(300px,86vw);height:100%;box-shadow:var(--shadow-lg);animation:drawerin .35s var(--ease) both;position:fixed;top:0;bottom:0;left:0}.login{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);min-height:100%;display:grid}.login-hero{color:#fff;background:radial-gradient(900px 600px at 80% 10%,#1d2b38 0%,#0000 60%),radial-gradient(700px 500px at 0 100%,#2e4a63 0%,#0000 62%),#0d0f11;flex-direction:column;justify-content:space-between;gap:24px;min-height:100vh;padding:38px 46px;display:flex;position:relative;overflow:hidden}.login-hero h1{max-width:15ch;margin-bottom:14px;font-size:clamp(30px,3.6vw,46px)}.login-hero p{opacity:.92;max-width:46ch;font-size:16px}.login-hero .art{opacity:.8;pointer-events:none;width:100%;height:36%;position:absolute;bottom:0;left:0;right:0}.float{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:2;background:#ffffff24;border:1px solid #ffffff47;border-radius:16px;align-items:center;gap:8px;padding:10px 14px;font-size:13px;font-weight:700;display:flex;position:absolute}.login-form{background:var(--bg);place-items:center;padding:28px 20px;display:grid}.login-card{flex-direction:column;gap:14px;width:min(430px,100%);display:flex}.login-card h2{font-size:26px}.roles{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.role{border:1px solid var(--line);background:var(--surface);border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:4px;min-height:64px;font-size:12px;font-weight:700;display:flex}.role.on{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 2px var(--accent)}.otp{grid-template-columns:repeat(6,1fr);gap:8px;display:grid}.otp input{text-align:center;padding:0}.or{color:var(--muted);align-items:center;gap:12px;font-size:12px;display:flex}.or:before,.or:after{content:"";background:var(--line);flex:1;height:1px}.floaty{animation:6s ease-in-out infinite floaty}.feed-item{border-bottom:1px solid var(--line);animation:msgin .5s var(--ease) both;align-items:flex-start;gap:10px;padding:9px 0;display:flex}.feed-item:last-child{border:0}.feed-ic{background:var(--accent-soft);width:32px;height:32px;color:var(--accent-text);border-radius:10px;flex:none;place-items:center;display:grid}.feed-ic.green{background:var(--green-soft);color:var(--green)}.feed-ic.red{background:var(--red-soft);color:var(--red)}.feed-ic.amber{background:var(--amber-soft);color:var(--amber)}.hero-card{color:#fff;background:radial-gradient(500px 300px at 100% 0,#3f5d7880,#0000 70%),linear-gradient(135deg,#3f5d78,#1a1d21);border:0;border-radius:24px;padding:24px;position:relative;overflow:hidden}.hero-card h2{max-width:18ch;font-size:24px}.hero-card p{opacity:.94;max-width:44ch;margin-top:6px}.hero-card .hero-art{opacity:.75;pointer-events:none;width:38%;height:100%;position:absolute;bottom:0;right:0}.hero-card .btn{color:#1a1d21;background:#fff;border:0;position:relative}.hero-card>:not(.hero-art){z-index:1;position:relative}.attn{background:var(--surface-2);border:1px solid var(--line);text-align:left;border-radius:14px;align-items:center;gap:12px;width:100%;min-width:0;padding:12px;display:flex}.thumb-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;display:grid}.tpl-art{background:var(--surface-2);border:1px solid var(--line);border-radius:14px;height:120px;margin-bottom:12px;padding:8px;position:relative;overflow:hidden}.thumb-wire{stroke-dasharray:20 14;animation:1.2s linear infinite dash;stroke:var(--accent)!important}.perm{grid-template-columns:minmax(150px,1.6fr) repeat(5,minmax(60px,1fr));align-items:center;min-width:520px;display:grid}.perm>*{border-bottom:1px solid var(--line);padding:10px 8px}.perm .hd{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);text-align:center;font-size:12px;font-weight:800}.meter-row{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:6px 12px;display:grid}.tl{padding-left:30px;position:relative}.tl:before{content:"";background:repeating-linear-gradient(var(--wire) 0 6px, transparent 6px 10px);width:2px;position:absolute;top:6px;bottom:6px;left:11px}.tl-item{padding:4px 0 14px;position:relative}.tl-dot{background:var(--surface);border:2px solid var(--line);width:24px;height:24px;color:var(--muted);border-radius:50%;place-items:center;display:grid;position:absolute;top:4px;left:-30px}.tl-dot.success{border-color:var(--green);color:var(--green)}.tl-dot.failed{border-color:var(--red);color:var(--red)}.tl-dot.waiting,.tl-dot.retried{border-color:var(--amber);color:var(--amber)}.step-btn{text-align:left;border:1px solid #0000;border-radius:12px;width:100%;min-height:44px;padding:8px 10px;display:block}.step-btn.on{background:var(--accent-soft);border-color:var(--accent)}.cell-input{background:0 0;border:1px solid #0000;border-radius:8px;width:100%;min-height:40px;padding:6px 8px;font-size:16px}.cell-input:focus{border-color:var(--accent);background:var(--surface);outline:0}.cronbox{letter-spacing:.04em;text-align:center;font-family:ui-monospace,monospace;font-size:22px}.cron-cell{flex-direction:column;align-items:center;gap:4px;display:flex}.cron-cell small{color:var(--muted);text-transform:uppercase;font-size:12px;font-weight:700}.nextrun{background:var(--surface-2);border:1px solid var(--line);animation:msgin .4s var(--ease) both;border-radius:12px;align-items:center;gap:10px;padding:8px 12px;display:flex}.nextrun .n{background:var(--accent-soft);width:24px;height:24px;color:var(--accent-text);border-radius:50%;flex:none;place-items:center;font-size:12px;font-weight:800;display:grid}.app-tile{flex-direction:column;gap:10px;display:flex}.app-ic{background:var(--accent-soft);width:44px;height:44px;color:var(--accent-text);border-radius:13px;flex:none;place-items:center;display:grid}.diff-ok{color:var(--green)}.diff-bad{color:var(--red)}.sim-badge{background:var(--pink-soft);color:var(--ink);border:1px dashed var(--pink);border-radius:99px;align-items:center;gap:6px;padding:2px 10px;font-size:12px;font-weight:800;display:inline-flex}.sim-badge svg{color:var(--pink)}.map-row{border:1px solid var(--line);background:var(--surface-2);border-radius:12px;grid-template-columns:minmax(0,1fr) 28px minmax(0,1fr) 70px auto;align-items:center;gap:8px;padding:10px;display:grid}.circuit-bg{pointer-events:none;position:absolute;inset:0}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:translateY(16px)scale(.96)}}@keyframes rise{0%{transform:translateY(100%)}}@keyframes slidein{0%{opacity:0;transform:translate(30px)}}@keyframes drawerin{0%{transform:translate(-100%)}}@keyframes msgin{0%{opacity:0;transform:translateY(8px)}}@keyframes floaty{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes dash{to{stroke-dashoffset:-24px}}@keyframes spin{to{transform:rotate(360deg)}}.spin{animation:1s linear infinite spin}.check{width:84px;height:84px}.check circle{fill:none;stroke:var(--green);stroke-width:4px;stroke-dasharray:240;stroke-dashoffset:240px;animation:.7s .1s forwards draw}.check path{fill:none;stroke:var(--green);stroke-width:5px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:60;stroke-dashoffset:60px;animation:.5s .6s forwards draw}@keyframes draw{to{stroke-dashoffset:0}}@media (width<=1100px){.g4{grid-template-columns:repeat(2,minmax(0,1fr))}.g-main{grid-template-columns:minmax(0,1fr)}.login{grid-template-columns:1fr}.login-hero{min-height:0;padding:28px 24px 36px}.login-hero .art,.login-hero .float{display:none}}@media (width>=721px) and (width<=1100px){.app{grid-template-columns:76px minmax(0,1fr)!important}.sidebar:not(.as-drawer) .lbl,.sidebar:not(.as-drawer) .brand-txt,.sidebar:not(.as-drawer) .nav-sec-btn,.sidebar:not(.as-drawer) .nav-tools,.sidebar:not(.as-drawer) .hide-collapsed,.sidebar:not(.as-drawer) .cnt{display:none}.sidebar:not(.as-drawer) .nav a[data-shut]{display:flex}.sidebar:not(.as-drawer) .nav a{justify-content:center;padding:0}.sidebar:not(.as-drawer) .brand{justify-content:center;padding:6px 0 14px}.g3{grid-template-columns:repeat(2,minmax(0,1fr))}.page{padding:22px 20px 36px}.topbar{padding:10px 16px}.map-row{grid-template-columns:minmax(0,1fr) 24px minmax(0,1fr) 60px auto}}@media (width<=720px){.app,.app.collapsed{grid-template-columns:minmax(0,1fr)}.sidebar:not(.as-drawer){display:none}.bottomnav{display:flex}.hide-sm{display:none!important}.show-sm{display:inline-flex!important}.menu-btn{display:grid}.page{padding:16px 14px 120px}.topbar{gap:6px;padding:8px 12px}.search{max-width:none}.demo-banner{padding:8px 14px}.g2,.g3,.g4{grid-template-columns:minmax(0,1fr)}.g4.keep2{grid-template-columns:repeat(2,minmax(0,1fr))}.page-head h1{font-size:22px}.kpi .k-v{font-size:25px}.page-head p:not(.keep){display:none}.toasts{bottom:96px;left:12px;right:12px}.toast{max-width:none}.roles{grid-template-columns:repeat(2,1fr)}.hero-card .hero-art{opacity:.35}.modal{padding:18px}.perm{min-width:460px}.map-row{grid-template-columns:minmax(0,1fr) 22px minmax(0,1fr)}.map-row>:nth-child(n+4){grid-column:1/-1}.filters .input{flex:140px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (pointer:coarse),(width<=1100px){.btn.sm,.seg button,button.chip,.nav-tools button,.demo-banner button{min-height:44px}.pal-btn{min-height:48px}}.nx{width:40px;height:40px;margin-left:auto}@media (pointer:coarse){.nx{width:44px;height:44px}}.panel-btn{display:none}@media (width<=1360px){.panel-btn{display:inline-flex}}@media (prefers-reduced-motion:reduce){.pulse.amb{display:none}}.canvas button.btn:disabled{opacity:.45}.cv-top .btn,.cv-tools .btn{background:var(--glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.g5{grid-template-columns:repeat(5,minmax(0,1fr));gap:16px;display:grid}.g5>*{min-width:0}@media (width<=1100px){.g5{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=720px){.g5{grid-template-columns:repeat(2,minmax(0,1fr))}.g5 .k-v{font-size:22px}}:root[data-still="1"] *,:root[data-still="1"] :before,:root[data-still="1"] :after{transition:none!important;animation:none!important}:root[data-still="1"] .pulse.amb{display:none}.page-head.compact{margin-bottom:10px}@media (width<=720px){.cv-top .panel-btn{display:none}.page-head.compact h1{font-size:20px}}.fcc-tip{pointer-events:none;z-index:3;width:176px;box-shadow:var(--shadow-lg);padding:8px 12px;position:absolute}.fcc-tip .dotk{border-radius:50%;width:8px;height:8px;margin-right:6px;display:inline-block}.k-ic.cyan{background:var(--cyan-soft);color:var(--cyan)}.k-ic.violet{background:var(--violet-soft);color:var(--violet)}.card.click{cursor:pointer;width:100%}@media (hover:hover){.card.click:hover{border-color:var(--accent);transform:translateY(-2px)}}.card.click{transition:transform .2s var(--ease), border-color .2s}.barrow{grid-template-columns:minmax(70px,38%) minmax(0,1fr) auto;align-items:center;gap:10px;min-height:32px;display:grid}.barwrap{min-width:0}.dcard{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);border-radius:16px;min-width:0;padding:12px}.dcard.click{cursor:pointer}.dcard-t{min-width:0;margin-bottom:8px;font-weight:800}.dcard-g{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px;display:grid}.dcard-c{overflow-wrap:anywhere;flex-direction:column;gap:1px;min-width:0;display:flex}table.dense td{padding:7px 10px}td .tag,td .chip{vertical-align:middle}.drawer-ov{place-items:stretch end;padding:0}.drawer{background:var(--surface);border-left:1px solid var(--line);width:min(560px,100%);height:100%;animation:slidein .4s var(--ease) both;box-shadow:var(--shadow-lg);flex-direction:column;display:flex}.drawer-h{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:16px 18px;display:flex}.drawer-h h3{font-size:18px}.drawer-b{flex-direction:column;flex:1;gap:16px;min-height:0;padding:18px;display:flex;overflow-y:auto}.dragbar{background:var(--bg2);cursor:ew-resize;outline-offset:3px;border-radius:12px;flex:1;min-width:120px;height:44px;position:relative}.dragbar:before{content:"";background:var(--line);border-radius:99px;height:6px;position:absolute;top:19px;left:0;right:0}.dragbar i{background:var(--accent);border-radius:99px;height:6px;position:absolute;top:19px;left:0}.dragbar b{background:var(--surface);border:4px solid var(--accent);width:22px;height:22px;box-shadow:var(--shadow);border-radius:50%;position:absolute;top:11px}.dragbar.warn i{background:var(--amber)}.dragbar.warn b{border-color:var(--amber)}.k-ic{background:var(--accent-soft);width:40px;height:40px;color:var(--accent-text);border-radius:12px;place-items:center;display:grid}.heat{gap:3px;display:grid}.heat-c{color:#0c1620;border-radius:6px;place-items:center;min-height:34px;font-size:12px;font-weight:700;display:grid}.heat-h{color:var(--muted);text-align:center;align-self:center;font-size:12px;font-weight:800}.scroll-x{padding-bottom:6px;overflow-x:auto}.scroll-x::-webkit-scrollbar{height:6px}.scroll-x::-webkit-scrollbar-thumb{background:var(--line);border-radius:6px}.paper{color:#15171a;box-shadow:var(--shadow-lg);background:#fff;border:1px solid #d9d2e7;border-radius:10px;max-width:820px;margin:0 auto;padding:34px 38px;font-size:14px}.paper h3{border-bottom:2px solid #3f5d78;margin:18px 0 6px;padding-bottom:3px;font-size:15px}.paper table th{color:#574963;border-color:#d9d2e7}.paper .muted{color:#574963}@media (width<=720px){.paper{padding:20px 16px}}.pill-row{flex-wrap:wrap;gap:8px;display:flex}.pill-row .chip{cursor:default}.notice{background:var(--accent-soft);border-radius:14px;align-items:flex-start;gap:10px;padding:12px 14px;font-size:13px;display:flex}.notice svg{color:var(--accent-text);flex:none;margin-top:1px}.notice.warn{background:var(--amber-soft)}.notice.warn svg{color:var(--amber)}.notice.bad{background:var(--red-soft)}.notice.bad svg{color:var(--red)}.chat{flex-direction:column;gap:12px;display:flex}.bubble{max-width:92%;animation:msgin .4s var(--ease) both;border-radius:16px;padding:10px 14px}.bubble.me{background:var(--accent);color:var(--accent-ink);align-self:flex-end}.bubble.ai{background:var(--surface-2);border:1px solid var(--line);align-self:flex-start;width:100%;max-width:100%}.typing i{background:var(--muted);border-radius:50%;width:7px;height:7px;margin-right:4px;animation:1s ease-in-out infinite floaty;display:inline-block}.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}.store-tile{text-align:left;flex-direction:column;gap:8px;display:flex}.abc{background:var(--bg2);border-radius:8px;place-items:center;width:26px;height:26px;font-size:12px;font-weight:800;display:inline-grid}.abc.A{background:var(--accent);color:var(--accent-ink)}.abc.B{background:var(--accent-soft);color:var(--accent-text)}.abc.X{background:var(--green-soft);color:var(--green)}.abc.Y{background:var(--amber-soft);color:var(--amber)}.abc.Z{background:var(--red-soft);color:var(--red)}.mini-note{color:var(--muted);font-size:12px}.tabs-sc{margin-bottom:14px}.hero-card .btn.ghostw{color:#fff;background:#ffffff29;border:1px solid #ffffff59}.pulse-dot{background:var(--green);width:9px;height:9px;box-shadow:0 0 0 0 var(--green);border-radius:50%;flex:none;animation:1.8s infinite pulseo}@keyframes pulseo{70%{box-shadow:0 0 0 10px #0000}to{box-shadow:0 0 #0000}}.sticky-sum{z-index:6;position:sticky;top:74px}.sel-check{cursor:pointer;align-items:center;gap:8px;min-height:44px;font-weight:600;display:flex}@media print{.sidebar,.topbar,.bottomnav,.demo-banner,.page-head,.no-print,.toasts{display:none!important}.app{display:block!important}.main{background:0 0!important}.page{padding:0!important}.paper{box-shadow:none;border:0;max-width:none}body{overflow:visible}}@media (width<=720px){.drawer-ov{place-items:end stretch}.drawer{width:100%;height:94dvh;animation:rise .4s var(--ease) both;border-left:0;border-radius:22px 22px 0 0}.barrow{grid-template-columns:minmax(70px,34%) minmax(0,1fr) auto}.fcc-tip{width:156px}.page-head p:not(.keep){font-size:13px;display:block}}.po-row,.po-head{border-top:1px solid var(--line);grid-template-columns:minmax(150px,1.3fr) minmax(130px,1fr) minmax(160px,1.6fr) 180px 110px;align-items:center;gap:14px;padding:10px 4px;display:grid}.po-head{border-top:0;padding:0 4px 6px;font-weight:700}.po-row>*,.min0{min-width:0}.po-qty{justify-content:flex-end;align-items:center;gap:4px;display:flex}@media (width<=1100px){.po-row,.po-head{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.po-row .dragbar{order:3;grid-column:1/-1}.po-qty{justify-content:flex-start}.po-head{display:none}}@media (width<=720px){.po-row{border:1px solid var(--line);border-top:1px solid var(--line);border-radius:14px;grid-template-columns:minmax(0,1fr);margin-top:10px;padding:12px}.po-row .dragbar{order:0}}.heat>.small{align-self:center}.chart-tip{pointer-events:none;z-index:3;width:176px;box-shadow:var(--shadow-lg);padding:8px 12px;position:absolute}.dotk{border-radius:50%;width:8px;height:8px;margin-right:6px;display:inline-block}.hb{flex-direction:column;gap:4px;display:flex}.hb-row{text-align:left;border-radius:8px;grid-template-columns:minmax(70px,34%) minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;min-height:34px;padding:0 4px;font-size:13px;display:grid}button.hb-row{min-height:44px}@media (hover:hover){button.hb-row:hover{background:var(--surface-2)}}.hb-row.on{background:var(--accent-soft)}.hb-l{min-width:0;font-weight:600}.hb-t{background:var(--bg2);border-radius:99px;height:14px;display:block;overflow:hidden}.hb-f{border-radius:99px;height:100%;display:block}.hb-v{text-align:right;white-space:nowrap;font-size:13px}.don-row{text-align:left;border-radius:8px;align-items:center;gap:8px;width:100%;min-height:40px;padding:0 6px;font-size:13px;display:flex}@media (hover:hover){button.don-row:hover{background:var(--surface-2)}}.kpi-big .k-v{letter-spacing:-.03em;font-size:38px;font-weight:800;line-height:1.1;font-family:var(--mono)}.kpi-multi{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:18px;padding:8px 2px;display:grid}.pop-menu{z-index:30;min-width:210px;max-height:62vh;position:absolute;top:calc(100% + 4px);left:0;overflow:auto}.pop-menu.right{left:auto;right:0}.scrim-clear{z-index:29;position:fixed;inset:0}.mi{justify-content:flex-start}.btn.danger{color:var(--red)}.explore{grid-template-columns:minmax(0,340px) minmax(0,1fr);align-items:start;gap:16px;display:grid}@media (width<=1100px){.explore{grid-template-columns:minmax(0,1fr)}}.tight2{gap:10px}.builder{gap:12px}.formula{font-family:var(--mono);color:var(--muted);background:var(--bg2);overflow-wrap:anywhere;border-radius:6px;padding:4px 8px;font-size:12px;display:block}code{font-family:var(--mono);font-size:13px}.list-row.card.sel{border-color:var(--accent);background:var(--accent-soft)}:root{--bg:#eaeefa;--bg2:#dde3f4;--surface:#fff;--surface-2:#f4f6fd;--glass:#ffffffe0;--ink:#11182f;--ink-2:#2c3556;--muted:#4a5578;--line:#c9d1ea;--accent:#1b2a5c;--accent-ink:#fff;--accent-soft:#dfe5f7;--accent-text:#1b2a5c;--green:#137a4a;--green-soft:#d8f1e3;--amber:#8a5200;--amber-soft:#fbeccb;--red:#b3202a;--red-soft:#fde1e3;--today:#e0a800;--weekend:#1b2a5c12;--hol-bg:#fbeed0;--hol-line:#ecc75a;--grid:#1b2a5c29;--grid-major:#1b2a5c13;--grid-minor:#1b2a5c0a;--wire:#1b2a5c73;--sb-bg:#0f1738;--sb-ink:#d6dcf2;--sb-muted:#a3aed6;--r:8px;--pink:#1b2a5c;--pink-soft:#dfe5f7}:root[data-theme=dark]{--bg:#0a1230;--bg2:#16234f;--surface:#101a3b;--surface-2:#152048;--glass:#101a3be0;--ink:#e9edfb;--ink-2:#c8d0ec;--muted:#a3afd6;--line:#2b3b70;--accent:#8fa8ff;--accent-ink:#0a1230;--accent-soft:#1d2b5e;--accent-text:#b4c3ff;--green:#4ccf8a;--green-soft:#103324;--amber:#f2b13c;--amber-soft:#3a2d12;--red:#ff7b84;--red-soft:#3d1b22;--today:#f2c230;--weekend:#8fa8ff12;--hol-bg:#3a2d12;--hol-line:#7a5f1e;--grid:#8fa8ff33;--grid-major:#8fa8ff17;--grid-minor:#8fa8ff0b;--wire:#b4c3ff8c;--sb-bg:#070d24;--sb-ink:#d6dcf2}.card{border-radius:8px}.btn,.input,select.input,textarea.input,.seg,.seg button,.seg .thumb{border-radius:7px}.main{background-color:var(--bg);background-image:linear-gradient(var(--grid-major) 1px, transparent 1px), linear-gradient(90deg, var(--grid-major) 1px, transparent 1px), linear-gradient(var(--grid-minor) 1px, transparent 1px), linear-gradient(90deg, var(--grid-minor) 1px, transparent 1px);background-size:120px 120px,120px 120px,24px 24px,24px 24px}.sidebar:before{background:repeating-linear-gradient(90deg,#0000 0 38px,#ffffff08 38px 39px),repeating-linear-gradient(0deg,#0000 0 38px,#ffffff08 38px 39px)}.brand-mark{background:linear-gradient(135deg,#2f45a3,#1b2a5c);border-radius:9px;box-shadow:0 0 0 1px #ffffff38,0 6px 18px #0a103080}:root[data-theme=dark] .brand-mark{background:linear-gradient(135deg,#2f45a3,#1b2a5c)}.nav-pill{background:#8fa8ff29;border-radius:6px}.nav-pill:before{content:"";background:#f2c230;border-radius:3px;width:3px;position:absolute;top:8px;bottom:8px;left:0}.nav a{border-radius:6px}.cnt,:root:not([data-theme=dark]) .cnt{color:#1b2a5c;background:#f2c230}.cnt.warn{color:#2a0f00;background:#ff9d6c}.topbar{box-shadow:0 1px 0 var(--line);border-bottom:0}.topbar:after{content:"";pointer-events:none;background:repeating-linear-gradient(90deg, var(--grid) 0 1px, transparent 1px 12px), repeating-linear-gradient(90deg, var(--grid) 0 1px, transparent 1px 60px);opacity:.8;background-position:0 0;background-repeat:repeat-x;background-size:12px 3px,60px 6px;height:6px;position:absolute;bottom:-7px;left:0;right:0}.page-head{padding-bottom:16px;position:relative}.page-head h1 .ph-ic{background:var(--accent);color:var(--accent-ink);border-radius:8px}.page-head:before{content:"";background:linear-gradient(90deg, var(--accent) 0 46px, transparent 46px 52px, var(--accent) 52px 104px, transparent 104px 110px, var(--wire) 110px 150px);border-radius:2px;width:150px;height:4px;position:absolute;bottom:2px;left:0}.page-head h1{position:relative}.k-ic,.app-ic,.empty-ic{border-radius:8px}.demo-btn{background:var(--amber-soft);border-color:var(--amber)}.danger-fill{background:var(--red)!important;color:#fff!important;box-shadow:none!important}:root[data-theme=dark] .danger-fill{color:#2a070b!important}.btn.primary{box-shadow:0 6px 16px color-mix(in srgb, var(--accent) 30%, transparent)}.k-ic.red{background:var(--red-soft);color:var(--red)}.k-ic.amber{background:var(--amber-soft);color:var(--amber)}.k-ic.green{background:var(--green-soft);color:var(--green)}.link-btn{color:var(--accent-text);text-align:left;align-items:center;gap:4px;min-width:40px;min-height:40px;font-weight:700;display:inline-flex}.icon-btn.sm{border-radius:7px;width:40px;height:40px}.x-btn{width:40px;height:40px;color:var(--muted);border-radius:7px;flex:none;place-items:center;display:grid}@media (hover:hover){.x-btn:hover{background:var(--bg2);color:var(--ink)}}@media (pointer:coarse),(width<=1100px){.btn.sm,.seg button,button.chip,.nav-tools button,.link-btn,.icon-btn.sm,.x-btn,.chip.btn-chip{min-height:44px}.icon-btn.sm,.x-btn{min-width:44px}}button.chip,.chip.btn-chip{cursor:pointer;border:1px solid var(--line);background:var(--surface);min-height:40px;padding:0 14px;font-weight:600}.chip.btn-chip.on{background:var(--accent);color:var(--accent-ink);border-color:#0000}@media (hover:hover){.chip.btn-chip:hover{border-color:var(--accent)}}.chip.red{background:var(--red-soft)}.chip.amber{background:var(--amber-soft)}.chip.green{background:var(--green-soft)}.chip.accent{background:var(--accent-soft)}.grip{cursor:grab;touch-action:none;width:40px;height:40px;color:var(--muted);border-radius:7px;flex:none;place-items:center;display:grid}@media (pointer:coarse){.grip{width:44px;height:44px}}@media (hover:hover){.grip:hover{background:var(--bg2)}}.chip-due{background:var(--bg2);color:var(--ink-2);white-space:nowrap;border-radius:6px;align-items:center;gap:4px;padding:2px 8px;font-size:12px;font-weight:700;display:inline-flex}.chip-due.late{background:var(--red-soft);color:var(--red)}.crit-dot{background:var(--red);flex:none;width:8px;height:8px;margin-right:6px;display:inline-block;transform:rotate(45deg)}.qa-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.qa{white-space:normal;text-align:left;justify-content:flex-start}.pat{border:1px solid var(--line);background:var(--surface-2);border-radius:8px;flex-direction:column;gap:6px;padding:12px;display:flex}.rule-row{border:1px solid var(--line);background:var(--surface-2);border-radius:8px;align-items:center;gap:10px;min-width:0;padding:6px 8px 6px 12px;display:flex}.pick-row{border:1px solid var(--line);background:var(--surface-2);cursor:pointer;border-radius:8px;align-items:flex-start;gap:12px;min-height:56px;padding:10px 12px;display:flex}.pick-row input{margin-top:2px}.tools-tabs{gap:8px;margin:14px 0;padding-bottom:4px;display:flex;overflow-x:auto}.tools-tabs .chip{flex:none;gap:6px}.totals-box{border:1px solid var(--line);background:var(--surface-2);border-radius:8px;flex-direction:column;gap:6px;padding:12px 14px;display:flex}.totals-box>div{justify-content:space-between;gap:12px;display:flex}.totals-box .tot{border-top:2px solid var(--accent);margin-top:4px;padding-top:8px;font-size:17px}.totals-box .margin{color:var(--muted);font-size:13px}.stat-mini{border:1px solid var(--line);background:var(--surface-2);overflow-wrap:anywhere;border-radius:8px;flex-direction:column;gap:2px;min-width:0;padding:10px 12px;display:flex}.paper{color:#14181f;max-width:820px;box-shadow:none;background:#fff;border:1px solid #c9d1ea;border-radius:8px;padding:26px 28px;font-size:14px}.paper h2{font-size:22px}.paper h3{text-transform:uppercase;letter-spacing:.04em;border-bottom:2px solid #1b2a5c;margin:16px 0 6px;padding-bottom:3px;font-size:14px}.paper .muted,.paper .small.muted{color:#46506e}.paper th{color:#46506e;border-color:#c9d1ea}.paper td{border-color:#dfe4f3}.paper .totals-box{background:#f4f6fd;border-color:#c9d1ea}.paper .totals-box .tot{border-color:#1b2a5c}.paper .margin{color:#46506e}.paper .chip{color:#14181f;background:#e9edf8}.paper .chip.green{background:#d8f1e3}.paper .chip.red{background:#fde1e3}.paper .chip.amber{background:#fbeccb}.paper .chip.accent{background:#dfe5f7}.sample-note{color:#3a2a00;background:#fff7e0;border:1px solid #e8c547;border-radius:6px;margin-top:16px;padding:10px 12px;font-size:13px}.inv-cards{display:none}.inv-card{border-bottom:1px solid #dfe4f3;padding:8px 0}.q-row{border:1px solid var(--line);background:var(--surface-2);border-radius:8px;grid-template-columns:minmax(0,2.2fr) minmax(0,1.5fr) 84px 96px 64px 44px;align-items:center;gap:8px;padding:8px;display:grid}.q-row>*{min-width:0}.client-card{text-align:left;align-items:stretch}.tile-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;display:grid}.portal-proj{border:1px solid var(--line);background:var(--surface-2);border-radius:8px;flex-direction:column;gap:8px;padding:14px;display:flex}.ms-diamond{clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);background:var(--today);color:#1b2a5c;flex:none;place-items:center;width:44px;height:44px;display:grid}.ms-diamond.done{background:var(--green);color:#fff}:root[data-theme=dark] .ms-diamond.done{color:#052}.ms-diamond.late{background:var(--red);color:#fff}:root[data-theme=dark] .ms-diamond.late{color:#2a070b}.ms-diamond.sm{width:32px;height:32px}.ms-row{border:1px solid var(--line);background:var(--surface-2);border-radius:8px;min-width:0;padding:6px 10px}.ms-strip{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;display:grid}.ms-item{align-items:center;gap:8px;min-width:0;display:flex}.ms-item.done .ms-diamond{background:var(--green);color:#fff}.rate-row{border:1px solid var(--line);background:var(--surface-2);border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;padding:6px 10px;display:flex}.perm-grid{flex-direction:column;gap:6px;display:flex}.perm-row{border:1px solid var(--line);background:var(--surface-2);border-radius:8px;grid-template-columns:minmax(0,1.4fr) minmax(0,2fr);align-items:center;gap:10px;padding:8px 10px;display:grid}.perm-cells{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;display:grid}.perm-c{color:var(--muted);border-radius:6px;flex-direction:column;align-items:center;gap:2px;padding:4px 2px;display:flex}.perm-c small{text-align:center;font-size:12px;line-height:1.1}.perm-c.yes{color:var(--green);background:var(--green-soft)}.tl-line{border-bottom:1px solid var(--line);padding:8px 0}.tl-line:last-child{border:0}.done-txt{color:var(--muted);text-decoration:line-through}.stat-mini b{font-size:16px}.donut-wrap{flex-wrap:wrap;align-items:center;gap:20px;display:flex}.don-row{align-items:center;gap:8px;min-height:36px;font-size:13px;display:flex}.don-row i{border-radius:3px;flex:none;width:12px;height:12px}.dcard.sel{border-color:var(--accent)}.attn{border-radius:8px}.login-hero{background:radial-gradient(900px 600px at 85% 0,#8fa8ff38 0%,#0000 60%),repeating-linear-gradient(90deg,#0000 0 39px,#ffffff0a 39px 40px),repeating-linear-gradient(0deg,#0000 0 39px,#ffffff0a 39px 40px),#0f1738}.login-hero h1{max-width:17ch;font-size:clamp(28px,3vw,40px)}.login-art{opacity:.95;pointer-events:none;z-index:1;width:56%;max-width:560px;height:auto;position:absolute;bottom:8%;right:2%}.grow-bar{transform-box:fill-box;animation:1.6s cubic-bezier(.2,.8,.2,1) both growx;transform-origin:0!important}@keyframes growx{0%{opacity:0;transform:scaleX(0)}}.dash-move{stroke-dasharray:2 2;animation:1.6s linear infinite dash}@media (width<=1100px){.login-art{display:none}}.board4{grid-template-columns:repeat(4,minmax(0,1fr));align-items:start;gap:12px;display:grid}.bcol{background:var(--bg2);border:2px solid #0000;border-radius:8px;min-width:0;padding:8px}.bcol.over{border-color:var(--amber)}.bcol-h{align-items:center;gap:8px;padding:2px 4px 8px;display:flex}.bcol-b{flex-direction:column;gap:8px;max-height:640px;display:flex;overflow-y:auto}body.is-dragging .bcol{border-color:var(--accent);border-style:dashed}.wip-warn{background:var(--amber-soft);color:var(--ink);border-radius:6px;align-items:center;gap:6px;margin-bottom:8px;padding:6px 8px;font-size:12px;font-weight:700;display:flex}.wip-warn svg{color:var(--amber);flex:none}.tcard{background:var(--surface);border:1px solid var(--line);border-radius:8px;flex-direction:column;gap:6px;min-width:0;padding:8px 10px;display:flex}.tcard.late{border-left:4px solid var(--red)}.tcard-t{text-align:left;overflow-wrap:anywhere;min-width:0;min-height:40px;color:var(--ink);flex:1;align-items:center;font-weight:700;line-height:1.3;display:flex}.col-tabs{gap:6px;margin-bottom:10px;padding-bottom:4px;display:flex;overflow-x:auto}.col-tabs .chip{flex:none}.tl-grid{grid-template-columns:minmax(0,1fr) 330px;align-items:start;gap:16px;display:grid}.tl-side{position:sticky;top:80px}.gantt-card{overflow:hidden}.gantt-flex{min-width:0;display:flex}.g-names{border-right:1px solid var(--line);background:var(--surface);z-index:1;flex:none;width:200px;position:relative}.g-name{text-align:left;border-bottom:1px solid var(--line);align-items:center;gap:0;width:100%;padding:0 10px;font-size:13px;font-weight:600;display:flex}.g-name.on{background:var(--accent-soft)}@media (hover:hover){.g-name:hover{background:var(--surface-2)}}.g-scroll{scrollbar-width:thin;scrollbar-color:var(--wire) transparent;flex:1;min-width:0;overflow-x:auto}.g-scroll svg{display:block}.g-scroll::-webkit-scrollbar{height:10px}.g-scroll::-webkit-scrollbar-thumb{background:var(--wire);border-radius:8px}.g-month{fill:var(--ink);font-size:12px;font-weight:800}.g-day{fill:var(--muted);font-size:12px}.g-daynum{fill:var(--ink-2);font-size:12px;font-weight:700}.g-today{fill:var(--ink);font-size:12px;font-weight:800}.g-label{fill:var(--ink);pointer-events:none;font-size:12px;font-weight:700}.g-bar rect.bar-todo{fill:color-mix(in srgb, var(--accent) 16%, var(--surface));stroke-opacity:1}.g-bar rect.bar-doing,.g-bar rect.bar-review{fill:color-mix(in srgb, var(--accent) 22%, var(--surface))}.g-bar rect.bar-done{fill:color-mix(in srgb, var(--green) 26%, var(--surface))}.g-bar .bar-fill{fill:color-mix(in srgb, var(--accent) 48%, transparent);pointer-events:none}.g-bar rect.bar-done~.bar-fill{fill:color-mix(in srgb, var(--green) 50%, transparent)}.g-bar:focus{outline:none}.g-bar:focus-visible rect:first-child,.g-bar.sel rect:first-child{stroke:var(--ink)!important;stroke-width:3px!important}.g-bar.src rect:first-child{stroke:var(--today)!important;stroke-width:3px!important}.g-handle{fill:#0000}@media (hover:hover){.g-bar:hover .g-handle{fill:color-mix(in srgb, var(--ink) 25%, transparent)}}.g-legend{border-top:1px solid var(--line);flex-wrap:wrap;gap:14px;padding:10px 14px;display:flex}.g-legend span{align-items:center;gap:6px;display:inline-flex}.lg{border:1px solid var(--wire);border-radius:3px;width:14px;height:10px;display:inline-block}.lg-todo{background:color-mix(in srgb, var(--accent) 16%, var(--surface))}.lg-doing{background:color-mix(in srgb, var(--accent) 48%, var(--surface))}.lg-done{background:color-mix(in srgb, var(--green) 45%, var(--surface))}.lg-crit{border:2px solid var(--red);background:0 0}.lg-hol{background:var(--hol-bg);border-color:var(--hol-line)}.lg-dia{background:var(--today);width:10px;height:10px;display:inline-block;transform:rotate(45deg)}@media (width<=1520px){.tl-grid{grid-template-columns:minmax(0,1fr)}.tl-side{position:static}}@media (width<=1100px){.g-names{width:150px}}.heat-grid{flex-direction:column;gap:3px;display:flex}.heat-row{grid-template-columns:minmax(110px,1.5fr) repeat(10,minmax(0,1fr));align-items:center;gap:3px;display:grid}.heat-row.hd{color:var(--muted);font-size:12px;font-weight:800}.hh{text-align:center}.hc{min-height:40px;color:var(--ink);font-variant-numeric:tabular-nums;border:2px solid #0000;border-radius:6px;place-items:center;font-size:12px;font-weight:800;display:grid}.hc.free{background:color-mix(in srgb, var(--accent) 9%, var(--surface))}.hc.ok{background:color-mix(in srgb, var(--accent) 30%, var(--surface))}.hc.full{background:color-mix(in srgb, var(--amber) 40%, var(--surface))}.hc.over{background:color-mix(in srgb, var(--red) 52%, var(--surface))}.hc.sel{border-color:var(--ink)}@media (hover:hover){.hc:hover{border-color:var(--wire)}}.heat-weeks{grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;display:grid}.heat-weeks .hc{align-content:center;min-height:48px}.heat-weeks small{color:var(--ink-2);font-size:12px;font-weight:600;line-height:1.1;display:block}.lg-h{vertical-align:-2px;border:1px solid var(--wire);border-radius:4px;width:14px;height:14px;margin-right:6px;display:inline-block}.lg-h.free{background:color-mix(in srgb, var(--accent) 9%, var(--surface))}.lg-h.ok{background:color-mix(in srgb, var(--accent) 30%, var(--surface))}.lg-h.full{background:color-mix(in srgb, var(--amber) 40%, var(--surface))}.lg-h.over{background:color-mix(in srgb, var(--red) 52%, var(--surface))}.matrix{flex-direction:column;gap:4px;display:flex}.mx-row{grid-template-columns:74px repeat(5,minmax(0,1fr));align-items:stretch;gap:4px;display:grid}.mx-ax{color:var(--muted);flex-direction:column;justify-content:center;font-size:12px;display:flex}.mx-ax small,.mx-xl small{font-size:12px;line-height:1.1}.mx-cell{min-height:54px;color:var(--ink);border:2px solid #0000;border-radius:6px;flex-direction:column;justify-content:center;align-items:center;display:flex}.mx-cell b{font-size:18px}.mx-cell small{opacity:.85;font-size:12px}.mx-cell.sel{border-color:var(--ink)}.mx-cell.low{background:color-mix(in srgb, var(--green) 22%, var(--surface))}.mx-cell.med{background:color-mix(in srgb, var(--amber) 30%, var(--surface))}.mx-cell.high{background:color-mix(in srgb, #e8742a 45%, var(--surface))}.mx-cell.crit{background:color-mix(in srgb, var(--red) 55%, var(--surface))}.mx-foot .mx-xl{text-align:center;grid-column:2/-1;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;display:grid}.mx-xl span{color:var(--muted);flex-direction:column;font-size:12px;display:flex}.rb{color:var(--ink);border-radius:6px;padding:2px 9px;font-size:12px;font-weight:800;display:inline-flex}.rb.low{background:color-mix(in srgb, var(--green) 24%, var(--surface))}.rb.med{background:color-mix(in srgb, var(--amber) 32%, var(--surface))}.rb.high{background:color-mix(in srgb, #e8742a 45%, var(--surface))}.rb.crit{background:color-mix(in srgb, var(--red) 55%, var(--surface))}.ts-grid{flex-direction:column;display:flex}.ts-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(130px,1.7fr) repeat(7,minmax(52px,1fr)) 60px;align-items:center;gap:6px;padding:6px 12px;display:grid}.ts-row>*{min-width:0}.ts-head{text-transform:uppercase;letter-spacing:.03em;color:var(--muted);background:var(--surface-2);font-size:12px;font-weight:800}.ts-head>div{text-align:center}.ts-head>div:first-child{text-align:left}.ts-head small{text-transform:none;letter-spacing:0;color:var(--amber);font-size:12px;display:block}.ts-row .off{background:var(--weekend);border-radius:6px}.ts-head .off{color:var(--muted)}.ts-foot{background:var(--surface-2);border-bottom:0}.ts-foot>div{text-align:center}.ts-foot>div:first-child{text-align:left}.ts-row .right{text-align:right!important}.bad{color:var(--red)}.cell-hours{text-align:center;background:var(--surface-2);font-variant-numeric:tabular-nums;-moz-appearance:textfield;border:1px solid #0000;border-radius:6px;width:100%;min-height:40px;padding:4px 2px;font-size:16px}.cell-hours::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.cell-hours::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.cell-hours:focus{border-color:var(--accent);background:var(--surface);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 24%, transparent);outline:0}.cell-hours.locked{color:var(--muted);background:0 0;font-weight:700}.cell-hours::placeholder{color:var(--muted);opacity:.6}.day-chips{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;display:grid}.day-chip{border:1px solid var(--line);background:var(--surface);border-radius:8px;flex-direction:column;justify-content:center;align-items:center;min-height:64px;font-size:12px;font-weight:700;display:flex}.day-chip b{font-size:16px}.day-chip small{color:var(--muted);font-size:12px}.day-chip.on{background:var(--accent);color:var(--accent-ink);border-color:#0000}.day-chip.on small{color:var(--accent-ink)}.day-chip.off:not(.on){background:var(--weekend)}.cell-hours.wide{max-width:none}@media print{body *{visibility:hidden}#invoice-paper,#invoice-paper *,#quote-paper,#quote-paper *{visibility:visible}#invoice-paper,#quote-paper{width:100%;max-width:none;position:absolute;top:0;left:0}}@media (width<=1100px){.board4,.qa-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.q-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 84px 96px}.q-row .q-desc{grid-column:1/-1}.perm-row{grid-template-columns:minmax(0,1fr)}}@media (width<=720px){.qa-grid{grid-template-columns:minmax(0,1fr)}.inv-lines{display:none}.inv-cards{display:block}.paper{padding:18px 14px}.q-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.q-row .x-btn{grid-column:2;justify-self:end}.tile-grid{grid-template-columns:minmax(0,1fr)}.heat-weeks .hc small{font-size:12px}.mx-row{grid-template-columns:54px repeat(5,minmax(0,1fr))}.mx-ax small{display:none}.mx-cell{min-height:48px}.mx-xl small{display:none}.rule-row{flex-wrap:wrap}.page-head:before{width:110px}}.min0{min-width:0}select.input{text-overflow:ellipsis;min-width:0;max-width:100%}.search input{min-height:44px}textarea.input,textarea.input.mono{font-size:16px}.nav-sec-btn{min-height:40px}button.tag{cursor:pointer;align-items:center;min-height:40px}@media (pointer:coarse),(width<=1100px){.chip.btn-chip,button.chip,button.tag,.tcard-t,.cell-hours,.btn.sm,.icon-btn.sm,.x-btn,.link-btn{min-height:44px}.btn.sm,.icon-btn.sm,.x-btn{min-width:44px}}.switch:after{inset:-10px -4px}.avatar{border-radius:9px;background:var(--accent)!important;color:var(--accent-ink)!important}:root:not([data-theme=dark]) .avatar{color:#fff!important}th,td{padding-left:8px;padding-right:8px}td.right,th.right{white-space:nowrap}@media (width<=1100px){.nav a,.nav-sec-btn{min-height:44px}}.demo-banner button{min-height:40px}@media (width<=1100px){.demo-banner button{min-height:44px}}@media (pointer:coarse),(width<=1100px){.hc{min-height:44px}.heat-weeks .hc{min-height:48px}}.lg-today{background:var(--today);border-radius:2px;width:3px;height:14px;display:inline-block}
