:root{color-scheme:light;--font:"Inter",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--bg-a:#d9e8ff;--bg-b:#eef4ff;--bg-c:#e3eefe;--surface:#ffffff;--canvas:#f6f7f9;--card:#ffffff;--ink:#141a26;--ink-2:#3a4356;--mute:#7a8396;--line:#e8ebf0;--line-2:#eef0f4;--brand:#1d6ff2;--brand-d:#155bd0;--brand-ink:#0f4fbf;--soft:#eaf2ff;--soft-2:#f3f7ff;--ok:#14a35a;--okbg:#e6f7ee;--bad:#e5484d;--badbg:#fdecec;--warn:#c27a12;--warnbg:#fff4e2;--violet:#6e56cf;--violetbg:#f1edff;--teal:#0e8fa8;--tealbg:#e2f6fa;--r-lg:22px;--r:16px;--r-sm:12px;--shadow:0 1px 2px rgba(16,24,40,.04),0 6px 20px rgba(16,24,40,.05);--shadow-lg:0 12px 40px rgba(16,24,40,.12)}*{box-sizing:border-box}body,html{margin:0}body{font:14px/1.55 var(--font);color:var(--ink);-webkit-font-smoothing:antialiased;background:linear-gradient(135deg,var(--bg-a) 0,var(--bg-b) 45%,var(--bg-c) 100%) fixed;min-height:100vh}a{color:var(--brand);text-decoration:none}a:hover{color:var(--brand-d)}button{font:inherit;cursor:pointer;color:inherit}button:disabled{opacity:.5;cursor:not-allowed}h1,h2,h3{letter-spacing:-.01em}.icon{flex-shrink:0;vertical-align:middle}:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.btn{border:1px solid var(--line);background:#fff;color:var(--ink);padding:8px 16px;border-radius:999px;font-weight:500;display:inline-flex;align-items:center;gap:7px;text-decoration:none;transition:background .15s,border-color .15s,box-shadow .15s,transform .05s;line-height:1.3;white-space:nowrap}.btn:hover:not(:disabled){border-color:#d3d9e3;background:#fafbfc;color:var(--ink)}.btn:active:not(:disabled){transform:translateY(1px)}.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff;box-shadow:0 4px 12px rgba(29,111,242,.25)}.btn.primary:hover:not(:disabled){background:var(--brand-d);border-color:var(--brand-d);color:#fff}.btn.danger{color:var(--bad)}.btn.danger:hover:not(:disabled){background:var(--badbg);border-color:#f6c5c6;color:var(--bad)}.btn.sm{padding:5px 12px;font-size:12.5px;gap:5px}.icon-btn{width:38px;height:38px;border-radius:50%;border:1px solid var(--line);background:#fff;display:inline-grid;place-items:center;color:var(--ink-2);position:relative;flex-shrink:0;transition:background .15s}.icon-btn:hover{background:var(--soft-2);color:var(--brand)}.badge{position:absolute;top:-3px;right:-3px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--bad);color:#fff;font-size:10.5px;font-weight:700;display:grid;place-items:center;border:2px solid #fff}.app{gap:16px;min-height:100vh;padding:16px}.app,aside{display:flex}aside{width:250px;background:var(--surface);border-radius:var(--r-lg);padding:18px 14px;flex-direction:column;gap:2px;position:-webkit-sticky;position:sticky;top:16px;height:calc(100vh - 32px);flex-shrink:0;overflow-y:auto;box-shadow:var(--shadow);transition:width .2s}.brand{display:flex;align-items:center;gap:10px;padding:2px 4px 18px}.brand .lbl{flex:1 1;min-width:0}.brand b{display:block;font-size:14px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brand small{color:var(--mute);font-size:11.5px}.collapse-btn{width:32px;height:32px}.logo{width:40px;height:40px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;font-weight:700;font-size:14px;flex-shrink:0}.logo.has-img{background:#fff;border:1px solid var(--line);overflow:hidden;padding:3px;border-radius:12px}.logo img{width:100%;height:100%;object-fit:contain}.nav-h{font-size:11px;letter-spacing:.06em;color:var(--mute);text-transform:uppercase;padding:14px 12px 6px;font-weight:600}.nav{display:flex;align-items:center;gap:12px;width:100%;padding:10px 14px;border-radius:14px;color:var(--ink-2);font-weight:500;text-decoration:none;transition:background .15s,color .15s}.nav:hover{background:#f3f6fb;color:var(--ink)}.nav.on{background:var(--brand);color:#fff;box-shadow:0 6px 16px rgba(29,111,242,.28)}.nav .icon{opacity:.9}.app.collapsed aside{width:78px}.app.collapsed .nav-h,.app.collapsed aside .lbl{display:none}.app.collapsed .brand{flex-direction:column;gap:12px}.app.collapsed .nav{justify-content:center;padding:11px}.content{flex:1 1;min-width:0;background:var(--canvas);border-radius:var(--r-lg);box-shadow:var(--shadow);display:flex;flex-direction:column;overflow:hidden}.topbar{background:var(--surface);border-bottom:1px solid var(--line-2);padding:12px 24px;display:flex;gap:12px;align-items:center;position:-webkit-sticky;position:sticky;top:0;z-index:6}.topbar .sp{flex:1 1}.menu-btn,.scrim{display:none}.search{display:flex;align-items:center;gap:8px;position:relative;width:min(420px,100%);background:var(--canvas);border:1px solid var(--line);border-radius:999px;padding:0 14px;color:var(--mute)}.search:focus-within{border-color:var(--brand);background:#fff;box-shadow:0 0 0 3px rgba(29,111,242,.12)}.search input{flex:1 1;font:inherit;padding:9px 0;border:0;background:transparent;min-width:0;outline:none;color:var(--ink)}.suggest{position:absolute;top:calc(100% + 6px);left:0;right:0;background:#fff;border:1px solid var(--line);border-radius:var(--r-sm);z-index:9;overflow:hidden;box-shadow:var(--shadow-lg);padding:4px}.suggest div{padding:8px 10px;cursor:pointer;display:flex;align-items:center;gap:10px;border-radius:8px;color:var(--ink)}.suggest div b{flex:1 1;font-weight:500}.suggest div:hover{background:var(--soft-2)}.userchip-wrap{position:relative}.userchip{display:flex;align-items:center;gap:10px;border:0;background:none;padding:4px 6px 4px 4px;border-radius:999px;text-align:left}.userchip:hover{background:var(--canvas)}.uc-txt b{display:block;font-size:13.5px;font-weight:600;line-height:1.2}.uc-txt small{color:var(--mute);font-size:11.5px}.menu{position:absolute;right:0;top:calc(100% + 8px);background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow-lg);min-width:230px;padding:6px;z-index:20;animation:pop .12s ease-out}.mi-head{padding:8px 10px 10px;border-bottom:1px solid var(--line-2);margin-bottom:4px}.mi-head b{display:block}.mi-head small{color:var(--mute)}.mi-row{display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;border-radius:10px;border:0;background:none;color:var(--ink);text-align:left;font-weight:500}.mi-row:hover{background:var(--soft-2);color:var(--ink)}.mi-row.danger{color:var(--bad)}main{padding:24px 28px 40px;width:100%;max-width:1320px}.pagehead{margin-bottom:20px}.pagehead h1{margin:0;font-size:28px;font-weight:600}.pagehead p{margin:4px 0 0;color:var(--mute)}.page-h{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}.page-h h2{margin:0;font-size:18px;font-weight:600}.page-h .sp{flex:1 1}.topprogress{position:fixed;top:0;left:0;height:3px;width:0;background:linear-gradient(90deg,var(--brand),#5aa0ff);z-index:100;opacity:0;transition:opacity .3s}.topprogress.on{opacity:1;animation:progress 1.6s ease-in-out infinite}@keyframes progress{0%{left:0;width:0}50%{left:15%;width:55%}to{left:100%;width:10%}}.spinner{display:inline-block;border-radius:50%;border:2.5px solid #d6e3fb;border-top:2.5px solid var(--brand);animation:spin .7s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(1turn)}}.loading{display:flex;align-items:center;justify-content:center;gap:12px;color:var(--mute);padding:40px 16px}.sk{height:12px;border-radius:8px;background:linear-gradient(90deg,#eef1f5 25%,#f6f8fa 50%,#eef1f5 75%);background-size:200% 100%;animation:shimmer 1.3s infinite}@keyframes shimmer{to{background-position:-200% 0}}.sk-card{display:block}@keyframes pop{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.errbox{display:flex;gap:12px;align-items:flex-start;background:var(--badbg);color:#8f2125;border:1px solid #f6c9ca;border-radius:var(--r);padding:14px 16px;margin-bottom:16px}.errbox .icon{margin-top:1px;color:var(--bad)}.card{background:var(--card);border:1px solid var(--line-2);border-radius:var(--r-lg);padding:20px 22px;box-shadow:var(--shadow)}.card+.card{margin-top:16px}.card h3{margin:0 0 12px;font-size:16px;font-weight:600}.card-h{gap:10px;margin-bottom:14px;flex-wrap:wrap}.card-h,.card-h h3{display:flex;align-items:center}.card-h h3{margin:0;gap:8px}.card-h .sp{flex:1 1}.dot{width:8px;height:8px;border-radius:50%;background:var(--brand);display:inline-block}.muted{color:var(--mute)}.small{font-size:12.5px}.empty{text-align:center;padding:40px 16px}.empty-ic{width:56px;height:56px;border-radius:50%;background:var(--soft);color:var(--brand);display:grid;place-items:center;margin:0 auto 6px}.empty .big{font-size:40px}.empty h2{margin:8px 0 6px;font-size:18px}.err{color:var(--bad)}.note{background:var(--soft-2);border:1px solid #dde8fd;border-radius:var(--r-sm);padding:11px 14px;font-size:13px;color:#2b3a55}.note.warn{background:var(--warnbg);border-color:#f6dfb5;color:#7a4d0c}.note.bad{background:var(--badbg);border-color:#f6c9ca;color:#8f2125}.note.ok{background:var(--okbg);border-color:#bfe8d1;color:#0d6b3b}.note ul{margin:4px 0 0 18px;padding:0}code{background:#f1f3f7;border-radius:6px;padding:1px 6px;font-size:12.5px}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));grid-gap:14px;gap:14px;margin-bottom:16px}.kpi{background:#fff;border:1px solid var(--line-2);border-radius:var(--r);padding:16px 18px;box-shadow:var(--shadow);display:flex;gap:14px;align-items:center}.kpi .ico{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:var(--soft);color:var(--brand);font-size:18px;flex-shrink:0}.kpi small{color:var(--ink-2);display:block;font-size:12.5px}.kpi b{font-size:24px;font-weight:600;line-height:1.25;letter-spacing:-.01em}.kpi b em{font-style:normal;font-size:12px;color:var(--mute);font-weight:400;margin-left:4px}.tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:14px;gap:14px}.tile{background:#fff;border:1px solid var(--line-2);border-radius:var(--r);padding:16px 18px;box-shadow:var(--shadow)}.tile small{display:block;color:var(--ink-2);font-size:13px}.tile b{display:block;font-size:28px;font-weight:500;margin-top:8px;letter-spacing:-.02em;line-height:1.1}.tile b em{font-style:normal;font-weight:400;margin-left:4px}.tile .sub,.tile b em{font-size:12px;color:var(--mute)}.tile .sub{margin-top:4px}.two{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));grid-gap:16px}.split,.two{display:grid;gap:16px}.split{grid-template-columns:minmax(0,1.6fr) minmax(280px,1fr);grid-gap:16px;margin-bottom:16px}.split>.card+.card,.two>.card+.card{margin-top:0}.bar-row{display:grid;grid-template-columns:150px 1fr 40px;grid-gap:12px;gap:12px;align-items:center;padding:7px 0}.bar{height:8px;background:#eef1f6;overflow:hidden}.bar,.bar i{border-radius:5px}.bar i{display:block;height:100%;background:var(--brand)}.steps{margin:0;padding-left:20px}.steps li{margin:6px 0}.profile-card{display:flex;gap:20px;align-items:center;flex-wrap:wrap}.big-av{width:84px;height:84px;border-radius:50%;background:linear-gradient(135deg,#ffd27a,#ffb35a);color:#5b3b00;display:grid;place-items:center;font-weight:700;font-size:28px;position:relative;flex-shrink:0}.big-av .tag{position:absolute;bottom:-8px;left:50%;transform:translateX(-50%);background:var(--ok);color:#fff;font-size:10.5px;font-weight:600;padding:1px 9px;border-radius:999px;border:2px solid #fff;white-space:nowrap}.profile-card h2{margin:0 0 10px;font-size:22px;font-weight:600}.facts{display:flex;gap:34px;flex-wrap:wrap}.facts small{display:block;color:var(--mute);font-size:12px}.facts span{font-weight:500}.strip-legend{display:flex;gap:12px;flex-wrap:wrap;font-size:11.5px;color:var(--ink-2);background:var(--canvas);border-radius:999px;padding:5px 12px}.strip-legend i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;vertical-align:middle}.strip{padding:4px 2px 8px}.strip,.strip .d{display:flex;gap:8px}.strip .d{flex-direction:column;align-items:center;min-width:30px;flex:1 1}.strip .d small{font-weight:600;font-size:12.5px;color:var(--ink-2)}.strip .d.today small{color:var(--bad)}.strip .d.wk small{color:var(--mute);font-weight:500}.ad{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;color:#fff;background:#eef0f3;border:1px solid #e4e7ec}.ad.p{background:var(--ok);border-color:var(--ok)}.ad.a{background:var(--bad);border-color:var(--bad)}.ad.h{background:conic-gradient(var(--bad) 0 50%,#fff 50% 100%);border:2px solid var(--bad)}.ad.l{background:var(--brand);border-color:var(--brand)}.ad.s{background:var(--teal);border-color:var(--teal)}.ad.o{background:#d63bd1;border-color:#d63bd1}.ad.w{background:#eef0f3}.ad.mid{background:#f5a524;border-color:#f5a524}.ad.low{background:var(--bad);border-color:var(--bad)}.tools{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px;align-items:center}.field,input:not([type]),input[type=date],input[type=email],input[type=month],input[type=number],input[type=password],input[type=text],select{font:inherit;padding:8px 12px;border-radius:var(--r-sm);border:1px solid var(--line);background:#fff;color:var(--ink);transition:border-color .15s,box-shadow .15s}.field:focus,input:focus,select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(29,111,242,.12)}input[type=checkbox]{accent-color:var(--brand);width:16px;height:16px}.tools .field.grow{flex:1 1;min-width:200px}.tbl-wrap{overflow-x:auto;border-radius:var(--r-sm)}table{width:100%;border-collapse:collapse}th{font-size:12px;color:var(--mute);font-weight:500;background:var(--canvas);text-align:left}th:first-child{border-radius:10px 0 0 10px}th:last-child{border-radius:0 10px 10px 0}td,th{padding:12px 14px;border-bottom:1px solid var(--line-2);text-align:left;white-space:nowrap}th{border-bottom:0}tbody tr{transition:background .12s}tbody tr:hover{background:#fafbfd}td.n,th.n{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}tbody tr.click{cursor:pointer}tbody tr.click:hover{background:var(--soft-2)}tr.bad td{background:#fff7f7}.who-c{display:flex;align-items:center;gap:10px;color:var(--ink)}.av{width:34px;height:34px;border-radius:50%;background:var(--soft);color:var(--brand);display:grid;place-items:center;font-weight:600;font-size:12.5px;flex-shrink:0}.av.sm{width:26px;height:26px;font-size:10.5px}.pill{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;border-radius:999px;font-size:11.5px;font-weight:600;white-space:nowrap}.pill.ok{background:var(--okbg);color:var(--ok)}.pill.warn{background:var(--warnbg);color:var(--warn)}.pill.bad{background:var(--badbg);color:var(--bad)}.pill.gray{background:#eff1f4;color:#5d6678}.pill.blue{background:var(--soft);color:var(--brand-ink)}.hero{display:flex;gap:16px;align-items:center;flex-wrap:wrap}.hero .av{width:64px;height:64px;font-size:22px}.hero h2{margin:0;font-size:22px;font-weight:600}.chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.tabs{display:inline-flex;gap:4px;margin:18px 0 0;background:var(--canvas);border-radius:999px;padding:4px;overflow-x:auto;max-width:100%}.tabs button{border:0;background:none;padding:7px 16px;color:var(--ink-2);white-space:nowrap;font-weight:500;border-radius:999px}.tabs button.on{color:#fff;background:var(--brand);box-shadow:0 4px 10px rgba(29,111,242,.25)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));grid-gap:18px;gap:18px}.kv small{display:block;color:var(--mute);font-size:12px}.kv span{font-weight:500;word-break:break-word}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(135px,1fr));grid-gap:12px;gap:12px;margin-bottom:16px}.stat{background:var(--canvas);border:1px solid var(--line-2);border-radius:var(--r-sm);padding:12px 14px}.stat b{display:block;font-size:20px}.stat small{color:var(--mute)}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:14px}.row.tight{margin-bottom:0}.modal{position:fixed;inset:0;background:rgba(15,23,42,.35);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:grid;place-items:center;z-index:30;padding:12px;animation:fade .15s}@keyframes fade{0%{opacity:0}}.mbox{background:#fff;border-radius:var(--r-lg);padding:24px;width:100%;max-width:680px;max-height:90vh;overflow:auto;box-shadow:var(--shadow-lg);animation:pop .15s ease-out}.mbox h3{font-size:19px;margin:0 0 16px;font-weight:600}.mgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));grid-gap:14px;gap:14px}.mgrid label{font-size:12.5px;color:var(--ink-2);display:flex;flex-direction:column;gap:5px;font-weight:500}.mgrid input,.mgrid select{font-size:14px;font-weight:400;width:100%}.mgrid input[readonly]{background:var(--canvas)}.mgrid .hint{font-weight:400;font-size:11.5px;color:var(--mute)}.mgrid .wide{grid-column:1/-1}.mfoot{justify-content:flex-end;align-items:center;margin-top:20px}.mfoot,.toasts{display:flex;gap:10px}.toasts{position:fixed;top:18px;right:18px;z-index:60;flex-direction:column;width:min(380px,calc(100vw - 36px))}.toast{display:flex;gap:12px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-left:4px solid var(--ok);border-radius:14px;padding:12px 12px 12px 14px;box-shadow:var(--shadow-lg);animation:slidein .2s ease-out}.toast>.icon{color:var(--ok);margin-top:1px}.toast.err{border-left-color:var(--bad)}.toast.err>.icon{color:var(--bad)}.toast.info{border-left-color:var(--brand)}.toast.info>.icon{color:var(--brand)}.toast-body{flex:1 1;min-width:0;font-size:13px;color:var(--ink-2)}.toast-body b{display:block;color:var(--ink);font-size:13.5px;margin-bottom:1px}.toast-x{border:0;background:none;color:var(--mute);padding:2px;border-radius:6px;display:grid}.toast-x:hover{background:var(--canvas);color:var(--ink)}@keyframes slidein{0%{opacity:0;transform:translateX(16px)}to{opacity:1;transform:none}}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px 16px}.login-shell{width:100%;max-width:980px;display:grid;grid-template-columns:1.05fr 1fr;background:#fff;border-radius:28px;box-shadow:var(--shadow-lg);overflow:hidden;min-height:560px}.login-art{background:linear-gradient(150deg,#1d6ff2,#3d8bff 55%,#7fb3ff);color:#fff;padding:40px;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}.login-art:after,.login-art:before{content:"";position:absolute;border-radius:50%;background:rgba(255,255,255,.1)}.login-art:before{width:380px;height:380px;right:-120px;top:-120px}.login-art:after{width:260px;height:260px;left:-80px;bottom:-90px}.login-art h2{font-size:30px;line-height:1.2;margin:0 0 12px;font-weight:600;position:relative}.login-art p{opacity:.9;margin:0;position:relative;max-width:360px}.login-art ul{list-style:none;padding:0;margin:26px 0 0;position:relative;display:grid;grid-gap:12px;gap:12px}.login-art li{display:flex;gap:10px;align-items:center;font-weight:500}.login-art li span{width:30px;height:30px;border-radius:50%;background:rgba(255,255,255,.18);display:grid;place-items:center}.brandmark{display:flex;align-items:center;gap:12px;position:relative}.brandmark .logo{width:48px;height:48px;background:#fff;color:var(--brand);border-radius:14px}.brandmark b{font-size:16px}.login{padding:48px 44px;display:flex;flex-direction:column;justify-content:center}.login .logo{width:56px;height:56px;font-size:18px;margin:0 0 18px;border-radius:16px}.login h1{font-size:26px;margin:0 0 4px;font-weight:600}.login p.sub{color:var(--mute);margin:0 0 26px}.login label{display:block;font-size:13px;font-weight:500;color:var(--ink-2);margin-bottom:16px}.login input{display:block;padding:12px 14px;border-radius:14px}.login .btn,.login input{width:100%;margin-top:6px;font-size:15px}.login .btn{justify-content:center;padding:12px}.login .err-line{display:flex;gap:8px;align-items:center;background:var(--badbg);color:#8f2125;border-radius:12px;padding:10px 12px;font-size:13px;margin:0 0 14px}.login-foot{margin-top:22px;color:var(--mute);font-size:12.5px;text-align:center}.pw-field{position:relative}.pw-field input{padding-right:44px}.pw-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);border:0;background:none;padding:6px 8px;line-height:1;cursor:pointer;color:var(--mute);border-radius:8px;display:grid}.pw-eye:hover{color:var(--ink);background:var(--canvas)}.cred{background:var(--soft-2);border:1px dashed #b6cdf5;border-radius:var(--r-sm);padding:12px 14px;margin-top:12px;font-family:ui-monospace,Consolas,monospace;font-size:13px}@media (max-width:1100px){.split{grid-template-columns:1fr}}@media (max-width:860px){.app{padding:0;gap:0}aside{position:fixed;left:0;top:0;bottom:0;height:100vh;z-index:40;border-radius:0 var(--r-lg) var(--r-lg) 0;transform:translateX(-105%);transition:transform .2s}.app.collapsed aside,aside{width:264px}.app.collapsed .nav-h,.app.collapsed aside .lbl{display:block}.app.collapsed .brand{flex-direction:row}.app.collapsed .nav{justify-content:flex-start;padding:10px 14px}.app.mobile-open aside{transform:none}.app.mobile-open .scrim{display:block;position:fixed;inset:0;background:rgba(15,23,42,.35);z-index:39}.collapse-btn{display:none}.menu-btn{display:inline-grid}.content{border-radius:0;min-height:100vh}.topbar{padding:10px 16px}.uc-txt{display:none}main{padding:18px 16px 32px}.pagehead h1{font-size:23px}.login-shell{grid-template-columns:1fr}.login-art{display:none}.login{padding:36px 24px}.tiles{grid-template-columns:1fr 1fr}}.grid-wrap{overflow:auto;max-height:68vh;border:1px solid var(--line);border-radius:var(--r-sm)}table.ag{border-collapse:separate;border-spacing:0;font-size:12px;width:auto}.ag td,.ag th{padding:0;border-bottom:1px solid var(--line-2);border-right:1px solid #f1f3f6;text-align:center;white-space:nowrap;border-radius:0}.ag th{position:-webkit-sticky;position:sticky;top:0;background:var(--canvas);z-index:2;font-size:12px;padding:4px 6px}.ag td.sun,.ag th.sun{background:#fafbfd}.ag .name{position:-webkit-sticky;position:sticky;left:0;background:#fff;z-index:1;text-align:left;padding:5px 10px;min-width:190px;display:table-cell;border-right:2px solid var(--line)}.ag th.name{z-index:3;background:var(--canvas)}.ag .name .nm{display:inline-block;vertical-align:middle;line-height:1.2}.ag .name .nm small{display:block;color:var(--mute);font-size:11px}.ag td.n{padding:0 8px;min-width:34px}.ag tr.dirty .name{box-shadow:inset 3px 0 0 var(--brand)}.cell{width:30px;height:32px;border:0;background:transparent;font-weight:700;font-size:12px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:0}.cell:hover:not(:disabled){outline:2px solid #bcd3fb;outline-offset:-2px}.cell.p{background:var(--okbg);color:var(--ok)}.cell.a{background:var(--badbg);color:var(--bad)}.cell.w{background:#eef0f3;color:#6b7385}.cell.h{background:var(--warnbg);color:var(--warn)}.cell.l{background:var(--soft);color:var(--brand-ink)}.cell.o{background:#fbe9fb;color:#a62aa2}.cell.s{background:var(--tealbg);color:var(--teal)}.cell.lv{outline:2px dotted var(--brand);outline-offset:-3px}.cell.off{background:repeating-linear-gradient(45deg,#fafafa,#fafafa 4px,#eee 0,#eee 8px);cursor:not-allowed}.dayh{border:0;background:none;font-weight:700;cursor:pointer;line-height:1.1;padding:2px 4px;border-radius:6px}.dayh:hover:not(:disabled){background:var(--soft)}.dayh small{display:block;font-weight:400;color:var(--mute);font-size:10px}.brush{border:1px solid var(--line);background:#fff;border-radius:999px;padding:5px 12px;font-size:12.5px}.brush.p{background:var(--okbg)}.brush.a{background:var(--badbg)}.brush.w{background:#eef0f3}.brush.h{background:var(--warnbg)}.brush.l{background:var(--soft)}.brush.o{background:#fbe9fb}.brush.s{background:var(--tealbg)}.brush.on{outline:2px solid var(--brand);outline-offset:1px;font-weight:600}.mini{border:1px solid var(--line);background:#fff;border-radius:6px;font-size:11px;font-weight:700;color:var(--ok);padding:1px 6px;margin-left:8px;vertical-align:middle}.mi{width:72px;font:inherit;font-size:12px;padding:5px 6px;border:1px solid var(--line);border-radius:8px;text-align:right}.seg{display:inline-flex;background:var(--canvas);border:1px solid var(--line);border-radius:999px;padding:3px}.seg button{border:0;background:none;padding:6px 14px;font-weight:500;color:var(--ink-2);border-radius:999px}.seg button.on{background:var(--brand);color:#fff;box-shadow:0 3px 8px rgba(29,111,242,.25)}.rte-bar{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:14px;padding:8px 10px;background:var(--canvas);border:1px solid var(--line);border-bottom:0;border-radius:12px 12px 0 0}.rte-menu{position:absolute;right:0;top:100%;z-index:20;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-lg);min-width:260px;padding:4px}.rte-menu button{display:flex;flex-direction:column;align-items:flex-start;width:100%;border:0;background:none;padding:7px 10px;border-radius:8px;text-align:left}.rte-menu button:hover{background:var(--soft-2)}.rte-menu small{color:var(--mute)}.rte-stage{background:#eef8f6;border:1px solid var(--line);border-radius:0 0 12px 12px;padding:22px 12px}.rte-card{max-width:560px;margin:0 auto;background:#fff;border-radius:8px;border-top:4px solid #8fe3c8;overflow:hidden}.rte-head{padding:16px 28px;border-bottom:1px solid #e8ecf0;font-weight:700}.rte-box{padding:22px 28px;min-height:200px;outline:none;line-height:1.6}.rte-box:focus{box-shadow:inset 0 0 0 2px #bcd3fb}.btn.primary .spinner{border-color:#fff rgba(255,255,255,.4) rgba(255,255,255,.4)}.login-shell.single{grid-template-columns:1fr;max-width:460px;min-height:0}.login .logo:not(.has-img){background:var(--soft);color:var(--brand)}.login .err-line.ok{background:var(--okbg);color:#0d6b3b}a.tile{display:block;transition:border-color .15s}a.tile:hover{border-color:#cfe0fc}.topbar .search input,.topbar .search input:focus{border:0;box-shadow:none;padding:9px 0;border-radius:0;background:transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#d3dbe8;border-radius:999px;border:3px solid transparent;background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background:#a9b8cf;border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-button{display:none;width:0;height:0}::-webkit-scrollbar-corner{background:transparent}@supports not selector(::-webkit-scrollbar){*{scrollbar-width:thin;scrollbar-color:#cfd8e6 transparent}}aside::-webkit-scrollbar{width:6px}aside::-webkit-scrollbar-thumb{border-width:1px;background-color:transparent}aside:hover::-webkit-scrollbar-thumb{background-color:#dde3ed}.strip{display:grid;grid-template-columns:repeat(var(--days,31),minmax(30px,1fr));grid-gap:2px;gap:2px;overflow-x:auto;padding:4px 0 10px;scrollbar-width:thin}.strip .d{min-width:0;flex:none}.strip::-webkit-scrollbar{height:6px}.strip::-webkit-scrollbar-thumb{border-width:1px}.dlg-wrap{z-index:60}.mbox.dlg{max-width:460px;padding:22px 22px 18px}.dlg-head{display:flex;gap:14px;align-items:flex-start}.dlg-head h3{margin:2px 0 6px;font-size:17px;line-height:1.35}.dlg-msg{color:var(--muted,#5b6475);font-size:14px;line-height:1.55;white-space:pre-line}.dlg-msg b{color:var(--ink,#1c2333)}.dlg-ic{flex:none;width:42px;height:42px;border-radius:12px;display:grid;place-items:center}.dlg-ic.danger{background:var(--badbg);color:var(--bad)}.dlg-ic.warn{background:var(--warnbg);color:var(--warn)}.dlg-ic.primary{background:var(--soft);color:var(--brand)}.dlg-x{margin:-6px -6px 0 0;flex:none}.dlg-field{display:flex;flex-direction:column;gap:6px;margin-top:16px;font-size:13px;color:var(--muted,#5b6475)}.dlg-field input,.dlg-field textarea{width:100%;font:inherit;font-size:14px;color:var(--ink,#1c2333)}.dlg-field textarea{resize:vertical;min-height:72px}.dlg-err{display:flex;gap:6px;align-items:center;color:var(--bad);font-size:13px;margin:10px 0 0}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;background:var(--soft-2);padding:1px 6px;border-radius:6px}.btn.danger-solid{background:var(--bad);border-color:var(--bad);color:#fff;box-shadow:0 4px 12px rgba(229,72,77,.25)}.btn.danger-solid:hover:not(:disabled){background:#d13438;border-color:#d13438}.btn.danger-solid:disabled{opacity:.45;box-shadow:none}@media (max-width:520px){.mbox.dlg .mfoot{flex-direction:column-reverse;align-items:stretch}.mbox.dlg .mfoot .btn{justify-content:center}}.mpick{display:inline-flex;align-items:center;gap:6px;background:#fff;border:1px solid var(--line);border-radius:999px;padding:3px 6px}.mpick input{padding:6px 4px;font-weight:600;background:transparent;min-width:150px}.mpick input,.mpick input:focus{border:0;box-shadow:none}.mpick .icon-btn{width:30px;height:30px}.seg a{display:inline-block;padding:6px 14px;font-weight:500;color:var(--ink-2);border-radius:999px;text-decoration:none}.seg a.on{background:var(--brand);color:#fff;box-shadow:0 3px 8px rgba(29,111,242,.25)}.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:8px;gap:8px}.cal-h{font-size:12px;font-weight:600;color:var(--mute);text-transform:uppercase;letter-spacing:.04em;padding:0 4px 2px}.cal-h.sun{color:var(--bad)}.cal-d{position:relative;min-height:84px;border:1px solid var(--line);border-radius:14px;padding:8px 10px;background:#fff;display:flex;flex-direction:column;gap:4px;transition:transform .12s,box-shadow .12s}.cal-d:not(.blank):hover{transform:translateY(-1px);box-shadow:var(--shadow,0 4px 14px rgba(15,23,42,.08))}.cal-d.blank{border:0;background:transparent}.cal-d .n{font-weight:700;font-size:14px;color:var(--ink,#1c2333)}.cal-d .c{position:absolute;top:8px;right:9px;width:24px;height:24px;border-radius:8px;display:grid;place-items:center;font-size:12px;font-weight:700;color:#fff}.cal-d small{margin-top:auto;font-size:11.5px;font-weight:500}.cal-d.p{background:var(--okbg);border-color:#c9ecd8}.cal-d.p .c{background:var(--ok)}.cal-d.p small{color:var(--ok)}.cal-d.a{background:var(--badbg);border-color:#f6c9ca}.cal-d.a .c{background:var(--bad)}.cal-d.a small{color:var(--bad)}.cal-d.h{background:var(--warnbg);border-color:#f6dfb5}.cal-d.h .c{background:var(--warn)}.cal-d.h small{color:var(--warn)}.cal-d.l{background:var(--soft);border-color:#cfe0fd}.cal-d.l .c{background:var(--brand)}.cal-d.l small{color:var(--brand-ink)}.cal-d.s{background:var(--tealbg);border-color:#bfe7ef}.cal-d.s .c{background:var(--teal)}.cal-d.s small{color:var(--teal)}.cal-d.o{background:#fbe9fb;border-color:#f1cdf0}.cal-d.o .c{background:#c03bbd}.cal-d.o small{color:#a62aa2}.cal-d.w{background:#f3f4f7}.cal-d.w .c{background:#9aa2b1}.cal-d.w small{color:#6b7385}.cal-d.off{background:repeating-linear-gradient(45deg,#fafafa,#fafafa 6px,#f0f0f0 0,#f0f0f0 12px)}.cal-d.off small{color:var(--mute)}.cal-d.lv{border:2px dashed var(--brand);background:#fff}.cal-d.lv .c{opacity:.75}.cal-d.today{box-shadow:0 0 0 2px var(--brand)}.cal-d.sun .n{color:var(--bad)}.cal-sum{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:8px;gap:8px;margin:0 0 16px}.cal-sum .cs{border-radius:12px;padding:8px 10px;background:var(--soft-2);display:flex;flex-direction:column}.cal-sum .cs b{font-size:20px;line-height:1.2}.cal-sum .cs small{font-size:11.5px;color:var(--mute)}.cal-sum .cs.p b{color:var(--ok)}.cal-sum .cs.a b{color:var(--bad)}.cal-sum .cs.h b{color:var(--warn)}.cal-sum .cs.l b{color:var(--brand)}.cal-sum .cs.s b{color:var(--teal)}.cal-sum .cs.o b{color:#a62aa2}.cal-sum .cs.w b{color:#6b7385}.cal-legend{display:flex;flex-wrap:wrap;gap:8px 16px;margin:14px 0 10px;font-size:12.5px;color:var(--mute)}.cal-legend span{display:inline-flex;align-items:center;gap:6px}.cal-legend i.cell{width:22px;height:22px;border-radius:6px;display:inline-grid;place-items:center;font-style:normal;font-size:11px}.cell.ro{display:grid;place-items:center;cursor:default;margin:0 auto}@media (max-width:720px){.cal{gap:4px}.cal-d{min-height:54px;padding:5px 6px;border-radius:10px}.cal-d .c{width:18px;height:18px;font-size:10px;top:5px;right:5px;border-radius:6px}.cal-d small{display:none}.cal-d .n{font-size:12px}.cal-sum{grid-template-columns:repeat(4,minmax(0,1fr))}.mpick input{min-width:120px}}.masked{display:inline-flex;align-items:center;gap:8px;max-width:100%}.masked .mv{white-space:nowrap}.masked .mv.hidden{letter-spacing:.04em;color:var(--ink-2,#3b4252)}.masked .eye{flex:none;width:30px;height:30px;border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--mute);display:grid;place-items:center;cursor:pointer;padding:0;transition:background .12s,color .12s}.masked .eye:hover{background:var(--soft);color:var(--brand);border-color:#cfe0fd}