:root{--bg:#0b0e13;--bg-elev:#12171f;--bg-panel:#161c26;--bg-hover:#1d2532;--line:#2a3344;--line-strong:#3a465c;--text:#e8edf5;--muted:#8b97ab;--dim:#5d6b80;--accent:#3d9cf0;--accent-2:#5ee0b5;--warn:#e8b86d;--danger:#ef6b7b;--ok:#5ee0b5;--chip:#243044;--shadow:0 12px 40px #00000059;--radius:12px;--font:"IBM Plex Sans", "Segoe UI", system-ui, sans-serif;--mono:"IBM Plex Mono", "SF Mono", ui-monospace, monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}button,input,select,textarea{font-family:inherit}a{color:var(--accent)}.app{grid-template-columns:260px 1fr;min-height:100%;display:grid}.sidebar{border-right:1px solid var(--line);background:#0d1118;flex-direction:column;gap:8px;height:100vh;padding:20px 14px;display:flex;position:sticky;top:0}.brand{padding:4px 10px 16px}.brand h1{letter-spacing:.04em;margin:0 0 6px;font-size:15px;font-weight:650}.brand .label{color:var(--muted);letter-spacing:.02em;font-size:11px}.brand .tag{color:var(--accent-2);margin-top:10px;font-size:12px;font-style:italic;line-height:1.4}.nav-btn{color:var(--text);cursor:pointer;text-align:left;background:0 0;border:1px solid #0000;border-radius:8px;justify-content:space-between;align-items:center;gap:8px;padding:9px 10px;font-size:13.5px;display:flex}.nav-btn:hover{background:var(--bg-hover)}.nav-btn.active{color:#d6e8ff;background:#1a2740;border-color:#2d4a73}.nav-btn .count{font-family:var(--mono);color:var(--muted);font-size:11px}.nav-btn.active .count{color:var(--accent-2)}.entity-switcher{border:1px solid var(--line);background:#121820;border-radius:10px;margin:0 4px 12px;padding:10px}.entity-switcher-label{text-transform:uppercase;letter-spacing:.06em;color:var(--dim);margin-bottom:8px;font-size:10px}.entity-switcher-btns{flex-wrap:wrap;gap:6px;display:flex}.entity-btn{border:1px solid var(--line);min-width:0;color:var(--muted);cursor:pointer;background:#0e131b;border-radius:8px;flex-direction:column;flex:1;align-items:flex-start;gap:2px;padding:8px 10px;font-size:12.5px;font-weight:600;display:flex}.entity-btn:hover{border-color:var(--line-strong);color:var(--text)}.entity-btn.active{color:#d6e8ff;background:#1a2740;border-color:#3d6aa3}.entity-btn .entity-state{font-family:var(--mono);color:var(--accent-2);opacity:.9;font-size:10px;font-weight:500}.entity-active-name{color:var(--muted);margin-top:8px;font-size:11px;line-height:1.35}.sidebar-foot{border-top:1px solid var(--line);flex-direction:column;gap:8px;margin-top:auto;padding:12px 4px 4px;display:flex}.saved{color:var(--dim);font-size:11px;font-family:var(--mono)}.main{max-width:1280px;padding:28px 36px 48px}.page-head{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:22px;display:flex}.page-head h2{margin:0 0 6px;font-size:26px;font-weight:650}.page-head p{color:var(--muted);max-width:640px;margin:0;line-height:1.5}.grid{gap:14px;display:grid}.grid-2{grid-template-columns:1fr 1fr}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}.grid-5{grid-template-columns:repeat(5,1fr)}.card{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px}.card h3{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;margin:0 0 10px;font-size:14px;font-weight:600}.card.stat .num{font-size:28px;font-weight:650;font-family:var(--mono)}.card.stat .sub{color:var(--muted);margin-top:4px;font-size:12px}.card.clickable{cursor:pointer}.card.clickable:hover{border-color:var(--line-strong);background:var(--bg-panel)}label.field{color:var(--muted);flex-direction:column;gap:6px;font-size:12px;display:flex}label.field span.req:after{content:" *";color:var(--warn)}input,select,textarea{border:1px solid var(--line);color:var(--text);background:#0e131b;border-radius:8px;padding:9px 10px;font-size:13.5px}input:focus,select:focus,textarea:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #3d9cf026}textarea{resize:vertical;min-height:72px}.full{grid-column:1/-1}.btn{color:var(--text);cursor:pointer;background:#1d2b44;border:1px solid #35507a;border-radius:8px;padding:8px 12px;font-size:13px}.btn:hover{background:#243655}.btn.primary{background:#1e6fd4;border-color:#3d9cf0}.btn.primary:hover{background:#2480ee}.btn.ghost{border-color:var(--line);color:var(--muted);background:0 0}.btn.ok{color:var(--ok);background:#16483a;border-color:#2e8f70}.btn.warn{color:var(--warn);background:#3d2e14;border-color:#8a6a2a}.btn.danger{color:#f3a0aa;background:#3a1a22;border-color:#8a3340}.btn-row{flex-wrap:wrap;gap:8px;display:flex}.chip{background:var(--chip);border:1px solid var(--line);color:var(--muted);border-radius:999px;align-items:center;gap:6px;padding:3px 10px;font-size:11px;display:inline-flex}.chip.ok{color:var(--ok);background:#14342c;border-color:#2e8f70}.chip.warn{color:var(--warn);background:#2e2412;border-color:#8a6a2a}.chip.danger{color:#f3a0aa;background:#2e151b;border-color:#8a3340}.chip.info{color:#b7d4f5;background:#172334;border-color:#35507a}table{border-collapse:collapse;width:100%;font-size:13px}th{text-align:left;color:var(--muted);letter-spacing:.04em;text-transform:uppercase;border-bottom:1px solid var(--line);padding:8px;font-size:11px;font-weight:600}td{vertical-align:top;border-bottom:1px solid #1c2430;padding:8px}td input,td select,td textarea{width:100%;min-width:80px}.table-wrap{overflow-x:auto}.wizard-steps{flex-wrap:wrap;gap:8px;margin-bottom:18px;display:flex}.wizard-steps button{background:var(--bg-panel);border:1px solid var(--line);min-width:120px;color:var(--muted);cursor:pointer;border-radius:8px;flex:1;padding:10px;font-size:12px}.wizard-steps button.on{border-color:var(--accent);color:var(--text);background:#1a2740}.day-grid{grid-template-columns:repeat(5,1fr);gap:10px;display:grid}.day-card{background:var(--bg-elev);border:1px solid var(--line);cursor:pointer;border-radius:10px;min-height:110px;padding:12px}.day-card:hover{border-color:var(--line-strong)}.day-card.locked{opacity:.45;cursor:default}.day-card.open{border-color:#2d4a73}.day-card.done{border-color:#2e8f70}.day-card .d{font-family:var(--mono);color:var(--accent);font-size:12px}.day-card h4{margin:6px 0 8px;font-size:14px}.progress{background:#1c2430;border-radius:99px;height:4px;overflow:hidden}.progress>span{background:var(--accent-2);height:100%;display:block}.modal-back{z-index:40;background:#04060ab8;justify-content:center;align-items:flex-start;padding:48px 20px;display:flex;position:fixed;inset:0;overflow:auto}.modal{border:1px solid var(--line-strong);width:min(860px,100%);box-shadow:var(--shadow);background:#12171f;border-radius:14px;padding:22px}.modal h3{margin:0 0 6px}.modal .sub{color:var(--muted);margin:0 0 16px;font-size:13px}.official{color:var(--dim);margin-top:10px;font-size:12px}.official a{color:var(--muted)}.score-row{grid-template-columns:140px 1fr 56px;align-items:center;gap:10px;margin-bottom:10px;display:grid}.score-row input[type=range]{width:100%;accent-color:var(--accent)}.check-row{border-bottom:1px solid #1c2430;align-items:flex-start;gap:10px;padding:8px 0;display:flex}.check-row input{margin-top:3px}.gate{background:#221b10;border:1px dashed #8a6a2a;border-radius:10px;padding:14px 16px}.gate.locked{border-color:#8a6a2a}.gate.open{background:#10241d;border-color:#2e8f70}@media (width<=980px){.app{grid-template-columns:1fr}.sidebar{height:auto;position:relative}.grid-2,.grid-3,.grid-4,.grid-5,.day-grid{grid-template-columns:1fr 1fr}}@media (width<=640px){.main{padding:18px 14px 40px}.grid-2,.grid-3,.grid-4,.grid-5,.day-grid{grid-template-columns:1fr}}.execute-flow{border:1px solid var(--line-strong);border-radius:var(--radius);background:#0f141c;margin-top:14px;padding:14px 16px}.execute-flow.compact{margin-top:10px}.execute-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px;display:flex}.execute-hint{color:var(--muted);margin:4px 0 0;font-size:12px;line-height:1.4}.execute-stages{margin-bottom:12px}.execute-pane{margin-top:4px}.execute-copy{color:var(--muted);margin:0 0 12px;font-size:13px;line-height:1.5}.packet-summary{border:1px solid var(--line);border-radius:8px;overflow:hidden}.packet-row{border-bottom:1px solid #1c2430;grid-template-columns:160px 1fr;gap:10px;padding:8px 12px;font-size:13px;display:grid}.packet-row:last-child{border-bottom:none}.packet-row .k{color:var(--muted);font-size:12px}.packet-row .v{color:var(--text);word-break:break-word}.readiness-list{flex-direction:column;gap:6px;display:flex}.readiness-item{border:1px solid var(--line);background:var(--bg-panel);border-radius:8px;align-items:flex-start;gap:10px;padding:8px 10px;font-size:13px;display:flex}.readiness-item .mark{font-family:var(--mono);text-align:center;flex-shrink:0;width:18px}.readiness-item.ok{background:#10241d;border-color:#2e8f70}.readiness-item.ok .mark{color:var(--ok)}.readiness-item.warn{background:#2e2412;border-color:#8a6a2a}.readiness-item.warn .mark{color:var(--warn)}.readiness-item.block{background:#2e151b;border-color:#8a3340}.readiness-item.block .mark{color:#f3a0aa}.btn:disabled{opacity:.45;cursor:not-allowed}.disk-save{opacity:.75;margin-top:.25rem;font-size:.7rem;line-height:1.3}label.field.field-missing{border:1px solid var(--danger,#e03131);background:#e0313114;border-radius:10px;padding:10px}label.field .missing-label,label.field span.missing-label{font-weight:650;color:var(--danger,#e03131)!important}.identity-missing-banner{border:1px solid var(--danger,#e03131);color:var(--danger,#e03131);background:#e031311f;border-radius:12px;margin-bottom:14px;padding:12px 14px}.identity-missing-banner ul{margin:8px 0 0;padding-left:1.2rem}.identity-missing-banner li{margin:2px 0}
