:root{--ink: #17332d;--ink-soft: #3d5650;--paper: #f7f8f6;--card: #ffffff;--line: #dde3df;--green: #1e7f5c;--green-dark: #16604600;--green-press: #175f46;--amber: #a06a10;--red: #b3372f;--muted: #6b7a75;--focus: #2b9d74;--font-display: "Archivo", sans-serif;--font-body: "Inter", system-ui, sans-serif;--font-mono: "JetBrains Mono", monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-body);font-size:14px;color:var(--ink);background:var(--paper)}h1,h2,h3{font-family:var(--font-display);margin:0}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:1px}.shell{display:flex;height:100%}.sidebar{width:216px;flex-shrink:0;background:var(--ink);color:#e7efec;display:flex;flex-direction:column;padding:0 0 12px}.sidebar .brand{font-family:var(--font-display);font-weight:700;font-size:17px;letter-spacing:.02em;color:#fff;padding:18px 18px 4px}.sidebar .brand small{display:block;font-family:var(--font-mono);font-weight:400;font-size:10.5px;color:#9db8b0;letter-spacing:.08em;margin-top:2px}.sidebar nav{flex:1;overflow-y:auto;margin-top:14px}.nav-group{font-size:10.5px;text-transform:uppercase;letter-spacing:.12em;color:#8aa79e;padding:14px 18px 6px}.nav-link{display:block;padding:7px 18px;color:#d7e4df;text-decoration:none;border-left:3px solid transparent;font-size:13.5px}.nav-link:hover{background:#ffffff0f}.nav-link.active{background:#ffffff1a;border-left-color:var(--focus);color:#fff}.nav-link.soon{color:#6f8b83;cursor:default}.nav-link.soon:after{content:" ·";color:#587770}.sidebar .userbox{padding:12px 18px 0;border-top:1px solid rgba(255,255,255,.12);font-size:12.5px;color:#b9cdc6}.sidebar .userbox b{color:#fff;display:block}.sidebar .userbox button{margin-top:8px;background:none;border:1px solid #4c6b63;color:#cfe0da;border-radius:4px;padding:4px 10px;cursor:pointer;font-size:12px}.sidebar .userbox button:hover{border-color:#7ea298}.main{flex:1;overflow-y:auto;padding:22px 26px}.page-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:16px}.page-head h1{font-size:20px;font-weight:700}.page-head .crumb{font-size:12px;color:var(--muted);letter-spacing:.04em}.btn{font-family:var(--font-body);font-weight:600;font-size:13.5px;border-radius:5px;border:1px solid transparent;cursor:pointer;padding:7px 16px}.btn-primary{background:var(--green);color:#fff}.btn-primary:hover{background:var(--green-press)}.btn-ghost{background:transparent;border-color:var(--line);color:var(--ink)}.btn-ghost:hover{border-color:var(--ink-soft)}.btn-danger{background:transparent;border-color:var(--red);color:var(--red)}.btn-danger:hover{background:#fbeeed}.btn:disabled{opacity:.45;cursor:not-allowed}.field{display:flex;flex-direction:column;gap:4px}.field label{font-size:12px;font-weight:600;color:var(--ink-soft)}.field input,.field select,.field textarea{border:1px solid var(--line);border-radius:5px;padding:7px 9px;background:var(--card);font-size:13.5px}.field input.mono{font-family:var(--font-mono);text-transform:uppercase}.field .err{font-size:11.5px;color:var(--red)}.field input[aria-invalid=true],.field select[aria-invalid=true]{border-color:var(--red)}.search-input{width:320px;border:1px solid var(--line);border-radius:6px;padding:8px 12px;background:var(--card);font-size:13.5px}.card{background:var(--card);border:1px solid var(--line);border-radius:8px}.table-wrap{overflow-x:auto}table.data{width:100%;border-collapse:collapse;font-size:13px}table.data th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600;padding:9px 12px;border-bottom:1px solid var(--line);white-space:nowrap}table.data td{padding:8px 12px;border-bottom:1px solid #edf1ee;vertical-align:middle}table.data tr:hover td{background:#f2f7f4;cursor:pointer}td.mono,.mono{font-family:var(--font-mono);font-size:12.5px}td.num{text-align:right;font-family:var(--font-mono)}.sched{font-family:var(--font-mono);font-weight:600;font-size:10.5px;border:1.5px solid;border-radius:3px;padding:1px 5px;letter-spacing:.04em}.sched-H,.sched-H1{color:var(--amber);border-color:var(--amber)}.sched-X{color:var(--red);border-color:var(--red)}.tag-art{font-size:10.5px;font-weight:600;letter-spacing:.05em;background:#e5f2ec;color:var(--green);border-radius:3px;padding:2px 6px}.tag-retired{font-size:10.5px;font-weight:600;background:#f0f0ee;color:var(--muted);border-radius:3px;padding:2px 6px}.drawer-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#1228236b;display:flex;justify-content:flex-end}.drawer{width:560px;max-width:96vw;background:var(--card);height:100%;display:flex;flex-direction:column;box-shadow:-8px 0 28px #00000024}.drawer header{padding:16px 22px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.drawer header h2{font-size:16px}.drawer .body{flex:1;overflow-y:auto;padding:18px 22px;display:grid;grid-template-columns:1fr 1fr;gap:14px 16px}.drawer .body .span2{grid-column:1 / -1}.drawer footer{padding:14px 22px;border-top:1px solid var(--line);display:flex;gap:10px;justify-content:flex-end}.login-wrap{height:100%;display:grid;place-items:center;background:linear-gradient(160deg,#17332df5,#17332de0),repeating-linear-gradient(90deg,transparent 0 46px,rgba(255,255,255,.045) 46px 47px)}.login-card{width:360px;background:var(--card);border-radius:10px;padding:30px 30px 26px;box-shadow:0 18px 50px #00000059}.login-card h1{font-size:19px;margin-bottom:2px}.login-card .sub{font-family:var(--font-mono);font-size:11px;color:var(--muted);letter-spacing:.1em;margin-bottom:20px}.login-card form{display:flex;flex-direction:column;gap:14px}.login-card .btn{margin-top:4px;padding:9px}.login-err{background:#fbeeed;color:var(--red);border:1px solid #ecc7c4;border-radius:5px;padding:8px 10px;font-size:12.5px}.empty{padding:42px;text-align:center;color:var(--muted);font-size:13.5px}.toast{position:fixed;bottom:22px;right:24px;background:var(--ink);color:#fff;border-radius:6px;padding:10px 16px;font-size:13px;box-shadow:0 8px 24px #00000040}@media (prefers-reduced-motion: no-preference){.drawer{animation:slidein .18s ease-out}@keyframes slidein{0%{transform:translate(24px);opacity:0}}}@media (max-width: 860px){.sidebar{width:64px}.sidebar .brand,.nav-group,.sidebar .userbox{display:none}.nav-link{padding:10px 8px;font-size:11px;text-align:center;border-left-width:0;border-left:none}.main{padding:14px}.search-input{width:100%}}
