:root{--fg:#2a2420;--fg-muted:#5c534a;--bg:#f6f2ec;--panel:#fff;--panel-soft:#faf7f2;--border:#dcd2c4;--border-strong:#b9ab98;--accent:#8a531f;--accent-strong:#6e3f14;--accent-soft:#f4e8d8;--danger:#b42318;--warn-bg:#fff4d6;--focus:#2563eb;--radius:8px;--shadow-sm:0 1px 2px #3c281414;--shadow-md:0 4px 14px #3c28141f;color:var(--fg);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.45}*{box-sizing:border-box}body{min-height:100vh;margin:0}h2,h3{letter-spacing:-.01em}a{color:var(--accent)}button,.button,select,input{font:inherit;color:inherit}button,.button{border:1px solid var(--border);background:var(--panel);box-shadow:var(--shadow-sm);cursor:pointer;border-radius:6px;align-items:center;gap:.35rem;padding:.4rem .85rem;text-decoration:none;transition:background-color .12s,border-color .12s;display:inline-flex}button:hover,.button:hover{border-color:var(--border-strong);background:#f4eee6}button:disabled{opacity:.55;cursor:not-allowed}button:disabled:hover{border-color:var(--border);background:var(--panel)}button.primary,.button.primary{border-color:var(--accent);background:var(--accent);color:#fff;font-weight:600}button.primary:hover,.button.primary:hover{border-color:var(--accent-strong);background:var(--accent-strong)}button.danger{color:var(--danger);border-color:#e7b4ae}button.danger:hover{border-color:var(--danger);background:#fdeceb}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}input,select{border:1px solid var(--border-strong);background:var(--panel);border-radius:6px;padding:.35rem .5rem}input:hover,select:hover{border-color:var(--accent)}input[type=checkbox],input[type=radio]{accent-color:var(--accent)}.button-row{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.file-button{position:relative}.file-button:focus-within{outline:3px solid var(--focus);outline-offset:2px}.banner{background:var(--warn-bg);border-bottom:1px solid #e0c56e;margin:0;padding:.6rem 1rem}.app-header{z-index:10;border-bottom:1px solid var(--border);background:var(--panel);box-shadow:var(--shadow-sm);justify-content:space-between;align-items:center;gap:1rem;padding:.35rem 1rem;display:flex;position:sticky;top:0}.app-logo{margin:0;line-height:0}.app-logo a{border-radius:8px;padding:.2rem;display:inline-block}.app-logo a:hover{background:var(--accent-soft)}.app-logo img{display:block}.app-nav{align-items:center;gap:.5rem;display:flex}.app-nav a{color:var(--fg);border-radius:6px;padding:.35rem .7rem;font-weight:500;text-decoration:none}.app-nav a:hover{background:var(--accent-soft)}.start-page,.settings-page,.editor-message{max-width:64rem;margin:0 auto;padding:1.5rem 1rem 3rem}.legal-page{max-width:48rem;margin:0 auto;padding:1.5rem 1rem 3rem}.page-heading{z-index:5;border-bottom:1px solid var(--border);background:var(--bg);align-items:center;gap:.75rem;margin:-1.5rem -1rem 1.5rem;padding:.75rem 1rem;display:flex;position:sticky;top:3.35rem}.page-heading h2{margin:0}.back-link{border:1px solid var(--border);background:var(--panel);width:2.25rem;height:2.25rem;box-shadow:var(--shadow-sm);color:var(--fg);border-radius:999px;justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.back-link svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px}.back-link:hover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-strong)}.start-intro{max-width:44rem;color:var(--fg-muted);margin:.5rem 0 1.5rem;font-size:1.05rem}.template-grid{grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:1rem;margin:0 0 1.25rem;padding:0;list-style:none;display:grid}.template-card button{text-align:left;border-radius:10px;flex-direction:column;align-items:flex-start;gap:.3rem;width:100%;height:100%;padding:1rem;transition:transform .12s,box-shadow .12s,border-color .12s;display:flex}.template-card button:hover{border-color:var(--accent);background:var(--panel);box-shadow:var(--shadow-md);transform:translateY(-2px)}.template-icon{width:2.6rem;height:2.6rem;fill:var(--accent-soft);stroke:var(--accent);stroke-width:2.5px;stroke-linecap:round;margin-bottom:.35rem}.template-name{font-size:1.05rem;font-weight:650}.template-info,.design-date,.empty-state{color:var(--fg-muted)}.design-list{gap:.6rem;padding:0;list-style:none;display:grid}.design-item{border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);box-shadow:var(--shadow-sm);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;padding:.75rem 1rem;display:flex}.design-meta{flex-direction:column;display:flex}.design-name{font-weight:600}.rename-form{flex-wrap:wrap;align-items:flex-end;gap:.4rem;display:flex}.rename-form label{flex-direction:column;display:flex}.dialog{border:1px solid var(--border);border-radius:12px;max-width:32rem;padding:1.25rem 1.5rem;box-shadow:0 12px 40px #28190a40}.dialog::backdrop{background:#00000059}.dialog h2{margin-top:0;font-size:1.1rem}.dialog-actions{justify-content:flex-end;gap:.5rem;display:flex}.editor{grid-template:"bar bar bar""notice notice notice""outline viewport inspector"minmax(0,1fr)"validation validation validation"/minmax(12rem,16rem) minmax(0,1fr) minmax(14rem,20rem);height:calc(100vh - 3.4rem);min-height:30rem;display:grid}.editor-bar{border-bottom:1px solid var(--border);background:var(--panel-soft);flex-wrap:wrap;grid-area:bar;align-items:center;gap:.6rem;padding:.5rem 1rem;display:flex}.editor-name{margin:0 .5rem;font-size:1.1rem}.editor-name-button{box-shadow:none;color:var(--fg);font-size:inherit;font-weight:inherit;background:0 0;border-color:#0000;align-items:baseline;gap:.35rem;padding:.1rem .35rem;display:inline-flex}.editor-name-button:hover{border-color:var(--border);background:var(--accent-soft)}.editor-name-pencil{color:var(--fg-muted);opacity:0;font-size:.8em;transition:opacity .12s}.editor-name-button:hover .editor-name-pencil,.editor-name-button:focus-visible .editor-name-pencil{opacity:1}.editor-rename{align-items:center;gap:.35rem;margin:0 .5rem;display:flex}.editor-rename input{min-width:12rem}.small-screen-notice{background:var(--warn-bg);grid-area:notice;margin:0;padding:.4rem 1rem;display:none}@media (width<=1023px){.small-screen-notice{display:block}}.editor-outline,.editor-inspector{background:var(--panel);padding:.5rem .75rem;overflow:auto}.editor-outline{border-right:1px solid var(--border);grid-area:outline}.editor-inspector{border-left:1px solid var(--border);grid-area:inspector}.editor-viewport{grid-area:viewport;min-width:0;min-height:0}.panel-heading{color:var(--fg-muted);letter-spacing:.06em;text-transform:uppercase;margin:.25rem 0 .6rem;font-size:.78rem;font-weight:700}.inspector-form h3{margin:.25rem 0 .5rem;font-size:1.05rem}.inspector-form fieldset{border:1px solid var(--border);border-radius:var(--radius);background:var(--panel-soft);margin:.75rem 0;padding:.5rem .75rem .6rem}.inspector-form legend{padding:0 .3rem;font-weight:600}.inspector-form fieldset>label{padding:.1rem 0;display:block}.field{flex-direction:column;gap:.15rem;margin:.45rem 0;display:flex}.field input[aria-invalid=true]{border-color:var(--danger);outline:1px solid var(--danger)}.field-message{color:var(--danger);margin:0;font-size:.9rem}.hint{color:var(--fg-muted);margin:.25rem 0;font-size:.9rem}.editor-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--panel-soft);margin:.6rem 0;padding:.45rem .75rem}.editor-card[open]{background:var(--panel);box-shadow:var(--shadow-sm)}.editor-card summary{cursor:pointer;font-weight:600}label.checkbox{align-items:flex-start;gap:.4rem;margin:.35rem 0;display:flex}.banding-editor h4{margin:.75rem 0 .25rem;font-size:.95rem}.banding-list{margin:0;padding:0;list-style:none}.banding-row{border-top:1px solid var(--border);flex-wrap:wrap;align-items:baseline;gap:.25rem .75rem;padding:.35rem 0;display:flex}.banding-caption{flex:100%;font-weight:600}.banding-edges{flex-wrap:wrap;gap:.35rem .75rem;display:flex}.banding-edges label.checkbox{margin:0}.outline-tree,.outline-tree ul{margin:0;padding-left:.9rem;list-style:none}.outline-tree{padding-left:0}.outline-node{width:100%;box-shadow:none;text-align:left;background:0 0;border-color:#0000;border-left-style:solid;border-left-width:3px;border-radius:6px;margin:1px 0;padding:.25rem .5rem}.outline-node:hover{background:var(--accent-soft);border-color:#0000}.outline-node[aria-current=true]{border-color:#0000;border-left-color:var(--accent);background:var(--accent-soft);color:var(--accent-strong);font-weight:650}.save-status{color:var(--fg-muted);align-items:center;gap:.5rem;margin-left:auto;display:flex}.button-stack{flex-direction:column;gap:.4rem;margin-top:.75rem;display:flex}.icon-button{padding:.4rem .55rem}.icon-button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;display:block}.outputs-link{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-strong);font-weight:650}.outputs-link:hover{border-color:var(--accent-strong);background:#ecdcc6}.badge{background:#ebe6de;border-radius:999px;margin-left:.4rem;padding:0 .4rem;font-size:.85rem}.badge-error{color:var(--danger);background:#fde2df;font-weight:600}.tag{border:1px solid;border-radius:3px;margin-left:.4rem;padding:0 .35rem;font-size:.8rem;display:inline-block}.tag-warning{color:#8a5a00}.outputs-page{max-width:72rem;margin:0 auto;padding:1.25rem 1rem 3rem}.outputs-bar{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.outputs-bar h2{flex:auto;margin:0}.outputs-tabs{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:.25rem;margin:1.25rem 0;display:flex}.outputs-tabs a{color:var(--fg-muted);border-bottom:3px solid #0000;margin-bottom:-1px;padding:.55rem .9rem;font-weight:500;text-decoration:none}.outputs-tabs a:hover{color:var(--fg);border-bottom-color:var(--border-strong)}.outputs-tabs a[aria-current=page]{border-bottom-color:var(--accent);color:var(--accent-strong);font-weight:650}.outputs-blocked,.outputs-warnings{border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);margin-bottom:1.25rem;padding:.6rem 1.1rem}.outputs-blocked{border-color:var(--danger);border-left-width:5px}.outputs-warnings{background:var(--warn-bg);border-color:#e9cf7f #e9cf7f #e9cf7f #d9a521;border-left-style:solid;border-left-width:5px}.outputs-warnings h3,.outputs-blocked h3{margin:.4rem 0;font-size:1rem}.data-table{border-collapse:separate;border-spacing:0;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);width:100%;margin-bottom:1.5rem;overflow:hidden}.data-table caption{text-align:left;padding:.4rem 0;font-weight:650}.data-table th,.data-table td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:.4rem .6rem}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:nth-child(2n){background:var(--panel-soft)}.data-table thead{background:#efe6d9;display:table-header-group}.data-table th{font-weight:650}.drilling-plan,.cutting-material{border:1px solid var(--border);background:var(--panel);box-shadow:var(--shadow-sm);border-radius:10px;margin:1.25rem 0;padding:.75rem 1.1rem}.drilling-plan h3,.cutting-material h3{margin-top:.3rem}.drilling-face{break-inside:avoid}.drilling-svg{background:var(--panel);width:100%;max-height:70vh;margin:.5rem 0;display:block}.drilling-svg .part-outline{fill:#fbf6ee;stroke:#3a2f25}.drilling-svg .banded-edge{stroke:#1f1d1a}.drilling-svg .hole,.drilling-svg .hole-countersink{fill:none;stroke:#1d4ed8}.drilling-svg .hole-through,.drilling-svg .mark{stroke:#1f1d1a}.drilling-svg .origin{fill:var(--danger)}.drilling-svg text{fill:#1f1d1a;font-family:system-ui,sans-serif}.drilling-banner{border:1px solid #e0c56e;border-radius:4px}.cutting-figure{break-inside:avoid;margin:1rem 0}.cutting-figure figcaption{font-weight:600}.cutting-svg{width:100%;margin:.5rem 0;display:block}.cutting-svg .cutting-sheet{fill:#e3dbcf;stroke:#5c4a36}.cutting-svg .cutting-trim{fill:none;stroke:#8a7f72;stroke-dasharray:12 8}.cutting-svg .cutting-part{fill:#f7e9d4;stroke:#6e3f14}.cutting-svg .cutting-label{fill:#1f1d1a;font-family:system-ui,sans-serif}.cutting-table{font-size:.9rem}.tools-list ul{columns:2 16rem}.assembly-step{border:1px solid var(--border);background:var(--panel);box-shadow:var(--shadow-sm);break-inside:avoid;border-radius:10px;margin:1rem 0 1.25rem;padding:.75rem 1.1rem}.assembly-step h4{margin:.2rem 0 .75rem;font-size:1.05rem}.step-layout{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:1rem;display:grid}@media (width<=800px){.step-layout{grid-template-columns:minmax(0,1fr)}}.step-figure{margin:0}.step-figure img{border:1px solid var(--border);border-radius:var(--radius);width:100%;height:auto;display:block}.step-placeholder{aspect-ratio:4/3;border:2px dashed var(--border-strong);border-radius:var(--radius);background:var(--panel-soft);color:var(--fg-muted);text-align:center;justify-content:center;align-items:center;padding:1rem;display:flex}.step-facts dt{margin-top:.5rem;font-weight:600}.step-facts dd{margin:0}.step-facts ul{margin:0;padding-left:1.2rem}.editor-validation{border-top:1px solid var(--border);background:var(--panel-soft);grid-area:validation;max-height:30vh;padding:.35rem 1rem .6rem;overflow:auto}.validation-header{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.validation-list{margin:.25rem 0 0;padding:0;list-style:none}.issue{text-align:left;border-left-width:4px;grid-template-columns:7rem 14rem 1fr;gap:.5rem;width:100%;margin:3px 0;display:grid}.issue-error{border-left-color:var(--danger)}.issue-warning{border-left-color:#d9a521}.issue-error .issue-severity{color:var(--danger);font-weight:600}.issue-warning .issue-severity{color:#8a5a00;font-weight:600}.issue-target{color:var(--fg-muted)}.save-status-error,.save-status-conflict{color:var(--danger);font-weight:600}.viewport{flex-direction:column;height:100%;display:flex}.viewport-toolbar{border-bottom:1px solid var(--border);background:var(--panel-soft);flex-wrap:wrap;align-items:center;gap:.35rem;padding:.4rem .6rem;display:flex}.viewport-toolbar button{box-shadow:none;padding:.3rem .7rem}.viewport-toolbar label{align-items:center;gap:.25rem;margin-left:.4rem;display:inline-flex}.viewport-canvas-wrap{flex:1;min-height:0;position:relative}.viewport-canvas{touch-action:none;width:100%;height:100%;display:block}.viewport-overlay,.viewport-hover{border:1px solid var(--border);pointer-events:none;background:#ffffffeb;border-radius:4px;padding:.3rem .6rem;position:absolute;left:.75rem}.viewport-overlay{border-color:var(--danger);color:var(--danger);font-weight:600;top:.75rem}.viewport-hover{bottom:.75rem}.viewport-fallback{padding:1rem}.error-boundary{border:1px solid var(--danger);background:var(--panel);border-radius:6px;margin:1rem;padding:1rem}.error-message{white-space:pre-wrap}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}.template-card button:hover{transform:none}}.settings-page section,.legal-page section{border:1px solid var(--border);background:var(--panel);box-shadow:var(--shadow-sm);border-radius:10px;margin:1rem 0;padding:.75rem 1.1rem}.settings-page h3,.legal-page h3{margin-top:.3rem}.legal-page .start-intro{margin-top:0}.imprint-address{font-style:normal}.print-page{max-width:52rem;margin:0 auto;padding:1rem}.print-toolbar{flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.print-section{margin-bottom:2rem}.print-cover{text-align:center}.print-title{overflow-wrap:anywhere;margin:.5rem 0 0;font-size:2rem}.print-subtitle{color:var(--fg-muted);margin-top:.25rem}.print-cover-image{width:100%;max-width:40rem;height:auto;margin:1rem auto;display:block}.print-facts{text-align:left;grid-template-columns:max-content minmax(0,1fr);gap:.25rem 1rem;max-width:30rem;margin:0 auto;display:grid}.print-facts dt{font-weight:600}.print-facts dd{margin:0}.print-footer{border-top:1px solid var(--border);color:var(--fg-muted);overflow-wrap:anywhere;margin-top:.75rem;padding-top:.25rem;font-size:.8rem}.print-document .data-table td,.print-document .data-table th{overflow-wrap:anywhere}.safety-notes{margin:1rem 0}@page{size:A4;margin:12mm}@media print{:root{background:#fff;font-size:10pt}.app-header,.print-toolbar,.no-print,[data-testid=memory-banner]{display:none!important}.print-page{max-width:none;padding:0}.print-section{break-before:page;margin:0}.print-cover{break-before:auto}.print-cover-image{max-width:150mm}.data-table{font-size:8.5pt}.data-table th,.data-table td{padding:1mm 1.5mm}.data-table tr,.drilling-legend{break-inside:avoid}.drilling-plan-head,.drilling-face>h4,.drilling-face>.drilling-svg{break-inside:avoid;break-after:avoid}.drilling-svg{max-height:95mm}.print-footer{break-before:avoid}.assembly-step{break-inside:avoid;margin:0 0 4mm}.step-layout{grid-template-columns:75mm minmax(0,1fr);gap:4mm}.step-figure img,.step-placeholder{object-fit:contain;max-height:60mm}.assembly-phase>h3,h2,h3,h4{break-after:avoid}a{color:inherit;text-decoration:none}}
