/* Minimal manual test harness. The document is the primary surface. */
:root { --sans:Arial,Helvetica,sans-serif; --mono:Consolas,"Liberation Mono",monospace; font:15px var(--sans); color:#111; background:#e8e8e8; }
* { box-sizing:border-box; }
[hidden] { display:none!important; }
html,body { width:100%; height:100%; margin:0; overflow:hidden; }
body { display:flex; flex-direction:column; }
button,select { font:inherit; color:inherit; }
button,a,select { cursor:pointer; }
button:disabled,select:disabled { opacity:.45; cursor:default; }
button:focus-visible,select:focus-visible,a:focus-visible,[tabindex]:focus-visible { outline:2px solid #111; outline-offset:3px; }
.app-header { display:flex; flex-shrink:0; align-items:center; gap:12px; height:60px; padding:0 22px; background:#fff; border-bottom:1px solid #999; }
.brand { font:700 21px var(--sans); margin-right:15px; }
.app-header>select { height:34px; max-width:280px; flex:1; min-width:0; margin-right:auto; padding:0 28px 0 10px; border:1px solid #777; border-radius:0; background:#fff; }
.generate-button { height:34px; padding:0 22px; background:#111; color:#fff; border:1px solid #111; border-radius:0; font-weight:600; }
.generate-button:hover:not(:disabled) { background:#333; }
.request-info { display:inline-flex; align-items:center; justify-content:center; width:26px; height:26px; border:1px solid #777; border-radius:0; color:#111; background:#fff; text-decoration:none; font:600 17px Georgia,serif; }
.request-info:hover { background:#eee; }
.drawing-main { display:flex; flex-direction:column; min-height:0; flex:1; background:#e8e8e8; }
.icon-button { width:30px; height:30px; border:0; border-radius:0; padding:0; background:none; font-size:24px; }
.icon-button:hover:not(:disabled) { background:#ddd; }
.canvas-scroll { flex:1; min-height:0; min-width:0; overflow:auto; padding:22px 24px 36px; }
.sheet-stack { display:flex; flex-direction:column; align-items:center; gap:32px; width:100%; min-height:100%; }
.empty-state { margin:auto; color:#555; font-size:14px; }
.paper-wrap { flex-shrink:0; width:var(--paper-width,640px); aspect-ratio:210 / 297; background:white; border:1px solid #aaa; box-shadow:none; user-select:none; }
.error-message { flex-shrink:0; padding:10px 22px; margin:0; border-bottom:1px solid #999; background:#fff; font-size:13px; }
.loading-overlay { position:fixed; inset:60px 0 0; z-index:20; display:flex; align-items:center; justify-content:center; color:#333; background:#fffffff0; }
@media(max-width:530px) { .app-header{height:56px;padding:0 12px;gap:8px}.brand{font-size:18px;margin-right:2px}.app-header>select{font-size:12px;padding-left:7px}.generate-button{font-size:12px;padding:0 12px}.request-info{width:24px;height:24px;flex:0 0 24px}.canvas-scroll{padding:14px 16px 24px} }

/* Technical drawing styles. All values below are document millimetres. */
.diagram { display:block; width:100%; height:100%; overflow:visible; font-family:Arial,Helvetica,sans-serif; color:#111; }
.diagram * { cursor:default; }
.diagram text { user-select:none; fill:#111; stroke:none; }
.diagram .drawing-frame,.diagram .titleblock-border { fill:none; stroke:#111; stroke-width:.5; }
.diagram .frame-rule { fill:none; stroke:#111; stroke-width:.25; }
.diagram .zone-reference { font-size:2.2px; fill:#222; }
.diagram .drawing-type { font-size:2.3px; font-weight:500; letter-spacing:.25px; }
.diagram .drawing-title { font-size:3.8px; font-weight:600; }
.diagram .drawing-sheet-title { font-size:2.3px; }
.diagram .status-box { fill:white; stroke:#111; stroke-width:.25; }
.diagram .drawing-status { font-size:2.5px; font-weight:700; letter-spacing:.2px; }
.diagram .symbol-body { fill:white; stroke:#1d3e91; stroke-width:.35; }
.diagram .symbol-stroke { fill:none; stroke:#1d3e91; stroke-width:.35; stroke-linecap:butt; stroke-linejoin:miter; }
.diagram .symbol-node text { fill:#1d3e91; }
.diagram .symbol-reference { font-size:var(--reference-font,3.5px); font-weight:700; }
.diagram .module-name { font-size:2.7px; font-weight:500; }
.diagram .primitive-value { font-size:var(--value-font,2.6px); }
.diagram .terminal-point { fill:white; stroke:#1d3e91; stroke-width:.25; }
.diagram .terminal-name { font-size:var(--terminal-font,2.5px); }
.diagram .terminal-number { font-size:var(--terminal-font,2.3px); }
.diagram .physical-pin-number { font-size:var(--physical-pin-font,1.9px); }
.diagram .electrical { --net-ink:#8c2457; }
.diagram .signal { --net-ink:#176b63; }
.diagram .mechanical { --net-ink:#555; }
.diagram .symbol-legend { --net-ink:#1d3e91; }
.diagram .wire-line { fill:none; stroke:var(--net-ink,#8c2457); stroke-width:.35; stroke-linecap:butt; stroke-linejoin:miter; }
.diagram .wire-line.mechanical { stroke-dasharray:1.41 1.06; }
.diagram .wire-label { font-size:2.4px; fill:var(--net-ink,#8c2457); stroke:white; stroke-width:.75; paint-order:stroke; stroke-linejoin:round; }
.diagram .junction-dot { fill:var(--net-ink,#8c2457); stroke:none; }
.diagram .crossing-gap { fill:white; stroke:none; }
.diagram .cross-page-arrow,.diagram .cross-page-stub { fill:none; stroke:var(--net-ink,#8c2457); stroke-width:.25; stroke-linejoin:miter; }
.diagram .cross-page-ref.mechanical .cross-page-stub { stroke-dasharray:1.41 1.06; }
.diagram .reference-box { fill:white; stroke:#111; stroke-width:.25; }
.diagram .reference-text { font-size:2.1px; fill:var(--net-ink,#8c2457); }
.diagram .reference-marker { font-size:2.4px; font-weight:700; fill:var(--net-ink,#8c2457); }
.diagram .reference-local-marker { font-size:2.1px; font-weight:700; fill:var(--net-ink,#8c2457); }
.diagram .legend-line { stroke:var(--net-ink,#8c2457); stroke-width:.25; }
.diagram .mechanical .legend-line { stroke-dasharray:2 1.5; }
.diagram .legend-text { font-size:2px; fill:var(--net-ink,#8c2457); }
.diagram .cell-label { font-size:2px; font-weight:500; letter-spacing:.1px; }
.diagram .cell-value { font-size:2.7px; font-weight:500; }
.diagram .sheet-note { font-size:2.2px; }
.diagram .unrouted-label { font-size:2.5px; font-weight:600; fill:#111; stroke:white; stroke-width:1; paint-order:stroke; }
@media print {
  html,body { overflow:visible; background:white; }
  .app-header,.error-message { display:none!important; }
  .drawing-main,.canvas-scroll { display:block; padding:0; overflow:visible; background:white; }
  .sheet-stack { display:block; }
  .paper-wrap { width:210mm!important; height:297mm!important; margin:0; border:0; box-shadow:none; break-after:page; }
  .paper-wrap:last-child { break-after:auto; }
}
