:root{--bg:#12151a;--bg-panel:#1a1f26;--bg-elevated:#242b34;--bg-hover:#2c3440;--border:#323a46;--border-strong:#3f4958;--text:#e6eaef;--text-muted:#8b95a3;--accent:#d4a84b;--accent-dim:#9a7a35;--accent-soft:color-mix(in srgb, var(--accent) 18%, transparent);--line:#e24b4b;--line-selected:#f0c14b;--danger:#c45c5c;--focus:color-mix(in srgb, var(--accent) 45%, transparent);--radius:5px;--font:"Source Sans 3", "Segoe UI", system-ui, sans-serif;--mono:"IBM Plex Mono", "Consolas", monospace;--toolbar-h:2.35rem}*{box-sizing:border-box}html,body,#root{background:var(--bg);height:100%;color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;font-size:13.5px;overflow:hidden}button,input,select{font:inherit;color:inherit}button{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;padding:.3rem .55rem;line-height:1.2}button:hover:not(:disabled){border-color:var(--border-strong);background:var(--bg-hover)}button:disabled{opacity:.4;cursor:not-allowed}button.active,.icon-btn.active,.toggle-btn.active,.panel-toggle.open{background:var(--accent-soft);color:var(--accent);border-color:color-mix(in srgb, var(--accent) 55%, var(--border));font-weight:600}button.danger:not(:disabled):hover,.danger-icon:not(:disabled):hover{border-color:var(--danger);color:#fff;background:color-mix(in srgb, var(--danger) 22%, var(--bg-elevated))}.app{flex-direction:column;height:100%;min-height:0;display:flex;overflow:hidden}.toolbar{background:linear-gradient(180deg, #1c222a 0%, var(--bg-panel) 100%);border-bottom:1px solid var(--border);z-index:20;flex-direction:column;flex:none;display:flex}.toolbar-main{min-height:var(--toolbar-h);flex-wrap:wrap;align-items:center;gap:.35rem .4rem;padding:.35rem .55rem;display:flex}.toolbar-spacer{flex:auto;min-width:.5rem}.build-id{font-family:var(--mono);letter-spacing:.02em;color:var(--text-muted);-webkit-user-select:all;user-select:all;white-space:nowrap;flex-shrink:0;margin-left:.85rem;font-size:.78rem;font-weight:500;line-height:1}.brand{letter-spacing:.04em;text-transform:uppercase;color:var(--accent);white-space:nowrap;-webkit-user-select:none;user-select:none;margin-right:.25rem;font-size:.92rem;font-weight:700}.seg{border-right:1px solid var(--border);align-items:center;gap:.15rem;margin-right:.1rem;padding-right:.4rem;display:inline-flex}.seg:last-of-type{border-right:none}.icon-btn{border-radius:var(--radius);min-width:1.85rem;height:1.85rem;color:var(--text-muted);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;gap:.3rem;padding:0 .35rem;display:inline-flex}.icon-btn:hover:not(:disabled){color:var(--text);background:var(--bg-elevated);border-color:var(--border)}.icon-btn.with-label{color:var(--text);padding:0 .5rem}.icon-btn.with-label span,.toggle-btn .toggle-text{white-space:nowrap;font-size:.78rem;font-weight:500}.btn-text{background:var(--bg-elevated);border:1px solid var(--border);padding:.28rem .55rem;font-size:.78rem}.btn-accent{background:var(--accent);color:#1a1508;border:1px solid var(--accent);padding:.28rem .65rem;font-weight:600}.btn-accent:hover:not(:disabled){filter:brightness(1.06);background:var(--accent);border-color:var(--accent)}.panel-toggle{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);height:1.85rem;color:var(--text);align-items:center;gap:.35rem;max-width:10.5rem;padding:0 .45rem;display:inline-flex}.panel-toggle-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:.78rem;font-weight:500;overflow:hidden}.layer-swatch{border:1px solid #ffffff40;border-radius:2px;flex:none;width:.7rem;height:.7rem}.toolbar-panel{border-top:1px solid var(--border);background:color-mix(in srgb, var(--bg) 55%, var(--bg-panel));flex-wrap:wrap;align-items:center;gap:.45rem .65rem;padding:.45rem .65rem .55rem;animation:.14s panel-in;display:flex}@keyframes panel-in{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}.toolbar-panel-title{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin-right:.25rem;font-size:.68rem;font-weight:700}.scale-panel-body,.layer-panel{flex-wrap:wrap;flex:1;align-items:center;gap:.4rem .55rem;display:inline-flex}.layer-panel .layer-select-group{align-items:center;gap:.15rem;display:inline-flex}.layer-panel .layer-select-group select{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);max-width:9rem;height:1.7rem;padding:.15rem .4rem;font-size:.8rem;line-height:1.2}.layer-panel .layer-name input{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);width:5.5rem;padding:.25rem .4rem}.layer-panel .layer-color input[type=color]{border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;background:0 0;width:1.7rem;height:1.55rem;padding:0}.layer-panel .layer-opacity input[type=range]{width:4.25rem;accent-color:var(--accent)}.layer-panel .layer-width-custom{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);width:3.1rem;padding:.25rem .3rem}.layer-order{gap:.15rem;display:inline-flex}.prompt-panel{background:color-mix(in srgb, var(--accent) 12%, var(--bg-panel))}.prompt-panel.detect-prompt{background:color-mix(in srgb, #3a9fe0 14%, var(--bg-panel))}.prompt-panel input[type=text]{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);min-width:7rem;padding:.3rem .45rem}.prompt-hint{color:var(--text-muted);margin-left:.25rem;font-size:.72rem}.meta{color:var(--text-muted);text-align:center;font-variant-numeric:tabular-nums;min-width:2.75rem;font-size:.78rem}.zoom-meta{min-width:2.6rem}.page-jump{align-items:center;gap:.2rem;display:inline-flex}.page-jump input{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);text-align:center;font-variant-numeric:tabular-nums;width:2.75rem;height:1.7rem;padding:.15rem .25rem}.page-jump .meta{min-width:0}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.page-layer{position:absolute;top:0;left:0}.page-layer.is-zooming{will-change:transform}.page-layer .pdf-canvas{display:block}.overlay-layer{position:absolute;top:0;left:0}.overlay-layer .measure-overlay{width:100%;height:100%}.search-highlights{pointer-events:none;z-index:1;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.search-hit{fill:#ffd60a59;stroke:#c89600b3;stroke-width:1px;vector-effect:non-scaling-stroke}.search-hit.active{fill:#ff782873;stroke:#e86a12;stroke-width:2px}.scale-detect-hit{fill:#50b4ff66;stroke:#3a9fe0;stroke-width:2px}.search-bar{flex-wrap:nowrap;flex:none;align-items:center;gap:.15rem;display:inline-flex}.search-field input{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);width:6.5rem;min-width:0;height:1.7rem;padding:.15rem .4rem}.search-field input:focus{border-color:var(--accent-dim);box-shadow:0 0 0 2px var(--focus);outline:none}.search-count{text-align:left;min-width:2.4rem;font-size:.72rem}.field{align-items:center;gap:.3rem;font-size:.8rem;display:inline-flex}.field.check{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.field.check input{accent-color:var(--accent);margin:0}.field span,.field-label{color:var(--text-muted);letter-spacing:.02em;text-transform:uppercase;font-size:.72rem;font-weight:600}.field select,.custom-scale input,.snap-input{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);min-width:0;height:1.7rem;padding:.25rem .4rem}.field select:focus,.custom-scale input:focus,.snap-input:focus{border-color:var(--accent-dim);box-shadow:0 0 0 2px var(--focus);outline:none}.snap-input{font-variant-numeric:tabular-nums;width:3.5rem}.field .unit{color:var(--text-muted)}.list-layer-swatch{vertical-align:middle;border:1px solid #fff3;border-radius:2px;width:.6rem;height:.6rem;margin-right:.35rem;display:inline-block}.list-markup{color:var(--text-muted);font-style:italic}.custom-scale{align-items:center;gap:.25rem;font-size:.8rem;display:inline-flex}.custom-scale input[type=number]{width:4rem}.custom-scale .unit-ratio-input{width:3.25rem}.custom-scale .scale-pair-input,.custom-scale input[type=text]{width:5.5rem}.toolbar-status{color:var(--text-muted);border-top:1px solid color-mix(in srgb, var(--border) 70%, transparent);align-items:baseline;gap:.85rem;padding:.2rem .65rem .35rem;font-size:.72rem;display:flex}.file-name{color:var(--text);font-family:var(--mono);font-size:.7rem}.status-msg{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.workspace{flex:1;grid-template-columns:1fr minmax(240px,280px);min-height:0;transition:grid-template-columns .18s;display:grid;overflow:hidden}.workspace.sidebar-collapsed{grid-template-columns:1fr 40px}.viewer-pane{min-width:0;min-height:0;display:flex;position:relative;overflow:hidden}.viewer-pane .viewport{flex:1;min-width:0;min-height:0}.page-scrubber{background:var(--bg-panel);border-left:1px solid var(--border);-webkit-user-select:none;user-select:none;flex-direction:column;flex:0 0 56px;align-items:center;gap:.35rem;padding:.5rem .15rem;display:flex}.page-scrubber-track{flex:1;justify-content:center;width:100%;min-height:0;display:flex;position:relative}.page-scrubber-range{writing-mode:vertical-lr;appearance:none;cursor:grab;direction:ltr;background:0 0;width:22px;height:100%;margin:0}.page-scrubber-range:active{cursor:grabbing}.page-scrubber-range::-webkit-slider-runnable-track{background:var(--border);border-radius:3px;width:6px}.page-scrubber-range::-webkit-slider-thumb{appearance:none;width:16px;height:16px;box-shadow:none;background:0 0;border:2px solid #0000;border-radius:50%;margin-left:-5px}.page-scrubber-range::-moz-range-track{background:var(--border);border-radius:3px;width:6px}.page-scrubber-range::-moz-range-thumb{width:16px;height:16px;box-shadow:none;background:0 0;border:2px solid #0000;border-radius:50%}.page-scrubber-arrow{width:1.5rem;height:1.5rem;color:var(--text-muted);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:4px;flex:none;justify-content:center;align-items:center;padding:0;font-size:.55rem;line-height:1;display:inline-flex}.page-scrubber-arrow:hover:not(:disabled){color:var(--text);border-color:var(--accent);background:var(--bg-elevated,transparent)}.page-scrubber-arrow:disabled{opacity:.35;cursor:default}.page-scrubber-label{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:.65rem}.page-scrubber-thumb-group{z-index:3;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;left:0;right:0;transform:translateY(-50%)}.page-scrubber-bubble{background:var(--accent);color:#1a1d21;font-variant-numeric:tabular-nums;text-align:center;pointer-events:none;border-radius:4px;min-width:1.25rem;padding:.1rem .25rem;font-size:.7rem;font-weight:700;position:absolute;right:calc(50% + 12px);box-shadow:0 1px 3px #00000059}.page-scrubber-thumb-nav{pointer-events:none;flex-direction:column;align-items:center;display:flex}.page-scrubber-thumb-dot{background:var(--accent);box-sizing:border-box;border:2px solid #1a1d21;border-radius:50%;flex:0 0 16px;width:16px;height:16px;box-shadow:0 1px 3px #00000059}.page-scrubber-thumb-arrow{pointer-events:auto;color:#1a1d21;background:var(--accent);cursor:pointer;border:1px solid #1a1d21;border-radius:3px;flex:none;justify-content:center;align-items:center;width:1.1rem;height:1.1rem;margin:2px 0;padding:0;font-size:.45rem;line-height:1;display:inline-flex;box-shadow:0 1px 2px #0000004d}.page-scrubber-thumb-arrow:hover:not(:disabled){filter:brightness(1.08)}.page-scrubber-thumb-arrow:disabled{opacity:.35;cursor:default}.viewport{touch-action:none;background-color:#1e2227;background-image:linear-gradient(45deg,#15181c 25%,#0000 25%),linear-gradient(-45deg,#15181c 25%,#0000 25%),linear-gradient(45deg,#0000 75%,#15181c 75%),linear-gradient(-45deg,#0000 75%,#15181c 75%);background-position:0 0,0 10px,10px -10px,-10px 0;background-repeat:repeat,repeat,repeat,repeat;background-size:20px 20px;background-attachment:scroll,scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box,border-box;position:relative;overflow:hidden}.empty-viewport{place-items:center;display:grid}.stage{transform-origin:0 0;position:absolute;top:0;left:0;box-shadow:0 8px 32px #00000073}.pdf-canvas{background:#fff;display:block}.measure-overlay{z-index:2;display:block;position:absolute;inset:0;overflow:visible}.meas-line{stroke:var(--line);fill:none;pointer-events:none;stroke-dasharray:var(--line-dash,none);stroke-linecap:var(--line-cap,butt)}.meas.selected .meas-line{stroke:var(--line-selected)}.draft-line{opacity:.9}.meas-hit{stroke:#0000;fill:none;cursor:pointer}.meas-hit-fill{fill:#0000;stroke:none;cursor:pointer}.meas-fill{fill:color-mix(in srgb, var(--line) 12%, transparent);stroke:none;pointer-events:none}.meas-line-rect,.meas-line-circle{stroke:var(--line);pointer-events:none;stroke-dasharray:var(--line-dash,none);stroke-linecap:var(--line-cap,butt)}.meas.selected .meas-line-rect,.meas.selected .meas-line-circle{stroke:var(--line-selected)}.endpoint-magnet{stroke:var(--accent);pointer-events:none}.meas.selected .meas-fill{fill:color-mix(in srgb, var(--line-selected) 18%, transparent)}.meas-end{fill:#fff;stroke:var(--line);pointer-events:none}.meas.selected .meas-end{stroke:var(--line-selected);fill:var(--line-selected)}.dim-label-bg{fill:#fffffff0;stroke:#1a1d2133;stroke-width:1px;vector-effect:non-scaling-stroke;pointer-events:none}.dim-label-bg.angle{fill:#e8f2fff5;stroke:#1a3a5c40}.dim-label-bg.selected{stroke:var(--accent);stroke-width:1.5px}.dim-label-text{fill:#111418;font-family:var(--mono);pointer-events:none;-webkit-user-select:none;user-select:none;font-weight:700}.dim-label-text.angle{fill:#14365c}.meas-leader{stroke:var(--line);stroke-dasharray:4 3;fill:none;pointer-events:none;opacity:.85}.meas-leader.selected{stroke:var(--line-selected)}.measurement-list{background:var(--bg-panel);border-left:1px solid var(--border);flex-direction:column;min-height:0;display:flex;overflow:hidden}.measurement-list.collapsed{justify-content:flex-start;align-items:stretch;padding:.35rem .2rem}.sidebar-rail-btn{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);width:100%;min-height:4rem;color:var(--text-muted);cursor:pointer;flex-direction:column;align-items:center;gap:.35rem;padding:.45rem .15rem;display:flex}.sidebar-rail-btn:hover{color:var(--accent);border-color:var(--accent-dim)}.rail-count{font-family:var(--mono);color:var(--accent);font-size:.7rem;font-weight:600}.list-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:.35rem;padding:.45rem .55rem;display:flex}.list-header-left{flex:1;align-items:center;gap:.25rem;min-width:0;display:flex}.sidebar-tabs{align-items:center;gap:.15rem;min-width:0;display:flex}.sidebar-tab{border-radius:var(--radius);height:1.65rem;color:var(--text-muted);white-space:nowrap;background:0 0;border:1px solid #0000;align-items:center;gap:.3rem;padding:0 .45rem;font-size:.78rem;font-weight:500;display:inline-flex}.sidebar-tab:hover:not(:disabled){color:var(--text);border-color:var(--border);background:var(--bg-elevated)}.sidebar-tab.active{color:var(--accent);background:var(--accent-soft);border-color:color-mix(in srgb, var(--accent) 55%, var(--border));font-weight:600}.list-header h2{align-items:center;gap:.4rem;margin:0;font-size:.82rem;font-weight:600;display:flex}.list-count{font-family:var(--mono);color:var(--accent);background:var(--accent-soft);border-radius:4px;padding:.05rem .4rem;font-size:.7rem;font-weight:600}.sidebar-tab:not(.active) .list-count{color:var(--text-muted);background:color-mix(in srgb, var(--border) 55%, transparent)}.list-actions{flex-shrink:0;gap:.15rem;display:flex}.views-panel{flex-direction:column;flex:1;min-height:0;display:flex}.views-actions{padding:.55rem .55rem .25rem}.save-view-btn{justify-content:center;width:100%}.views-list{flex:1;margin:0;padding:.35rem;list-style:none;overflow:auto}.view-item{gap:.35rem}.view-item-actions{justify-content:flex-end;align-items:center;gap:.25rem;display:flex}.list-empty{color:var(--text-muted);padding:1rem .85rem;font-size:.8rem;line-height:1.45}.measurement-list ul{flex:1;margin:0;padding:.35rem;list-style:none;overflow:auto}.list-item{background:var(--bg);border-radius:var(--radius);border:1px solid #0000;flex-direction:column;gap:.3rem;width:100%;margin-bottom:.2rem;padding:.45rem .5rem;display:flex}.list-item:hover{border-color:var(--border)}.list-item.active{border-color:color-mix(in srgb, var(--accent) 65%, var(--border));background:color-mix(in srgb, var(--accent) 8%, var(--bg-elevated))}.list-item.other-page{opacity:.65}.list-item-main{text-align:left;cursor:pointer;background:0 0;border:none;border-radius:0;grid-template-rows:auto auto;grid-template-columns:1fr auto;gap:.1rem .45rem;width:100%;margin:0;padding:0;display:grid}.list-item-main:hover{background:0 0;border-color:#0000}.list-label{font-size:.8rem;font-weight:600}.list-length{font-family:var(--mono);color:var(--accent);text-align:right;max-width:11rem;font-size:.68rem;line-height:1.25}.list-meta{color:var(--text-muted);grid-column:1/-1;font-size:.68rem}.list-description{width:100%;display:block}.list-description input{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);width:100%;padding:.28rem .4rem;font-size:.75rem}.list-description input:focus{border-color:var(--accent-dim);box-shadow:0 0 0 2px var(--focus);outline:none}.list-description input::placeholder{color:var(--text-muted);opacity:.8}.list-hint{border-top:1px solid var(--border);color:var(--text-muted);padding:.45rem .65rem;font-size:.68rem}.list-hint p{margin:0}.empty-message{text-align:center;max-width:26rem;color:var(--text-muted);padding:2rem}.empty-message h2{color:var(--accent);letter-spacing:.04em;text-transform:uppercase;margin:0 0 .5rem;font-size:1.5rem}@media (width<=900px){.workspace,.workspace.sidebar-collapsed{grid-template-rows:1fr auto;grid-template-columns:1fr}.viewer-pane{min-height:0}.measurement-list{border-left:none;border-top:1px solid var(--border);max-height:220px}.measurement-list.collapsed{flex-direction:row;max-height:44px;padding:.25rem}.sidebar-rail-btn{flex-direction:row;height:2rem;min-height:0}.panel-toggle-label{display:none}}
