:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f4f6f8;--surface:#fff;--surface-sunken:#eef1f4;--table-header-bg:#eef1f5;--row-hover:#f5f8fb;--row-active:#e7f1ea;--ink:#16181c;--muted:#5b6069;--line:#d5d9df;--line-strong:#b9bfc7;--input-bg:#fff;--accent:#14532d;--accent-ink:#fff;--accent-soft:#e6f1ea;--focus:#0b6bcb;--danger:#a4262c;--danger-bg:#fdf2f2;--danger-ink:#7a1c21;--success:#1b6b3a;--success-bg:#eef7f1;--shadow-card:0 1px 2px #10141812;--shadow-raised:0 1px 2px #1014180f, 0 8px 20px #10141812;--preview-fill:#f2f5f8;--preview-line:#6f7681;--preview-ink:#16181c;--edge-applied:#1d6fb8;--edge-none:#8b929c}@media (prefers-color-scheme:dark){:root:not([data-theme]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0f1216;--surface:#171b21;--surface-sunken:#12161b;--table-header-bg:#1d222a;--row-hover:#1c222a;--row-active:#1b2b23;--ink:#e8eaee;--muted:#a2aab5;--line:#2c333c;--line-strong:#414a55;--input-bg:#10141a;--accent:#4ea87a;--accent-ink:#08130d;--accent-soft:#17291f;--focus:#7cb6ff;--danger:#ff8a8a;--danger-bg:#2a1618;--danger-ink:#ffd0d0;--success:#6fd39b;--success-bg:#12241a;--shadow-card:0 1px 2px #00000080;--shadow-raised:0 1px 2px #00000080, 0 8px 20px #00000073;--preview-fill:#1b2029;--preview-line:#98a1ad;--preview-ink:#e8eaee;--edge-applied:#6fb6ee;--edge-none:#79828f}}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0f1216;--surface:#171b21;--surface-sunken:#12161b;--table-header-bg:#1d222a;--row-hover:#1c222a;--row-active:#1b2b23;--ink:#e8eaee;--muted:#a2aab5;--line:#2c333c;--line-strong:#414a55;--input-bg:#10141a;--accent:#4ea87a;--accent-ink:#08130d;--accent-soft:#17291f;--focus:#7cb6ff;--danger:#ff8a8a;--danger-bg:#2a1618;--danger-ink:#ffd0d0;--success:#6fd39b;--success-bg:#12241a;--shadow-card:0 1px 2px #00000080;--shadow-raised:0 1px 2px #00000080, 0 8px 20px #00000073;--preview-fill:#1b2029;--preview-line:#98a1ad;--preview-ink:#e8eaee;--edge-applied:#6fb6ee;--edge-none:#79828f}.theme-toggle{border:1px solid var(--line);background:var(--surface);color:var(--ink);font:inherit;cursor:pointer;border-radius:999px;align-items:center;gap:.4rem;padding:.3rem .6rem;font-size:.85rem;display:inline-flex}.theme-toggle:hover{border-color:var(--line-strong)}.theme-toggle:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.theme-toggle-icon{width:1rem;height:1rem;display:inline-flex}.theme-toggle-icon svg{width:100%;height:100%}.theme-toggle-track{border:1px solid var(--line-strong);background:var(--surface-sunken);border-radius:999px;width:1.85rem;height:1rem;position:relative}.theme-toggle-knob{background:var(--muted);border-radius:50%;width:.75rem;height:.75rem;transition:transform .12s ease-out;position:absolute;top:1px;left:1px}.theme-toggle[aria-checked=true] .theme-toggle-track{border-color:var(--accent);background:var(--accent-soft)}.theme-toggle[aria-checked=true] .theme-toggle-knob{background:var(--accent);transform:translate(.85rem)}@media (prefers-reduced-motion:reduce){.theme-toggle-knob{transition:none}}:root{color:var(--ink);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);margin:0;line-height:1.5}.app{flex-direction:column;max-width:1400px;min-height:100vh;margin:0 auto;padding:0 1.25rem;display:flex}.app-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:1rem;padding:1.1rem 0 .9rem;display:flex}.app-header h1{letter-spacing:-.01em;margin:0;font-size:1.3rem}.app-subtitle,.muted{color:var(--muted);margin:.2rem 0 0}.app-main{flex:1;padding:1rem 0 2rem}.app-main h2{margin:0;font-size:1.05rem}.app-main h3{margin:0 0 .4rem;font-size:.95rem}.app-main ul{margin:0 0 1rem;padding-left:1.25rem}.app-footer{border-top:1px solid var(--line);color:var(--muted);padding:.9rem 0 1.25rem;font-size:.85rem}a{color:var(--accent)}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.page-heading{margin-bottom:.75rem}.page-heading .muted{font-size:.85rem}.metadata{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-card);border-radius:8px;flex-wrap:wrap;gap:.75rem 1rem;margin-bottom:.75rem;padding:.75rem .9rem;display:flex}.field{flex-direction:column;gap:.2rem;min-width:15rem;display:flex}.field label{color:var(--muted);font-size:.8rem;font-weight:600}.field input{border:1px solid var(--line);font:inherit;color:var(--ink);background:var(--input-bg);border-radius:6px;padding:.35rem .5rem}.field input[aria-invalid=true]{border-color:var(--danger);background:var(--danger-bg)}.toolbar{z-index:3;background:var(--bg);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:.5rem;padding:.55rem 0;display:flex;position:sticky;top:0}button{font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;border-radius:6px;padding:.35rem .75rem}button:hover{border-color:var(--line-strong);background:var(--surface-sunken)}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}button.primary:hover{background:var(--accent);filter:brightness(1.08)}button.danger{color:var(--danger);border-color:var(--line)}button.danger:hover{border-color:var(--danger)}.counters{color:var(--muted);gap:1rem;margin:0 0 0 auto;font-size:.85rem;display:flex}.counters strong{color:var(--ink)}.validation-summary{border:1px solid var(--danger);background:var(--danger-bg);color:var(--danger-ink);border-left-width:4px;border-radius:8px;margin:.75rem 0;padding:.7rem 1rem}.validation-summary h3{margin:0 0 .4rem;font-size:.95rem}.validation-summary ul{margin:0;padding-left:1.1rem}.saved-notice{border:1px solid var(--success);background:var(--success-bg);border-left-width:4px;border-radius:8px;margin:.75rem 0;padding:.55rem 1rem}.limit-notice{border:1px solid var(--danger);background:var(--danger-bg);color:var(--danger-ink);border-left-width:4px;border-radius:8px;margin:.75rem 0;padding:.55rem 1rem}.profile-name{letter-spacing:.03em;text-transform:uppercase;color:var(--muted);margin:0 0 .1rem;font-size:.8rem;font-weight:600}.profile-toolbar .counters{margin-left:auto}.saved-projects-panel{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-raised);border-radius:10px;margin:.75rem 0;padding:.85rem 1rem .75rem}.saved-projects-head{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.saved-projects-head h3{margin:0 0 .5rem}.saved-projects-close{min-width:2rem;padding:.25rem .55rem;font-size:1.05rem;line-height:1}.saved-projects-list{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.saved-project{border:1px solid var(--line);background:var(--input-bg);border-radius:8px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1rem;padding:.6rem .7rem;display:flex}.saved-project-info{flex-direction:column;gap:.1rem;min-width:0;font-size:.9rem;display:flex}.saved-project-time{font-size:.78rem}.saved-project-actions{flex:none;gap:.4rem;display:flex}.saved-projects-note{margin:.75rem 0 0;font-size:.78rem}@media (width<=700px){.saved-project{flex-direction:column;align-items:stretch}.saved-project-actions button{flex:1;padding:.55rem}}.edge-requirement{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-card);border-radius:10px;margin:1rem 0 .5rem;padding:.85rem 1rem .75rem}.edge-requirement h3{margin:0 0 .6rem}.edge-requirement-group+.edge-requirement-group{border-top:1px solid var(--line);margin-top:.75rem;padding-top:.6rem}.edge-requirement-material{margin:0 0 .35rem;font-size:.9rem;font-weight:700}.edge-requirement-rows{gap:.25rem 1rem;margin:0;display:grid}.edge-requirement-row{justify-content:space-between;align-items:baseline;gap:1rem;font-size:.9rem;display:flex}.edge-requirement-row dt{color:var(--muted);margin:0}.edge-requirement-row dd{font-variant-numeric:tabular-nums;margin:0;font-weight:600}.edge-requirement-note{margin:.7rem 0 0;font-size:.78rem}@media (width>=720px){.edge-requirement-rows{grid-template-columns:repeat(2,minmax(0,1fr))}}.profile-table-scroll{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-card);border-radius:8px;overflow-x:auto}.profile-table{box-shadow:none;border:0;border-radius:0}@media (width>=901px){.profile-table-scroll[data-layout=fit] .profile-table{min-width:54rem}.profile-table-scroll[data-layout=scroll] .profile-table{min-width:max-content}}.col-num{width:3.25rem}.col-text{width:7rem}.col-generic{width:9rem}.profile-table td{vertical-align:top}.row-number-value{display:inline}.row-status-badge{display:none}.profile-cell{border:1px solid var(--line);background:var(--input-bg);width:100%;min-width:0;color:var(--ink);font:inherit;border-radius:4px;padding:.3rem .4rem}.profile-cell.invalid{border-color:var(--danger);background:var(--danger-bg)}.profile-cell-error{color:var(--danger);white-space:normal;margin-top:.15rem;font-size:.72rem;display:block}.import-error{border:1px solid var(--danger);background:var(--danger-bg);color:var(--danger-ink);border-left-width:4px;border-radius:8px;margin:.75rem 0;padding:.7rem 1rem}.import-error h3{margin:0 0 .3rem;font-size:.95rem}.import-error p{margin:0 0 .3rem}.import-error p:last-child{margin-bottom:0;font-size:.85rem}button:disabled{cursor:not-allowed;opacity:.55}button:disabled:hover{border-color:var(--line);background:var(--surface)}.modal-backdrop{z-index:20;background:#1014188c;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0;overflow-y:auto}.modal-card{border:1px solid var(--line);background:var(--surface);width:min(30rem,100%);color:var(--ink);box-shadow:var(--shadow-raised);border-radius:10px;padding:1.1rem 1.25rem 1.15rem}.modal-title{margin:0 0 .4rem;font-size:1.05rem;line-height:1.35}.modal-detail{margin:0 0 .35rem}.modal-file{overflow-wrap:anywhere;margin:0 0 .9rem;font-size:.85rem}.modal-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.modal-close{min-width:2rem;margin-left:auto;padding:.35rem .6rem;font-size:1.05rem;line-height:1}.work-area{grid-template-columns:minmax(0,1fr) clamp(18rem,23vw,21rem);align-items:start;gap:1.25rem;margin-top:.75rem;display:grid}.table-region{min-width:0}.keyboard-hint{color:var(--muted);margin:0 0 .35rem;font-size:.78rem}.table-scroll{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-card);border-radius:8px;position:relative;overflow-x:auto}.cutlist-table{border-collapse:collapse;table-layout:fixed;width:100%;min-width:60rem;font-size:.8rem}.col-index{width:1.75rem}.col-element{width:6rem}.col-material{width:8.5rem}.col-length,.col-width{width:3.5rem}.col-pieces{width:3rem}.col-rotatable{width:4.5rem}.col-edge{width:5.25rem}.col-actions{width:8.25rem}.cutlist-table th,.cutlist-table td{border-bottom:1px solid var(--line);text-align:left;white-space:nowrap;padding:.2rem .3rem}.cutlist-table thead th{background:var(--table-header-bg);color:var(--muted);text-transform:uppercase;letter-spacing:.02em;z-index:1;font-size:.75rem;position:sticky;top:0}.cutlist-table tbody tr:last-child td,.cutlist-table tbody tr:last-child th{border-bottom:0}.cutlist-row:hover{background:var(--row-hover)}.cutlist-row.is-active,.cutlist-row.is-active:hover{background:var(--row-active)}.cutlist-row.is-active .row-number{box-shadow:inset 3px 0 0 var(--accent);color:var(--ink);font-weight:700}.row-number{color:var(--muted);text-align:right;padding-right:.4rem;font-weight:500}.cell{font:inherit;background:var(--input-bg);color:var(--ink);border:1px solid #0000;border-radius:4px;width:100%;padding:.22rem .3rem}.cell:focus-visible{outline:2px solid var(--focus);outline-offset:-1px}.cell.invalid{border-color:var(--danger);background:var(--danger-bg);color:var(--danger-ink)}.cell.invalid::placeholder{color:var(--danger)}.row-actions{white-space:nowrap}.row-actions-inner{gap:.25rem;display:flex}.row-actions button{flex:none;padding:.15rem .4rem;font-size:.75rem}.preview-region{min-width:0}.preview-card{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-raised);border-radius:8px;padding:.75rem .9rem .9rem;position:sticky;top:3.6rem}.part-preview-svg{width:100%;height:auto;display:block}.preview-part{fill:var(--preview-fill);stroke:var(--preview-line);stroke-width:1px}.preview-edge{stroke-width:4px;stroke-linecap:square}.preview-edge-applied{stroke:var(--edge-applied)}.preview-edge-none{stroke:var(--edge-none);stroke-dasharray:3 3;stroke-width:2px}.preview-title{fill:var(--preview-ink);font-size:15px;font-weight:600}.preview-sub,.preview-dim-label{fill:var(--muted);font-size:10.5px}.preview-edge-label{fill:var(--preview-ink);font-size:11px}.preview-dim,.preview-dim-tick{stroke:var(--preview-line);stroke-width:1px}.preview-arrow{fill:var(--preview-line)}.preview-legend{color:var(--muted);flex-wrap:wrap;gap:.35rem .9rem;margin:.5rem 0 0;padding:0;font-size:.78rem;list-style:none;display:flex}.preview-legend li{align-items:center;gap:.35rem;display:flex}.preview-swatch{background:var(--edge-none);border-radius:2px;width:.85rem;height:.3rem}.preview-swatch-applied{background:var(--edge-applied)}.preview-swatch-none{background:var(--edge-none)}.preview-note{margin-top:.5rem;font-size:.75rem}@media (width<=1180px){.work-area{grid-template-columns:minmax(0,1fr)}.preview-card{position:static}}@media (width<=700px){.app{padding:0 .85rem}.app-header{flex-wrap:wrap}.counters{width:100%;margin-left:0}}.profile-page .preview-collapsible{display:block}@media (width>=1301px){.profile-page .preview-collapsible>summary{cursor:default;pointer-events:none;color:var(--ink);margin:0 0 .4rem;font-size:.95rem;font-weight:600;list-style:none}.profile-page .preview-collapsible>summary::-webkit-details-marker{display:none}}@media (width<=1300px){.profile-page .work-area{grid-template-columns:minmax(0,1fr)}.profile-page .preview-card{position:static}.profile-page .preview-summary{cursor:pointer;padding:.3rem 0;font-weight:600}}@media (width<=900px){.profile-page .metadata{padding:.7rem}.profile-page .metadata .field{width:100%;min-width:0}.profile-page .keyboard-hint{display:none}.profile-page .toolbar{border-bottom:0;grid-template-columns:1fr 1fr;grid-template-areas:"add export""import save""saved clear""counts counts";gap:.5rem;padding:.25rem 0 .5rem;display:grid;position:static}.profile-page .toolbar .act-add{grid-area:add}.profile-page .toolbar .act-export{grid-area:export}.profile-page .toolbar .act-import{grid-area:import}.profile-page .toolbar .act-save{grid-area:save}.profile-page .toolbar .act-saved{grid-area:saved}.profile-page .toolbar .act-clear{grid-area:clear}.profile-page .toolbar button{width:100%;padding:.6rem .75rem}.profile-page .toolbar .counters{flex-wrap:wrap;grid-area:counts;gap:.35rem .9rem;width:100%;margin:.35rem 0 0}.profile-page .profile-table-scroll{box-shadow:none;background:0 0;border:0;border-radius:0;overflow:visible}.profile-page .profile-table,.profile-page .profile-table tbody,.profile-page .profile-table th,.profile-page .profile-table td{display:block}.profile-page .profile-table{width:100%;min-width:0;font-size:1rem}.profile-page .profile-table colgroup{display:none}.profile-page .profile-table thead{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.profile-page .cutlist-row{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-card);border-radius:12px;grid-template-columns:1fr 1fr;gap:.55rem .75rem;margin:0 0 .85rem;padding:.85rem;display:grid}.profile-page .cutlist-row.is-active,.profile-page .cutlist-row.is-active:hover{background:var(--surface);box-shadow:inset 3px 0 0 var(--accent), var(--shadow-card)}.profile-page .cutlist-row>td,.profile-page .cutlist-row>th{white-space:normal;border:0;padding:0}.profile-page .cutlist-row .row-number{border-bottom:1px solid var(--line);text-align:left;box-shadow:none;grid-column:1/-1;justify-content:space-between;align-items:baseline;padding-bottom:.35rem;display:flex}.profile-page .cutlist-row .row-number-value{color:var(--ink);font-weight:700}.profile-page .cutlist-row .row-number-value:before{content:"Row ";color:var(--muted);font-weight:600}.profile-page .row-status-badge{text-transform:uppercase;letter-spacing:.03em;background:var(--surface-sunken);color:var(--muted);border-radius:999px;padding:.1rem .45rem;font-size:.7rem;font-weight:700;display:inline-block}.profile-page .row-number[data-status=valid] .row-status-badge{background:var(--success-bg);color:var(--success)}.profile-page .row-number[data-status=partial] .row-status-badge{background:var(--danger-bg);color:var(--danger)}.profile-page .cutlist-row>td[data-label]:before{content:attr(data-label);color:var(--muted);margin-bottom:.2rem;font-size:.72rem;font-weight:600;display:block}.profile-page .cutlist-row>td[data-span=wide]{grid-column:1/-1}.profile-page .cutlist-row .profile-cell{border-radius:8px;min-height:2.6rem;padding:.55rem;font-size:1rem}.profile-page .cutlist-row .profile-cell-error{font-size:.8rem}.profile-page .cutlist-row .row-actions{grid-column:1/-1;margin-top:.15rem}.profile-page .cutlist-row .row-actions-inner{gap:.6rem}.profile-page .cutlist-row .row-actions button{flex:1;padding:.6rem;font-size:.9rem}.profile-page .preview-region{margin-top:.25rem}.profile-page .preview-collapsible{padding:.5rem .85rem .75rem}}
