/* ═══ KSP管理后台 Design System ═══ */ /* ═══ Phase 1: CSS Variables + Layout + Components ═══ */ /* ─── Dark Theme (Default) ─── */ :root { --bg:#0B0B10;--surface:#131318;--surface2:#1a1a22;--border:rgba(248,250,252,.06); --text:#F8FAFC;--muted:#94A3B8;--accent:#3B82F6;--accent-glow:rgba(59,130,246,.3); --green:#22c55e;--amber:#eab308;--red:#ef4444;--cyan:#06b6d4;--purple:#a855f7; --radius:6px;--sidebar-w:224px;--topbar-h:42px; --font-data:'SF Mono','Cascadia Code','Consolas',monospace; --font-ui:system-ui,-apple-system,'Segoe UI',sans-serif; color-scheme:dark; } /* ─── Light Theme ─── */ [data-theme="light"] { --bg:#F1F5F9;--surface:#FFFFFF;--surface2:#F8FAFC;--border:rgba(0,0,0,.06); --text:#0F172A;--muted:#64748B;--accent:#2563EB;--accent-glow:rgba(37,99,235,.15); color-scheme:light; } /* ─── Reset ─── */ *{margin:0;padding:0;box-sizing:border-box} body{background:var(--bg);color:var(--text);font-family:var(--font-ui);height:100vh;overflow:hidden;display:flex;flex-direction:column} a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline} ::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px} /* ─── Topbar ─── */ #topbar{height:var(--topbar-h);display:flex;align-items:center;gap:12px;padding:0 14px;background:var(--surface);border-bottom:1px solid var(--border);z-index:30;flex-shrink:0} .brand{font-family:var(--font-data);font-size:.78rem;font-weight:600;letter-spacing:-.02em}.brand b{color:var(--accent)} .tb-sp{flex:1} .tb-time{display:flex;align-items:center;gap:5px} .tb-time .l{font-size:.62rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em} .tb-time .td{font-family:var(--font-data);font-size:.74rem;color:var(--accent);background:rgba(59,130,246,.06);padding:3px 8px;border-radius:4px;cursor:pointer;border:1px solid transparent;transition:.15s} .tb-time .td:hover{background:rgba(59,130,246,.12);border-color:var(--accent-glow)} /* ─── Buttons ─── */ .b{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:4px;font-family:var(--font-ui);font-size:.7rem;cursor:pointer;border:1px solid var(--border);background:transparent;color:var(--muted);transition:.15s;white-space:nowrap} .b:hover{background:rgba(128,128,128,.08);color:var(--text)} .b.ac{background:var(--accent);color:#fff;border-color:var(--accent)}.b.ac:hover{box-shadow:0 0 10px var(--accent-glow)} .b.sm{padding:2px 6px;font-size:.64rem}.b.dg{border-color:var(--red);color:var(--red)}.b.dg:hover{background:rgba(239,68,68,.08)} /* ─── Layout ─── */ #layout{display:flex;flex:1;overflow:hidden} #sidebar{width:var(--sidebar-w);flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);overflow-y:auto;padding:6px 0;user-select:none} #content{flex:1;overflow-y:auto;padding:20px 24px;position:relative} .pg{display:none}.pg.act{display:block} /* ─── Sidebar Navigation ─── */ .nst{display:flex;align-items:center;gap:6px;padding:8px 14px 2px;font-family:var(--font-data);font-size:.6rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;cursor:pointer} .nst .ar{font-size:.5rem;transition:transform .15s;opacity:.4} .nst.on .ar{transform:rotate(-90deg)} .nst.on+.niw{display:none} .niw{padding-bottom:2px} .ni{display:flex;align-items:center;gap:8px;padding:6px 14px;cursor:pointer;font-size:.76rem;color:var(--muted);transition:.1s;border-left:2px solid transparent} .ni:hover{color:var(--text);background:rgba(128,128,128,.03)} .ni.act{color:var(--text);background:rgba(59,130,246,.05);border-left-color:var(--accent)} .ni .ic{width:16px;height:16px;display:flex;align-items:center;justify-content:center;font-size:.8rem;flex-shrink:0;opacity:.6} .ni.su{padding-left:36px;font-size:.72rem} /* ─── Page Header ─── */ .ph{margin-bottom:18px}.ph .ey{font-family:var(--font-data);font-size:.6rem;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:2px} .ph h1{font-family:var(--font-data);font-size:1.1rem;font-weight:600}.ph p{color:var(--muted);font-size:.72rem;margin-top:1px} .ph-row{display:flex;align-items:center;justify-content:space-between} /* ─── Metric Cards ─── */ .mg{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:18px} .mc{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;transition:border-color .15s} .mc:hover{border-color:rgba(248,250,252,.1)} .mc .l{font-family:var(--font-data);font-size:.6rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px} .mc .v{font-family:var(--font-data);font-size:1.6rem;font-weight:600}.mc .s{font-size:.66rem;color:var(--muted);margin-top:2px} .mc.ac .v{color:var(--accent)}.mc.gn .v{color:var(--green)}.mc.am .v{color:var(--amber)} /* ─── Status Board ─── */ .stl{font-family:var(--font-data);font-size:.68rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px} .sgr{display:flex;flex-direction:column;gap:6px;margin-bottom:16px} .sgi{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden} .sgh{display:flex;align-items:center;gap:8px;padding:8px 14px;border-bottom:1px solid var(--border);font-family:var(--font-data);font-size:.66rem;font-weight:500;cursor:pointer;user-select:none} .sdt{width:6px;height:6px;border-radius:50%;flex-shrink:0} .sdt.tf{background:var(--amber);box-shadow:0 0 5px var(--amber)}.sdt.ex{background:var(--accent);box-shadow:0 0 5px var(--accent-glow)} .sdt.mt{background:var(--purple);box-shadow:0 0 5px var(--purple)}.sdt.dk{background:var(--green);box-shadow:0 0 5px var(--green)} .scc{color:var(--muted);font-size:.64rem;margin-left:auto} .srw{display:flex;align-items:center;gap:10px;padding:5px 14px 5px 30px;font-size:.74rem;transition:background .1s} .srw:hover{background:rgba(128,128,128,.02)} .srw .an{color:var(--accent);cursor:pointer;flex:1;font-weight:500}.srw .an:hover{text-decoration:underline} .srw .am{color:var(--muted);font-size:.66rem}.srw .al{color:var(--muted);font-size:.66rem;font-family:var(--font-data)} /* ─── Events ─── */ .evl{display:flex;flex-direction:column;gap:3px;margin-bottom:18px} .evr{display:flex;align-items:center;gap:10px;padding:7px 10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);font-size:.74rem} .evr .ed{font-family:var(--font-data);font-size:.66rem;color:var(--amber);min-width:76px} .evr .eb{font-family:var(--font-data);font-size:.6rem;padding:2px 6px;border-radius:3px;background:rgba(234,179,8,.08);color:var(--amber)} /* ─── Filter Bar ─── */ .fb{display:flex;align-items:center;gap:8px;margin-bottom:12px;flex-wrap:wrap} .fb input[type=text],.fb select,.fb input[type=date]{padding:5px 8px;border-radius:4px;background:var(--surface2);color:var(--text);border:1px solid var(--border);font-size:.72rem} .fb input[type=text]{width:180px} .fb input[type=text]:focus,.fb select:focus,.fb input[type=date]:focus{outline:none;border-color:var(--accent)} .fb label{display:flex;align-items:center;gap:4px;font-size:.7rem;color:var(--muted);cursor:pointer} /* ─── Data Tables ─── */ table{width:100%;border-collapse:collapse;font-size:.74rem} th,td{padding:6px 10px;text-align:left;border-bottom:1px solid var(--border)} th{font-family:var(--font-data);font-size:.62rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;cursor:pointer;user-select:none;white-space:nowrap} th:hover{color:var(--text)} .th-sa{color:var(--accent);margin-left:2px} td{color:var(--text)} td.mt{color:var(--muted);font-size:.68rem} tr:hover td{background:rgba(128,128,128,.015)} .act-btn{display:inline-flex;gap:4px;font-size:.68rem} .act-btn a{color:var(--muted);text-decoration:none;padding:2px 5px;border-radius:3px;transition:.1s} .act-btn a:hover{background:var(--border);color:var(--text)} /* ─── Pagination ─── */ .pg-bar{display:flex;align-items:center;gap:3px;margin-top:12px;font-size:.7rem} .pg-bar span,.pg-bar a{padding:3px 7px;border-radius:4px;color:var(--muted);text-decoration:none} .pg-bar a:hover{background:var(--border);color:var(--text)}.pg-bar .cur{background:var(--accent);color:#fff} /* ─── Timeline ─── */ .tl-r{display:flex;align-items:center;gap:8px;padding:5px 8px;margin-bottom:2px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);font-size:.72rem} .tl-bar{flex:1;height:5px;border-radius:3px;background:var(--border);position:relative;overflow:hidden} .tl-fl{position:absolute;top:0;height:100%;border-radius:3px;opacity:.75} .tl-fl.warning{background:var(--amber)}.tl-fl.primary{background:var(--accent)}.tl-fl.mt,.tl-fl.neutral{background:var(--purple)}.tl-fl.soft{background:var(--green)}.tl-fl.dk{background:var(--green)} .tl-fl.warning.current{background:var(--amber);box-shadow:0 0 6px var(--amber)} .tl-fl.primary.current{background:var(--accent);box-shadow:0 0 6px var(--accent)} .tl-fl.neutral.current{background:var(--purple);box-shadow:0 0 6px var(--purple)} .tl-fl.soft.current{background:var(--green);box-shadow:0 0 6px var(--green)} .tl-scale{display:flex;margin-bottom:6px;font-size:.58rem;color:var(--muted);text-align:center;border-bottom:1px solid var(--border);padding-bottom:4px} .tl-scale>div{flex:1} /* ─── Fuel Converter ─── */ .cvw{display:flex;gap:16px}.cvw form{display:flex;flex-direction:column;gap:8px;width:260px} .cvw form label{font-size:.72rem;color:var(--muted)}.cvw form input,.cvw form select{padding:5px 8px;border-radius:4px;background:var(--surface2);color:var(--text);border:1px solid var(--border)} .cvw .res{flex:1} /* ─── Modals ─── */ .modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:100;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .2s} .modal-bg.open{opacity:1;pointer-events:auto} .modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;width:400px;max-height:80vh;overflow-y:auto} .modal h2{font-family:var(--font-data);font-size:.85rem;margin-bottom:14px} .modal .fg{display:flex;flex-direction:column;gap:8px;margin-bottom:12px} .modal .fg label{font-size:.72rem;color:var(--muted)} .modal .fg input,.modal .fg select,.modal .fg textarea{padding:6px 8px;border-radius:4px;background:var(--bg);color:var(--text);border:1px solid var(--border);font-size:.74rem} .modal .fg textarea{min-height:60px;resize:vertical} .modal .fg input:focus,.modal .fg select:focus,.modal .fg textarea:focus{outline:none;border-color:var(--accent)} .modal .btn-row{display:flex;gap:6px;justify-content:flex-end} /* ─── Location Board ─── */ #map-ct{flex:1;position:relative;display:flex;align-items:center;justify-content:center;background:var(--bg);cursor:grab;overflow:hidden} #map-cv{display:block} #bk-btn{position:absolute;top:10px;left:10px;z-index:5;display:none;background:var(--surface);border:1px solid var(--border);color:var(--text);padding:4px 12px;border-radius:var(--radius);cursor:pointer;font-size:.74rem} #bk-btn.vis{display:block} #scope-ind{position:absolute;top:10px;right:10px;z-index:5;background:rgba(19,19,24,.85);border:1px solid var(--border);color:var(--muted);padding:3px 10px;border-radius:4px;font-size:.68rem;font-family:var(--font-data)} #map-info{width:280px;background:var(--surface);border-left:1px solid var(--border);padding:16px;overflow-y:auto;display:flex;flex-direction:column;gap:14px;flex-shrink:0} #map-info h2{font-family:var(--font-data);font-size:.85rem;font-weight:600;padding-bottom:5px;border-bottom:1px solid var(--border)} .mi-sec h3{font-family:var(--font-data);font-size:.6rem;text-transform:uppercase;color:var(--muted);letter-spacing:.05em;margin-bottom:3px} .mi-val{font-family:var(--font-data);font-size:1.3rem;font-weight:600;color:var(--accent)} .mi-arow{display:flex;justify-content:space-between;align-items:center;padding:4px 0;border-bottom:1px solid var(--border);font-size:.76rem} .mi-arow .n{color:var(--accent);cursor:pointer}.mi-arow .n:hover{text-decoration:underline} .mi-arow .loc{color:var(--muted);font-size:.68rem;font-family:var(--font-data)} /* ─── Location Board Full-Height Page ─── */ .pg.loc{display:none;position:absolute;inset:0;padding:0 !important;z-index:20;background:var(--bg)} .pg.loc.act{display:flex;flex-direction:column} #tl-layout{flex:1;display:flex;overflow:hidden} /* ─── Asset Detail ─── */ .ad-grid{display:grid;grid-template-columns:1fr 280px;gap:16px} .ad-dock{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px} .ad-dock-box{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:6px 0;font-size:.76rem;max-height:120px;overflow-y:auto} .ad-dock-item{display:flex;align-items:center;justify-content:space-between;padding:5px 10px;border-bottom:1px solid var(--border)} .ad-dock-item:last-child{border-bottom:none} .ad-undock{font-size:.68rem;color:var(--red);cursor:pointer;text-decoration:none} .ad-undock:hover{text-decoration:underline} /* ─── Asset Entry Editor ─── */ .asset-entry-hero{display:flex;justify-content:space-between;gap:18px;align-items:stretch;margin-bottom:14px;padding:18px;background:linear-gradient(135deg,var(--surface),var(--surface2));border:1px solid var(--border);border-radius:var(--radius)} .asset-entry-title-block{display:grid;align-content:center;min-width:0} .asset-entry-crumbs{display:flex;gap:7px;align-items:center;flex-wrap:wrap;color:var(--muted);font-family:var(--font-data);font-size:.6rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;margin-bottom:8px} .asset-entry-crumbs span:nth-child(even){color:rgba(148,163,184,.48)} .asset-entry-title-block h1{font-family:var(--font-data);font-size:1.35rem;line-height:1.12;font-weight:700;letter-spacing:0;overflow-wrap:anywhere} .asset-entry-title-block p{color:var(--muted);font-size:.74rem;margin-top:7px} .asset-entry-status-grid{display:grid;grid-template-columns:repeat(2,minmax(140px,1fr));gap:9px;min-width:430px} .asset-entry-stat{padding:12px;background:rgba(128,128,128,.035);border:1px solid var(--border);border-radius:var(--radius)} .asset-entry-stat span{display:block;color:var(--muted);font-family:var(--font-data);font-size:.58rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase} .asset-entry-stat strong{display:block;margin-top:7px;font-family:var(--font-data);font-size:.78rem;line-height:1.35;overflow-wrap:anywhere} .asset-entry-stat.active{border-color:rgba(34,197,94,.32);background:rgba(34,197,94,.08)} .asset-entry-stat.active strong{color:var(--green)} .asset-entry-layout{display:grid;grid-template-columns:390px minmax(0,1fr);gap:14px;align-items:start} .asset-entry-side{display:grid;gap:14px} .asset-entry-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden} .asset-entry-panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:14px 15px;border-bottom:1px solid var(--border)} .asset-entry-panel-head h2{font-family:var(--font-data);font-size:.95rem;font-weight:700} .asset-entry-panel-head p:not(.asset-entry-kicker){color:var(--muted);font-size:.68rem;line-height:1.45;margin-top:6px;max-width:560px} .asset-entry-kicker{font-family:var(--font-data);font-size:.58rem;color:var(--muted);font-weight:700;letter-spacing:.12em;text-transform:uppercase;margin-bottom:5px} .asset-entry-panel-body{display:grid;gap:13px;padding:15px} .asset-entry-context{display:grid;gap:9px;padding:12px;background:rgba(128,128,128,.035);border:1px solid var(--border);border-radius:var(--radius)} .asset-entry-context div{display:flex;align-items:center;justify-content:space-between;gap:12px} .asset-entry-context span{color:var(--muted);font-family:var(--font-data);font-size:.58rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase} .asset-entry-context strong{text-align:right;font-size:.72rem;overflow-wrap:anywhere} .asset-entry-field{display:grid;gap:6px;min-width:0} .asset-entry-field input,.asset-entry-field select,.asset-entry-field textarea{width:100%;min-height:38px;padding:8px 10px;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:4px;font-family:var(--font-ui);font-size:.74rem} .asset-entry-field input[disabled]{background:var(--surface2);color:var(--muted)} .asset-entry-field textarea{min-height:82px;resize:vertical} .asset-entry-field input:focus,.asset-entry-field select:focus,.asset-entry-field textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)} .asset-entry-help{color:var(--muted);font-size:.64rem;line-height:1.35} .asset-entry-two-col{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px} .asset-entry-type-switch{display:grid;grid-template-columns:1fr 1fr;gap:7px} .asset-entry-type-option{display:flex;align-items:center;justify-content:center;min-height:34px;padding:0 9px;background:rgba(128,128,128,.03);color:var(--muted);border:1px solid var(--border);border-radius:4px;font-size:.68rem;font-weight:700;cursor:pointer} .asset-entry-type-option.active{color:#fff;background:var(--accent);border-color:var(--accent)} .asset-entry-node-panel{min-height:520px} .asset-entry-node-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end} .asset-entry-chip{display:inline-flex;align-items:center;min-height:24px;padding:0 8px;border-radius:4px;background:rgba(59,130,246,.08);border:1px solid rgba(59,130,246,.2);color:var(--accent);font-family:var(--font-data);font-size:.58rem;font-weight:700} .asset-entry-node-summary{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:10px 15px;background:rgba(128,128,128,.025);border-bottom:1px solid var(--border)} .asset-entry-node-count{margin-left:auto;color:var(--cyan);font-family:var(--font-data);font-size:.68rem;font-weight:700} .asset-entry-node-pill{display:inline-flex;align-items:center;justify-content:center;min-height:23px;padding:0 8px;border-radius:999px;border:1px solid var(--border);font-family:var(--font-data);font-size:.56rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase} .asset-entry-node-pill.start{color:var(--green);background:rgba(34,197,94,.08);border-color:rgba(34,197,94,.24)} .asset-entry-node-pill.mid{color:var(--cyan);background:rgba(6,182,212,.08);border-color:rgba(6,182,212,.22)} .asset-entry-node-pill.watch{color:var(--amber);background:rgba(234,179,8,.08);border-color:rgba(234,179,8,.22)} .asset-entry-node-pill.end{color:var(--purple);background:rgba(168,85,247,.08);border-color:rgba(168,85,247,.22)} .asset-entry-rail{display:grid;gap:0;padding:15px} .asset-entry-empty-nodes{display:grid;justify-items:center;gap:8px;padding:42px 18px;background:rgba(128,128,128,.03);border:1px dashed var(--border);border-radius:var(--radius);text-align:center} .asset-entry-empty-nodes strong{font-family:var(--font-data);font-size:.82rem} .asset-entry-empty-nodes span{color:var(--muted);font-size:.72rem} .asset-entry-rail-node{display:grid;grid-template-columns:132px 30px minmax(0,1fr);gap:9px;min-height:84px} .asset-entry-rail-time{color:var(--cyan);font-family:var(--font-data);font-size:.68rem;font-weight:700;line-height:1.35;text-align:right;padding-top:5px;overflow-wrap:anywhere} .asset-entry-rail-line{position:relative;display:flex;justify-content:center} .asset-entry-rail-line::before{content:"";position:absolute;top:0;bottom:0;width:2px;background:var(--border)} .asset-entry-rail-line span{position:relative;z-index:1;width:14px;height:14px;margin-top:4px;border-radius:50%;background:var(--cyan);box-shadow:0 0 0 4px rgba(6,182,212,.12)} .asset-entry-rail-node:last-child .asset-entry-rail-line::before{bottom:calc(100% - 16px)} .asset-entry-rail-copy{padding-bottom:16px;min-width:0} .asset-entry-node-card{display:grid;gap:9px;padding:11px;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);position:relative} .asset-entry-node-card::before{content:"";position:absolute;left:-1px;top:10px;bottom:10px;width:3px;border-radius:3px;background:var(--cyan)} .asset-entry-rail-node:nth-child(1) .asset-entry-node-card::before{background:var(--green)} .asset-entry-rail-node:nth-child(3) .asset-entry-node-card::before{background:var(--amber)} .asset-entry-rail-node:last-child .asset-entry-node-card::before{background:var(--purple)} .asset-entry-node-card-head{display:grid;grid-template-columns:78px minmax(0,1fr) auto;gap:8px;align-items:center} .asset-entry-time-badge{display:inline-flex;align-items:center;justify-content:center;min-height:28px;padding:0 8px;border-radius:4px;background:rgba(6,182,212,.08);border:1px solid rgba(6,182,212,.22);color:var(--cyan);font-family:var(--font-data);font-size:.62rem;font-weight:700;text-align:center} .asset-entry-node-title{min-width:0} .asset-entry-node-title strong{display:block;font-size:.78rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .asset-entry-node-title span{display:block;color:var(--muted);font-size:.68rem;line-height:1.35;margin-top:2px;overflow-wrap:anywhere} .asset-entry-node-fields{display:grid;grid-template-columns:minmax(0,1fr) 170px;gap:8px} .asset-entry-node-detail{grid-column:1 / -1} .asset-entry-footer{position:sticky;bottom:10px;z-index:12;display:flex;align-items:center;gap:8px;margin-top:14px;padding:10px;background:rgba(19,19,24,.9);border:1px solid var(--border);border-radius:var(--radius);backdrop-filter:blur(14px)} .asset-entry-footer-spacer{flex:1} .field-error-shell{border-color:rgba(239,68,68,.42)!important} .field-error-input{border-color:var(--red)!important;box-shadow:0 0 0 3px rgba(239,68,68,.1)!important} @media (max-width: 1180px){ .asset-entry-hero{align-items:flex-start;flex-direction:column} .asset-entry-status-grid{min-width:0;width:100%} .asset-entry-layout{grid-template-columns:1fr} } @media (max-width: 760px){ .asset-entry-status-grid,.asset-entry-two-col,.asset-entry-node-fields{grid-template-columns:1fr} .asset-entry-rail-node{grid-template-columns:1fr} .asset-entry-rail-time{text-align:left} .asset-entry-rail-line{display:none} .asset-entry-node-card-head{grid-template-columns:1fr} .asset-entry-footer{bottom:0;border-radius:var(--radius) var(--radius) 0 0} } /* ─── Buttons (extended) ─── */ .primary-button{display:inline-flex;align-items:center;gap:4px;padding:6px 14px;border-radius:4px;font-family:var(--font-ui);font-size:.72rem;font-weight:500;cursor:pointer;background:var(--accent);color:#fff;border:1px solid var(--accent);transition:.15s;white-space:nowrap} .primary-button:hover{box-shadow:0 0 10px var(--accent-glow)} .secondary-button{display:inline-flex;align-items:center;gap:4px;padding:6px 14px;border-radius:4px;font-family:var(--font-ui);font-size:.72rem;cursor:pointer;background:transparent;color:var(--muted);border:1px solid var(--border);transition:.15s;white-space:nowrap;text-decoration:none} .secondary-button:hover{background:rgba(128,128,128,.08);color:var(--text)} /* ─── Mission Pages ─── */ .eyebrow{font-family:var(--font-data);font-size:.6rem;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:2px} .top-gap{margin-top:14px} .field-label{font-family:var(--font-data);font-size:.58rem;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.08em} /* Mission ops tabs */ .mission-ops-tabs-panel{margin-bottom:0;padding-bottom:0} .mission-preview-nav{display:flex;gap:0;border-bottom:1px solid var(--border)} .mission-preview-nav-top{margin-bottom:12px} .preview-tab{display:inline-flex;align-items:center;padding:8px 16px;font-size:.74rem;color:var(--muted);text-decoration:none;border-bottom:2px solid transparent;transition:.15s;margin-bottom:-1px} .preview-tab:hover{color:var(--text);background:rgba(128,128,128,.03)} .preview-tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600} /* Mission page header */ .mission-page-header{display:flex;align-items:flex-start;gap:20px;flex-wrap:wrap;margin-bottom:10px} .mission-page-header-copy{flex:1;min-width:200px} .mission-page-header-copy h1{font-family:var(--font-data);font-size:1.35rem;font-weight:600;line-height:1.15} .mission-page-header-metrics{display:flex;gap:10px;flex-wrap:wrap} .mission-page-header-controls{display:flex;align-items:flex-end} /* Summary cards */ .summary-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:10px 14px;min-width:100px} .summary-card.compact{padding:8px 14px} .summary-label{display:block;font-family:var(--font-data);font-size:.56rem;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.08em;margin-bottom:4px} .summary-card strong{font-family:var(--font-data);font-size:.88rem;font-weight:600} .mission-summary-card-time strong{color:var(--accent)} /* Mission time form */ .mission-page-time-form{display:flex;align-items:flex-end;gap:6px} /* Panel */ .panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px} /* Mission toolbar */ .mission-toolbar-grid{display:flex;flex-direction:column;gap:10px} .mission-toolbar-block{min-width:0} .mission-toolbar-span-two{width:100%} .mission-toolbar-block .field-label{margin-bottom:6px} .mission-filter-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;align-items:end} .mission-filter-grid label{display:flex;flex-direction:column;gap:4px;font-size:.72rem;color:var(--muted)} .mission-filter-grid input,.mission-filter-grid select{padding:6px 8px;border-radius:4px;background:var(--bg);color:var(--text);border:1px solid var(--border);font-size:.72rem;min-height:34px} .mission-filter-grid input:focus,.mission-filter-grid select:focus{outline:none;border-color:var(--accent)} .mission-filter-grid input[type=search]{min-width:180px} /* Mission filter pills */ .mission-filter-pill-row{display:flex;flex-wrap:wrap;gap:8px} .mission-filter-pill{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:4px;font-size:.68rem;color:var(--muted);background:rgba(128,128,128,.04);border:1px solid var(--border);font-family:var(--font-data)} .mission-filter-pill strong{color:var(--text);font-weight:600} /* Mission group */ .mission-group-panel{padding:0;overflow:hidden} .mission-group-header{display:flex;justify-content:space-between;align-items:flex-start;padding:14px 16px;border-bottom:1px solid var(--border)} .mission-group-header h2{font-family:var(--font-data);font-size:1.05rem;font-weight:600;margin-top:2px} .mission-group-subtitle{color:var(--muted);font-size:.7rem;margin-top:4px} .mission-group-count{font-family:var(--font-data);font-size:.64rem;color:var(--muted);padding-top:4px;flex-shrink:0} .mission-group-panel .mission-filter-pill-row{padding:8px 16px;border-bottom:1px solid var(--border)} /* Mission log table */ .table-shell{padding:0;overflow-x:auto} .table-shell.top-gap{margin-top:0} .data-table{width:100%;border-collapse:collapse;font-size:.74rem;table-layout:fixed} .data-table thead th{font-family:var(--font-data);font-size:.58rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;padding:8px 10px;text-align:left;border-bottom:1px solid var(--border);background:rgba(128,128,128,.02);position:sticky;top:0;z-index:1} .data-table tbody td{padding:8px 10px;border-bottom:1px solid rgba(148,163,184,.06);vertical-align:top} .compact-table td{padding:6px 10px} /* Mission log column widths */ .mission-log-table thead th:nth-child(1){width:11%} .mission-log-table thead th:nth-child(2){width:11%} .mission-log-table thead th:nth-child(3){width:46%} .mission-log-table thead th:nth-child(4){width:16%} .mission-log-table thead th:nth-child(5){width:16%} /* Two-line cell */ .two-line-cell{display:flex;flex-direction:column;gap:2px} .table-title{font-size:.74rem;font-weight:500;color:var(--text)} .table-subline{font-size:.64rem;color:var(--muted);line-height:1.35} .clamp-line{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden} .table-link{color:var(--accent);text-decoration:none;font-size:inherit} .table-link:hover{text-decoration:underline} /* Mission entry labels */ .mission-asset-chip-row{display:flex;flex-wrap:wrap;gap:3px;margin-top:4px} .mission-entry-label-row .chip{display:inline-flex;align-items:center;padding:1px 6px;border-radius:3px;font-family:var(--font-data);font-size:.56rem;font-weight:600;background:rgba(59,130,246,.08);color:var(--accent);border:1px solid rgba(59,130,246,.15)} /* Table actions */ .table-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap} /* Empty state */ .empty-state{text-align:center;padding:32px 16px;color:var(--muted)} .empty-state h2{font-size:.9rem;font-weight:600;margin-bottom:6px} .empty-state p{font-size:.72rem} /* Mission filter grid — datetime picker */ .mission-datetime-control{display:flex;flex-direction:column;gap:4px;font-size:.72rem;color:var(--muted)} .mission-datetime-control-row{display:flex;gap:4px;align-items:center;width:100%} .mission-datetime-display-input{flex:1;min-width:0;padding:6px 8px;border-radius:4px;background:var(--bg);color:var(--text);border:1px solid var(--border);font-size:.72rem;min-height:34px} .mission-datetime-display-input:focus{outline:none;border-color:var(--accent)} .mission-datetime-picker-proxy{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0} .mission-datetime-picker-button{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;font-size:.68rem;flex-shrink:0} /* ─── Flash Messages ─── */ .flash-stack{margin-bottom:16px} .flash-message{padding:8px 14px;border-radius:var(--radius);font-size:.78rem;margin-bottom:6px} .flash-message.success{background:rgba(34,197,94,.1);color:var(--green);border:1px solid rgba(34,197,94,.2)} .flash-message.error{background:rgba(239,68,68,.1);color:var(--red);border:1px solid rgba(239,68,68,.2)} /* ─── Empty State ─── */ .empty{text-align:center;padding:40px;color:var(--muted);font-size:.82rem} /* ─── Utilities ─── */ .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0} .fi{animation:fadeIn .25s ease-out both} @keyframes fadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}