:root{--bg: #eef1f6;--panel: #ffffff;--ink: #0f172a;--muted: #64748b;--faint: #94a3b8;--line: #e2e8f0;--line2: #eef2f7;--brand: #4f46e5;--brand-d: #4338ca;--brand-soft: #eef0fe;--ok: #16a34a;--ok-d: #15803d;--ok-soft: #dcfce7;--warn: #d97706;--warn-d: #b45309;--warn-soft: #fef3c7;--err: #dc2626;--err-d: #b91c1c;--err-soft: #fee2e2;--sky: #0ea5e9;--sky-d: #0369a1;--sky-soft: #e0f2fe;--panel-2: #f8fafc;--overlay: #0f172a;--overlay-fg: #ffffff;--overlay-err: #7f1d1d;--side: #0b1220;--side-ink: #cbd5e1;--side-line: #1e293b;--shadow: 0 1px 2px rgba(15, 23, 42, .04), 0 8px 24px -12px rgba(15, 23, 42, .18);--shadow-lg: 0 24px 60px -22px rgba(15, 23, 42, .5);--r: 14px;--r-sm: 10px;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-spring: cubic-bezier(.22, 1.2, .4, 1);--ease-in: cubic-bezier(.4, 0, 1, 1);--dur-panel: .34s;--dur-msg: .36s}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Inter,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--ink);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:inherit}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:8px;border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background:#94a3b8;background-clip:padding-box}.btn{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:var(--r-sm);border:1px solid var(--line);background:var(--panel);color:var(--ink);font-size:13.5px;font-weight:600;cursor:pointer;transition:.13s;font-family:inherit}.btn:hover:not(:disabled){border-color:var(--faint)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn.primary:hover:not(:disabled){background:var(--brand-d);border-color:var(--brand-d)}.btn.danger{color:var(--err);border-color:var(--err-soft);background:var(--err-soft)}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow)}.card.flat{box-shadow:none}.card-hd{padding:15px 18px;border-bottom:1px solid var(--line2);display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.card-hd>div:first-child{flex:1 1 auto;min-width:0}.card-hd h2{margin:0;font-size:14px;font-weight:700;letter-spacing:-.01em}.card-hd .sub{margin-top:2px;font-size:12px;color:var(--muted);font-weight:500}.card-bd{padding:18px}.muted{color:var(--muted)}.empty{padding:34px 18px;text-align:center;color:var(--muted);font-size:13px}.toasts{position:fixed;right:18px;bottom:18px;display:flex;flex-direction:column;gap:8px;z-index:90}.toast{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--brand);border-radius:var(--r-sm);box-shadow:var(--shadow);padding:11px 15px;font-size:13px;font-weight:500;max-width:min(380px,calc(100vw - 36px));animation:toast-in .18s ease-out}.toast.ok{border-left-color:var(--ok)}.toast.err{border-left-color:var(--err)}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}}.app{display:grid;grid-template-columns:auto minmax(0,1fr);height:100vh;overflow:hidden}.side{background:var(--side);color:var(--side-ink);display:flex;flex-direction:column;padding:20px 14px;overflow-y:auto;overflow-x:hidden;width:264px;transition:width .22s cubic-bezier(.4,0,.2,1),padding .22s cubic-bezier(.4,0,.2,1)}.app.collapsed .side{width:74px;padding:20px 11px}.app.collapsed .brand{justify-content:center;padding-left:0;padding-right:0}.app.collapsed .brand-txt,.app.collapsed .nav-txt,.app.collapsed .side-user-txt{display:none}.app.collapsed .nav .lbl{padding:0;margin:9px 6px 3px;height:0;overflow:hidden}.app.collapsed .nav button{justify-content:center;padding:11px 0}.app.collapsed .side-user{justify-content:center;padding-left:0;padding-right:0}.app.collapsed .side-out{justify-content:center;padding:9px 0}.brand{display:flex;align-items:center;gap:11px;padding:6px 8px 18px;margin-bottom:14px}.brand .mark{width:38px;height:38px;border-radius:11px;background:linear-gradient(135deg,#6366f1,#4338ca);display:grid;place-items:center;color:#fff;flex:0 0 auto;font-weight:800;box-shadow:0 6px 18px -6px #4f46e5cc}.brand .nm{font-weight:700;color:#fff;font-size:15px;letter-spacing:-.01em;line-height:1.15}.brand .sub{font-size:11px;color:#64748b;letter-spacing:.04em}.nav{display:flex;flex-direction:column;gap:3px}.nav .lbl{font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;color:#475569;font-weight:700;padding:14px 10px 6px;border-top:1px solid rgba(148,163,184,.12);margin-top:6px}.nav .lbl:first-child{border-top:0;margin-top:0;padding-top:6px}.nav button{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:10px;color:var(--side-ink);border:0;background:none;text-align:left;font-family:inherit;font-weight:500;font-size:13.5px;cursor:pointer;transition:.13s;width:100%}.nav button:hover{background:#94a3b81a;color:#fff}.nav button.on{background:var(--brand);color:#fff;font-weight:600}.main{overflow:auto;display:flex;flex-direction:column;min-width:0}.topbar{display:flex;align-items:center;gap:14px;padding:18px 26px;border-bottom:1px solid var(--line);background:var(--panel);position:sticky;top:0;z-index:20}.topbar .module{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--brand);font-weight:800}.topbar h1{margin:0;font-size:19px;font-weight:700;letter-spacing:-.02em}.topbar .sub{font-size:12.5px;color:var(--muted);margin-top:1px}.topbar .spacer{flex:1}.run-flag{position:relative;overflow:hidden;flex:0 0 auto;display:inline-flex;align-items:center;gap:8px;padding:6px 12px 6px 10px;border-radius:999px;cursor:pointer;border:1px solid var(--brand);background:var(--brand-soft);color:var(--brand-d);font-family:inherit;font-size:12.5px;font-weight:700;letter-spacing:-.01em}.run-flag:hover{background:#e6e8fd}.run-flag:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(100deg,transparent 20%,rgba(255,255,255,.6) 50%,transparent 80%);transform:translate(-100%);animation:runShimmer 1.9s ease-in-out infinite}@keyframes runShimmer{to{transform:translate(100%)}}.run-flag-dot{width:9px;height:9px;border-radius:50%;background:var(--brand);flex:0 0 auto;animation:runPulse 1.4s ease-out infinite}@keyframes runPulse{0%{box-shadow:0 0 #4f46e580}70%{box-shadow:0 0 0 7px #4f46e500}to{box-shadow:0 0 #4f46e500}}.run-flag-step{color:var(--brand);font-weight:600;opacity:.85}@media (max-width: 640px){.run-flag-txt{display:none}}.run-topline{position:absolute;top:0;left:0;right:0;height:3px;z-index:30;overflow:hidden;background:var(--brand-soft)}.run-topline:before{content:"";position:absolute;top:0;bottom:0;width:34%;background:linear-gradient(90deg,transparent,var(--brand),transparent);animation:runSlide 1.25s cubic-bezier(.4,0,.2,1) infinite}@keyframes runSlide{0%{left:-36%}to{left:102%}}@media (prefers-reduced-motion: reduce){.run-flag:after,.run-flag-dot,.run-topline:before{animation:none}.run-topline:before{left:0;width:100%;opacity:.6}}.side-toggle{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;flex:0 0 auto;border-radius:10px;border:1px solid var(--line);background:var(--panel);color:var(--muted);cursor:pointer;transition:.13s}.side-toggle:hover{background:var(--line2);color:var(--ink)}.side-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:79;background:#0f172a80;animation:fade-in .14s ease-out}@media (min-width: 769px){.side-backdrop{display:none}}@media (max-width: 768px){.app{grid-template-columns:minmax(0,1fr)}.side{position:fixed;inset:0 auto 0 0;z-index:80;width:min(84vw,300px);transform:translate(-100%);transition:transform .22s cubic-bezier(.4,0,.2,1);box-shadow:var(--shadow-lg)}.app.nav-open .side{transform:none}.app.collapsed .side{width:min(84vw,300px);padding:20px 14px}.app.collapsed .brand{justify-content:flex-start;padding-left:8px;padding-right:8px}.app.collapsed .brand-txt,.app.collapsed .nav-txt,.app.collapsed .side-user-txt{display:revert}.app.collapsed .nav .lbl{padding:14px 10px 6px;margin-top:6px;height:auto;overflow:visible}.app.collapsed .nav button{justify-content:flex-start;padding:9px 11px}.app.collapsed .side-user{justify-content:flex-start;padding-left:0;padding-right:0}.app.collapsed .side-out{justify-content:flex-start;padding:9px 11px}.topbar{padding:12px 16px;gap:10px}.content{padding:16px 14px 48px}.topbar .sub{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}.fab{position:fixed;right:24px;bottom:24px;z-index:60;width:56px;height:56px;border-radius:50%;border:0;cursor:pointer;background:linear-gradient(135deg,#6366f1,#4338ca);color:#fff;display:grid;place-items:center;box-shadow:0 10px 26px -8px #4338caa6,0 2px 8px #0206171f;transition:transform .16s ease,box-shadow .16s ease,background .16s ease}.fab:hover{transform:translateY(-2px) scale(1.04);box-shadow:0 16px 34px -8px #4338cab3,0 3px 10px #02061724}.fab:active{transform:translateY(0) scale(.97)}.fab:before{content:"";position:absolute;top:-5px;right:-5px;bottom:-5px;left:-5px;border-radius:50%;background:conic-gradient(from 0deg,#818cf8,#c084fc,#38bdf8,#34d399,#818cf8);filter:blur(7px);z-index:-1;animation:fabAura 4.5s linear infinite,fabBreath 3s ease-in-out infinite}@keyframes fabAura{to{transform:rotate(360deg)}}@keyframes fabBreath{0%,to{opacity:.5}50%{opacity:.95}}.fab>svg{animation:botPulse 3.2s ease-in-out infinite}@keyframes botPulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.07);opacity:.92}}.fab.open{background:#0f172a;box-shadow:0 10px 26px -10px #0206178c}.fab.open:before{display:none}.fab.open>svg{animation:none}.fab{touch-action:none;cursor:grab}.fab.dragging{cursor:grabbing;transition:none;transform:scale(1.06)}@media (prefers-reduced-motion: reduce){.fab:before,.fab>svg{animation:none}}.fab-panel{position:fixed;right:24px;bottom:94px;z-index:60;width:min(430px,calc(100vw - 48px));height:min(620px,calc(100vh - 140px));background:var(--panel);border:1px solid var(--line);border-radius:20px;box-shadow:0 30px 80px -18px #02061766,0 8px 24px -12px #0206172e;display:flex;flex-direction:column;overflow:hidden;transform-origin:100% 100%;animation:fabPanelIn var(--dur-panel) var(--ease-spring) both}@keyframes fabPanelIn{0%{opacity:0;transform:translateY(12px) scale(.9)}55%{opacity:1}to{opacity:1;transform:translateY(0) scale(1)}}.fab-panel.below{transform-origin:100% 0;animation-name:fabPanelInBelow}.fab-panel.from-left{transform-origin:0 100%}.fab-panel.below.from-left{transform-origin:0 0}.fab-panel.closing{animation:fabPanelOut .2s var(--ease-in) both;pointer-events:none}@keyframes fabPanelOut{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(8px) scale(.94)}}.fab-panel.below.closing{animation-name:fabPanelOutBelow}@keyframes fabPanelOutBelow{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-8px) scale(.94)}}@media (max-width: 520px),(max-height: 440px){.fab-panel{left:12px!important;right:12px!important;bottom:12px!important;top:auto!important;width:auto!important;height:auto!important;max-height:calc(100dvh - 24px)!important}}@keyframes fabPanelInBelow{0%{opacity:0;transform:translateY(-14px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@media (max-width: 520px),(max-height: 440px){.fab-panel.closing{animation:sheetOut .22s var(--ease-in) both!important}@keyframes sheetOut{to{opacity:0;transform:translateY(100%)}}}@media (prefers-reduced-motion: reduce){.fab-panel,.fab-panel.closing,.fab-panel-hd:after,.chat-row,.chat-row.me,.chat-row.ai .chat-bubble.ai:after,.chat-chip,.chat-confirm,.chat-send.sent svg,.chat-typing span{animation:none!important}}.fab-panel-hd{display:flex;align-items:center;gap:11px;padding:14px 16px;background:linear-gradient(135deg,#6366f1,#4338ca);color:#fff;position:relative;overflow:hidden}.fab-panel-hd:after{content:"";position:absolute;left:0;right:0;top:0;height:2px;pointer-events:none;background:linear-gradient(90deg,transparent,rgba(255,255,255,.85),transparent);transform:translateY(-2px);animation:botScan .85s var(--ease-out) .16s 1}@keyframes botScan{0%{transform:translateY(-2px);opacity:0}25%{opacity:1}to{transform:translateY(62px);opacity:0}}.fab-hd-mark{width:34px;height:34px;border-radius:10px;flex:0 0 auto;background:#ffffff29;display:grid;place-items:center}.fab-hd-txt{min-width:0;flex:1}.fab-panel-title{font-weight:700;font-size:14.5px;letter-spacing:-.01em;line-height:1.2}.fab-panel-sub{font-size:11.5px;color:#ffffffc7;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fab-close{flex:0 0 auto;width:30px;height:30px;border-radius:9px;border:0;background:#ffffff24;color:#fff;cursor:pointer;display:grid;place-items:center;transition:.13s}.fab-close:hover{background:#ffffff42}.fab-panel-body{flex:1;min-height:0}.chat{display:flex;flex-direction:column;height:100%;min-height:0}.chat-scroll{flex:1;overflow-y:auto;padding:18px 16px;display:flex;flex-direction:column;gap:14px;background:var(--bg)}.chat-row{display:flex;gap:9px;align-items:flex-end;animation:chatIn var(--dur-msg) var(--ease-out) both}.chat-row.me{justify-content:flex-end;animation-name:msgSend}.chat-row.me .chat-bubble{transform-origin:100% 100%}@keyframes chatIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes msgSend{0%{opacity:0;transform:translateY(10px) scale(.96)}to{opacity:1;transform:none}}.chat-ava{width:26px;height:26px;border-radius:50%;flex:0 0 auto;background:linear-gradient(135deg,#6366f1,#4338ca);color:#fff;display:grid;place-items:center;box-shadow:0 4px 10px -4px #4338ca80}.chat-col{display:flex;flex-direction:column;align-items:flex-start;max-width:82%;min-width:0}.chat-row.me .chat-col{align-items:flex-end}.chat-bubble{padding:10px 14px;font-size:13.5px;line-height:1.65;white-space:pre-wrap;word-break:break-word}.chat-bubble.ai{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:14px 14px 14px 5px;box-shadow:0 1px 2px #0206170a;position:relative;overflow:hidden}.chat-row.ai .chat-bubble.ai:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:linear-gradient(100deg,transparent 30%,rgba(99,102,241,.12) 50%,transparent 70%);transform:translate(-120%);animation:aiSheen .85s var(--ease-out) .12s}@keyframes aiSheen{to{transform:translate(120%)}}.chat-bubble.me{background:linear-gradient(135deg,#6366f1,#4f46e5);color:#fff;border-radius:14px 14px 5px;box-shadow:0 6px 14px -8px #4f46e58c}.chat-chip{margin-top:6px;display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:8px;font-size:11.5px;font-weight:600;animation:chipIn .3s var(--ease-out) both}.chat-chip.ok{background:var(--ok-soft);color:#15803d}.chat-chip.warn{background:var(--warn-soft);color:#b45309}.chat-chip.pending{background:var(--sky-soft);color:#0369a1}@keyframes chipIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.chat-steps{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}.chat-steps .chat-chip{margin-top:4px}.chat-confirm{margin-top:8px;padding:10px 12px;border-radius:12px;border:1px solid rgba(180,83,9,.25);background:var(--warn-soft);animation:confirmIn var(--dur-msg) var(--ease-spring) both}@keyframes confirmIn{0%{opacity:0;transform:translateY(-6px) scale(.98)}to{opacity:1;transform:none}}.chat-confirm-hd{font-size:12px;font-weight:700;color:#b45309}.chat-typing{display:inline-flex;gap:4px;padding:12px 14px;width:max-content;margin-left:35px;background:var(--panel);border:1px solid var(--line);border-radius:14px 14px 14px 5px}.chat-typing span{width:6px;height:6px;border-radius:50%;background:var(--muted);animation:chatTyping 1.1s infinite ease-in-out}.chat-typing span:nth-child(2){animation-delay:.15s}.chat-typing span:nth-child(3){animation-delay:.3s}@keyframes chatTyping{0%,60%,to{opacity:.35;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}.chat-empty{margin:auto;text-align:center;max-width:310px;padding:10px}.chat-empty-mark{width:52px;height:52px;border-radius:16px;margin:0 auto 12px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center}.chat-empty-hi{font-size:15px;font-weight:700;letter-spacing:-.01em}.chat-empty p{font-size:12.5px;color:var(--muted);line-height:1.6;margin:6px 0 0}.chat-examples{display:flex;flex-wrap:wrap;gap:7px;justify-content:center;margin-top:14px}.chat-examples button{border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:999px;padding:6px 12px;font-size:12px;font-family:inherit;cursor:pointer;transition:.13s}.chat-examples button:hover{border-color:var(--brand);color:var(--brand);background:var(--brand-soft)}.chat-input-row{display:flex;gap:9px;align-items:flex-end;padding:12px 14px;border-top:1px solid var(--line);background:var(--panel)}.chat-input{flex:1;padding:10px 14px;border:1px solid var(--line);border-radius:13px;font-size:13.5px;font-family:inherit;line-height:1.5;background:var(--bg);color:var(--ink);resize:none;max-height:120px;transition:border-color .13s,box-shadow .13s,background .13s}.chat-input:focus{outline:0;border-color:var(--brand);background:var(--panel);box-shadow:0 0 0 3px var(--brand-soft)}.chat-send{flex:0 0 auto;width:40px;height:40px;border-radius:12px;border:0;cursor:pointer;background:var(--brand);color:#fff;display:grid;place-items:center;transition:transform .14s var(--ease-out),background .13s,box-shadow .13s;box-shadow:0 6px 14px -8px #4f46e599}.chat-send:hover:not(:disabled){background:var(--brand-d);transform:translateY(-1px)}.chat-send:active:not(:disabled){transform:scale(.88)}.chat-send:disabled{opacity:.45;cursor:default;box-shadow:none}.chat-send.sent svg{animation:sendLaunch .32s var(--ease-out)}.chat-send.sent:disabled{opacity:1}@keyframes sendLaunch{0%{transform:translate(0) scale(1);opacity:1}45%{transform:translate(7px,-7px) scale(.85);opacity:0}46%{transform:translate(-6px,6px) scale(.85);opacity:0}to{transform:translate(0) scale(1);opacity:1}}.content{padding:24px 26px 60px;display:flex;flex-direction:column;gap:18px}.login-wrap{display:grid;place-items:center;min-height:100dvh;padding:20px;background:radial-gradient(1200px 600px at 50% -10%,#1e293b,#0b1220)}.login-card{width:min(360px,100%);background:var(--panel);border-radius:18px;padding:30px 28px;box-shadow:var(--shadow-lg)}.login-card h1{margin:12px 0 3px;font-size:19px;letter-spacing:-.02em}.fld{display:block;margin-top:14px}.fld span{display:block;font-size:12px;font-weight:600;color:var(--muted);margin-bottom:5px}.fld input{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-sm);font-size:14px;font-family:inherit;background:#fff;color:var(--ink)}.fld input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.login-err{color:var(--err);font-size:12.5px;margin-top:12px;min-height:16px;font-weight:500}.btn.sm{padding:5px 10px;font-size:12.5px;border-radius:8px}.btn.ghost{background:transparent;border-color:transparent;color:var(--muted)}.btn.ghost:hover:not(:disabled){background:var(--line2);color:var(--ink);border-color:transparent}.btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--brand-soft);border-color:var(--brand)}.spinner{width:12px;height:12px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:spin .6s linear infinite;opacity:.7}@keyframes spin{to{transform:rotate(360deg)}}.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:999px;font-size:11.5px;font-weight:700;letter-spacing:.01em;white-space:nowrap}.badge.neutral{background:var(--line2);color:var(--muted)}.badge.ok{background:var(--ok-soft);color:#15803d}.badge.warn{background:var(--warn-soft);color:#b45309}.badge.err{background:var(--err-soft);color:#b91c1c}.badge.info{background:var(--sky-soft);color:#0369a1}.badge.brand{background:var(--brand-soft);color:var(--brand-d)}.card-actions{display:flex;gap:8px;align-items:center;flex:0 0 auto;flex-wrap:wrap;justify-content:flex-end}.section{display:flex;flex-direction:column;gap:14px}.section-hd{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap}.section-hd h2{margin:0;font-size:16px;font-weight:700;letter-spacing:-.015em}.section-hd .sub{font-size:12.5px;color:var(--muted);margin-top:2px}.grid{display:grid;grid-template-columns:repeat(var(--cols, 3),minmax(0,1fr));gap:14px}@media (max-width: 1100px){.grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 720px){.grid{grid-template-columns:1fr}}.stat{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;box-shadow:var(--shadow);min-width:0}.stat-l{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700}.stat-v{font-size:26px;font-weight:800;margin-top:5px;letter-spacing:-.025em;line-height:1.1;font-variant-numeric:tabular-nums}.stat-h{font-size:12px;color:var(--muted);margin-top:5px;font-weight:500}.t-ok{color:var(--ok)}.t-warn{color:var(--warn)}.t-err{color:var(--err)}.t-info{color:var(--sky)}.t-brand{color:var(--brand)}.t-neutral{color:var(--ink)}.progress{height:6px;background:var(--line2);border-radius:99px;overflow:hidden}.progress-bar{height:100%;border-radius:99px;transition:width .35s cubic-bezier(.2,.7,.3,1)}.progress-bar.t-brand{background:var(--brand)}.progress-bar.t-ok{background:var(--ok)}.progress-bar.t-warn{background:var(--warn)}.progress-bar.t-err{background:var(--err)}.progress-bar.t-info{background:var(--sky)}.avatar{display:inline-grid;place-items:center;border-radius:10px;color:#fff;font-weight:800;flex:0 0 auto;letter-spacing:.02em}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:13.5px}.table th{text-align:left;padding:10px 16px;font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700;border-bottom:1px solid var(--line);background:#fbfcfe;white-space:nowrap}.table td{padding:12px 16px;border-bottom:1px solid var(--line2)}.table tbody tr:last-child td{border-bottom:0}.table th.n,.table td.n{text-align:right;font-variant-numeric:tabular-nums}.table tbody tr.clickable{cursor:pointer}.table tbody tr.clickable:hover{background:#fafbfe}.tabs{display:flex;gap:3px;border-bottom:1px solid var(--line);padding:0 2px;overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tabs button{flex:0 0 auto;white-space:nowrap;display:inline-flex;align-items:center;gap:7px;padding:11px 14px;border:0;background:none;cursor:pointer;font-family:inherit;font-size:13.5px;font-weight:600;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px;transition:.13s}.tabs button:hover{color:var(--ink)}.tabs button.on{color:var(--brand);border-bottom-color:var(--brand)}.tab-badge{min-width:18px;height:18px;padding:0 5px;border-radius:99px;background:var(--brand-soft);color:var(--brand-d);font-size:11px;font-weight:800;display:inline-grid;place-items:center}.tabs button.on .tab-badge{background:var(--brand);color:#fff}.tabpanel{padding-top:20px;display:flex;flex-direction:column;gap:18px}.skel{background:linear-gradient(90deg,var(--line2) 25%,#f6f8fb 37%,var(--line2) 63%);background-size:400% 100%;animation:shimmer 1.4s ease-in-out infinite}@keyframes shimmer{0%{background-position:100% 0}to{background-position:0 0}}.state{padding:46px 24px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center}.state-icon{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:var(--line2);color:var(--muted);margin-bottom:14px;font-weight:800;font-size:18px}.state-icon.err{background:var(--err-soft);color:var(--err)}.state-icon.warn{background:var(--warn-soft);color:var(--warn)}.state-title{font-size:15px;font-weight:700;letter-spacing:-.01em}.state-msg{font-size:13px;color:var(--muted);margin-top:6px;max-width:460px;line-height:1.6}.ov-alert{display:flex;gap:11px;align-items:flex-start;padding:12px 16px;border-radius:12px;background:var(--warn-soft);border:1px solid rgba(180,83,9,.25);color:#92400e;font-size:13px;line-height:1.55}.ov-alert svg{flex:0 0 auto;margin-top:2px;color:#b45309}.ov-alert a{color:#92400e;font-weight:700}.ov-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px}.ov-kpi{display:flex;align-items:center;gap:13px;padding:15px 17px}.ov-kpi-ic{width:38px;height:38px;border-radius:11px;flex:0 0 auto;display:grid;place-items:center;background:var(--brand-soft);color:var(--brand)}.ov-kpi-lbl{font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:700;white-space:nowrap}.ov-kpi-val{font-size:23px;font-weight:800;letter-spacing:-.02em;line-height:1.2}.ov-kpi-hint{font-size:11px;color:var(--faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ov-main{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:18px;align-items:start}@media (max-width: 1180px){.ov-main{grid-template-columns:minmax(0,1fr)}}.ov-side{display:flex;flex-direction:column;gap:18px;min-width:0}.ov-emp{display:flex;align-items:center;gap:10px;min-width:0}.ov-emp-n{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ov-emp-s{font-size:11px;color:var(--faint)}.ov-score{display:inline-flex;flex-direction:column;align-items:flex-end;gap:4px;min-width:64px}.ov-score>span{font-weight:800;font-variant-numeric:tabular-nums}.ov-bar{width:64px;height:4px;border-radius:99px;background:var(--line2);overflow:hidden}.ov-bar>i{display:block;height:100%;border-radius:99px}.ov-frac{color:var(--faint);font-size:11px}.ov-open{display:inline-flex;align-items:center;gap:5px;color:var(--brand);font-weight:600;font-size:12.5px;text-decoration:none}.ov-open:hover{text-decoration:underline}.ov-conns{display:flex;flex-direction:column;gap:10px}.ov-conn{display:flex;align-items:center;gap:9px;min-width:0;font-size:13px}.ov-conn-lbl{font-weight:600;flex:0 0 auto}.ov-conn-detail{margin-left:auto;color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:60%}.ov-dot{width:8px;height:8px;border-radius:50%;flex:0 0 auto}.ov-dot.ok{background:#22c55e;box-shadow:0 0 0 3px var(--ok-soft)}.ov-dot.warn{background:#f59e0b;box-shadow:0 0 0 3px var(--warn-soft)}.ov-hls{display:flex;flex-direction:column;gap:12px}.ov-hl{display:flex;align-items:center;gap:10px;min-width:0}.ov-hl-k{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700;white-space:nowrap}.ov-hl-n{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ov-hl-v{margin-left:auto;font-size:12px;font-weight:700;white-space:nowrap}.ov-months{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.ov-month{font-size:11.5px;font-weight:600;padding:3px 9px;border-radius:999px;background:var(--line2);color:var(--muted);font-variant-numeric:tabular-nums}.ov-files{display:flex;flex-direction:column;gap:7px}.ov-file{display:flex;justify-content:space-between;gap:10px;min-width:0;font-size:12.5px}.ov-file>span:first-child{color:var(--muted)}.ov-file>span:last-child{font-weight:600;font-variant-numeric:tabular-nums;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side-foot{margin-top:auto;padding-top:16px;border-top:1px solid var(--side-line)}.side-user{display:flex;align-items:center;gap:10px;padding:4px 6px 12px;min-width:0}.side-user-nm{font-size:13px;font-weight:600;color:#e2e8f0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.side-user-rl{font-size:11px;color:#64748b}.side-out{display:flex;align-items:center;gap:9px;width:100%;padding:9px 11px;border-radius:10px;border:0;background:none;color:var(--side-ink);font-family:inherit;font-size:13px;font-weight:500;cursor:pointer;transition:.13s}.side-out:hover{background:#ef44441f;color:#fca5a5}.progress-bar{min-width:2px}.stepper{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}@media (max-width: 900px){.stepper{grid-template-columns:1fr 1fr}}@media (max-width: 480px){.stepper{grid-template-columns:1fr}}.step{display:flex;align-items:flex-start;gap:11px;text-align:left;padding:14px 15px;border-radius:var(--r);border:1px solid var(--line);background:var(--panel);cursor:pointer;font-family:inherit;transition:.14s;box-shadow:var(--shadow);min-width:0}.step:hover:not(.blocked){border-color:var(--faint)}.step.cur{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft),var(--shadow)}.step.blocked{opacity:.62;cursor:pointer;background:#fbfcfe}.step-n{width:24px;height:24px;border-radius:8px;flex:0 0 auto;display:grid;place-items:center;background:var(--line2);color:var(--muted);font-size:12px;font-weight:800}.step.cur .step-n{background:var(--brand);color:#fff}.step.done .step-n{background:var(--ok-soft);color:var(--ok)}.step-t{min-width:0}.step-title{display:block;font-weight:700;font-size:13.5px;letter-spacing:-.01em}.step-blurb{display:block;font-size:11.5px;color:var(--muted);margin-top:2px;line-height:1.45}.period{display:flex;align-items:center;gap:13px;width:100%;padding:13px 15px;border-radius:var(--r-sm);border:1px solid var(--line);background:var(--panel);cursor:pointer;font-family:inherit;transition:.13s}.period:hover{border-color:var(--faint)}.period.on{border-color:var(--brand);background:var(--brand-soft);cursor:default}.period-radio{width:16px;height:16px;border-radius:50%;flex:0 0 auto;border:2px solid var(--line);background:#fff}.period.on .period-radio{border-color:var(--brand);border-width:5px}.who-strip{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}.who{display:flex;align-items:center;gap:8px;flex:0 0 auto;padding:7px 12px 7px 8px;border-radius:999px;border:1px solid var(--line);background:var(--panel);cursor:pointer;font-family:inherit;transition:.13s;position:relative}.who:hover{border-color:var(--faint)}.who.on{border-color:var(--brand);background:var(--brand-soft)}.who-nm{font-size:13px;font-weight:600;white-space:nowrap}.who-sc{font-size:12px;font-weight:800;color:var(--muted);font-variant-numeric:tabular-nums}.who.on .who-sc{color:var(--brand-d)}.who-warn{width:15px;height:15px;border-radius:50%;background:var(--warn);color:#fff;font-size:10px;font-weight:800;display:grid;place-items:center}.score-table td{vertical-align:middle}.cell{width:62px;padding:6px 8px;text-align:right;border:1px solid var(--line);border-radius:8px;font-size:13px;font-family:inherit;font-variant-numeric:tabular-nums;background:#fff;color:var(--ink)}.cell:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.cell:disabled{background:#f8fafc;color:var(--muted)}.cell.overridden{border-color:var(--brand);background:var(--brand-soft);font-weight:700}.revert{border:0;background:none;cursor:pointer;color:var(--muted);font-size:13px;padding:2px 3px;border-radius:6px;line-height:1}.revert:hover{background:var(--line2);color:var(--ink)}.score-table tr.tot td{background:#f8fafc;font-weight:700}.cell.ai-default{border-style:dashed;border-color:var(--warn);color:#92400e}.ai-fill{border:1px solid var(--warn-soft);background:var(--warn-soft);color:#92400e;font-size:11px;font-weight:700;cursor:pointer;padding:2px 7px;border-radius:7px;line-height:1.4;white-space:nowrap}.ai-fill:hover:not(:disabled){background:#fde68a}.ai-fill:disabled{opacity:.45;cursor:not-allowed}.ai-note{margin-top:5px;font-size:12px;line-height:1.5;color:#92400e;background:var(--warn-soft);border-radius:8px;padding:6px 9px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-width:460px}.ai-rationale{margin-top:14px;padding:11px 14px;border-radius:10px;background:var(--brand-soft);color:var(--brand-d);font-size:12.5px;line-height:1.6}.ai-rationale-tag{font-weight:800;margin-right:7px;white-space:nowrap}.warn-box{padding:12px 15px;border-radius:10px;background:var(--warn-soft);color:#92400e;font-size:13px;line-height:1.6}.chip{display:inline-flex;align-items:center;padding:3px 9px;border-radius:7px;background:var(--line2);color:var(--muted);font-size:11.5px;font-weight:600;white-space:nowrap}.sel{padding:9px 12px;border:1px solid var(--line);border-radius:var(--r-sm);font-size:13.5px;font-family:inherit;background:#fff;color:var(--ink);min-width:150px}.sel:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.step-check{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:var(--r-sm);border:1px solid var(--line);cursor:pointer;transition:.12s}.step-check:hover{border-color:var(--faint);background:#fafbfe}.step-check input{width:16px;height:16px;accent-color:var(--brand);flex:0 0 auto}.console{max-height:440px;overflow:auto;padding:14px 18px;background:#0b1220;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;line-height:1.65;border-radius:0 0 var(--r) var(--r)}.console-idle{color:#64748b;font-style:italic}.console-line{white-space:pre-wrap;word-break:break-word}.console-line.ok{color:#4ade80;font-weight:600}.console-line.err{color:#f87171;font-weight:600}.console-line.warn{color:#fbbf24}.console-line.step{color:#818cf8;font-weight:700;margin-top:6px}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#0f172a8c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:grid;place-items:center;padding:24px;overflow-y:auto;animation:fade-in .14s ease-out}.modal{background:var(--panel);border-radius:16px;padding:24px 26px;box-shadow:var(--shadow-lg);max-width:520px;width:100%;max-height:calc(100dvh - 48px);overflow-y:auto;overflow-wrap:anywhere;animation:modal-in .16s cubic-bezier(.2,.8,.3,1)}@media (max-width: 600px){.modal-back{padding:12px}.modal{padding:20px 18px;max-height:calc(100dvh - 24px)}}@keyframes fade-in{0%{opacity:0}}@keyframes modal-in{0%{opacity:0;transform:translateY(8px) scale(.98)}}.fld-inline{flex:1;min-width:0;padding:8px 12px;border:1px solid var(--line);border-radius:var(--r-sm);font-size:13.5px;font-family:inherit;background:#fff;color:var(--ink)}.fld-inline:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.pt{width:38px;height:38px;border-radius:10px;border:1px solid var(--line);background:#fff;color:var(--muted);font-family:inherit;font-size:14px;font-weight:700;cursor:pointer;transition:.12s}.pt:hover:not(:disabled){border-color:var(--brand);color:var(--brand)}.pt.on{background:var(--brand);border-color:var(--brand);color:#fff}.pt:disabled{opacity:.5;cursor:not-allowed}.table.attend th.attend-mh{text-align:center;border-left:1px solid var(--line);vertical-align:top;padding-bottom:10px}.table.attend th.sub{font-size:10px;padding:6px 10px;background:#f6f8fb}.table.attend td.n{padding:6px 10px}.numcell{position:relative;display:inline-block}.numcell input{width:74px;padding:6px 9px;text-align:right;border:1px solid var(--line);border-radius:8px;font-family:inherit;font-size:13px;font-variant-numeric:tabular-nums;background:#fff;color:var(--ink);transition:.12s}.numcell input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.numcell input:disabled{background:#f6f8fb;color:var(--faint);cursor:not-allowed}.numcell.saved input{border-color:var(--ok)}.numcell.error input{border-color:var(--err);background:var(--err-soft)}.numcell-dot{position:absolute;right:-14px;top:50%;transform:translateY(-50%);font-size:11px;font-weight:800}.numcell-dot.saved{color:var(--ok)}.numcell-dot.error{color:var(--err)}.numcell-dot.saving{width:8px;height:8px;border-radius:50%;background:var(--brand);animation:pulse .8s ease-in-out infinite}@keyframes pulse{50%{opacity:.3}}.bell-wrap{position:relative}.bell{position:relative;width:38px;height:38px;border-radius:10px;border:1px solid var(--line);background:var(--panel);color:var(--muted);display:grid;place-items:center;cursor:pointer;transition:.13s}.bell:hover{color:var(--ink);border-color:var(--faint)}.bell-dot{position:absolute;top:-5px;right:-5px;min-width:18px;height:18px;padding:0 4px;border-radius:99px;background:var(--err);color:#fff;font-size:10.5px;font-weight:800;display:grid;place-items:center;border:2px solid var(--panel)}.bell-panel{position:absolute;right:0;top:46px;width:min(360px,calc(100vw - 32px));z-index:60;background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-lg);overflow:hidden;animation:modal-in .14s cubic-bezier(.2,.8,.3,1)}.bell-hd{padding:13px 16px;border-bottom:1px solid var(--line2);font-weight:700;font-size:13.5px}.bell-empty{padding:28px 20px;text-align:center;color:var(--muted);font-size:12.5px;line-height:1.6}.bell-list{max-height:400px;overflow:auto}.bell-item{display:block;width:100%;text-align:left;cursor:pointer;padding:12px 16px 12px 20px;border:0;border-bottom:1px solid var(--line2);background:none;font-family:inherit;position:relative;transition:.1s}.bell-item:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--faint)}.bell-item.success:before{background:var(--ok)}.bell-item.warn:before{background:var(--warn)}.bell-item.error:before{background:var(--err)}.bell-item.info:before{background:var(--sky)}.bell-item:hover{background:#fafbfe}.bell-item:last-child{border-bottom:0}.bell-item-t{font-weight:700;font-size:13px}.bell-item-b{font-size:12.5px;color:var(--muted);margin-top:2px;line-height:1.5}.bell-item-a{font-size:11px;color:var(--faint);margin-top:4px}.file-drop{display:block;padding:14px 16px;border:1.5px dashed var(--line);border-radius:10px;text-align:center;cursor:pointer;color:var(--muted);font-size:13px;font-weight:600;transition:.13s;background:#fafbfe}.file-drop:hover{border-color:var(--brand);color:var(--brand);background:var(--brand-soft)}.crit-row{display:flex;gap:8px;align-items:center}.crit-card{display:flex;flex-direction:column;gap:7px;padding:10px 11px;border:1px solid var(--line2);border-radius:11px;background:#fff}.crit-card:hover{border-color:var(--line)}.crit-main{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.crit-meta{display:flex;gap:8px;flex-wrap:wrap}.wsum{font-size:11px;font-weight:800;padding:2px 8px;border-radius:99px;background:var(--warn-soft);color:#b45309;white-space:nowrap}.wsum.ok{background:var(--ok-soft);color:#15803d}.dept-block{padding:14px;border:1px solid var(--line);border-radius:12px;background:#fbfcfe}.tiny-hd{font-size:11px;font-weight:800;letter-spacing:.04em;color:var(--muted);margin-bottom:8px}@media (max-width: 720px){.crit-row{flex-wrap:wrap}}.att-clip{border:0;background:none;cursor:pointer;font-size:12px;padding:2px 3px;border-radius:6px;opacity:.35;transition:.12s;line-height:1}.att-clip:hover:not(:disabled){opacity:1;background:var(--line2)}.att-clip.on{opacity:1}.att-clip.x{color:var(--err)}.att-clip:disabled{opacity:.2;cursor:wait}.att-fileline{display:inline-flex;align-items:center;gap:6px;font-size:12px}.att-fileline a{color:var(--brand-d);text-decoration:none;font-weight:600;max-width:140px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.att-fileline a:hover{text-decoration:underline}.att-fileadd{border:1px dashed var(--line2);background:none;cursor:pointer;color:var(--muted);font-size:12px;font-weight:600;padding:3px 9px;border-radius:7px;transition:.12s}.att-fileadd:hover{border-color:var(--brand);color:var(--brand-d);background:var(--brand-soft)}.pctbar{display:inline-flex;align-items:center;gap:7px;font-variant-numeric:tabular-nums}.pctbar b{font-size:12.5px;min-width:38px;text-align:right}.pctbar-track{width:54px;height:5px;border-radius:999px;background:var(--line2);overflow:hidden}.pctbar-fill{display:block;height:100%;border-radius:999px}.month-filter{padding:7px 11px;border:1px solid var(--line);border-radius:9px;font-size:13px;font-family:inherit;font-weight:600;background:#fff;color:var(--ink);cursor:pointer}.month-filter:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.scope-opt,.cap-opt{display:flex;align-items:flex-start;gap:10px;padding:9px 11px;border:1px solid var(--line);border-radius:10px;cursor:pointer;transition:.12s}.scope-opt:hover,.cap-opt:hover{border-color:var(--faint);background:#fafbfe}.scope-opt.on{border-color:var(--brand);background:var(--brand-soft)}.scope-opt input,.cap-opt input{width:auto;margin-top:2px;accent-color:var(--brand);flex:0 0 auto}.cap-opt.danger{border-color:var(--err-soft);background:#fff8f8}.cap-opt .badge{margin-left:7px}.perm-mod{border:1px solid var(--line);border-radius:12px;padding:10px 11px;background:#fbfcfe}.perm-mod-hd{display:flex;align-items:center;gap:8px;margin-bottom:8px}.perm-mod-name{font-size:12.5px;font-weight:800;letter-spacing:.01em}.perm-all{border:1px solid var(--line);background:#fff;cursor:pointer;color:var(--brand-d);font-size:11px;font-weight:700;padding:3px 9px;border-radius:7px;transition:.12s}.perm-all:hover{border-color:var(--brand);background:var(--brand-soft)}.perm-mod .cap-opt{background:#fff}.perm-mod .cap-opt:hover{background:#fafbfe}.monthly-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:16px}.monthly-title{font-size:20px;font-weight:800;letter-spacing:-.02em}.monthly-sub{font-size:13px;color:var(--muted);margin-top:3px;max-width:640px;line-height:1.5}.monthly-split{display:grid;grid-template-columns:288px minmax(0,1fr);gap:18px;align-items:start}@media (max-width: 900px){.monthly-split{grid-template-columns:1fr}.monthly-rail{position:static}}.monthly-rail{position:sticky;top:8px}.month-rail{display:flex;flex-direction:column;gap:6px;max-height:calc(100vh - 150px);overflow-y:auto;padding-right:2px}@media (max-width: 900px){.month-rail{max-height:300px}}.month-row{text-align:left;border:1px solid var(--line);background:#fff;border-radius:12px;padding:11px 13px;cursor:pointer;transition:.12s;display:flex;flex-direction:column;gap:5px}.month-row:hover{border-color:var(--faint);background:#fafbfe}.month-row.on{border-color:var(--brand);background:var(--brand-soft);box-shadow:0 0 0 1px var(--brand) inset}.month-row-top{display:flex;align-items:center;gap:8px}.month-row-name{font-size:13.5px;font-weight:700;letter-spacing:-.01em}.month-row-now{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--brand-d);background:var(--brand-soft);padding:1px 6px;border-radius:99px}.month-row-meta{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--muted)}.month-dot{width:7px;height:7px;border-radius:99px;background:var(--line2);flex:0 0 auto}.month-dot.draft{background:var(--warn)}.month-dot.approved{background:var(--ok)}.month-detail{display:flex;flex-direction:column;gap:14px}.month-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}.month-head-title{font-size:18px;font-weight:800;letter-spacing:-.02em}.month-head-meta{font-size:12px;color:var(--muted);margin-top:3px}.month-tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none}.month-tabs::-webkit-scrollbar{display:none}.month-tab{flex:0 0 auto;white-space:nowrap;border:0;background:none;cursor:pointer;font-family:inherit;font-size:13.5px;font-weight:600;color:var(--muted);padding:9px 14px;border-bottom:2px solid transparent;margin-bottom:-1px;transition:.12s}.month-tab:hover{color:var(--ink)}.month-tab.on{color:var(--brand-d);border-bottom-color:var(--brand)}.month-panel{display:flex;flex-direction:column;gap:14px}.src-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px;margin-top:8px}.src-card{text-align:left;border:1.5px solid var(--line);background:#fff;border-radius:12px;padding:13px 14px;cursor:pointer;transition:.12s;display:flex;flex-direction:column;gap:5px}.src-card:hover:not(:disabled){border-color:var(--faint)}.src-card.on{border-color:var(--brand);background:var(--brand-soft)}.src-card:disabled{opacity:.55;cursor:not-allowed}.src-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.src-name{font-size:14px;font-weight:700}.src-tick{color:var(--brand-d);font-weight:800}.src-blurb{font-size:12px;color:var(--muted);line-height:1.45}.run-split{display:grid;grid-template-columns:290px minmax(0,1fr);gap:16px;align-items:start}@media (max-width: 820px){.run-split{grid-template-columns:1fr}}.run-steps{padding:2px}.stepv-list{display:flex;flex-direction:column}.stepv{display:flex;gap:12px}.stepv-rail{display:flex;flex-direction:column;align-items:center}.stepv-node{width:26px;height:26px;border-radius:99px;display:grid;place-items:center;flex:0 0 auto;font-size:12px;font-weight:800;border:2px solid var(--line);background:#fff;color:var(--muted);z-index:1}.stepv-line{width:2px;flex:1;min-height:20px;background:var(--line);margin:2px 0}.stepv-body{padding-bottom:18px;padding-top:2px}.stepv-title{font-size:13.5px;font-weight:700;display:flex;align-items:center;gap:7px}.stepv-detail{font-size:12px;color:var(--muted);margin-top:2px}.stepv-ext{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);background:var(--line2);padding:1px 6px;border-radius:99px}.stepv.done .stepv-node{border-color:var(--ok);background:var(--ok);color:#fff}.stepv.done .stepv-line{background:var(--ok)}.stepv.running .stepv-node{border-color:var(--brand);color:var(--brand-d)}.stepv.running .stepv-title{color:var(--brand-d)}.stepv.failed .stepv-node{border-color:var(--err);background:var(--err);color:#fff}.stepv.failed .stepv-detail{color:var(--err);font-weight:600}.stepv.skipped .stepv-node,.stepv.skipped .stepv-title,.stepv.pending .stepv-node{opacity:.55}.stepv-spin{width:12px;height:12px;border-radius:99px;border:2px solid var(--brand-soft);border-top-color:var(--brand);animation:stepv-spin .7s linear infinite}@keyframes stepv-spin{to{transform:rotate(360deg)}}.emp-toggle{display:flex;align-items:flex-start;gap:10px;padding:9px 11px;border:1px solid var(--line);border-radius:10px;cursor:pointer;transition:.12s}.emp-toggle:hover{border-color:var(--faint);background:#fafbfe}.emp-toggle.on{border-color:var(--brand);background:var(--brand-soft)}.emp-toggle input{width:auto;margin-top:2px;accent-color:var(--brand);flex:0 0 auto}.badge,.avatar{box-shadow:none}.pw-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);border:0;background:none;cursor:pointer;font-size:14px;line-height:1;padding:4px;opacity:.7}.pw-eye:hover{opacity:1}.emp-report{border:1px solid var(--line2);border-radius:10px;padding:11px 12px;background:#fbfcfe}.gbtn{display:flex;justify-content:center;margin-top:4px;min-height:40px}.login-or{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:11.5px;margin:4px 0 -2px}.login-or:before,.login-or:after{content:"";flex:1;height:1px;background:var(--line)}.set-focusable:focus-visible{box-shadow:0 0 0 3px var(--brand-soft);outline:none}.set-nav{flex:0 0 auto;position:sticky;top:74px;align-self:flex-start;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:8px;display:flex;flex-direction:column;gap:2px;width:236px}.set-nav-lbl{font-size:10.5px;font-weight:700;color:var(--faint);text-transform:uppercase;letter-spacing:.06em;padding:8px 11px 6px}.set-nav-item{position:relative;display:flex;align-items:center;gap:10px;text-align:left;border:none;border-radius:var(--r-sm);padding:9px 11px;font-size:13px;font-weight:700;cursor:pointer;background:transparent;color:var(--muted);font-family:inherit;transition:background .16s ease,color .16s ease,transform .13s cubic-bezier(.2,.8,.2,1)}.set-nav-item:hover{filter:brightness(.985);background:var(--line2)}.set-nav-item:active{transform:scale(.955)}.set-nav-item.on{background:var(--brand-soft);color:var(--brand-d)}.set-nav-item.on:hover{background:var(--brand-soft)}.set-nav-ico{width:18px;text-align:center;font-size:13px;flex-shrink:0;opacity:.85}.set-nav-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.set-nav-tip{position:absolute;left:calc(100% + 12px);top:50%;transform:translateY(-50%);width:210px;background:var(--overlay);color:var(--overlay-fg);padding:9px 11px;border-radius:9px;box-shadow:var(--shadow-lg);z-index:30;text-align:left;pointer-events:none;animation:setTipIn .15s cubic-bezier(.2,.8,.2,1)}@keyframes setTipIn{0%{opacity:0;transform:translate(-6px,-50%)}to{opacity:1;transform:translateY(-50%)}}.set-tile{text-align:left;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:14px 16px;cursor:pointer;font-family:inherit;transition:transform .13s var(--ease-out),box-shadow .13s}.set-tile:hover{transform:translateY(-1px);box-shadow:0 2px 4px #0f172a0d,0 12px 28px -14px #0f172a3d}.set-tile:active{transform:translateY(0) scale(.99)}.set-switch{width:38px;height:21px;border-radius:999px;border:none;padding:2px;cursor:pointer;flex-shrink:0;background:var(--line);transition:background .15s ease}.set-switch[aria-checked=true]{background:var(--brand)}.set-switch:disabled{opacity:.5;cursor:default}.set-switch-knob{display:block;width:17px;height:17px;border-radius:50%;background:#fff;transform:translate(0);transition:transform .15s ease;box-shadow:0 1px 2px #0003}.set-switch[aria-checked=true] .set-switch-knob{transform:translate(17px)}.set-input{width:100%;border:1px solid var(--line);border-radius:var(--r-sm);padding:9px 11px;font-size:13px;font-family:inherit;background:var(--panel);color:var(--ink)}.set-input:focus-visible{box-shadow:0 0 0 3px var(--brand-soft);outline:none;border-color:var(--brand)}.set-input:disabled{background:var(--line2);color:var(--muted);cursor:not-allowed}.set-lbl{display:block;font-size:12px;font-weight:700;margin-bottom:5px}.set-hint{font-size:11px;color:var(--faint);margin-top:4px;line-height:1.5}.set-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:14px}.set-foot{display:flex;justify-content:flex-end;align-items:center;gap:10px;flex-wrap:wrap;margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}.set-foot.split{justify-content:space-between}.set-chip{display:inline-flex;align-items:center;gap:6px;background:var(--line2);border:1px solid var(--line);border-radius:999px;padding:4px 6px 4px 11px;font-size:12.5px;font-weight:600}.set-chip-x{border:none;background:transparent;color:var(--faint);cursor:pointer;font-size:13px;line-height:1;padding:2px;border-radius:50%;font-family:inherit}.set-chip-x:hover{color:var(--err)}.set-radio{flex:1;min-width:170px;text-align:left;display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:var(--r-sm);border:1.5px solid var(--line);background:var(--panel);cursor:pointer;font-family:inherit;color:var(--ink);transition:border-color .14s,background .14s}.set-radio:hover{border-color:var(--brand-soft);background:var(--line2)}.set-radio[aria-checked=true]{border-color:var(--brand);background:var(--brand-soft)}.set-radio-mark{width:16px;height:16px;border-radius:50%;border:2px solid var(--line2);flex-shrink:0}.set-radio[aria-checked=true] .set-radio-mark{border-color:var(--brand);background:var(--brand);box-shadow:inset 0 0 0 3px var(--panel)}.set-modal-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a80;display:flex;align-items:center;justify-content:center;padding:20px;z-index:100;animation:setOverlayIn .15s ease}.set-modal{background:var(--panel);border-radius:var(--r);box-shadow:var(--shadow-lg);width:100%;max-width:440px;padding:24px;animation:setModalIn .18s ease}@keyframes setOverlayIn{0%{opacity:0}to{opacity:1}}@keyframes setModalIn{0%{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}.set-skel{background:var(--line);border-radius:6px;animation:setPulse 1.4s ease-in-out infinite}@keyframes setPulse{0%,to{opacity:.5}50%{opacity:1}}@media (max-width: 900px){.set-nav{width:54px}.set-nav-item{justify-content:center;padding:11px 8px}.set-nav-lbl,.set-nav-item .set-nav-txt{display:none}.set-nav-dot{position:absolute;top:5px;right:5px}}@media (prefers-reduced-motion: reduce){.set-nav-item,.set-tile,.set-switch-knob,.set-modal,.set-modal-back,.set-skel,.set-nav-tip{animation:none!important;transition:none!important}}.ui-modal-back{position:fixed;top:0;right:0;bottom:0;left:0;z-index:120;background:#0f172a8c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:grid;place-items:center;padding:clamp(12px,4vw,32px);animation:uiBackIn .16s ease-out}.ui-modal{display:flex;flex-direction:column;width:100%;max-height:calc(100dvh - 48px);background:var(--panel);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow-lg);animation:uiModalIn .2s cubic-bezier(.2,.8,.3,1);outline:none}.ui-modal-head{position:sticky;top:0;z-index:1;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px clamp(18px,3vw,26px) 14px;border-bottom:1px solid var(--line);background:var(--panel);border-radius:18px 18px 0 0}.ui-modal-title{font-size:16.5px;font-weight:800;letter-spacing:-.01em}.ui-modal-sub{font-size:12.5px;color:var(--muted);margin-top:3px;line-height:1.5}.ui-modal-x{flex-shrink:0;width:32px;height:32px;border-radius:9px;border:1px solid var(--line);background:var(--panel-2, transparent);color:var(--muted);font-size:13px;cursor:pointer;font-family:inherit;transition:background .12s ease,color .12s ease}.ui-modal-x:hover{background:var(--line2);color:var(--ink)}.ui-modal-x:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.ui-modal-body{padding:clamp(16px,3vw,22px) clamp(18px,3vw,26px);overflow-y:auto}.ui-modal-foot{padding:14px clamp(18px,3vw,26px);border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px;background:var(--panel);border-radius:0 0 18px 18px}@keyframes uiBackIn{0%{opacity:0}}@keyframes uiModalIn{0%{opacity:0;transform:translateY(12px) scale(.985)}}@media (prefers-reduced-motion: reduce){.ui-modal-back,.ui-modal{animation:none}}.version-bar{position:fixed;left:50%;bottom:18px;transform:translate(-50%);z-index:90;display:flex;align-items:center;gap:12px;max-width:calc(100vw - 32px);padding:10px 12px 10px 16px;border-radius:12px;background:var(--side);color:#fff;box-shadow:var(--shadow-lg);font-size:12.5px;line-height:1.45}.version-bar strong{color:#fff}.version-bar button{border:0;border-radius:8px;padding:6px 12px;font:inherit;font-weight:700;cursor:pointer;background:var(--brand);color:#fff;flex-shrink:0}.version-bar button.ghost{background:transparent;color:var(--side-ink);padding:6px 8px}
