/* Studio 5 additions: controls remain in their existing responsive panels. */
.v5-controls{padding-bottom:12px;margin-bottom:22px}.v5-controls>.section-label:first-child{margin-top:0}.v5-select{display:grid;gap:8px;font-size:12px}.v5-select select{width:100%;padding:8px;border:1px solid var(--line);border-radius:10px;background:white}.mini{cursor:pointer;text-decoration:underline;text-underline-offset:3px;color:var(--accent-text);font-size:12px;padding:7px 0}.finish-presets{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin:14px 0}.finish-presets button{padding:9px 3px;border:1px solid var(--line-strong);background:#fff;border-radius:999px;cursor:pointer;font-size:12px}.finish-presets button.active{background:var(--accent);color:white;border-color:var(--accent)}.size-summary{display:grid;gap:7px;margin:12px 0;font-size:12px}.size-summary strong{font-size:13px}.thumb-item{position:relative}.thumb-size{position:absolute;right:0;bottom:22px;border:1px solid var(--line-strong);border-radius:4px;background:oklch(1 0 0 / 0.95);padding:3px;cursor:pointer;width:23px;height:23px;z-index:2}.thumb-size svg{width:15px;height:15px;stroke:var(--ink);fill:none;stroke-width:1.5}.hue-wheel{display:block;width:200px;height:200px;max-width:100%;touch-action:none;margin:12px auto;cursor:crosshair}.wheel-value{display:grid;gap:5px;font-size:12px}.size-table{margin-top:18px}.size-table-head,.size-row{display:grid;grid-template-columns:minmax(190px,2fr) repeat(3,minmax(74px,1fr)) 94px 65px;gap:12px;align-items:center}.size-table-head{padding:10px 9px;font-size:12px;color:var(--ink)}.size-row{padding:12px 9px;border-top:1px solid var(--line)}.size-row.current{background:var(--soft)}.size-row input[type=number]{width:100%;min-width:0;padding:8px;font-size:12px}.size-name{display:flex;align-items:center;gap:12px;text-align:left;min-width:0;cursor:pointer;background:none;border:0;padding:0}.size-name img{width:40px;height:58px;object-fit:contain}.size-name span{min-width:0;display:grid;gap:5px}.size-name strong{font-size:12px;line-height:1.4;font-weight:500}.size-name small{font-size:11.5px;color:var(--ink-2)}.mobile-label{display:none}.v5-import-option{padding:13px 0 5px}.v5-back-option{margin:16px 0}.v5-quality{margin-top:22px}.source-workbench,.guide-workbench{margin-top:18px}.source-workbench>.actions{display:flex;flex-wrap:wrap;align-items:center;gap:13px}.routing-pattern{display:flex;gap:14px;align-items:end;margin:25px 0 18px;flex-wrap:wrap}.routing-pattern label{display:grid;gap:7px;font-size:12px;flex:1;min-width:160px}.route-pages{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;max-height:660px;overflow:auto;padding:4px}.route-page{border:1px solid var(--line);border-radius:12px;padding:12px;background:#fff}.route-page label{display:grid;gap:5px;font-size:12px;margin-top:10px;word-break:break-word}.route-page select{width:100%;padding:7px}.route-preview{background:var(--sunken);display:grid;place-items:center;padding:7px;gap:6px}.route-preview img{width:100%;height:145px;object-fit:contain}.route-preview span{font-size:11.5px;font-weight:600}.route-page>small{display:block;color:var(--ink);margin-top:9px;font-size:11.5px}.guide-toolbar,.guide-actions{display:flex;flex-wrap:wrap;gap:9px;align-items:end;margin:13px 0}.guide-toolbar label,.guide-actions>label{display:grid;gap:5px;font-size:12px;max-width:190px}.guide-toolbar input,.guide-actions input[type=number]{width:100%;max-width:130px;padding:8px}.guide-toolbar select{padding:8px}.guide-actions button.fold{border-color:#6ea5d6;color:#216cbb}.guide-actions button.cut{border-color:#e0999f;color:#bd3040}.guide-scroll{max-height:650px;overflow:auto;background:var(--line);border:1px solid var(--line);border-radius:12px;padding:12px;overscroll-behavior:contain}.guide-sheet{position:relative;width:100%;margin:auto;background:white}.guide-sheet img{position:absolute;inset:0;width:100%;height:100%;object-fit:fill}.guide-die{mix-blend-mode:multiply;opacity:.5}.guide-sheet svg{position:absolute;inset:0;width:100%;height:100%;touch-action:none;overflow:visible}.guide-sheet g.vertical{cursor:ew-resize}.guide-sheet g.horizontal{cursor:ns-resize}.guide-sheet text{pointer-events:none}.guide-actions .check{display:flex;gap:8px;align-self:center}.v5-quality .form-grid{margin-top:17px}.v5-quality input[type=checkbox]{width:auto}.source-workbench summary,.guide-workbench summary{font-weight:600}.size-row .check{display:flex;gap:5px;align-items:center;font-size:12px}.size-row input:invalid{outline:2px solid #b94949}.guide-actions input[type=range]{max-width:150px}
@media(max-width:800px){.size-table-head{display:none}.size-row{grid-template-columns:repeat(3,minmax(60px,1fr));gap:10px}.size-name{grid-column:1/-1}.size-row .check{grid-column:1/3}.size-row .mobile-label{display:block;font-size:11.5px;margin-bottom:5px}.route-pages{grid-template-columns:repeat(2,minmax(0,1fr))}.guide-scroll{max-height:500px}.guide-toolbar{align-items:stretch}.guide-actions{gap:7px}.guide-actions button{font-size:11.5px;padding:8px}}
@media(max-width:480px){.route-pages{grid-template-columns:1fr}.guide-toolbar>label{flex:1}.guide-scroll{padding:5px}.route-preview img{height:170px}}

.guide-sheet g text{opacity:0;transition:opacity .1s}.guide-sheet g[data-selected=true] text,.guide-sheet g:hover text{opacity:1}

/* The form and the net have separate viewports; at 100% the entire sheet fits. */
#dialog.guide-panel-open{width:min(1640px,calc(100vw - 36px));height:min(920px,calc(100dvh - 44px));overflow:hidden}
#dialog.sources-space.guide-panel-open{width:100%;height:100%;max-height:none}
#dialog.guide-panel-open #dialog-content{height:100%;min-height:0;display:grid;grid-template-columns:minmax(380px,.9fr) minmax(0,1.1fr);grid-template-rows:auto minmax(0,1fr) auto;padding:0;gap:0}
#dialog.guide-panel-open .modal-head{grid-column:1;grid-row:1;position:static;display:flex;flex-wrap:wrap;background:#fff;border-bottom:1px solid var(--line);padding:20px}
#dialog.guide-panel-open .sources-steps{order:3;flex-basis:100%;flex-wrap:wrap;gap:8px;justify-self:start}
#dialog.guide-panel-open .sources-steps button+button::before{display:none}
#dialog.guide-panel-open .sources-actions{display:flex;flex-wrap:wrap;gap:8px}
#dialog.guide-panel-open .sources-rail{display:none}
#dialog.guide-panel-open .modal-body{grid-column:1;grid-row:2;min-height:0;overflow:auto;padding:22px;border-radius:0}
#dialog.guide-panel-open .modal-foot{grid-column:1;grid-row:3;position:static;flex-wrap:wrap;padding:14px 20px}
.guide-panel{grid-column:2;grid-row:1/-1;min-width:0;min-height:0;display:flex;flex-direction:column;gap:12px;padding:18px;background:var(--bg);border-left:1px solid var(--line);overflow:hidden}
.guide-panel[hidden]{display:none}
.guide-panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-shrink:0}
.guide-panel-head h2{font-size:18px;letter-spacing:-.02em;margin:0}
.guide-panel .guide-toolbar{margin:0;flex-shrink:0}
.guide-panel #guide-area{flex:1;min-height:0;display:flex;flex-direction:column;gap:10px}
.guide-panel .guide-actions{flex-shrink:0;margin:0}
.guide-panel .guide-actions button{padding:8px 10px;font-size:12px}
.guide-panel .guide-actions .note{flex-basis:100%;margin:0;font-size:11px}
.guide-panel .guide-scroll{flex:1;min-height:80px;max-height:none;padding:12px;scrollbar-gutter:stable;display:flex;align-items:flex-start}
.guide-panel .guide-sheet{flex-shrink:0}
.guide-panel #guide-area>p.note{flex-shrink:0;font-size:11px;margin:0}
.guide-panel .guide-analysis{flex-shrink:0;max-height:30%;overflow:auto;margin:0;padding:10px 12px;background:#fff}
.guide-panel .guide-analysis summary{font-size:12px;font-weight:600;cursor:pointer}
@media(max-width:900px){
 #dialog.guide-panel-open #dialog-content{grid-template-columns:minmax(0,1fr)}
 #dialog.guide-panel-open :is(.modal-head,.modal-body,.modal-foot){display:none}
 .guide-panel{grid-column:1;grid-row:1/-1;border-left:0;padding:14px}
 .guide-panel .guide-toolbar label{max-width:150px}
}

/* Board folding mode: visible crease diagram, not a bitmap. */
.board-fold-controls{margin-bottom:18px;padding-bottom:10px}
.fold-sketch{width:112px;height:68px;border:1px solid var(--line-strong);border-radius:4px;position:relative;margin:12px auto;background:var(--sunken);overflow:hidden}
.fold-sketch span,.fold-sketch i{position:absolute;top:0;bottom:0;border-left:1px dashed var(--accent);width:0;left:33.333%}
.fold-sketch i{left:66.666%}.fold-sketch.cross span{left:50%}.fold-sketch.cross i{left:0;right:0;top:50%;bottom:auto;width:100%;border-left:0;border-top:1px dashed var(--accent)}

/* Per-element angular limits, independent of camera zoom or rotation speed. */
.object-rotation{padding-bottom:14px;margin-bottom:18px}.object-rotation-row{display:grid;grid-template-columns:18px 47px minmax(0,1fr) 47px;gap:6px;align-items:center;margin:10px 0;font-size:12px}.object-rotation-row>label{font-weight:600}.object-rotation-row button{padding:7px 2px;border:1px solid var(--line-strong);border-radius:999px;background:#fff;color:var(--ink);cursor:pointer;font-size:12px}.object-angle{display:flex;align-items:center;gap:3px;min-width:0}.object-angle input{width:100%;min-width:0;padding:6px 3px;border:1px solid var(--line);border-radius:10px;text-align:right;font:inherit}.object-rotation-row :disabled{opacity:.4;cursor:default}
.rotation-controls{padding-bottom:18px;margin-bottom:16px}
.rotation-controls .section-label{margin-top:0}
.rotation-axis{padding:13px 0 9px;border-top:1px solid var(--line)}
.rotation-title{display:flex;gap:7px;justify-content:space-between;align-items:flex-start;flex-wrap:wrap}
.rotation-title label{display:flex;gap:7px;align-items:center;font-size:12px;font-weight:550}
.rotation-title b{display:inline-grid;place-items:center;font:600 10px ui-monospace,monospace;width:21px;height:21px;border-radius:8px;background:var(--line);color:var(--ink)}
.rotation-title output{font-size:11.5px;color:var(--ink);font-variant-numeric:tabular-nums;padding-top:3px;white-space:nowrap}
.rotation-axis input[type=range]{width:100%;margin:12px 0 6px;accent-color:var(--accent)}
.rotation-scale{display:flex;justify-content:space-between;font-size:9.5px;color:var(--ink-2)}
.rotation-presets{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:10px;margin-bottom:12px}
.rotation-presets button{border:1px solid var(--line-strong);border-radius:999px;background:#fff;font-size:11.5px;padding:7px 4px;color:var(--ink)}
.rotation-presets button.active{border-color:var(--accent);background:var(--soft);color:var(--ink)}
.rotation-controls .rotation-help{font-size:10.5px;line-height:1.65}
.technical-picker{margin:20px 0;border:1px solid var(--line);padding:18px;border-radius:16px;background:#fff}.technical-picker summary{font-weight:650;cursor:pointer}.technical-summaries{display:grid;gap:8px;margin:14px 0}.technical-summary{display:flex;justify-content:space-between;gap:12px;background:var(--sunken);border-radius:8px;padding:12px}.technical-summary span{display:block;font-size:12px;margin-top:5px}.technical-pages{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;margin:18px 0;max-height:400px;overflow:auto;padding:4px}.technical-page{display:flex;flex-direction:column;align-items:stretch;background:white;border:1px solid var(--line);border-radius:14px;overflow:hidden;padding:8px;cursor:pointer;text-align:left;gap:6px}.technical-page[aria-pressed=true]{outline:2px solid var(--accent)}.technical-page img{height:125px;width:100%;object-fit:contain;background:white}.technical-page span{font-size:10.5px;color:var(--ink-2)}.technical-selection{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(230px,1fr);gap:24px;border-top:1px solid var(--line);padding-top:20px}.technical-preview img{width:100%;height:360px;object-fit:contain;background:white;border:1px solid var(--line)}.technical-preview small{display:block;margin-top:10px}.technical-choice{display:flex;flex-direction:column;gap:12px}.technical-choice h3{margin:0}.technical-layers{display:flex;flex-direction:column;gap:10px;padding:12px;background:white;border:1px solid var(--line);max-height:220px;overflow:auto}.technical-layers.inactive{opacity:.45;pointer-events:none}.technical-layers small{font-size:11.5px;color:var(--ink-2)}.technical-choice .btn{justify-content:center;white-space:normal}.technical-selection[hidden],.technical-picker [hidden]{display:none!important}@media(max-width:700px){.technical-selection{grid-template-columns:1fr}.technical-preview img{height:250px}.technical-pages{grid-template-columns:repeat(2,1fr)}}
.punch-page-pairing{margin:20px 0;border:1px solid var(--line);padding:18px;border-radius:16px;background:#fff}.punch-page-pairing summary{font-weight:650;cursor:pointer}.punch-page-pairing .actions{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin:14px 0}.punch-die-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(135px,1fr));gap:12px;max-height:400px;overflow:auto;margin:15px 0}.punch-cut-page{margin:0;border:1px solid var(--line);border-radius:14px;background:white;padding:9px;display:grid;gap:7px;cursor:pointer}.punch-cut-page img{display:block;width:100%;height:115px;object-fit:contain}.punch-cut-page input{accent-color:var(--accent);justify-self:start}.punch-cut-page span{font-size:11.5px;line-height:1.5}.punch-page-pairing [hidden]{display:none!important}
.scene-options{padding-bottom:20px;margin-bottom:18px}.scene-options .section-label{margin-top:8px}.layout-permissions{display:flex;gap:12px;flex-wrap:wrap;margin:15px 0}.scene-options select,.back-edge-options select{display:block;width:100%;margin-top:9px}.lighting-presets{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:14px 0 22px}.lighting-presets button{background:white;border:1px solid var(--line);padding:10px 7px;border-radius:14px;font-size:11.5px;display:flex;align-items:center;gap:7px;text-align:left}.lighting-presets button[aria-pressed=true]{border-color:var(--accent);background:var(--soft);box-shadow:0 0 0 1px var(--accent)}.light-ball{display:block;width:23px;height:23px;flex-shrink:0;border-radius:50%;background:radial-gradient(circle at 30% 25%,white,#e4e8e1 43%,#69716b);box-shadow:2px 2px 3px color-mix(in oklch,var(--accent) 13%,transparent)}.light-ball.bright{background:radial-gradient(circle at 35% 25%,white,#f0f2e9 65%,#a9b3a6)}.light-ball.contrast{background:radial-gradient(circle at 20% 20%,white,#a5b3a2 26%,#192b21 75%)}.light-ball.raking{background:linear-gradient(100deg,#fff 3%,#dadfd5 23%,#40534a 40%,#1b342b)}.light-ball.warm{background:radial-gradient(circle at 30% 25%,#fffef3,#edd8b2 45%,#967b5c)}.light-ball.cool{background:radial-gradient(circle at 70% 25%,#fbffff,#c7e2ee 43%,#567282)}.back-edge-options{margin:10px 0 18px;padding:12px;border:1px solid var(--line);border-radius:8px}.back-edge-options [hidden]{display:none}

.box-tolerances{margin:16px 0 8px}.box-analysis-panel{margin:15px 0;padding:16px;background:var(--sunken);border:1px solid var(--line-strong);border-radius:16px;font-size:12px;line-height:1.65}.box-analysis-panel>div>span{display:block;color:var(--ink);font-size:12px;margin-top:5px}.box-analysis-panel table{width:100%;border-collapse:collapse;margin-top:14px;font-variant-numeric:tabular-nums}.box-analysis-panel caption{text-align:left;font-size:12px;margin-bottom:7px}.box-analysis-panel th,.box-analysis-panel td{padding:8px 6px;text-align:left;border-bottom:1px solid var(--line)}.box-analysis-panel th{font-weight:500;color:var(--ink);font-size:11.5px}.box-analysis-warning{padding:12px 14px;border:1px solid oklch(.88 .06 75);border-radius:12px;background:var(--sunken);color:#78501b;line-height:1.6;font-size:12px}.box-analysis-panel .note{margin:5px 0}#normalize-box-guides{margin-bottom:14px}@media(max-width:600px){.box-analysis-panel{padding:10px}.box-analysis-panel th,.box-analysis-panel td{padding:5px 3px;font-size:11.5px}}
.box-template-picker{margin:18px 0;padding:16px;border:1px solid var(--line);border-radius:16px;background:var(--sunken)}.box-template-picker>label{display:grid;gap:7px;font-size:12px;font-weight:650}.box-template-picker select,.box-template-picker input{width:100%;padding:8px;border:1px solid var(--line-strong);border-radius:10px;background:white}.box-template-picker .note{margin:10px 0;line-height:1.5}.box-template-picker .box-lip-field{max-width:290px;font-weight:400}.box-template-picker [hidden]{display:none!important}
.box-hinge-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}.box-hinge-fields label,.box-cover-rotation{display:grid;gap:6px;font-size:12px;font-weight:600}.box-hinged-fields[hidden]{display:none!important}

.box-analysis-panel .note{font-size:12px;color:var(--ink)}

/* 5.5 — initial camera, editor only */
.camera-options .camera-presets{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:12px 0 7px}.camera-presets button{display:flex;flex-direction:column;align-items:center;gap:5px;padding:10px 3px 8px;background:#fff;border:1px solid var(--line);border-radius:14px;color:var(--ink-2);cursor:pointer;font-size:11.5px}.camera-presets button svg{height:40px;width:40px;stroke:currentColor;stroke-width:1.35;fill:none;stroke-linecap:round;stroke-linejoin:round}.camera-presets button[aria-pressed=true]{color:var(--ink);border-color:var(--accent);background:var(--soft);box-shadow:0 0 0 1px color-mix(in oklch,var(--accent) 13%,transparent)}.camera-presets button:hover{border-color:var(--accent)}.camera-state{font-size:11.5px;color:var(--ink);margin:9px 0 12px}.camera-custom{border-top:1px solid var(--line);padding-top:12px;margin:12px 0}.camera-custom summary{font-size:12px;cursor:pointer;margin-bottom:13px}.camera-custom .camera-angle{position:relative;margin-bottom:15px}.camera-angle .field{margin-bottom:5px}.camera-angle .camera-number{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;gap:5px;font-size:11.5px;color:var(--ink-2);margin-top:7px}.camera-number input{width:67px;border:1px solid var(--line);border-radius:10px;padding:4px 5px;text-align:right;background:white;color:inherit;font:inherit}.camera-number input:disabled,.camera-angle input:disabled{opacity:.4}.camera-options>.note{font-size:11.5px;line-height:1.55}.camera-options .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

.capture-option{margin:10px 0 14px;color:var(--ink);font-size:12px}

#import-live-previews{margin-top:16px;border-top:1px solid var(--line);padding-top:14px}
#import-live-previews>strong{display:block;font-size:11.5px;font-weight:600;margin-bottom:10px}
.import-live-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}
.import-live-grid figure{margin:0;padding:6px;background:white;border:1px solid var(--line);border-radius:8px;min-width:0}
.import-live-grid img{display:block;width:100%;height:90px;object-fit:contain}
.import-live-grid figcaption{font-size:9.5px;line-height:1.4;margin-top:6px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:650px){.import-live-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

.booklet-sort-list{display:grid;gap:7px;max-height:440px;overflow:auto;margin:14px 0;padding:3px;overscroll-behavior:contain}
.booklet-sort-row{display:flex;align-items:center;gap:12px;min-width:0;padding:8px 10px;border:1px solid var(--line);border-radius:12px;background:#fff;cursor:grab}
.booklet-sort-row:active{cursor:grabbing}.booklet-sort-handle{color:var(--ink-2);letter-spacing:-3px;font-size:17px;padding-right:5px}
.booklet-sort-row img{width:46px;height:62px;object-fit:contain;background:var(--sunken);border:1px solid var(--line);border-radius:3px;flex-shrink:0}
.booklet-half-thumbnail{position:relative;display:block;overflow:hidden;width:46px;max-height:90px;flex-shrink:0;background:var(--sunken);border:1px solid var(--line);border-radius:3px}
.booklet-sort-row .booklet-half-thumbnail img{position:absolute;max-width:none;object-fit:fill;border:0;border-radius:0}
.booklet-sort-copy{display:grid;gap:4px;min-width:0;flex:1}.booklet-sort-copy strong{font-size:12px}.booklet-sort-copy small{font-size:11.5px;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.booklet-sort-buttons{display:flex;gap:5px}.booklet-sort-buttons button{width:28px;height:28px;border:1px solid var(--line-strong);border-radius:999px;background:#fff;font-size:14px}.booklet-sort-buttons button:hover:not(:disabled){background:var(--sunken)}
.booklet-inspector-actions{display:flex;gap:7px;flex-wrap:wrap;margin:10px 0}
@media(max-width:650px){.booklet-sort-list{max-height:320px}.booklet-sort-row{gap:7px;padding:7px}.booklet-sort-row img{width:34px;height:49px}.booklet-sort-copy small{font-size:10.5px}}

.canvas-area{display:flex;flex-direction:column}#viewport{flex:1;min-height:0;height:auto}
.magnifier-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap;padding:9px 14px;border-top:1px solid var(--line);background:#fff}.magnifier-actions span{margin-right:auto;font-size:11.5px;color:var(--ink)}.magnifier-actions .btn{white-space:nowrap}[data-action=magnifier][aria-pressed=true]{background:var(--soft);border-color:var(--accent);color:var(--ink)}

.render-preset-list{display:grid;gap:6px;margin:8px 0}.render-preset-list .btn{display:flex;flex-direction:column;align-items:flex-start;text-align:left;white-space:normal;gap:3px;padding:9px 11px}.render-preset-list small{font-weight:400;line-height:1.4;color:var(--muted,#667060)}.render-preset-list [aria-pressed="true"]{border-color:var(--accent,#51794c);background:#edf3e8}
