:root{--bg: #f4f6fb;--bg-grad: linear-gradient(180deg, #f6f8fc 0%, #eef1f8 100%);--surface: #ffffff;--surface-2: #fafbfd;--border: #e6e9f0;--border-strong: #d4d9e4;--text: #1b2230;--muted: #6b7589;--primary: #3a5bd9;--primary-d: #2f49b0;--primary-soft: #eaeefc;--primary-ring: rgba(58, 91, 217, .18);--ok: #15935b;--success: #15935b;--success-bg: #e4f5ec;--warn: #b06f00;--warning: #b06f00;--warning-bg: #fbf1d8;--danger: #d23b35;--danger-bg: #fceceb;--info: #2563b8;--info-bg: #e9f0fb;--shadow-sm: 0 1px 2px rgba(20, 30, 60, .05), 0 1px 3px rgba(20, 30, 60, .04);--shadow: 0 2px 6px rgba(20, 30, 60, .06), 0 8px 24px rgba(20, 30, 60, .06);--shadow-lg: 0 8px 30px rgba(20, 30, 60, .12);--radius: 14px;--radius-sm: 9px}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:Hiragino Sans,Hiragino Kaku Gothic ProN,Noto Sans JP,Yu Gothic,Segoe UI,system-ui,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"palt" 1}button{font-family:inherit;cursor:pointer}a{color:inherit}::selection{background:var(--primary-ring)}td,th,.metric .v,input[type=number]{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:#cdd3df;border-radius:8px;border:2px solid transparent;background-clip:content-box}*::-webkit-scrollbar-thumb:hover{background:#b6bdcb;background-clip:content-box}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(1200px 500px at 50% -10%,#e6ecfb 0%,var(--bg) 55%)}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:34px 32px;width:372px;box-shadow:var(--shadow-lg);animation:rise .35s cubic-bezier(.2,.7,.3,1)}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.login-card h1{font-size:19px;margin:0 0 5px;letter-spacing:.2px}.login-card p.sub{color:var(--muted);font-size:12px;margin:0 0 22px}.field{margin-bottom:14px}.field label{display:block;font-size:12px;color:var(--muted);margin-bottom:6px;font-weight:500}.field input{width:100%;padding:11px 13px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);font-size:14px;background:var(--surface-2);transition:border-color .15s,box-shadow .15s,background .15s}.field input:focus{outline:none;border-color:var(--primary);background:#fff;box-shadow:0 0 0 3px var(--primary-ring)}.err{color:var(--danger);font-size:12px;margin-top:10px}.hint{background:var(--info-bg);color:var(--info);font-size:11px;padding:10px 12px;border-radius:var(--radius-sm);margin-top:18px;line-height:1.7}.btn{background:var(--primary);color:#fff;border:1px solid transparent;border-radius:var(--radius-sm);padding:9px 16px;font-size:13.5px;font-weight:600;letter-spacing:.2px;box-shadow:0 1px 2px #2f49b040;transition:background .15s,box-shadow .15s,transform .06s}.btn:hover:not(:disabled){background:var(--primary-d);box-shadow:0 2px 8px #2f49b04d}.btn:active:not(:disabled){transform:translateY(1px)}.btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--primary-ring)}.btn:disabled{opacity:.45;box-shadow:none;cursor:not-allowed}.btn.ghost{background:var(--surface);color:var(--primary);border:1px solid var(--border-strong);box-shadow:var(--shadow-sm)}.btn.ghost:hover:not(:disabled){background:var(--primary-soft);border-color:var(--primary)}.btn.sm{padding:5px 12px;font-size:12px;border-radius:7px}.app{display:flex;min-height:100vh}.side{width:218px;background:var(--surface);border-right:1px solid var(--border);padding:16px 12px;flex-shrink:0;position:sticky;top:0;height:100vh;overflow-y:auto}.brand{padding:8px 10px 18px;border-bottom:1px solid var(--border);margin-bottom:12px}.brand .t{font-size:14.5px;font-weight:700;color:var(--primary);letter-spacing:.3px}.brand .s{font-size:11px;color:var(--muted);margin-top:2px}.nav{display:flex;flex-direction:column;gap:2px}.nav button{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:none;border:none;border-radius:var(--radius-sm);padding:9px 11px;font-size:13px;color:var(--muted);font-weight:500;transition:background .12s,color .12s}.nav button>span[aria-hidden]{width:18px;text-align:center;font-size:14px;opacity:.9}.nav button:hover{background:var(--surface-2);color:var(--text)}.nav button.active{background:var(--primary-soft);color:var(--primary-d);font-weight:600;box-shadow:inset 0 0 0 1px #3a5bd91a}.main{flex:1;min-width:0;display:flex;flex-direction:column}.top{height:56px;background:#ffffffd9;-webkit-backdrop-filter:saturate(1.4) blur(6px);backdrop-filter:saturate(1.4) blur(6px);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:5}.top .who{font-size:13px;color:var(--muted);display:flex;align-items:center;gap:12px}.top .who b{color:var(--text);font-weight:600}.content{padding:26px 28px;overflow:auto;max-width:1280px;width:100%}.h2{font-size:19px;font-weight:700;margin:0 0 4px;letter-spacing:.2px}.psub{color:var(--muted);font-size:12.5px;margin:0 0 20px}.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:13px;margin-bottom:20px}.metric{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:15px 17px;box-shadow:var(--shadow-sm);transition:box-shadow .18s,transform .18s}.metric:hover{box-shadow:var(--shadow);transform:translateY(-1px)}.metric .l{font-size:12px;color:var(--muted);font-weight:500}.metric .v{font-size:27px;font-weight:700;margin-top:3px;letter-spacing:.3px}.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:15px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:17px 19px;box-shadow:var(--shadow-sm)}.card h3{font-size:14px;margin:0 0 13px;font-weight:700;letter-spacing:.2px}.progress{height:9px;background:#edf0f6;border-radius:6px;overflow:hidden}.progress>div{height:100%;background:linear-gradient(90deg,var(--primary),#5b78e6);border-radius:6px;transition:width .4s ease}table{width:100%;border-collapse:collapse}th{text-align:left;font-weight:600;color:var(--muted);font-size:11.5px;letter-spacing:.3px;padding:10px 12px;border-bottom:1px solid var(--border);background:var(--surface-2)}th:first-child{border-top-left-radius:10px}th:last-child{border-top-right-radius:10px}td{padding:11px 12px;border-bottom:1px solid var(--border);font-size:13px}tbody tr{transition:background .1s}tbody tr:hover{background:var(--surface-2)}tr:last-child td{border-bottom:none}.card[style*="padding: 0"] table th:first-child,.card table th{background:var(--surface-2)}.pill{display:inline-flex;align-items:center;font-size:11px;padding:3px 10px;border-radius:999px;font-weight:600;white-space:nowrap;line-height:1.4}.p-done{background:var(--success-bg);color:var(--success)}.p-block{background:var(--danger-bg);color:var(--danger)}.p-wait{background:var(--warning-bg);color:var(--warning)}.p-todo{background:#eef1f6;color:var(--muted)}.p-stat{background:var(--danger-bg);color:var(--danger)}.p-int{background:var(--info-bg);color:var(--info)}.route .seg{font-size:11px;padding:2px 8px;border-radius:999px;background:#eef1f6;color:var(--muted)}.route .seg.cur{background:var(--warning-bg);color:var(--warning);font-weight:600}.row{display:flex;justify-content:space-between;align-items:center;padding:9px 0;border-bottom:1px solid var(--border);font-size:13px}.row:last-child{border-bottom:none}.toast{position:fixed;bottom:22px;right:22px;background:#1b2230;color:#fff;padding:12px 18px;border-radius:11px;font-size:13px;box-shadow:var(--shadow-lg);animation:rise .25s ease;z-index:50}.toast.bad{background:var(--danger)}
