body{margin:0;--ink:#16191d;--muted:#565c65;--line:#d8dbd3;--soft:#eceee8;--panel:#ffffff;--ground:#f3f4f0;--accent:#2a43c0;--accentbg:#e8ecfb;--red:#b42318;--redbg:#fdeceb;--redline:#eeb0aa;--green:#1b6a43;--greenbg:#e3f2e9;--amber:#7a4f00;--amberbg:#fbf0d9;--amberline:#ecd29a;font-family:'Instrument Sans',system-ui,-apple-system,'Segoe UI',sans-serif;color:var(--ink);background:var(--ground);min-height:100vh;font-size:14px;line-height:1.45}
.mono{font-family:'JetBrains Mono',ui-monospace,'SFMono-Regular',Menlo,monospace}
button,select,input{font:inherit;color:inherit}
h1{font-size:26px;line-height:1.15;margin:0;font-weight:700;letter-spacing:-0.01em}
h2{font-size:16px;margin:0;font-weight:700}
h3{font-size:14px;margin:0;font-weight:700}
.sub{margin:6px 0 0;color:var(--muted);max-width:760px;text-wrap:pretty}
.top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 24px;padding:10px clamp(16px,3vw,32px);background:var(--ink);color:#f3f4f0}
.brand{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}
.logo{font-weight:600;font-size:18px;letter-spacing:-0.02em}
.logo b{color:#9fb0ff;font-weight:600}
.cycle{color:#b9bdc4;font-size:13px}
.nav{display:flex;gap:4px;flex-wrap:wrap}
.navbtn{background:transparent;border:1px solid transparent;color:#d5d8de;padding:8px 12px;border-radius:8px;cursor:pointer;display:flex;align-items:center;gap:8px;min-height:40px}
.navbtn:hover{background:#262a31;color:#fff}
.navbtn.on{background:#f3f4f0;color:var(--ink);font-weight:600}
.count{font-size:12px;background:#d9a227;color:#16191d;border-radius:999px;padding:0 8px;font-weight:700}
.main{padding:26px clamp(16px,3vw,32px) 64px;max-width:1480px;margin:0 auto;box-sizing:border-box}
.head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:0 16px;border-radius:8px;border:1px solid var(--line);background:var(--panel);cursor:pointer;font-weight:600;white-space:nowrap;text-decoration:none}
.btn:hover{border-color:#b2b6ac}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn.primary:hover{background:#2236a0}
.btn.ghost{background:transparent}
.btn.small{min-height:32px;padding:0 10px;font-size:13px}
.btn.danger{color:var(--red)}
.vh{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden}
.drop{border:2px dashed #b6bab0;border-radius:14px;background:var(--panel);padding:22px 24px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;transition:border-color .15s,background .15s}
.drop.over{border-color:var(--accent);background:var(--accentbg)}
.dz-row{display:flex;align-items:center;gap:14px}
.dz-ico{width:44px;height:44px;border-radius:12px;background:var(--accentbg);color:var(--accent);display:flex;align-items:center;justify-content:center;flex:none}
.dz-title{font-size:17px;font-weight:700}
.dz-hint{color:var(--muted);font-size:13px}
.dz-actions{display:flex;gap:10px;flex-wrap:wrap}
label.btn:focus-within{outline:2px solid var(--accent);outline-offset:2px}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:12px}
.section-h{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin:26px 0 10px}
.uplist > div{display:grid;grid-template-columns:minmax(220px,1.3fr) minmax(260px,2fr) repeat(3,minmax(90px,.5fr)) 110px;gap:0 16px;align-items:center;padding:12px 16px;border-top:1px solid var(--soft);min-width:980px}
.uplist > div:first-child{border-top:0}
.uplist .thead{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600;background:#fafaf8;border-radius:12px 12px 0 0;padding:10px 16px}
.linkbtn{background:none;border:0;padding:4px 0;cursor:pointer;text-align:left;font-weight:600;color:var(--accent);text-decoration:underline;text-decoration-color:#b8c2f0;text-underline-offset:3px}
.num{font-family:'JetBrains Mono',ui-monospace,monospace;font-size:13px}
.num.ok{color:var(--green)}.num.warn{color:var(--amber)}.num.bad{color:var(--muted)}
.tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:var(--panel)}
.pipeline{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(190px,100%),1fr));gap:0;border:1px solid var(--line);border-radius:12px;background:var(--panel);overflow:hidden}
.stage{padding:14px 16px;border-left:1px solid var(--soft);display:flex;flex-direction:column;gap:4px}
.stage:first-child{border-left:0}
.stage .k{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-weight:600}
.stage .v{font-size:24px;font-weight:700;font-family:'JetBrains Mono',ui-monospace,monospace;letter-spacing:-0.02em}
.stage .d{font-size:12.5px;color:var(--muted)}
.stage.accepted .v{color:var(--green)}.stage.pending .v{color:var(--amber)}.stage.rejected .v{color:var(--muted)}
.lock{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--green);font-weight:600}
.proc{padding:18px 20px;display:flex;flex-direction:column;gap:10px}
.pstep{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--muted)}
.pstep.done{color:var(--ink)}
.pstep.cur{color:var(--accent);font-weight:600}
.pdot{width:18px;height:18px;border-radius:99px;border:2px solid #c4c7c0;flex:none;box-sizing:border-box;display:flex;align-items:center;justify-content:center}
.pstep.done .pdot{background:var(--green);border-color:var(--green);color:#fff}
.pstep.cur .pdot{border-color:var(--accent);border-top-color:transparent;animation:spin 0.8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:22px 0 12px;flex-wrap:wrap}
.tab{background:none;border:0;border-bottom:3px solid transparent;padding:10px 14px;cursor:pointer;font-weight:600;color:var(--muted);display:flex;gap:8px;align-items:center;min-height:44px}
.tab.on{color:var(--ink);border-bottom-color:var(--ink)}
.tab .n{font-family:'JetBrains Mono',ui-monospace,monospace;font-size:12px;background:var(--soft);border-radius:99px;padding:1px 8px}
.tab.on .n{background:var(--ink);color:#fff}
.frow{display:grid;grid-template-columns:minmax(360px,2.8fr) minmax(170px,1fr) 104px minmax(240px,1.6fr) 84px 132px 44px;gap:0 14px;align-items:center;padding:10px 14px;border-top:1px solid var(--soft);min-width:1180px}
.frow.thead{border-top:0;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600;background:#fafaf8;border-radius:12px 12px 0 0}
.frow.miss{background:var(--redbg);box-shadow:inset 3px 0 0 var(--red)}
.frow.pend{background:#fffaf0;box-shadow:inset 3px 0 0 #d9a227}
.path{background:none;border:0;padding:3px 0;text-align:left;cursor:pointer;font-size:12.5px;line-height:1.45;word-break:break-all;color:var(--ink);display:block}
.path .dir{color:var(--muted)}
.path .base{color:var(--accent);font-weight:600;text-decoration:underline;text-decoration-color:#b8c2f0;text-underline-offset:3px}
.path:hover .base{text-decoration-color:var(--accent)}
.note{font-size:12px;color:var(--muted);margin-top:2px}
.note.warn{color:var(--amber);font-weight:600}
.note.bad{color:var(--red);font-weight:600}
.type{font-weight:600;font-size:13px}
.type small{display:block;font-weight:400;color:var(--muted);font-size:12px}
.prov{font-size:12.5px;font-weight:600}
.prov.none{color:var(--red)}
.cchips{display:flex;gap:4px;flex-wrap:wrap;align-items:center}
.cc{font-family:'JetBrains Mono',ui-monospace,monospace;font-size:12px;border-radius:6px;padding:2px 7px;border:1px solid var(--line);background:#fff;white-space:nowrap}
.cc b{font-weight:600;color:var(--accent)}
.cc.pending{background:var(--amberbg);border-color:var(--amberline);color:var(--amber)}
.cc.pending b{color:var(--amber)}
.cc.missing{background:var(--redbg);border-color:var(--redline);color:var(--red)}
.more{font-size:12px;font-weight:700;background:var(--ink);color:#fff;border:0;border-radius:6px;padding:3px 8px;cursor:pointer}
.status{display:inline-flex;font-size:12px;font-weight:700;border-radius:999px;padding:3px 10px;white-space:nowrap;justify-self:start}
.status.ok{background:var(--greenbg);color:var(--green)}
.status.bad{background:var(--redbg);color:var(--red)}
.status.warn{background:var(--amberbg);color:var(--amber)}
.status.mute{background:var(--soft);color:var(--muted)}
.iconbtn{width:36px;height:36px;border-radius:8px;border:1px solid transparent;background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--muted)}
.iconbtn:hover{border-color:var(--line);background:#fff;color:var(--ink)}
.rgroup{border-top:1px solid var(--soft);padding:12px 16px;display:grid;grid-template-columns:minmax(260px,1.4fr) 80px minmax(320px,2.4fr);gap:0 16px;align-items:start;min-width:860px}
.rgroup:first-child{border-top:0}
.rgroup.thead{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600;background:#fafaf8;padding:10px 16px}
.rex{font-size:12px;color:var(--muted);word-break:break-all}
.rex .ns{font-size:11px;font-weight:700;color:var(--muted);background:var(--soft);border-radius:4px;padding:0 5px;margin-left:6px;font-family:'Instrument Sans',system-ui,sans-serif}
.decisions{display:flex;flex-direction:column;gap:12px}
.dcard{background:var(--panel);border:1px solid var(--amberline);border-radius:12px}
.dcard .dhead{border-radius:11px 11px 0 0}
.dhead{background:var(--amberbg);padding:10px 16px;display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:space-between}
.dq{font-weight:700;color:var(--amber)}
.dbody{padding:14px 16px;display:flex;flex-direction:column;gap:12px}
.why{font-size:13px;color:var(--ink);text-wrap:pretty}
.matches{display:flex;gap:8px;flex-wrap:wrap}
.opt{border:1px solid var(--line);background:#fff;border-radius:10px;padding:8px 14px;cursor:pointer;display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-height:52px;min-width:120px}
.opt:hover{border-color:var(--ink)}
.opt .l{font-weight:700}
.opt .m{font-size:12px;color:var(--muted)}
.opt.prop{border:2px solid var(--accent);background:var(--accentbg)}
.opt.prop .m{color:var(--accent);font-weight:600}
.opt.rej{color:var(--red)}
.combo{position:relative;width:min(380px,100%)}
.combo-in{width:100%;box-sizing:border-box;min-height:40px;border:1px solid var(--line);border-radius:8px;padding:0 36px 0 12px;background:#fff}
.combo-in:focus{outline:2px solid var(--accent);outline-offset:0;border-color:var(--accent)}
.combo-ico{position:absolute;right:10px;top:11px;color:var(--muted);pointer-events:none}
.combo-list{position:absolute;z-index:40;top:44px;left:0;right:0;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 14px 34px rgba(0,0,0,.14);max-height:280px;overflow:auto;padding:4px}
.copt{display:flex;gap:10px;align-items:baseline;width:100%;text-align:left;border:0;background:none;border-radius:6px;padding:8px 10px;cursor:pointer;min-height:40px}
.copt .mono{font-size:12.5px;font-weight:600;flex:none}
.copt .nm{color:var(--muted);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.copt.act{background:var(--accentbg)}
.copt:hover{background:var(--soft)}
.combo-empty{padding:10px;color:var(--muted);font-size:13px}
.toolbar{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-bottom:12px}
.toolbar .l{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{border:1px solid var(--line);background:var(--panel);border-radius:999px;padding:6px 12px;cursor:pointer;min-height:34px;font-size:13px}
.chip.on{background:var(--ink);border-color:var(--ink);color:#fff}
.search{min-height:40px;border:1px solid var(--line);border-radius:8px;padding:0 12px;background:#fff;width:min(320px,100%);box-sizing:border-box}
.filterpill{display:inline-flex;align-items:center;gap:6px;background:var(--ink);color:#fff;border-radius:999px;padding:4px 6px 4px 12px;font-size:13px}
.filterpill button{background:#3a3f48;border:0;color:#fff;border-radius:99px;width:24px;height:24px;cursor:pointer}
.crow{display:grid;grid-template-columns:minmax(280px,2fr) minmax(220px,1.6fr) 110px 150px;gap:0 18px;align-items:center;padding:12px 16px;border-top:1px solid var(--soft);min-width:860px}
.crow.thead{border-top:0;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600;background:#fafaf8;padding:10px 16px}
.clink{background:none;border:0;padding:4px 0;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:2px}
.clink:hover .cname{text-decoration:underline}
.cid{font-size:12.5px;color:var(--muted)}
.cname{font-weight:600;font-size:15px}
.pills{display:flex;gap:4px;flex-wrap:wrap}
.pill{font-size:12px;font-weight:600;border-radius:5px;padding:2px 7px;border:1px solid}
.pill.ok{background:var(--greenbg);color:var(--green);border-color:#bfe0cc}
.pill.bad{background:var(--redbg);color:var(--red);border-color:var(--redline)}
.pill.warn{background:var(--amberbg);color:var(--amber);border-color:var(--amberline)}
.back{background:none;border:0;cursor:pointer;color:var(--accent);font-weight:600;padding:6px 0;min-height:36px;display:inline-flex;align-items:center;gap:6px;margin-bottom:6px}
.chead{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;flex-wrap:wrap;margin-bottom:18px}
.banner{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap;background:var(--amberbg);border:1px solid var(--amberline);color:var(--amber);border-radius:10px;padding:10px 14px;margin-bottom:16px;font-weight:600}
.shifts{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(560px,100%),1fr));gap:16px}
.shift{background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.shead{display:flex;align-items:center;gap:14px;padding:14px 16px;border-bottom:1px solid var(--soft);flex-wrap:wrap}
.sname{font-size:22px;font-weight:600;background:var(--ink);color:#fff;border-radius:8px;padding:2px 10px;letter-spacing:-0.02em}
.smeta{display:flex;flex-direction:column;flex:1;min-width:160px}
.smeta .qp{font-weight:700}
.smeta .w{color:var(--muted);font-size:12.5px}
.slot{display:grid;grid-template-columns:170px 1fr;gap:4px 14px;padding:10px 16px;border-top:1px solid var(--soft);align-items:start}
.slot:first-child{border-top:0}
.slot.missing{background:var(--redbg)}
.slabel{font-weight:600;font-size:13px;padding-top:3px;display:flex;align-items:center;gap:8px}
.dot{width:8px;height:8px;border-radius:99px;flex:none}
.dot.ok{background:var(--green)}.dot.bad{background:var(--red)}.dot.na{background:#c4c7c0}
.sfiles{display:flex;flex-direction:column;gap:4px;min-width:0}
.sfile{display:flex;gap:8px;align-items:flex-start;flex-wrap:wrap}
.ptag{font-size:11px;font-weight:700;border-radius:4px;padding:1px 6px;background:var(--soft);color:var(--muted);white-space:nowrap;margin-top:4px}
.ptag.shared{background:var(--accentbg);color:var(--accent)}
.missing-txt{color:var(--red);font-weight:600;font-size:13px;padding-top:3px}
.na-txt{color:var(--muted);font-size:13px;padding-top:3px}
.maps{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(440px,100%),1fr));gap:14px}
.mcard{background:var(--panel);border:1px solid var(--line);border-radius:12px;display:flex;flex-direction:column}
.mtop{padding:14px 16px;display:flex;flex-direction:column;gap:6px;flex:1}
.mtop .row{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.mwhat{color:var(--muted);font-size:13px;text-wrap:pretty}
.mstats{display:flex;gap:16px;flex-wrap:wrap;font-size:12.5px;color:var(--muted)}
.mstats b{color:var(--ink);font-family:'JetBrains Mono',ui-monospace,monospace;font-weight:600}
.mfoot{border-top:1px solid var(--soft);padding:8px 16px;display:flex;justify-content:space-between;gap:10px;align-items:center;flex-wrap:wrap}
.hist{border-top:1px solid var(--soft);padding:6px 16px 10px}
.hrow{display:grid;grid-template-columns:44px 70px 1fr;gap:10px;font-size:12.5px;padding:5px 0;border-top:1px dashed var(--soft)}
.hrow:first-child{border-top:0}
.hrow .v{font-weight:700;font-family:'JetBrains Mono',ui-monospace,monospace}
.hrow .t{color:var(--muted)}
.ver{font-family:'JetBrains Mono',ui-monospace,monospace;font-size:12px;font-weight:700;background:var(--ink);color:#fff;border-radius:5px;padding:1px 7px}
.settings{display:flex;gap:20px;flex-wrap:wrap;align-items:flex-start}
.snav{flex:1 1 200px;max-width:240px;display:flex;flex-direction:column;gap:2px}
.snav button{text-align:left;background:none;border:0;border-radius:8px;padding:10px 12px;cursor:pointer;font-weight:600;color:var(--muted);min-height:44px}
.snav button.on{background:var(--panel);color:var(--ink);box-shadow:0 0 0 1px var(--line)}
.sbody{flex:999 1 560px;min-width:0;display:flex;flex-direction:column;gap:16px}
.srow2{display:grid;grid-template-columns:minmax(180px,1.4fr) minmax(130px,1fr) minmax(150px,1fr) 90px;gap:0 14px;align-items:center;padding:10px 16px;border-top:1px solid var(--soft);min-width:640px}
.srow2:first-child{border-top:0}
.srow2.thead{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600;background:#fafaf8}
.form{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;padding:14px 16px;border-top:1px solid var(--soft);background:#fafaf8;border-radius:0 0 12px 12px}
.field{display:flex;flex-direction:column;gap:4px;font-size:12.5px;font-weight:600;color:var(--muted)}
.field input,.field select{min-height:40px;border:1px solid var(--line);border-radius:8px;padding:0 10px;background:#fff;font-weight:400;color:var(--ink);min-width:180px}
.cinput{min-height:36px;border:1px solid transparent;border-radius:6px;padding:0 8px;background:transparent;width:100%;box-sizing:border-box}
.cinput:hover{border-color:var(--line)}
.cinput:focus{border-color:var(--accent);background:#fff;outline:none}
.helper{font-size:12.5px;color:var(--muted);padding:12px 16px}
.toast{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--greenbg);color:var(--green);border-bottom:1px solid #bfe0cc;padding:10px clamp(16px,3vw,32px);font-weight:600;flex-wrap:wrap}
.toast button{background:none;border:0;color:var(--green);text-decoration:underline;cursor:pointer;min-height:32px}
.scrim{position:fixed;inset:0;z-index:50;display:flex;justify-content:flex-end}
.backdrop{position:absolute;inset:0;background:rgba(18,20,24,.5);border:0;cursor:pointer;width:100%;height:100%}
.drawer{position:relative;background:var(--panel);width:min(620px,100%);height:100%;display:flex;flex-direction:column;box-shadow:-20px 0 60px rgba(0,0,0,.25)}
.dwh{padding:16px 20px;border-bottom:1px solid var(--soft);display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.dwb{padding:16px 20px;overflow:auto;flex:1;display:flex;flex-direction:column;gap:18px}
.dwb .grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.dwb select{min-height:40px;border:1px solid var(--line);border-radius:8px;padding:0 8px;background:#fff;width:100%}
.dwb select.empty{border-color:var(--red);color:var(--red);font-weight:600}
.links{border:1px solid var(--line);border-radius:10px}
.lrow{display:flex;flex-direction:column;gap:8px;padding:10px 12px;border-top:1px solid var(--soft)}
.lrow:first-child{border-top:0}
.lrow.pending{background:#fffaf0}
.ltop{display:flex;justify-content:space-between;gap:10px;align-items:center}
.seg{display:flex;gap:4px;flex-wrap:wrap}
.segb{border:1px solid var(--line);background:#fff;border-radius:7px;min-height:34px;padding:0 10px;cursor:pointer;font-weight:600;font-size:13px;display:flex;align-items:center;gap:6px}
.segb small{font-weight:400;color:var(--muted);font-size:11.5px}
.segb.on{background:var(--ink);border-color:var(--ink);color:#fff}
.segb.on small{color:#c9ccd2}
.segb.new{border-style:dashed;color:var(--accent)}
.prov-list{font-size:12.5px;display:flex;flex-direction:column;gap:6px}
.prov-list .mono{word-break:break-all}
.kv{display:grid;grid-template-columns:110px 1fr;gap:6px 12px;font-size:12.5px}
.kv .k{color:var(--muted)}
.overlay{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:24px;box-sizing:border-box}
.modal{position:relative;background:var(--panel);border-radius:14px;width:min(1080px,100%);max-height:calc(100vh - 48px);display:flex;flex-direction:column;overflow:hidden;box-shadow:0 30px 80px rgba(0,0,0,.35)}
.mhead{display:flex;justify-content:space-between;gap:16px;padding:16px 20px;border-bottom:1px solid var(--soft);align-items:flex-start}
.mpath{font-size:13px;word-break:break-all}
.mpath .dir{color:var(--muted)}
.mpath .base{font-weight:600}
.mchips{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.mchip{font-size:12px;background:var(--soft);border-radius:5px;padding:2px 8px;font-weight:600}
.mbody{overflow:auto;padding:16px 20px;background:#f7f7f4;flex:1}
.mfoot{padding:10px 20px;border-top:1px solid var(--soft);font-size:12.5px;color:var(--muted);display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:center}
.covers{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:12px;font-size:12.5px;color:var(--muted)}
.sheet{border:1px solid var(--line);background:#fff;border-radius:6px;overflow:auto}
.srow{display:grid;font-size:12px;border-top:1px solid var(--soft);min-width:860px}
.srow:first-child{border-top:0}
.srow > div{padding:5px 9px;border-left:1px solid var(--soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.srow > div:first-child{border-left:0;color:var(--muted);text-align:right;background:#fafaf8}
.srow.hdr{background:#f0f2ec;font-weight:700}
.srow.blk{border-top:2px solid #c9ccc3}
.sheettabs{display:flex;gap:2px;margin-top:8px;flex-wrap:wrap}
.sheettabs span{font-size:12px;padding:4px 10px;border:1px solid var(--line);border-top:0;background:transparent;color:var(--muted);border-radius:0 0 6px 6px}
.sheettabs span.on{background:#fff;color:var(--ink);font-weight:600}
.pdfpage{background:#fff;width:min(640px,100%);margin:0 auto;box-shadow:0 2px 10px rgba(0,0,0,.12);padding:36px 44px;box-sizing:border-box;font-family:Georgia,'Times New Roman',serif;font-size:13px}
.pdfkv{display:grid;grid-template-columns:150px 1fr;gap:4px 10px;margin-bottom:22px;font-size:12.5px}
.pdfkv b{font-weight:700}
.q{margin-bottom:18px;border-top:1px solid #e5e5e0;padding-top:12px}
.q .qn{font-weight:700;font-size:12.5px;margin-bottom:6px;font-family:'JetBrains Mono',ui-monospace,monospace}
.ln{height:8px;background:#e2e3de;border-radius:2px;margin-bottom:6px}
.zipgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px;margin-bottom:14px}
.thumb{background:#fff;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.thumb .img{height:84px;background:repeating-linear-gradient(135deg,#eceee8 0 8px,#f6f7f3 8px 16px);display:flex;align-items:center;justify-content:center;color:var(--muted)}
.thumb .nm{font-size:11px;padding:6px 8px;word-break:break-all}
.ziplist{background:#fff;border:1px solid var(--line);border-radius:8px}
.zrow{display:grid;grid-template-columns:24px 1fr 70px 80px;gap:10px;align-items:center;padding:7px 12px;border-top:1px solid var(--soft);font-size:12.5px}
.zrow:first-child{border-top:0}
.zrow .k{color:var(--muted)}
.zrow .sz{text-align:right;color:var(--muted)}
.empty-state{background:var(--panel);border:1px dashed var(--line);border-radius:12px;padding:28px;text-align:center;color:var(--muted)}
@media (max-width:640px){.slot{grid-template-columns:1fr}.pdfpage{padding:22px 18px}.pdfkv{grid-template-columns:1fr}}

*{box-sizing:border-box}
a{color:var(--accent)}
a:hover{color:#2236a0}
.pager{display:flex;gap:8px;align-items:center;justify-content:flex-end;margin-top:12px;font-size:13px}
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.login{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:28px;width:min(380px,100%);display:flex;flex-direction:column;gap:14px}
.login .field input{width:100%}
.error{background:var(--redbg);color:var(--red);border:1px solid var(--redline);border-radius:8px;padding:8px 12px;font-weight:600;font-size:13px}
.userbox{display:flex;align-items:center;gap:10px;color:#b9bdc4;font-size:13px}
.userbox button{background:none;border:1px solid #3a3f48;color:#d5d8de;border-radius:7px;padding:4px 10px;cursor:pointer;min-height:32px}
.uploadq{display:flex;flex-direction:column;gap:6px;margin-top:14px}
.uq{display:grid;grid-template-columns:1fr 110px 90px;gap:10px;align-items:center;font-size:12.5px;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:8px 12px}
.uq .bar{height:6px;background:var(--soft);border-radius:99px;overflow:hidden}
.uq .fill{height:100%;background:var(--accent)}
.uq.err{border-color:var(--redline);background:var(--redbg)}
.overall{font-weight:600;font-size:13px}
.kv2{display:flex;gap:18px;flex-wrap:wrap;font-size:13px;color:var(--muted);margin-top:6px}
.kv2 b{color:var(--ink);font-family:'JetBrains Mono',ui-monospace,monospace}
.temp-pw{background:var(--amberbg);border:1px solid var(--amberline);border-radius:10px;padding:12px 16px;color:var(--amber);font-weight:600}
.temp-pw code{font-size:15px;background:#fff;padding:2px 8px;border-radius:6px;color:var(--ink)}
.pdfimg{max-width:100%;border:1px solid var(--line);background:#fff;display:block;margin:0 auto 12px}
pre.pdftext{white-space:pre-wrap;font-size:12px;background:#fff;border:1px solid var(--line);border-radius:6px;padding:12px;max-height:240px;overflow:auto}
.sheettabs a{font-size:12px;padding:4px 10px;border:1px solid var(--line);border-top:0;color:var(--muted);border-radius:0 0 6px 6px;text-decoration:none}
.sheettabs a.on{background:#fff;color:var(--ink);font-weight:600}
.thumb img{width:100%;height:110px;object-fit:contain;background:#fff;display:block}
table.sheet-t{border-collapse:collapse;font-size:12px;background:#fff;min-width:100%}
table.sheet-t th,table.sheet-t td{border:1px solid var(--soft);padding:4px 8px;white-space:nowrap;max-width:260px;overflow:hidden;text-overflow:ellipsis;text-align:left}
table.sheet-t th{background:#f0f2ec}
table.sheet-t td.rn{color:var(--muted);background:#fafaf8;text-align:right}
.inline-form{display:inline}
.muted{color:var(--muted)}
.dw-err{background:var(--redbg);color:var(--red);border-radius:8px;padding:8px 12px;font-weight:600;font-size:13px}
[x-cloak]{display:none !important}
.combo-in[aria-expanded="true"]{border-color:var(--accent)}

#js-notices{position:fixed;right:16px;bottom:16px;z-index:200;display:flex;flex-direction:column;gap:8px;max-width:min(460px,calc(100vw - 32px))}
.js-notice{display:flex;gap:12px;align-items:flex-start;justify-content:space-between;padding:10px 12px;border-radius:10px;border:1px solid;box-shadow:0 10px 30px rgba(0,0,0,.15);font-size:13px;font-weight:600;background:#fff}
.js-notice.error{background:var(--redbg);border-color:var(--redline);color:var(--red)}
.js-notice.warn{background:var(--amberbg);border-color:var(--amberline);color:var(--amber)}
.js-notice.ok{background:var(--greenbg);border-color:#bfe0cc;color:var(--green)}
.js-notice button{background:none;border:0;color:inherit;text-decoration:underline;cursor:pointer;font:inherit;min-height:28px;flex:none}
