:root{--bg:#101619;--panel:#172126;--panel2:#1d2a30;--line:#3f5158;--text:#edf2f3;--muted:#aab8bd;--accent:#5a879c;--paper:#e7eceb;--paper-ink:#1d2528}
body.route-page,body{margin:0;background:#0b1013;color:var(--text);font:13px/1.55 "Microsoft YaHei",Arial,sans-serif}
.viewerapp{min-height:100vh;background:var(--bg)}
.bar{display:flex;align-items:center;justify-content:space-between;min-height:56px;padding:10px 18px;background:#0b1013;border-bottom:1px solid #33444b}.bar h1{margin:0;font-size:16px;font-weight:600}.bar .meta{color:#a8b6bb}
.tools{display:flex;align-items:center;gap:0;overflow:auto;white-space:nowrap;background:#1a262b;border-bottom:1px solid #41535a}.tools a{display:block;padding:10px 13px;color:#dfe7ea;text-decoration:none;border-right:1px solid #33464d}.tools a:hover{background:#23343b}.tools a.current{background:#31566a;color:#fff}.tools .context-help{color:#dfe7ea;margin-left:auto;margin-right:8px}
.main{width:min(1180px,100%);margin:0 auto;padding:24px 26px 44px}.route-title,.road-title{display:flex;justify-content:space-between;align-items:end;gap:20px;padding-bottom:10px;margin-bottom:17px;border-bottom:2px solid #60747c}.route-title h2,.road-title h2{margin:2px 0 0;font-size:22px}.route-title span,.road-title span{color:#afbec2;font-size:12px}.route-title .meta,.road-title .meta{color:#8fa2a8}
.sd-overview{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:18px 0 22px}.sd-overview figure{margin:0;background:#121b1f;border:1px solid #2c3b41}.sd-overview img{width:100%;aspect-ratio:4/3;object-fit:cover}.sd-overview figcaption{padding:6px 7px;color:#c3ced1;font:11px Consolas,"Courier New",monospace}.project-note{max-width:760px;padding:12px 15px;border-left:3px solid #69838d;background:#162126;color:#d2dbde}.project-note b{color:#fff}.project-note p{margin:5px 0;color:#bcc8cc}.file-manifest{margin:18px 0 0;border-top:1px solid #42545b}.file-manifest>div{display:grid;grid-template-columns:190px minmax(0,1fr) 170px;gap:14px;padding:9px 2px;border-bottom:1px solid #33464d;align-items:baseline}.file-manifest code{color:#e2e9eb}.file-manifest span{color:#b9c5c9}.file-manifest em{font-style:normal;color:#8ea1a7;text-align:right}.main a{color:#9fd1e7}.main a:hover{color:#c3e7f6}
.contact-sheet{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.frame{appearance:none;padding:5px;border:1px solid #33444a;background:#121a1e;color:#dce5e8;text-align:left;cursor:pointer}.frame:hover{border-color:#66808a}.frame.selected{border-color:#7fb4cb;background:#17384a}.frame img{width:100%;aspect-ratio:4/3;object-fit:cover}.fileline{display:flex;justify-content:space-between;gap:8px;padding-top:5px;font:11px Consolas,"Courier New",monospace}.contact-tools{display:flex;align-items:center;gap:7px;margin-top:12px;padding:9px 0;border-top:1px solid #42545b}.contact-tools .meta{margin-right:auto;color:#aebcc0}.route-page .plain-button{background:#dfe4e3;color:#1d2527;border-color:#7b898d}.route-page .plain-button:hover{background:#eef1f0}
.page-viewer{display:grid;grid-template-columns:minmax(0,1fr) 240px;gap:18px;align-items:start}.page-viewer>img{width:100%;max-height:68vh;object-fit:contain;background:#070a0c;border:1px solid #334249}.page-viewer>p{margin:0;padding:14px;background:#172328;border-top:3px solid #5d7d8a;color:#c5d0d3;min-height:120px}.page-viewer>div{grid-column:2;display:flex;gap:6px}.page-viewer>div button{flex:1}.viewer-related{display:flex;gap:24px;margin-top:13px;padding:9px 0;border-top:1px solid #42545b;color:#9caeb4;font-size:12px}.viewer-related code{color:#d6e0e3}
.road-doc-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(280px,.7fr);gap:20px}.map-scan-wrap{position:relative;padding:8px;background:#d8d8d2;border:1px solid #8b8e8b}.map-scan-wrap img{width:100%;filter:contrast(.98) saturate(.78)}.scan-fold{position:absolute;pointer-events:none;background:#5552}.fold-v{top:8px;bottom:8px;left:52%;width:1px}.fold-h{left:8px;right:8px;top:48%;height:1px}.attachments{border-top:1px solid #52656d}.attachments>div{display:grid;grid-template-columns:82px 1fr;gap:4px 12px;padding:10px 2px;border-bottom:1px solid #43545b}.attachments>div span{grid-row:1/3;color:#90a4aa;font:11px Consolas,monospace}.attachments>div b{font-size:13px}.attachments>div p{margin:3px 0;color:#bbc7cb}
.route-builder{display:grid;gap:12px}.route-work{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:18px}.route-work h3{margin:0 0 8px;color:#dce6e8;font-size:13px}.route-node-bank{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid #53656c;border-left:1px solid #53656c}.route-node-bank button{appearance:none;display:grid;grid-template-columns:36px 1fr;align-items:center;gap:7px;padding:10px;border:0;border-right:1px solid #53656c;border-bottom:1px solid #53656c;background:#172227;color:#dce5e7;text-align:left;cursor:pointer}.route-node-bank button:hover{background:#22333a}.route-node-bank button.selected{background:#264557;color:#fff}.route-node-bank button:disabled{opacity:.58;cursor:default}.route-node-bank button span{color:#b8c4c8;font:12px Consolas,monospace}.route-sequence{padding:12px;background:#e3e8e7;color:#1f282b;border-top:4px solid #546e78}.route-sequence h3{color:#263438}.route-sequence ol{margin:0;padding:0;list-style:none}.route-sequence li{display:grid;grid-template-columns:38px 1fr;padding:8px 0;border-bottom:1px solid #bcc6c8}.route-sequence li span{color:#42565d;font:12px Consolas,monospace}.empty-route{margin:0;color:#66767b}.route-builder-actions{display:flex;justify-content:flex-end;gap:7px;border-top:1px solid #42545b;padding-top:10px}
.figcap{color:#c2cdd0;font-size:12px}.route-page .completed-note{background:#dce9df;color:#284b35;border-color:#9cb9a5}.route-page .completed-note a{color:#245d77}.route-builder .smallprint{color:#c0cbd0}.route-page .feedback.show.bad{background:#f4dfdf;color:#6e2323;border-color:#c59797}.footer{padding:8px 16px;background:#0b1013;border-top:1px solid #33444b;color:#aebdc1;font-size:12px}
.locked-directory{max-width:820px;margin:8px auto 0;border-top:3px solid #516973;border-bottom:1px solid #43545b}.locked-head{display:flex;justify-content:space-between;gap:20px;padding:9px 2px;color:#b9c6ca;border-bottom:1px solid #43545b}.locked-head b{color:#e7edef;font-weight:600}.locked-file{display:grid;grid-template-columns:190px minmax(0,1fr) 180px;gap:14px;padding:10px 2px;border-bottom:1px solid #33454c;align-items:baseline}.locked-file code{color:#dce7ea}.locked-file span{color:#bcc8cc}.locked-file em{font-style:normal;color:#879ba2;font-size:12px;text-align:right}.locked-directory>p{margin:14px 0 8px;color:#b8c4c8}.lock-code{font:12px/1.5 Consolas,"Courier New",monospace;color:#8fa2a8!important}.locked-directory>a{display:inline-block;margin-bottom:14px}
@media(max-width:850px){.main{padding:18px 14px 34px}.sd-overview{grid-template-columns:repeat(2,1fr)}.contact-sheet{grid-template-columns:repeat(2,1fr)}.page-viewer{grid-template-columns:1fr}.page-viewer>div{grid-column:1}.road-doc-grid,.route-work{grid-template-columns:1fr}.route-sequence{order:-1}.bar{padding:8px 12px}.bar h1{font-size:14px}.tools a{padding:9px 10px}}
@media(max-width:650px){.locked-file,.file-manifest>div{grid-template-columns:1fr}.locked-file em,.file-manifest em{text-align:left}}
@media(max-width:520px){.sd-overview,.contact-sheet{grid-template-columns:1fr 1fr;gap:7px}.route-title,.road-title{display:block}.route-title span,.road-title span{display:block;margin-top:4px}.route-node-bank{grid-template-columns:1fr}.contact-tools{flex-wrap:wrap}.contact-tools .meta{width:100%;margin:0}.page-viewer>img{max-height:60vh}}
/* road attachment uses a light scanned-document workspace while the media viewer stays dark */
.road-page .main{width:min(1180px,100%);background:#dfe4e2;color:#20282a;min-height:calc(100vh - 132px);box-shadow:inset 0 1px #f7f9f8}.road-page .road-title{border-bottom:3px double #778589}.road-page .road-title h2{color:#1c2528}.road-page .road-title .meta,.road-page .road-title span{color:#52636a}.road-page .road-doc-grid{grid-template-columns:minmax(0,1.55fr) minmax(250px,.55fr);gap:0;border:1px solid #8e9b9e;background:#eef0ed}.road-page .road-doc-grid>div:first-child{padding:16px;border-right:1px solid #a5afb1}.road-page .map-scan-wrap{padding:10px;background:#c9cbc7;border:1px solid #858b89;box-shadow:0 3px 13px #4a53552e}.road-page .map-scan-wrap img{filter:contrast(1.02) saturate(.65)}.road-page .figcap{color:#526166}.road-page .attachments{border-top:0;padding:8px 14px;background:#e7ebe9}.road-page .attachments>div{border-bottom:1px solid #b4bdbf;color:#1e292c}.road-page .attachments>div span{color:#52656c}.road-page .attachments>div p{color:#48585e}.road-page .related-source{margin:14px 0 0;padding:9px 11px;background:#d5dddb;border-top:2px solid #697d85;color:#273438}.road-page .related-source a{color:#24566e}.road-page .locked-directory{color:#dce5e8}
@media(max-width:850px){.road-page .road-doc-grid{grid-template-columns:1fr}.road-page .road-doc-grid>div:first-child{border-right:0;border-bottom:1px solid #a5afb1}}
.road-page .locked-directory{max-width:880px;margin:18px auto 0;border-top:4px solid #687d84;border-bottom:1px solid #9eaaad;color:#243034;background:#eef1ef;padding:0 16px 12px}.road-page .locked-head{color:#52656b;border-bottom:1px solid #aeb8ba}.road-page .locked-head b{color:#1f2b2e}.road-page .locked-file{border-bottom:1px solid #c1c9ca}.road-page .locked-file code{color:#27393f}.road-page .locked-file span{color:#475b61}.road-page .locked-file em{color:#62757b}.road-page .locked-directory>p{color:#4f6268}.road-page .locked-directory>a{color:#245d77}

/* scan-bed artifacts: localized, non-destructive */
.road-page .map-scan-wrap{position:relative;overflow:hidden}.road-page .map-scan-wrap:before{content:"";position:absolute;z-index:2;inset:0;pointer-events:none;background:linear-gradient(90deg,transparent 0 7%,rgba(45,49,47,.055) 7.3% 7.7%,transparent 8% 63%,rgba(80,75,66,.04) 63.4% 63.8%,transparent 64%),linear-gradient(0deg,transparent 0 28%,rgba(255,255,255,.08) 28.2% 28.6%,transparent 28.9% 77%,rgba(55,52,47,.035) 77.2% 77.7%,transparent 78%)}.road-page .map-scan-wrap:after{content:"";position:absolute;z-index:2;left:1.2%;top:0;bottom:0;width:2px;background:#2e302d22;box-shadow:6px 0 0 #ffffff1f;pointer-events:none}

/* SD-card identity pass: explicitly a mounted removable-drive viewer. */
.viewerapp{background:#11191d}.bar{min-height:48px;padding:7px 13px}.bar h1{font-size:14px}.tools a{padding:7px 11px}.drive-strip{height:24px;padding:3px 13px;background:#d9dfe0;border-bottom:1px solid #7f8b8f;color:#273337;font:11px/17px Consolas,"Courier New",monospace}.main{padding-top:17px}.route-title,.road-title{padding-bottom:7px;margin-bottom:12px}.sd-overview{gap:8px;margin:13px 0 18px}.sd-overview figure{background:#0d1417}.sd-overview figcaption{padding:4px 6px}.project-note{border-left-width:2px}.file-manifest>div{padding:7px 2px}.contact-sheet{gap:7px}.frame{padding:4px}.route-node-bank button{padding:8px}.footer{font-size:11px}
/* Mounted-drive distinction: directory stays dark; document workspace uses blue-grey scanner material. */
.route-page:not(.road-page) .main{background:#10171a}.route-page .file-manifest>div:nth-child(even){background:#141f23}.route-page .project-note{background:#1b282d}.route-page .route-sequence{background:#d5dddc}.road-page .main{background:#c8d0cf}.road-page .road-doc-grid{background:#e8ecea}.road-page .attachments{background:#dbe2df}

/* Sidecar provenance: writable notes are local records, never written back to the mounted SD card. */
.local-index-note{max-width:820px;margin:20px 0 8px;padding:10px 13px;background:#1b272c;border-left:3px solid #708b96;color:#c7d1d4}.local-index-note b{color:#edf2f3}.local-index-note p{margin:4px 0 0;color:#aebcc1;font-size:12px}.road-page .local-index-note{background:#d9e0de;color:#2d3b40;border-left-color:#677c84}.viewer-related span{padding:5px 8px;background:#172227;border:1px solid #314249}.drive-strip{white-space:nowrap;overflow:auto}
/* Non-actionable entries in the mounted-drive toolbar stay visible without pretending to be links. */
.tools .tool-disabled{display:inline-block;padding:7px 11px;color:#708087;border-right:1px solid #26363d;background:#11191d;cursor:default}.tools .tool-disabled:before{content:'· ';color:#4f636b}.project-note .note-tail{margin-top:8px;padding-top:7px;border-top:1px dotted #4a5d64;color:#c7d1d4;font-style:italic}
/* Recovered JPEG coherence: the eight U-04 images pass through one mild 2009 compact-camera display profile. */
.sd-overview img,.contact-sheet .frame img,.page-viewer>img{filter:saturate(.78) contrast(.94) brightness(.98) sepia(.025)}

