:root{--ink:#16263a;--muted:#66778b;--brand:#1d527c;--brand-deep:#123c61;--brand-pale:#edf5fa;--line:#dbe5ed;--surface:#fff;--canvas:#f4f7fa;--danger:#bd332b;--danger-pale:#fff0ee;--warning:#9b6114;--warning-pale:#fff7e9;--success:#257153;--success-pale:#eaf7f0;--shadow:0 14px 34px #16263a14}*{box-sizing:border-box}html,body{background:var(--canvas);min-height:100%;color:var(--ink);margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif}button,input,select,textarea{font:inherit}button,.button{border:1px solid var(--brand);background:var(--brand);color:#fff;cursor:pointer;white-space:nowrap;border-radius:8px;justify-content:center;align-items:center;min-height:38px;padding:8px 13px;font-size:14px;font-weight:650;text-decoration:none;transition:background .15s,border-color .15s,transform .15s;display:inline-flex}button:hover,.button:hover{background:var(--brand-deep);border-color:var(--brand-deep)}button:active,.button:active{transform:translateY(1px)}button:disabled{opacity:.58;cursor:wait;transform:none}button.secondary,.button.secondary{background:var(--surface);color:var(--brand);border-color:#b9cede}button.secondary:hover,.button.secondary:hover{background:var(--brand-pale);border-color:#8fb1c8}button:focus-visible,.button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline-offset:2px;outline:3px solid #93c6e5}.app-shell{min-height:100vh}.topbar{background:linear-gradient(110deg, #153f64, var(--brand));color:#fff;justify-content:space-between;align-items:center;gap:20px;padding:16px max(20px,50vw - 710px);display:flex;box-shadow:0 2px 12px #0b2a4433}.brand{align-items:center;gap:12px;display:flex}.brand-mark{letter-spacing:.04em;background:#ffffff21;border:1px solid #ffffff52;border-radius:11px;place-items:center;width:38px;height:38px;font-weight:800;display:grid}.topbar h1{letter-spacing:.01em;margin:0;font-size:20px}.topbar p{color:#ffffffc2;margin:4px 0 0;font-size:12px}.account{align-items:center;gap:10px;font-size:14px;display:flex}.role-chip{background:#ffffff1f;border:1px solid #ffffff40;border-radius:999px;padding:4px 8px;font-size:12px}.link-button{color:#fff;text-underline-offset:3px;background:0 0;border:0;min-height:auto;padding:3px 0;font-weight:500;text-decoration:underline}.link-button:hover{background:0 0;border-color:#0000}.nav-tabs{border-bottom:1px solid var(--line);background:#fffffff2;gap:7px;padding:10px max(20px,50vw - 710px);display:flex}.nav-tabs button{color:#4d6073;background:0 0;border:0;border-radius:7px;min-height:34px;padding:7px 13px;font-size:14px;font-weight:600}.nav-tabs button:hover{color:var(--brand);background:#f0f5f8}.nav-tabs button.active{background:var(--brand-pale);color:var(--brand-deep)}.content{max-width:1420px;margin:0 auto;padding:28px 20px 54px}.loading{min-height:100vh;color:var(--muted);place-items:center;display:grid}.notice{color:#174765;background:#edf7ff;border:1px solid #b8d7e9;border-radius:9px;justify-content:space-between;align-items:center;max-width:1380px;margin:15px auto 0;padding:10px 14px;display:flex;box-shadow:0 6px 18px #16527c0f}.notice button{min-height:auto;color:var(--brand);background:0 0;border:0;padding:0 5px;font-size:20px}.section-heading{justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:17px;display:flex}.section-heading h2{letter-spacing:-.02em;margin:2px 0 0;font-size:25px}.section-heading p{color:var(--muted);margin:6px 0 0;font-size:14px}.eyebrow{color:var(--brand);letter-spacing:.08em;text-transform:uppercase;font-size:12px;font-weight:750}.count-pill{background:var(--danger-pale);min-width:26px;height:26px;color:var(--danger);vertical-align:3px;border-radius:999px;place-items:center;margin-left:5px;font-size:14px;display:inline-grid}.heading-actions{flex-wrap:wrap;gap:8px;display:flex}.table-wrap{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);border-radius:13px;overflow-x:auto}table{border-collapse:collapse;width:100%;min-width:1040px}th{border-bottom:1px solid var(--line);color:#607184;letter-spacing:.02em;text-align:left;white-space:nowrap;background:#f6f9fb;padding:12px 13px;font-size:12px;font-weight:750}td{vertical-align:middle;border-bottom:1px solid #e8eef3;padding:14px 13px;font-size:14px}tbody tr{transition:background .15s}tbody tr:hover{background:#fbfdff}tbody tr:last-child td{border-bottom:0}td small{color:var(--muted);margin-top:4px;font-size:12px;display:block}.severe-row{background:#fff8f7}.severe-row:hover{background:#fff3f1}.danger-text{color:var(--danger);font-size:15px;display:block}.badge{color:#52667a;white-space:nowrap;background:#eef3f7;border-radius:999px;align-items:center;padding:4px 8px;font-size:12px;font-weight:700;line-height:1;display:inline-flex}.badge.severe{color:var(--danger);background:#fde5e2}.badge.success{background:var(--success-pale);color:var(--success)}.badge.warning{background:var(--warning-pale);color:var(--warning)}.badge.progress{background:var(--brand-pale);color:var(--brand)}.badge.neutral{color:#52667a;background:#eef3f7}.muted{color:var(--muted)}.row-actions{flex-wrap:wrap;gap:6px;display:flex}.row-actions button,.row-actions .button{border-radius:6px;min-height:30px;padding:5px 8px;font-size:12px}.empty{color:var(--muted);text-align:center;padding:42px 20px}.empty strong,.empty span{display:block}.empty strong{color:#4e6275;margin-bottom:5px;font-size:15px}.empty span{font-size:13px}.form-card{border:1px solid var(--line);background:var(--surface);max-width:980px;box-shadow:var(--shadow);border-radius:13px;padding:25px}.form-grid{grid-template-columns:1fr 1fr;gap:19px;display:grid}.form-grid label,.modal label,.login-form label{color:#34475a;flex-direction:column;gap:7px;font-size:14px;font-weight:700;display:flex}input,select,textarea{width:100%;color:var(--ink);background:#fff;border:1px solid #c4d1dc;border-radius:8px;padding:10px 11px}input::placeholder,textarea::placeholder{color:#94a1ad}textarea{resize:vertical;min-height:82px}.span-2{grid-column:1/-1}.initial-plan-grid{grid-template-columns:1fr 1fr;gap:19px;display:grid}.input-with-button{gap:8px;display:flex}.input-with-button input,.input-with-button select{flex:1}.helper-text{color:var(--muted);font-size:12px;font-weight:500;line-height:1.45}fieldset{border:1px solid var(--line);border-radius:8px;min-width:0;padding:10px 12px}legend{color:#34475a;padding:0 4px;font-size:14px;font-weight:700}.checkboxes{flex-wrap:wrap;gap:10px 16px;display:flex}.checkboxes label{color:#53677a;flex-direction:row;align-items:center;font-weight:550}.checkboxes input{width:auto;accent-color:var(--brand)}.inline-add{gap:8px;margin-top:8px;display:flex}.inline-add input{min-width:0}.form-error{background:var(--danger-pale);color:var(--danger);white-space:pre-line;border:1px solid #f2c9c4;border-radius:8px;margin:0;padding:10px 11px}.search-bar{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);border-radius:13px;grid-template-columns:1fr 1fr 1fr auto;gap:10px;margin-bottom:17px;padding:14px;display:grid}.modal-backdrop{z-index:20;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0c1c2c94;place-items:center;padding:20px;display:grid;position:fixed;inset:0;overflow:auto}.modal-backdrop.top{z-index:30}.modal{background:var(--surface);border-radius:14px;flex-direction:column;gap:17px;width:min(540px,100%);max-height:90vh;padding:23px;display:flex;overflow:auto;box-shadow:0 24px 65px #0716244d}.modal.wide{width:min(940px,100%)}.modal-title{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.modal-title h2{margin:2px 0 0;font-size:21px}.modal-title p{color:var(--muted);margin:5px 0 0;font-size:13px}.modal-title>button{color:#627487;background:0 0;border:0;min-height:auto;padding:0 5px;font-size:25px}.modal-title>button:hover{color:var(--ink);background:0 0}.modal-actions{justify-content:flex-end;gap:8px;padding-top:2px;display:flex}.detail-grid{border:1px solid var(--line);background:#fbfcfd;border-radius:10px;grid-template-columns:repeat(3,1fr);gap:0;display:grid;overflow:hidden}.detail-grid p{border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-height:70px;margin:0;padding:12px 14px}.detail-grid p:nth-child(3n){border-right:0}.detail-grid p:nth-last-child(-n+3){border-bottom:0}.detail-grid p>span:first-child{color:var(--muted);margin-bottom:5px;font-size:12px;display:block}.detail-grid p>strong .badge{vertical-align:middle}.modal h3{color:#34475a;margin:2px 0 -6px;font-size:15px}.task-list{flex-direction:column;gap:8px;display:flex}.task-list>div{border:1px solid var(--line);background:#fbfcfd;border-radius:9px;justify-content:space-between;align-items:center;gap:12px;padding:12px;display:flex}.task-list>div.task-pending{background:#f3f9fd;border-color:#a5c3d7}.task-list>div.task-uncertain{background:var(--warning-pale);border-color:#e1ad62}.task-list small{color:var(--muted);margin-top:5px;font-size:12px;display:block}.uncertain-inline{color:var(--warning);flex-wrap:wrap;gap:5px 12px;margin-top:8px;font-size:12px;display:flex}.uncertain-panel{background:var(--warning-pale);color:var(--warning);border:1px solid #e1ad62;border-radius:9px;flex-direction:column;gap:5px;padding:12px;display:flex}.uncertain-panel span{font-size:13px;line-height:1.55}.log-list{border:1px solid var(--line);border-radius:9px;max-height:230px;overflow:auto}.log-list p{color:#415568;border-bottom:1px solid #edf1f4;margin:0;padding:10px 12px;font-size:13px}.log-list p:last-child{border-bottom:0}.log-list time{min-width:148px;color:var(--muted);display:inline-block}.log-list strong{color:var(--ink);margin-right:5px}.login-page{background:radial-gradient(circle at 15% 15%,#dceef8,#0000 31%),linear-gradient(135deg,#eef4f8,#e7eef4);place-items:center;min-height:100vh;padding:22px;display:grid}.login-card{background:#fffffff5;border:1px solid #d7e2ea;border-radius:15px;width:min(458px,100%);padding:31px;box-shadow:0 20px 48px #153a5824}.login-card h1{letter-spacing:-.02em;margin:5px 0 8px;font-size:26px}.login-card>div>p{color:var(--muted);margin:0}.login-form{flex-direction:column;gap:15px;margin:25px 0;display:flex}.demo-accounts{border-top:1px solid var(--line);color:var(--muted);flex-direction:column;gap:5px;padding-top:16px;font-size:12px;display:flex}.demo-accounts strong{color:var(--ink);margin-bottom:3px;font-size:13px}@media (width<=760px){.topbar{flex-direction:column;align-items:flex-start;gap:12px;padding:15px 16px}.topbar h1{font-size:18px}.account{justify-content:flex-end;width:100%}.nav-tabs{padding:9px 12px;overflow-x:auto}.nav-tabs button{flex:none}.content{padding:22px 12px 42px}.section-heading{flex-direction:column;align-items:flex-start;gap:13px}.section-heading h2{font-size:23px}.heading-actions{width:100%}.heading-actions>*{flex:1}.form-card{padding:18px 15px}.form-grid,.detail-grid,.initial-plan-grid{grid-template-columns:1fr}.span-2{grid-column:auto}.input-with-button{align-items:stretch}.input-with-button button{padding-inline:9px;font-size:12px}.inline-add{flex-direction:column}.search-bar{grid-template-columns:1fr;padding:12px}.table-wrap{box-shadow:none;background:0 0;border:0;overflow:visible}table,tbody,tr,td{width:100%;min-width:0;display:block}thead{display:none}tbody{flex-direction:column;gap:10px;display:flex}tbody tr{border:1px solid var(--line);background:var(--surface);border-radius:11px;overflow:hidden;box-shadow:0 5px 15px #16263a0b}tbody tr.severe-row{background:#fffaf9;border-color:#edc7c2}tbody tr:hover{background:var(--surface)}td{text-align:left;border-bottom:1px solid #edf1f4;grid-template-columns:106px minmax(0,1fr);gap:12px;min-height:45px;padding:10px 12px;display:grid}td:before{content:attr(data-label);color:var(--muted);font-size:12px;font-weight:700}td:last-child{border-bottom:0}td.empty{border:0;padding:30px 16px;display:block}td.empty:before{display:none}.row-actions{justify-content:flex-start}.detail-grid p,.detail-grid p:nth-child(3n),.detail-grid p:nth-last-child(-n+3){border-right:0;border-bottom:1px solid var(--line);min-height:auto}.detail-grid p:last-child{border-bottom:0}.modal-backdrop{align-items:end;padding:0}.modal,.modal.wide{border-radius:16px 16px 0 0;width:100%;max-height:92vh;padding:20px 16px}.task-list>div{flex-direction:column;align-items:flex-start}.log-list time{min-width:auto;margin-right:6px}}
