:root{color-scheme:light;--bg:#f2f6f8;--white:#fff;--ink:#1b3846;--muted:#647c88;--line:#d8e4ea;--blue:#146b85;--dark:#0e526b;--soft:#edf5f8;--red:#aa3832;--green:#257452}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font:13px/1.45 'Segoe UI',Arial,Helvetica,sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.4;cursor:default}.app{max-width:1650px;margin:0 auto;padding:18px 18px 20px}.header{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap;margin:0 0 14px}.eyebrow{font-size:10px;font-weight:850;color:#14728c;letter-spacing:1.65px}.header h1{font-size:28px;letter-spacing:-.8px;margin:3px 0 1px}.header h1 span{font-weight:400}.subtitle,.micro,.hint{font-size:11px;color:var(--muted);margin:3px 0}.head-right{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.state{font-size:11px;background:#eaf3f7;padding:7px 10px;border-radius:15px;border:1px solid var(--line);font-weight:750}.state.ok{color:var(--green)}.state.error{color:var(--red)}.version{color:var(--muted);font-size:10px}.layout{display:grid;grid-template-columns:minmax(330px,375px) minmax(0,1fr);gap:14px;align-items:start}.sidebar,.workspace{border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:0 2px 12px #20455808}.sidebar{position:sticky;top:12px;max-height:calc(100vh - 28px);overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}.section{padding:15px;border-bottom:1px solid var(--line)}.section:last-child{border:0}.sectionhead{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:10px}.sectionhead h2{font-size:14px;letter-spacing:-.15px;margin:0}.sectionhead span{color:var(--muted);font-size:10px}.fieldlabel{display:block;font-size:11px;color:#4d6674;font-weight:750;margin:10px 0 5px}textarea,select{width:100%;background:#fff;color:var(--ink);border:1px solid #c7d9e2;border-radius:8px;padding:9px 10px}textarea:focus,select:focus,button:focus-visible,input:focus-visible{outline:2px solid #6fb2d2;outline-offset:2px}#coord-input{min-height:122px;resize:vertical;font:11.6px/1.5 Consolas,'Courier New',monospace;max-height:250px}.inline-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin:9px 0 0}.inline-actions button{flex:0 1 auto}.primary,.ghost,.tiny{min-height:36px;border-radius:8px;font-size:11px;font-weight:800;padding:8px 11px}.primary{background:var(--blue);border:1px solid var(--blue);color:white}.primary:hover{background:var(--dark)}.ghost,.tiny{background:#fff;border:1px solid #bed3dd;color:var(--dark)}.ghost:hover,.tiny:hover{background:var(--soft)}.tiny{min-height:30px;padding:6px 9px;font-size:10px}.full{width:100%;margin-top:12px}.feedback{font-size:11px;color:var(--muted);margin-top:8px;min-height:17px;white-space:pre-wrap}.feedback.error{color:var(--red)}.feedback.ok{color:var(--green)}.metrics{display:grid;grid-template-columns:1fr 1fr 1fr;gap:7px;margin-top:11px}.metrics>div{background:#f5f9fb;padding:8px;border:1px solid #e0e9ee;border-radius:7px}.metrics small{display:block;color:var(--muted);font-size:10px}.metrics strong{font:700 12px/1.5 Consolas,monospace}.details{margin-top:11px;border:1px solid var(--line);border-radius:9px;overflow:hidden}.details>summary{padding:10px 11px;font-size:11px;font-weight:800;list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:9px}.details>summary:before{content:'▸';color:var(--blue);margin-right:4px}.details[open]>summary:before{content:'▾'}.details>summary span{margin-left:auto;color:var(--muted);font-size:10px;font-weight:500}.detailbody{border-top:1px solid var(--line);padding:11px}.detailbody p{margin:0 0 8px;font-size:11px;color:#526b78}#lisp-code{height:83px;min-height:83px;max-height:160px;resize:vertical;font:10px/1.45 Consolas,monospace;white-space:pre;overflow:auto}.check{display:flex;align-items:center;gap:8px;font-size:11px;color:#4d6877;margin:8px 0}.check input{accent-color:var(--blue)}input[type=color]{border:1px solid var(--line);padding:3px;width:48px;height:35px;border-radius:6px}.map-group{margin-top:10px}.group-title{font-size:10px;text-transform:uppercase;letter-spacing:.7px;font-weight:800;color:var(--blue);margin-bottom:5px}.map-option{display:grid;grid-template-columns:auto 24px minmax(0,1fr) auto;gap:6px;align-items:center;font-size:11px;padding:4px 0;cursor:pointer}.map-option input{accent-color:var(--blue)}.map-number{font:700 10px Consolas,monospace;color:#8498a2}.map-name{line-height:1.35}.map-state{font-size:9px;color:#8b9da7}.map-state.ready{color:var(--green)}.map-state.failed{color:var(--red)}.workspace{padding:16px;display:flex;flex-direction:column;gap:11px;min-height:calc(100vh - 132px)}.workspace-top,.workspace-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.workspace-top strong{font-size:14px}.nav{display:flex;align-items:center;gap:7px}.nav span{font-size:11px;font-weight:800;color:var(--muted);min-width:40px;text-align:center}.preview-area{background:#e8eef1;border:1px solid #dae5ea;border-radius:10px;padding:18px;display:flex;justify-content:center;align-items:center;flex:1;min-height:300px}.paper{position:relative;width:100%;max-width:1010px;aspect-ratio:297 / 210;background:white;box-shadow:0 4px 21px #183d5225;overflow:hidden}.paper canvas{display:block;width:100%;height:100%}.empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;color:#78919d;text-align:center;padding:20px;background:#fff}.empty[hidden]{display:none!important}.empty-icon{font-size:34px;color:#bdced5}.empty strong{font-size:14px;color:#547485}.empty p{font-size:11px;max-width:290px}.workspace-actions{margin-top:2px}.workspace-actions .inline-actions{margin:0}.statusline{margin-top:0;min-height:17px}.data-panel{border-top:1px solid var(--line);padding-top:11px}.data-panel>strong{font-size:12px}.source-list{margin-top:7px;display:grid;gap:5px;max-height:115px;overflow:auto}.source-row{display:flex;gap:8px;justify-content:space-between;font-size:10px;color:#5c7582;background:#f7fafb;padding:6px 8px;border-radius:6px}.source-row b{color:#315869}.source-row.failed b{color:var(--red)}.footer{margin-top:12px;color:var(--muted);font-size:10px;line-height:1.5}.print-host{display:none}
@media(max-width:930px){.layout{grid-template-columns:minmax(285px,33%) minmax(0,1fr);gap:9px}.app{padding:12px}.sidebar{position:static;max-height:none}.workspace{min-height:580px}.preview-area{padding:7px}}@media(max-width:700px){.layout{grid-template-columns:1fr}.workspace{min-height:0}.sidebar{max-height:none}.preview-area{padding:7px}.header h1{font-size:24px}.workspace-actions button{font-size:10px;padding:7px 8px}.paper{width:100%}}
@media print{@page{size:A4 landscape;margin:0}html,body{background:#fff!important}body>.app{display:none!important}.print-host{display:block!important}.print-page{width:297mm;height:210mm;margin:0;page-break-after:always;break-after:page;display:block;overflow:hidden}.print-page:last-child{page-break-after:auto}.print-page img{width:100%;height:100%;display:block;object-fit:contain}}

/* V5: per-figure live proximity and diagnostics */
.zoom-controls{display:flex;align-items:center;gap:7px;margin:7px 0}.zoom-controls input[type=range]{flex:1;min-width:80px;accent-color:#176d8b}.zoom-controls input[type=number]{width:70px;padding:8px 6px;border:1px solid #c5d9e3;border-radius:7px;text-align:right;font:700 13px Consolas,monospace}.zoom-marks{display:flex;justify-content:space-between;font-size:10px;color:#68808b;gap:8px}.zoom-presets{display:flex;justify-content:space-between;gap:7px;margin:10px 0}.zoom-presets button{flex:1;min-width:0}.diag-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:5px}.diag-head>div{display:flex;flex-wrap:wrap;gap:6px}

.map-state.check{color:#a16d18;font-weight:850}

/* V6 professional report figure controls and flexible paper sizing */
.paper {aspect-ratio:1782 / 1000;max-width:1120px}
.paper.plate-paper {aspect-ratio:297 / 210}
.paper.report-paper,.paper.map-paper{aspect-ratio:1782 / 1000}
#base-opacity-label,#theme-opacity-label{min-width:44px;font:700 12px Consolas,monospace;text-align:right;color:#315869}
#output-format,#background-style{font-size:12px;font-weight:650}
.workspace-actions{gap:10px}
.workspace-actions .inline-actions{gap:6px}
.workspace-actions button{white-space:nowrap}
@media print{@page {size:A4 landscape;margin:0} .print-page img{object-position:center center}}

/* V7: numbered figure strip and larger readable report legends */
.figure-number-nav{display:flex;gap:5px;flex-wrap:wrap;border-bottom:1px solid var(--line);padding:11px 12px;background:#f9fbfc}
.figure-number-nav button{min-width:40px;min-height:35px;border:1px solid #bdcfd9;border-radius:7px;background:white;color:#245064;font-size:12px;font-weight:800;cursor:pointer}
.figure-number-nav button.current{background:#146b85;border-color:#146b85;color:white}
.figure-number-nav button:not(.selected){color:#81939a;background:#f3f5f6;border-style:dashed}
.figure-number-nav button:focus-visible{outline:2px solid #2b9ace;outline-offset:2px}
.workspace-actions{align-items:flex-start}
@media(max-width:700px){.figure-number-nav button{min-width:35px;min-height:32px}}

/* V8 cartographic controls */
#grid-spacing{font-weight:650} .detailbody .fieldlabel{line-height:1.3}
#north-toggle,#scale-toggle,#grid-toggle{accent-color:var(--blue)}
