:root{--color-primary:#0d7377;--color-primary-dark:#095b5e;--color-primary-light:#e0f2f1;--color-accent:#b45309;--color-accent-dark:#92400e;--color-bg:#f0f3f6;--color-bg-subtle:#f7f9fb;--color-bg-hover:#eef2f5;--color-surface:#fff;--color-text:#1f2937;--color-text-secondary:#545d6c;--color-text-tertiary:#6b7280;--color-text-placeholder:#6b7280;--color-border:#d8dde4;--color-border-strong:#aab3c0;--color-error:#b91c1c;--color-error-soft-bg:#fee2e2;--color-success:#047857;--color-success-soft-bg:#d1fae5;--color-warning:#b45309;--color-warning-soft-bg:#fef3c7;--color-focus:#0d7377;--color-focus-shadow:#0d737759;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:40px;--space-8:48px;--shadow-sm:0 1px 2px #0f172a0f, 0 1px 3px #0f172a14;--shadow-md:0 4px 12px #0f172a14, 0 2px 6px #0f172a0f;--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:"SF Mono", ui-monospace, "SFMono-Regular", "Cascadia Code", "Consolas", "Liberation Mono", monospace;--text-xs:12px;--text-lg:16px;--tracking-title:-.01em;--leading-body:1.6;font:14px/1.5 var(--font-sans);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--color-primary:#2dd4d4;--color-primary-dark:#14a3a8;--color-primary-light:#1a3a3c;--color-bg:#111318;--color-bg-subtle:#1a1d24;--color-bg-hover:#242830;--color-surface:#1e2028;--color-text:#f1f5f9;--color-text-secondary:#c4cdd9;--color-text-tertiary:#9aa3b1;--color-text-placeholder:#9aa3b1;--color-border:#3a424f;--color-border-strong:#5a6478;--color-error:#fca5a5;--color-error-soft-bg:#3b1a1a;--color-success:#6ee7b7;--color-success-soft-bg:#14322a;--color-warning:#fcd34d;--color-warning-soft-bg:#3a2a10;--color-focus:#2dd4d4;--color-focus-shadow:#2dd4d473;--shadow-sm:0 1px 3px #00000059, 0 1px 2px #0000004d;--shadow-md:0 6px 20px #0006, 0 3px 10px #00000052}}[data-theme=dark]{--color-primary:#2dd4d4;--color-primary-dark:#14a3a8;--color-primary-light:#1a3a3c;--color-bg:#111318;--color-bg-subtle:#1a1d24;--color-bg-hover:#242830;--color-surface:#1e2028;--color-text:#f1f5f9;--color-text-secondary:#c4cdd9;--color-text-tertiary:#9aa3b1;--color-text-placeholder:#9aa3b1;--color-border:#3a424f;--color-border-strong:#5a6478;--color-error:#fca5a5;--color-error-soft-bg:#3b1a1a;--color-success:#6ee7b7;--color-success-soft-bg:#14322a;--color-warning:#fcd34d;--color-warning-soft-bg:#3a2a10;--color-focus:#2dd4d4;--color-focus-shadow:#2dd4d473;--shadow-sm:0 1px 3px #00000059, 0 1px 2px #0000004d;--shadow-md:0 6px 20px #0006, 0 3px 10px #00000052}[data-theme=light]{--color-primary:#0d7377;--color-primary-dark:#095b5e;--color-primary-light:#e0f2f1;--color-bg:#f0f3f6;--color-bg-subtle:#f7f9fb;--color-bg-hover:#eef2f5;--color-surface:#fff;--color-text:#1f2937;--color-text-secondary:#545d6c;--color-text-tertiary:#6b7280;--color-text-placeholder:#6b7280;--color-border:#d8dde4;--color-border-strong:#aab3c0;--color-error:#b91c1c;--color-error-soft-bg:#fee2e2;--color-success:#047857;--color-success-soft-bg:#d1fae5;--color-warning:#b45309;--color-warning-soft-bg:#fef3c7;--color-focus:#0d7377;--color-focus-shadow:#0d737759}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%}body{min-height:100vh;margin:0;padding:0}#root{text-align:left;border:none;width:100%;max-width:100%;min-height:auto;margin:0;display:block}img,svg{max-width:100%;display:block}button,input,select,textarea{font:inherit;color:inherit}a{color:inherit;text-decoration:none}h1,h2,h3,h4,h5,h6{letter-spacing:var(--tracking-title);margin:0;font-weight:500}.prose{line-height:var(--leading-body)}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow);border-radius:4px}input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible,.row-action:focus-visible,.edge-btn:focus-visible,.export-popup-options button:focus-visible,.export-popup-close:focus-visible,.material-save:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}@media (forced-colors:active){:root{--color-bg:Canvas;--color-bg-subtle:Canvas;--color-bg-hover:Canvas;--color-surface:Canvas;--color-text:CanvasText;--color-text-secondary:CanvasText;--color-text-tertiary:CanvasText;--color-border:CanvasText;--color-border-strong:CanvasText;--color-focus:Highlight;--color-focus-shadow:transparent}.btn,.row-action,.edge-btn,.export-popup-options button,.export-popup-close,.pwa-action,.panel{forced-color-adjust:none;border:1px solid canvastext!important}.icon,.pwa-status-dot,.diagram-info>span,.legend-swatch{forced-color-adjust:auto}:focus-visible{outline-offset:2px;box-shadow:none!important;outline:3px solid highlight!important}}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-secondary)}::selection{background:var(--color-primary);color:#fff}::placeholder{color:var(--color-text-placeholder);opacity:1}.project-start{background:var(--color-surface);width:min(660px,100vw - 24px);max-height:calc(100dvh - 32px);color:var(--color-text);border:1px solid var(--color-border);box-shadow:var(--shadow-sm);border-radius:12px;padding:20px;overflow:auto}.project-start>header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.project-start h2{letter-spacing:-.02em;margin:0 0 6px;font-size:22px;font-weight:700;line-height:1.2}.project-start header p{color:var(--color-text-secondary);margin:0 0 18px;font-size:14px;line-height:1.5}.project-start__choices{border:1px solid var(--color-border);background:var(--color-surface);box-shadow:var(--shadow-sm);border-radius:14px;display:grid;overflow:hidden}.project-start__choices>button{border:0;border-top:1px solid var(--color-border);min-height:76px;color:var(--color-text);text-align:start;cursor:pointer;background:0 0;align-items:center;gap:14px;padding:14px 16px;display:flex}.project-start__choices>button:first-child{border-top:0}.project-start__choices>button:hover{background:var(--color-bg-hover)}.project-start__choices>button:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px}.project-start__icon{background:var(--color-primary-light);width:44px;height:44px;color:var(--color-primary);border-radius:11px;flex:none;place-items:center;display:grid}.project-start__choices>button>svg:last-child{color:var(--color-text-tertiary);flex-shrink:0;margin-inline-start:auto}.project-start__choices strong,.project-start__choices small{display:block}.project-start__choices strong{margin-bottom:3px;font-size:15px;font-weight:600}.project-start__choices small{color:var(--color-text-secondary);font-size:13px;line-height:1.4}.project-start>footer{flex-wrap:wrap;justify-content:center;gap:8px;padding-top:16px;display:flex}.project-start .toolbar-icon-btn{flex:none;width:44px;height:44px}.project-start .btn,.project-library .btn{min-height:44px}.project-library{background:var(--color-surface);width:min(1000px,100vw - 24px);max-width:1000px;max-height:calc(100dvh - 32px);color:var(--color-text);border:1px solid var(--color-border);box-shadow:var(--shadow-sm);border-radius:12px;padding:16px;overflow:auto}.project-library__header{z-index:1;background:var(--color-surface);justify-content:space-between;align-items:center;gap:16px;padding-bottom:8px;display:flex;position:sticky;top:0}.project-library__header h2{margin:0;font-size:18px;font-weight:600}.project-library .toolbar-icon-btn{width:44px;height:44px}.project-library .project-checkpoint input{font-weight:400}.project-library .project-checkpoint input::placeholder{color:var(--color-text-tertiary);opacity:1;font-weight:400}.project-library__notice{color:var(--color-text-secondary);max-width:760px;margin:12px 0 20px}.project-library__grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,265px),1fr));align-items:start;gap:16px;display:grid}.project-library__empty{color:var(--color-text-secondary);text-align:center;padding:40px 0}.project-checkpoint{border:1px solid var(--color-border);background:var(--color-bg-subtle);border-radius:10px;flex-wrap:wrap;align-items:end;gap:12px;margin-bottom:20px;padding:16px;display:flex}.project-checkpoint label{flex:1;gap:6px;min-width:min(100%,210px);font-weight:600;display:grid}.project-checkpoint input{background:var(--color-surface);width:100%;min-height:44px;color:var(--color-text);border:1px solid var(--color-border-strong);border-radius:6px;padding:8px 12px}.project-checkpoint p{color:var(--color-text-secondary);flex-basis:100%;margin:0;font-size:12px}.project-card{border:1px solid var(--color-border);background:var(--color-surface);border-radius:10px;overflow:hidden}.project-card.is-current{border-color:var(--color-primary)}.project-preview{background:var(--color-bg-subtle);width:100%;height:132px;display:block}.project-preview rect{fill:var(--color-primary-light);stroke:var(--color-primary);stroke-width:1.2px}.project-preview.is-list{color:var(--color-primary);justify-content:center;align-items:center;gap:16px;font-size:24px;display:flex}.project-card__body{padding:12px}.project-card h3{overflow-wrap:anywhere;margin:0 0 4px;font-size:16px}.project-card time{color:var(--color-text-secondary);font-size:12px}.project-card__current{color:var(--color-primary);margin-top:5px;font-size:12px;font-weight:700;display:block}.project-card__actions{align-items:center;gap:6px;margin-top:14px;display:flex}.project-card__actions .btn{min-width:0;padding-inline:10px}.project-card__actions .toolbar-icon-btn{flex:none;margin-inline-start:auto}.project-card__checkpoints{border-top:1px solid var(--color-border);margin-top:14px;padding-top:12px}.project-card__checkpoints summary{cursor:pointer;min-height:32px;font-weight:600}.project-card__checkpoints ul{margin:0;padding:0;list-style:none}.project-card__checkpoints li{gap:5px;margin-top:12px;display:grid}.project-card__checkpoints small{color:var(--color-text-secondary)}.project-card__delete{color:var(--color-error);padding-top:12px}.project-card__delete p{margin:0 0 8px}.project-card__delete .btn{margin-inline-end:8px}.project-save-status{background:var(--color-error);border-radius:50%;flex:none;width:8px;height:8px}.project-storage-error{background:var(--color-error-soft-bg);color:var(--color-error);margin:0;padding:12px 16px}.project-storage-error small{overflow-wrap:anywhere;display:block}.project-storage-error .btn{margin-inline-start:12px}.project-operation{text-align:center;background:var(--color-surface);color:var(--color-text);border-radius:12px;padding:30px}@media (width<=720px){.project-library{width:100%;max-width:none;height:100dvh;max-height:100dvh;padding:16px 16px calc(16px + env(safe-area-inset-bottom));border-radius:0}.project-library__grid{grid-template-columns:1fr}}.app-tutorial-layer{z-index:900;pointer-events:none;font-family:var(--font-sans);position:fixed;inset:0}.app-tutorial-dim{z-index:900;pointer-events:auto;background:#050a12ad;animation:.18s ease-out app-tutorial-fade;position:fixed}.app-tutorial-dim--full{inset:0}.app-tutorial-focus-ring{z-index:920;pointer-events:none;border:2px solid var(--color-primary);border-radius:11px;animation:1.8s ease-in-out infinite app-tutorial-ring;position:fixed;box-shadow:0 0 0 3px #14b8a63d,0 0 26px #2dd4bf70}.app-tutorial-card{z-index:930;pointer-events:auto;border:1px solid var(--color-border-strong);background:var(--color-surface);width:min(410px,100vw - 24px);max-height:calc(100dvh - 24px);color:var(--color-text);box-shadow:var(--shadow-sm);border-radius:12px;outline:0;flex-direction:column;animation:.18s ease-out app-tutorial-card-in;display:flex;position:fixed;overflow:hidden}.app-tutorial-layer.is-centered .app-tutorial-card{top:50%;left:50%;transform:translate(-50%,-50%)}.app-tutorial-card:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}.app-tutorial-card__header{flex:none;justify-content:space-between;align-items:center;gap:12px;padding:12px 12px 9px 18px;display:flex}.app-tutorial-card__header>div{align-items:center;gap:9px;min-width:0;display:flex}.app-tutorial-card__chapter{color:var(--color-primary-dark);font-size:11px;font-weight:600}.app-tutorial-card__count{border-left:1px solid var(--color-border);color:var(--color-text-secondary);white-space:nowrap;padding-left:9px;font-size:12px}.app-tutorial-card__close,.app-tutorial-welcome__close{width:44px;height:44px;color:var(--color-text-secondary);cursor:pointer;background:0 0;border:0;border-radius:10px;flex:none;place-items:center;font-size:24px;line-height:1;display:grid}.app-tutorial-card__close:hover,.app-tutorial-welcome__close:hover{background:var(--color-bg-hover);color:var(--color-text)}.app-tutorial-card__close:focus-visible,.app-tutorial-welcome__close:focus-visible,.app-tutorial-card__markers button:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.app-tutorial-card__progress{background:var(--color-bg-subtle);flex:none;height:3px;overflow:hidden}.app-tutorial-card__progress>span{background:var(--color-primary);border-radius:0 999px 999px 0;height:100%;transition:width .22s;display:block}.app-tutorial-card__body{scrollbar-width:thin;min-height:0;padding:18px 20px 14px;overflow-y:auto}.app-tutorial-card__step-label{color:var(--color-text-tertiary);letter-spacing:.04em;text-transform:uppercase;margin-bottom:5px;font-size:11px;font-weight:700;display:block}.app-tutorial-card__body h2{color:var(--color-text);letter-spacing:-.025em;margin:0;font-size:clamp(20px,2vw,25px);font-weight:780;line-height:1.16}.app-tutorial-card__body>p:not(.app-tutorial-card__locked){color:var(--color-text-secondary);margin:10px 0 0;font-size:14px;line-height:1.55}.app-tutorial-card__locked{border:1px solid var(--color-border);background:var(--color-bg-subtle);color:var(--color-text-secondary);border-radius:9px;align-items:center;gap:8px;margin:12px 0 0;padding:9px 11px;font-size:12px;font-weight:650;line-height:1.35;display:flex}.app-tutorial-card__locked>span{border:2px solid var(--color-text-tertiary);border-radius:50%;place-items:center;width:17px;height:17px;font-size:0;display:grid}.app-tutorial-card__tip{border-left:3px solid var(--color-primary);background:var(--color-primary-light);color:var(--color-primary-dark);border-radius:0 9px 9px 0;grid-template-columns:auto 1fr;gap:3px 8px;margin-top:15px;padding:11px 12px;font-size:12px;line-height:1.45;display:grid}.app-tutorial-card__tip strong{font-weight:800}.app-tutorial-card__markers{flex:none;grid-template-columns:repeat(12,1fr);gap:4px;margin:0;padding:3px 18px 10px;list-style:none;display:grid}.app-tutorial-card__markers li{min-width:0}.app-tutorial-card__markers button{color:#0000;cursor:pointer;background:0 0;border:0;border-radius:999px;place-items:center;width:100%;min-width:0;height:22px;padding:0;display:grid}.app-tutorial-card__markers button:before{background:var(--color-border);content:"";border-radius:999px;width:100%;height:4px}.app-tutorial-card__markers button.is-visited:before{background:var(--color-primary)}.app-tutorial-card__markers button.is-current:before{background:var(--color-primary);height:7px;box-shadow:0 0 0 3px var(--color-focus-shadow)}.app-tutorial-card__markers button span{width:1px;height:1px;position:absolute;overflow:hidden}.app-tutorial-card__actions{padding:12px 18px calc(14px + env(safe-area-inset-bottom));border-top:1px solid var(--color-border);background:var(--color-bg-subtle);flex:none;justify-content:space-between;gap:10px;display:flex}.app-tutorial-card__actions .btn{min-width:116px}.app-tutorial-welcome-backdrop{z-index:1200;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:radial-gradient(circle at 18% 20%,#14b8a633,#0000 34%),#050a12c2;padding:20px}.app-tutorial-welcome{border:1px solid var(--color-border-strong);background:var(--color-surface);width:min(860px,100%);max-height:calc(100dvh - 40px);color:var(--color-text);border-radius:22px;outline:0;grid-template-columns:minmax(190px,.72fr) minmax(0,1.45fr);animation:.24s ease-out app-tutorial-welcome-in;display:grid;position:relative;overflow:auto;box-shadow:0 40px 110px #0000007a}.app-tutorial-welcome:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}.app-tutorial-welcome__close{z-index:2;position:absolute;top:12px;right:12px}.app-tutorial-welcome__hero{background:linear-gradient(145deg, #0d7377fa, #082f49fa), var(--color-primary);place-items:center;min-height:100%;display:grid;position:relative;overflow:hidden}.app-tutorial-welcome__hero:before,.app-tutorial-welcome__hero:after{content:"";border:1px solid #ffffff24;border-radius:28px;position:absolute;transform:rotate(34deg)}.app-tutorial-welcome__hero:before{width:260px;height:260px}.app-tutorial-welcome__hero:after{width:165px;height:165px}.app-tutorial-welcome__mark{z-index:1;color:#fff;letter-spacing:-.08em;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1f;border:1px solid #ffffff57;border-radius:24px;place-items:center;width:92px;height:92px;font-size:42px;font-weight:850;display:grid;position:relative;box-shadow:inset 0 1px #ffffff38,0 20px 48px #00000038}.app-tutorial-welcome__spark{color:#99f6e4;font-size:24px;position:absolute;top:20%;right:20%}.app-tutorial-welcome__path{background:linear-gradient(90deg,#0000,#ffffff70,#0000);width:60%;height:2px;position:absolute;bottom:20%;left:20%;transform:rotate(-18deg)}.app-tutorial-welcome__copy{padding:42px 44px 38px}.app-tutorial-welcome__eyebrow{color:var(--color-primary-dark);letter-spacing:.1em;text-transform:uppercase;margin-bottom:8px;font-size:11px;font-weight:850;display:block}.app-tutorial-welcome h2{max-width:520px;color:var(--color-text);letter-spacing:-.04em;margin:0;font-size:clamp(28px,4vw,40px);font-weight:820;line-height:1.04}.app-tutorial-welcome__copy>p{max-width:580px;color:var(--color-text-secondary);margin:15px 0 0;font-size:15px;line-height:1.58}.app-tutorial-welcome__stages{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:22px 0 0;padding:0;list-style:none;display:grid}.app-tutorial-welcome__stage{border:1px solid var(--color-border);background:var(--color-bg-subtle);border-radius:11px;align-items:center;gap:10px;min-width:0;padding:10px;display:flex}.app-tutorial-welcome__stage-icon{background:var(--color-primary-light);width:34px;height:34px;color:var(--color-primary-dark);font:800 10px/1 var(--font-mono);border-radius:9px;flex:none;place-items:center;display:grid}.app-tutorial-welcome__stage-icon.is-cut{color:#9a3412;background:#fff7ed}.app-tutorial-welcome__stage-icon.is-assemble{color:#6d28d9;background:#f5f3ff}[data-theme=dark] .app-tutorial-welcome__stage-icon.is-cut{color:#fdba74;background:#431407}[data-theme=dark] .app-tutorial-welcome__stage-icon.is-assemble{color:#c4b5fd;background:#2e1065}.app-tutorial-welcome__stage>span:last-child{min-width:0}.app-tutorial-welcome__stage strong,.app-tutorial-welcome__stage small{display:block}.app-tutorial-welcome__stage strong{color:var(--color-text);font-size:12px}.app-tutorial-welcome__stage small{color:var(--color-text-secondary);margin-top:2px;font-size:11px;line-height:1.3}.app-tutorial-welcome__assurance{color:var(--color-text-secondary);align-items:flex-start;gap:8px;margin-top:16px;font-size:12px;line-height:1.4;display:flex}.app-tutorial-welcome__assurance>span:first-child{color:var(--color-success);font-weight:900}.app-tutorial-welcome__actions{flex-wrap:wrap;align-items:center;gap:9px;margin-top:20px;display:flex}.app-tutorial-welcome__actions .btn{min-height:46px}.app-tutorial-welcome__actions .btn-primary{min-width:154px}.app-tutorial-welcome__time{color:var(--color-text-tertiary);white-space:nowrap;margin-left:auto;font-size:11px}@keyframes app-tutorial-fade{0%{opacity:0}}@keyframes app-tutorial-ring{0%,to{box-shadow:0 0 0 3px #14b8a638,0 0 22px #2dd4bf57}50%{box-shadow:0 0 0 6px #14b8a61f,0 0 34px #2dd4bf8c}}@keyframes app-tutorial-card-in{0%{opacity:0;transform:translateY(8px)scale(.985)}}@keyframes app-tutorial-welcome-in{0%{opacity:0;transform:translateY(12px)scale(.985)}}@media (width<=720px){.app-tutorial-focus-ring{border-radius:9px}.app-tutorial-card,.app-tutorial-layer.is-centered .app-tutorial-card{border-radius:16px;width:auto;max-height:min(68dvh,590px);bottom:8px;right:8px;transform:none;top:auto!important;left:8px!important}.app-tutorial-card__body{padding:14px 16px 10px}.app-tutorial-card__body h2{font-size:20px}.app-tutorial-card__tip{margin-top:12px}.app-tutorial-card__markers{padding-left:14px;padding-right:14px}.app-tutorial-card__markers button{height:30px}.app-tutorial-card__actions{padding:10px 14px calc(10px + env(safe-area-inset-bottom))}.app-tutorial-card__actions .btn{flex:1;min-width:0}.app-tutorial-welcome-backdrop{align-items:flex-end;padding:0}.app-tutorial-welcome{width:100%;max-height:94dvh;padding-bottom:env(safe-area-inset-bottom);border-bottom:0;border-left:0;border-right:0;border-radius:20px 20px 0 0;display:block}.app-tutorial-welcome__hero{min-height:112px}.app-tutorial-welcome__close{color:#fff;background:#0000002e}.app-tutorial-welcome__close:hover{color:#fff;background:#00000047}.app-tutorial-welcome__mark{border-radius:16px;width:58px;height:58px;font-size:28px}.app-tutorial-welcome__copy{padding:24px 18px 22px}.app-tutorial-welcome h2{padding-right:22px;font-size:29px}.app-tutorial-welcome__stages{grid-template-columns:1fr;gap:7px}.app-tutorial-welcome__actions{grid-template-columns:1fr;display:grid}.app-tutorial-welcome__actions .btn{width:100%}.app-tutorial-welcome__time{text-align:center;grid-row:1;margin:0 0 1px}}@media (prefers-reduced-motion:reduce){.app-tutorial-dim,.app-tutorial-card,.app-tutorial-welcome,.app-tutorial-focus-ring{animation:none}.app-tutorial-card__progress>span{transition:none}}@media (forced-colors:active){.app-tutorial-dim{opacity:.72;background:canvas}.app-tutorial-focus-ring{box-shadow:none;border:3px solid highlight}.app-tutorial-card,.app-tutorial-welcome{border:2px solid canvastext}}.plan-answer{flex-direction:column;gap:6px;padding:14px 16px;display:flex}.plan-answer-title{color:var(--color-text);font:700 20px/1.2 var(--font-sans);margin:0}.plan-answer-waste{color:var(--color-text-secondary);margin:0;font-size:14px;font-weight:600}.plan-answer-waste.is-high{color:var(--color-warning)}.plan-answer-sheets{color:var(--color-text);gap:2px;margin:4px 0 0;padding:0;font-size:13px;list-style:none;display:grid}.plan-answer-note{color:var(--color-text-secondary);align-items:center;gap:6px;margin:4px 0 0;font-size:12.5px;display:flex}.plan-answer-note.is-warning{color:var(--color-warning);font-weight:600}.plan-answer-actions{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.plan-answer-actions .btn{min-height:40px}.plan-answer-actions .btn-primary{flex:auto}.stats-more>summary{min-height:40px;color:var(--color-text-secondary);cursor:pointer;align-items:center;padding:6px 12px;font-size:13px;font-weight:600;list-style:none;display:flex}.stats-more>summary::-webkit-details-marker{display:none}.stats-more>summary:after{content:"›";margin-left:auto;font-size:18px;line-height:1;transition:transform .15s}.stats-more[open]>summary:after{transform:rotate(90deg)}.stats-more>summary:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px}.plan-summary{flex-direction:column;gap:8px;display:flex}.plan-summary-row{border:1px solid var(--color-border);background:var(--color-surface);width:100%;min-height:52px;color:var(--color-text);text-align:left;cursor:pointer;border-radius:10px;align-items:center;gap:10px;padding:10px 14px;font:700 15px/1.2 inherit;display:flex}.plan-summary-row:hover{border-color:var(--color-primary)}.plan-summary-row:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-color:var(--color-focus)}.plan-summary-title{flex:none}.plan-summary-chevron{color:var(--color-text-secondary);flex:none;font-size:18px;line-height:1}.plan-results{flex-direction:column;display:flex}.plan-results-summary{list-style:none}.plan-results-summary::-webkit-details-marker{display:none}.plan-results-summary .plan-summary-chevron{margin-left:auto;transition:transform .15s}.plan-results[open] .plan-results-summary .plan-summary-chevron{transform:rotate(90deg)}.plan-results-panes{flex-direction:column;gap:8px;margin-top:8px;display:flex}.plan-optimizing-overlay{z-index:10;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#ffffffa3;justify-content:center;align-items:center;padding:16px;display:flex;position:absolute;inset:0}[data-theme=dark] .plan-optimizing-overlay{background:#0f172a85}.plan-optimizing-overlay-card{border:1px solid var(--color-border);background:var(--color-surface);text-align:center;border-radius:12px;flex-direction:column;align-items:center;gap:12px;min-width:220px;max-width:320px;padding:20px 24px;display:flex;box-shadow:0 12px 32px #00000024}.plan-optimizing-spinner{border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;width:32px;height:32px;animation:.8s linear infinite plan-optimizing-spin}.plan-optimizing-label{color:var(--color-text);font:600 13px var(--font-sans)}.plan-optimizing-progress{background:var(--color-border);border-radius:999px;width:100%;height:8px;overflow:hidden}.plan-optimizing-progress-bar{background:var(--color-primary);height:100%;transition:width .2s}@keyframes plan-optimizing-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.plan-optimizing-spinner{animation:none}}@media (width<=720px){.workbench:has(.plan-answer) .panel-right{order:0}.plan-summary-row{min-height:44px;padding:8px 12px;font-size:14px}.stats-panel .stats-list{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:12px}.stats-panel .stats-list>div{min-height:22px;padding:1px 0}.stats-panel .stats-list dt,.stats-panel .stats-list dd{font-size:11px}.stats-panel .sheet-breakdown{margin-top:4px;padding-top:4px}.stats-panel .panel-header,.cuts-panel .panel-header,.diagram-panel .panel-header{min-height:30px;padding:2px 4px 2px 8px}.cuts-panel .cut-instructions{gap:6px;padding:6px}.cuts-panel .cut-order-hint{margin-bottom:0}.cuts-panel .cut-sheet-group>summary{min-height:28px;padding:6px 10px}.cuts-panel .cut-step{gap:6px;padding:6px 10px}.cuts-panel .cut-step-number{width:22px;height:22px;font-size:11px}.cuts-panel .cut-step-copy strong{font-size:11.5px;line-height:1.3}.diagram-panel .diagram-body--continuous{gap:6px;padding:6px 4px 8px}}.cut-workspace{flex-direction:column;flex:1;gap:8px;min-height:0;padding:8px;display:flex;overflow:hidden}.cut-workspace-banner{border:1px solid var(--color-warning);background:var(--color-warning-soft-bg,#fef3c7);color:var(--color-text);border-radius:8px;align-items:center;gap:8px;padding:8px 10px;font-size:12px;font-weight:600;display:flex}.cut-workspace-banner-icon{color:var(--color-warning);flex:none;display:inline-flex}.cut-workspace-banner-text{flex:1;min-width:0}.cut-workspace-banner-cta{white-space:nowrap;flex:none}[data-theme=dark] .cut-workspace-banner{border-color:var(--color-warning);background:#fbbf242e}.cut-workspace-header{color:var(--color-text-secondary);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:12px 14px 0;font-size:12px;display:flex}.cut-workspace-progressbar{background:var(--color-bg-hover);border-radius:999px;flex:none;width:100%;height:3px;display:block;overflow:hidden}.cut-workspace-progressbar-fill{border-radius:inherit;background:var(--color-primary);height:100%;transition:width .2s;display:block}.cut-workspace-body{flex:1;grid-template-columns:minmax(0,1fr) clamp(300px,26vw,380px);gap:8px;min-height:0;display:grid}.cut-workspace-diagram{flex-direction:column;min-width:0;min-height:0;display:flex;overflow:hidden}.cut-workspace-diagram .diagram-panel{flex:1;min-height:0}.cut-workspace-side{border:1px solid var(--color-border);background:var(--color-surface);overscroll-behavior:contain;border-radius:12px;flex-direction:column;align-self:start;gap:8px;min-width:0;min-height:0;max-height:100%;display:flex;overflow-y:auto}.cut-workspace-bottom{flex-direction:column;gap:4px;padding:0 14px 10px;display:flex}.cut-edit-plan-link{align-self:start}.cut-workspace-empty{flex:1;place-items:center;display:grid}.cuts-panel--stepper{border-color:var(--color-primary)}.cut-stepper-active{background:var(--color-surface);flex-direction:column;gap:12px;padding:6px 14px 14px;display:flex}.cut-stepper-meta{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.cut-stepper-counter{color:var(--color-text);font-size:16px;font-weight:700}.cut-stepper-sheet{border:1px solid var(--color-border);background:var(--color-surface);height:24px;color:var(--color-text-secondary);font:600 10.5px var(--font-mono);border-radius:999px;align-items:center;padding:2px 10px;display:inline-flex}.cut-stepper-instruction{grid-template-columns:30px minmax(0,1fr);align-items:center;gap:9px;padding:4px 0;display:grid}.cut-stepper-instruction .cut-step-number{width:28px;height:28px;font-size:11px}.cut-stepper-instruction strong{color:var(--color-text);font-size:14px;line-height:1.5}.cut-stepper-controls{flex-direction:column;gap:8px;display:flex}.cut-stepper-controls .btn{white-space:normal;min-width:0;min-height:44px;padding-inline:4px;font-size:11px;line-height:1.15}.cut-stepper-controls .btn-secondary{flex:1 1 0;min-width:44px;min-height:44px}.cut-stepper-controls .btn-accent{background:var(--color-primary);border-color:var(--color-primary);width:100%;min-height:52px;color:var(--color-surface)}.cut-stepper-controls .cut-stepper-secondary{gap:6px;display:flex}.cut-stepper-controls .cut-stepper-secondary .btn{flex:1 1 0}.cut-stepper-controls .btn-accent:disabled{opacity:.4}.cut-stepper-complete{color:#047857;text-align:center;background:#ecfdf5;border-radius:7px;margin:0;padding:6px 10px;font-size:11px;font-weight:600}[data-theme=dark] .cut-stepper-complete{color:#34d399;background:#34d3991f}.cut-stepper-list{border-top:1px solid var(--color-border);background:var(--color-surface)}.cut-stepper-list>summary{min-height:44px;color:var(--color-text-secondary);cursor:pointer;padding:12px 0;font-size:12px;display:list-item}.cut-stepper-list[open]>summary{border-bottom:1px solid var(--color-border);border-radius:8px 8px 0 0}.cut-step{cursor:pointer}button.cut-step{border:0;border-top:1px solid var(--color-bg-subtle);width:100%;font:inherit;text-align:left;cursor:pointer;background:0 0;grid-template-columns:28px minmax(0,1fr);align-items:start;gap:8px;min-height:44px;padding:8px 10px;display:grid}button.cut-step:first-child{border-top:0}button.cut-step:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px;box-shadow:0 0 0 4px var(--color-focus-shadow) inset}.cut-step:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.cut-step.is-active{background:#0d73771f}.cut-step.is-done .cut-step-number{color:#047857;background:#d1fae5}.cut-step.is-done strong{color:var(--color-text-secondary);text-decoration:line-through}[data-theme=dark] .cut-step.is-active{background:#0d73773d}[data-theme=dark] .cut-step.is-done .cut-step-number{color:#34d399;background:#34d3992e}.cut-terminal{border:1px solid var(--color-primary);text-align:center;background:#ecfdf5;border-radius:9px;flex-direction:column;gap:10px;padding:14px 10px;display:flex}.cut-terminal-text{color:#047857;margin:0;font-size:12px;font-weight:700}[data-theme=dark] .cut-terminal{background:#34d3991f}[data-theme=dark] .cut-terminal-text{color:#34d399}@media (width<=720px){.app-layout:has(.cut-workspace){height:100dvh;min-height:0;overflow:hidden}.cut-workspace{overflow:hidden}.cut-workspace-body{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);display:grid}.cut-workspace-diagram{overflow:auto}.cut-workspace-diagram .diagram-body{overflow:visible}.cut-workspace-side{max-height:48dvh;padding-bottom:env(safe-area-inset-bottom);overflow:auto}.cut-stepper-list{flex-shrink:0;max-height:150px;overflow:auto}.cut-workspace-diagram .diagram-panel{flex:none}.cut-workspace-card,.cut-terminal{z-index:5;background:var(--color-surface);flex-shrink:0;position:sticky;top:0;bottom:0}}@media (pointer:coarse){.cut-stepper-controls .btn{min-height:52px;padding:8px 6px;font-size:12px}.cut-stepper-controls .btn-accent{min-height:56px}.cut-stepper-instruction{gap:10px;padding:10px 12px}.cut-stepper-instruction .cut-step-number{width:32px;height:32px}.cut-workspace-header{padding:10px 14px 0}}.app-layout{background:var(--color-bg);flex-direction:column;height:100dvh;min-height:560px;display:flex;position:relative;overflow:hidden}.btn{border:1px solid var(--color-border);background:var(--color-surface);min-width:44px;min-height:44px;color:var(--color-text);font:600 13px/1.2 var(--font-sans);cursor:pointer;border-radius:7px;justify-content:center;align-items:center;gap:6px;padding:5px 12px;transition:background .12s,border-color .12s,transform .12s,filter .12s,box-shadow .12s;display:inline-flex}.btn:hover:not(:disabled){border-color:var(--color-border-strong);background:var(--color-bg-subtle);filter:brightness(1.02)}.btn:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.42;cursor:not-allowed}.btn-sm{min-width:44px;min-height:44px;padding:4px 10px;font-size:12px}.btn-xs{gap:5px;min-width:44px;min-height:44px;padding:4px 10px;font-size:12px}.btn-primary{border-color:var(--color-primary);background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){border-color:var(--color-primary-dark);background:var(--color-primary-dark)}.btn-accent{border-color:var(--color-primary);background:var(--color-primary);color:#fff}.btn-accent:hover:not(:disabled){border-color:var(--color-primary-dark);background:var(--color-primary-dark)}.btn-secondary{background:var(--color-bg-subtle)}.btn-ghost{color:var(--color-primary);background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){background:var(--color-bg-hover);border-color:#0000}.btn-danger{border-color:var(--color-error);background:var(--color-error);color:#fff}.btn-danger:hover:not(:disabled){background:#7f1d1d;border-color:#7f1d1d}[data-theme=dark] .btn-danger{background:var(--color-error);border-color:var(--color-error);color:#1e2028}.btn-warning{border-color:var(--color-warning);background:var(--color-warning);color:#fff}.btn-warning:hover:not(:disabled){background:#7c2d12;border-color:#7c2d12}[data-theme=dark] .btn-warning{background:var(--color-warning);border-color:var(--color-warning);color:#1e2028}[data-theme=dark] .btn-primary,[data-theme=dark] .btn-accent,[data-theme=dark] .edge-btn.active,[data-theme=dark] .pwa-action--accent{color:#082f2f}.btn-icon{min-width:44px;min-height:44px;color:var(--color-text-secondary);background:0 0;border-color:#0000;padding:5px;transition:background .12s,border-color .12s,color .12s,filter .12s}.btn-icon:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.btn-icon:hover:not(:disabled){color:var(--color-text);background:var(--color-bg-hover);filter:brightness(1.02)}.top-toolbar{z-index:50;align-items:center;gap:var(--space-3);min-height:52px;padding:calc(4px + env(safe-area-inset-top)) calc(10px + env(safe-area-inset-right)) 4px calc(10px + env(safe-area-inset-left));border-bottom:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);display:flex}.toolbar-left,.toolbar-right{align-items:center;gap:var(--space-1);flex:1 1 0;min-width:0;display:flex}.toolbar-right{justify-content:flex-end;min-width:max-content}.toolbar-modes{flex:0 auto;justify-content:center;min-width:0;display:flex}.toolbar-brand{color:var(--color-text);letter-spacing:-.3px;white-space:nowrap;margin:0 4px 0 2px;font-size:15px;font-weight:800}.toolbar-project-name{width:220px;min-width:60px;height:34px;color:var(--color-text-secondary);font:500 13px/1.2 var(--font-sans);text-overflow:ellipsis;background:0 0;border:1px solid #0000;border-radius:8px;outline:0;padding:4px 10px}.toolbar-project-name::placeholder{color:var(--color-text-tertiary)}.toolbar-project-name:hover{border-color:var(--color-border)}.toolbar-project-name:focus{border-color:var(--color-primary);color:var(--color-text);box-shadow:0 0 0 3px var(--color-focus-shadow)}.toolbar-icon-btn{width:40px;height:40px;color:var(--color-text-secondary);cursor:pointer;background:0 0;border:0;border-radius:10px;flex:none;place-items:center;padding:0;transition:background .12s,color .12s;display:inline-grid}.toolbar-icon-btn:hover{background:var(--color-bg-hover);color:var(--color-text)}.toolbar-icon-btn:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.toolbar-optimize{border-radius:9px;min-height:36px;padding:6px 16px;font-size:13px;position:relative;overflow:hidden}.toolbar-menu-backdrop{z-index:1000;position:fixed;inset:0}.toolbar-menu{top:calc(50px + env(safe-area-inset-top));border:1px solid var(--color-border);background:var(--color-surface);width:260px;max-height:calc(100dvh - 64px);color:var(--color-text);box-shadow:var(--shadow-md);border-radius:12px;outline:0;animation:.12s fadeIn;position:fixed;left:8px;overflow:auto}.toolbar-menu .toolbar-sheet-header{display:none}.modal-backdrop.toolbar-sheet-backdrop{align-items:flex-end;padding:0}.toolbar-sheet{background:var(--color-surface);width:100%;max-height:85dvh;color:var(--color-text);padding-bottom:env(safe-area-inset-bottom);border-radius:16px 16px 0 0;outline:0;animation:.18s slideUp;overflow:auto;box-shadow:0 -12px 40px #0000004d}.toolbar-sheet-header,.export-popup-header{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:8px 8px 8px 16px;font-size:16px;display:flex}.toolbar-sheet-project{border-bottom:1px solid var(--color-border);color:var(--color-text-secondary);gap:6px;padding:12px 16px;font-size:12px;font-weight:600;display:grid}.toolbar-sheet-project input{border:1px solid var(--color-border);background:var(--color-bg);width:100%;min-height:44px;color:var(--color-text);font:500 16px/1.2 var(--font-sans);border-radius:9px;outline:0;padding:8px 12px}.toolbar-sheet-project input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-focus-shadow)}.project-save-text{color:var(--color-text-tertiary);font-weight:500}.project-save-text.is-error{color:var(--color-error)}.toolbar-sheet-items,.export-popup-options{padding:6px;display:grid}.toolbar-sheet-items hr{border:0;border-top:1px solid var(--color-border);width:calc(100% - 16px);margin:4px 8px}.toolbar-sheet-items>button,.toolbar-sheet-items>a,.export-popup-options button{width:100%;min-height:40px;color:var(--color-text);font:500 14px/1.2 var(--font-sans);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:center;gap:12px;padding:8px 10px;text-decoration:none;display:flex}.toolbar-sheet-items svg,.export-popup-options svg{color:var(--color-text-secondary);flex:none}.toolbar-sheet-items>button:hover:not(:disabled),.toolbar-sheet-items>a:hover,.export-popup-options button:hover{background:var(--color-bg-hover)}.toolbar-sheet-items>button:focus-visible,.toolbar-sheet-items>a:focus-visible,.export-popup-options button:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px}.toolbar-sheet-items>button:disabled{opacity:.42;cursor:not-allowed}.toolbar-sheet .toolbar-sheet-items>button,.toolbar-sheet .toolbar-sheet-items>a{min-height:48px;font-size:15px}.export-popup{border:1px solid var(--color-border);background:var(--color-surface);width:min(340px,100%);color:var(--color-text);border-radius:14px;outline:0;overflow:hidden;box-shadow:0 24px 70px #0000004d}.export-popup-options button{min-height:48px}.shortcuts-popup{border:1px solid var(--color-border);background:var(--color-surface);width:min(420px,100vw - 32px);color:var(--color-text);box-shadow:var(--shadow-sm);border-radius:14px;overflow:hidden}.shortcuts-popup-header{border-bottom:1px solid var(--color-border);font-size:var(--text-lg);justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.shortcuts-list{gap:var(--space-3);margin:0;padding:14px 16px 16px;display:grid}.shortcuts-row{color:var(--color-text-secondary);align-items:center;gap:10px;font-size:13px;line-height:1.4;display:flex}.shortcuts-row dt{flex:none;align-items:center;gap:4px;display:flex}.shortcuts-row dd{margin:0}.shortcuts-row kbd{border:1px solid var(--color-border-strong);background:var(--color-bg);min-width:22px;height:22px;color:var(--color-text);font:600 11px/1 var(--font-sans);border-bottom-width:2px;border-radius:6px;justify-content:center;align-items:center;padding:0 6px;display:inline-flex}.help-center{width:min(720px,100vw - 32px);max-height:min(780px,100dvh - 32px);overflow:auto}.help-center__header{align-items:flex-start}.help-center__header>div{min-width:0}.help-center__header strong{font-size:18px;font-weight:600;display:block}.help-center__header p{color:var(--color-text-secondary);margin:4px 0 0;font-size:13px;line-height:1.45}.help-center__body{gap:18px;padding:16px;display:grid}.help-center__tour{border-bottom:1px solid var(--color-border);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:14px;padding:0 0 16px;display:grid}.help-center__tour-mark{background:var(--color-primary);color:#fff;width:42px;height:42px;box-shadow:0 8px 22px var(--color-focus-shadow);border-radius:11px;place-items:center;font-size:20px;display:grid}.help-center__tour h2,.help-center__section h2{color:var(--color-text);margin:0;font-size:14px;font-weight:780}.help-center__tour p{color:var(--color-text-secondary);margin:4px 0 0;font-size:12px;line-height:1.45}.help-center__tour .btn{white-space:nowrap}.help-center__section{gap:9px;display:grid}.help-center__workflow{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid}.help-center__workflow li{gap:8px;min-width:0;padding:8px 0;display:flex}.help-center__workflow li>span{color:var(--color-primary-dark);font:800 10px/1.4 var(--font-mono)}.help-center__workflow strong,.help-center__workflow small{display:block}.help-center__workflow strong{color:var(--color-text);font-size:12px}.help-center__workflow small{color:var(--color-text-secondary);margin-top:3px;font-size:11px;line-height:1.35}.help-center .shortcuts-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:0}.help-center .shortcuts-row{align-items:flex-start;padding:8px 0}@media (width<=720px){.help-center-backdrop{align-items:flex-end}.help-center{width:100%;max-width:none;height:100dvh;max-height:100dvh;padding-bottom:env(safe-area-inset-bottom);border:0;border-radius:0}.help-center__tour{grid-template-columns:auto minmax(0,1fr)}.help-center__tour .btn{grid-column:1/-1;width:100%}.help-center__workflow{grid-template-columns:repeat(2,minmax(0,1fr))}.help-center .shortcuts-list{grid-template-columns:1fr}}.modeler-mode-host{flex:1;min-width:0;min-height:0;display:flex;overflow:hidden}.modeler-mode-host>*{flex:1;min-width:0;min-height:0}.modeler-loading{color:var(--color-text-secondary);background:var(--color-bg);flex:1;align-content:center;place-items:center;gap:10px;font-size:14px;display:grid}.modeler-loading-spinner{border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;width:22px;height:22px;animation:.8s linear infinite modeler-spin}@keyframes modeler-spin{to{transform:rotate(360deg)}}@media (width<=720px){.modeler-mode-host{overflow:auto}}.workbench{gap:var(--space-2);min-height:0;padding:var(--space-2);flex:1;grid-template-columns:clamp(410px,30vw,540px) minmax(0,1fr) clamp(285px,20vw,340px);transition:gap .15s;display:grid;overflow:hidden}.panel-left,.panel-center,.panel-right{min-width:0;min-height:0}.panel-left{gap:var(--space-2);overscroll-behavior:contain;flex-direction:column;display:flex;overflow:hidden auto;container:inputs/inline-size}.panel-right{gap:var(--space-2);overscroll-behavior:contain;flex-direction:column;display:flex;overflow-y:auto}.panel-center{flex-direction:column;display:flex;overflow:hidden}.panel-center>.plan-diagram-busy-wrapper{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.panel-left>.plan-inputs-busy-wrapper{gap:var(--space-2);flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.parts-panel{flex:1 1 0;min-height:140px}.stock-panel{flex:0 auto;min-height:0;max-height:38%}.options-panel{flex:none}.pwa-actions{align-items:center;gap:6px;display:inline-flex}.pwa-status{background:var(--color-bg);min-height:28px;color:var(--color-text-secondary);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:3px 10px;font-size:12px;display:inline-flex}.pwa-status-dot{background:var(--color-text-tertiary);border-radius:50%;width:8px;height:8px}.pwa-action{border:1px solid var(--color-border);background:var(--color-surface);min-height:36px;color:var(--color-text);font:600 12px var(--font-sans);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:4px 12px;transition:background .15s;display:inline-flex}.pwa-action:hover{background:var(--color-bg-hover)}.pwa-action:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.pwa-ios-steps{color:var(--color-text);flex-direction:column;gap:6px;margin:8px 0 0;padding-left:22px;font-size:13px;line-height:1.45;display:flex}.pwa-ios-steps li{padding-left:4px}.panel{border:1px solid var(--color-border);background:var(--color-surface);min-width:0;min-height:0;box-shadow:var(--shadow-sm);border-radius:10px;flex-direction:column;flex:none;transition:box-shadow .15s,border-color .15s;display:flex;overflow:hidden}.card{border:1px solid var(--color-border);background:var(--color-surface);box-shadow:var(--shadow-sm);border-radius:10px;transition:box-shadow .15s,border-color .15s}.panel:hover,.card:hover,.card--elevated,.panel--elevated{box-shadow:var(--shadow-md)}.panel-center>.panel{flex:1}.panel-header{justify-content:space-between;align-items:center;gap:var(--space-2);border-bottom:1px solid var(--color-border);background:var(--color-bg-subtle);min-height:36px;padding:4px 6px 4px 10px;transition:background .15s,border-color .15s;display:flex}.panel-header h2,.panel-header h3{color:var(--color-text);white-space:nowrap;align-items:center;gap:6px;margin:0;font-size:12px;font-weight:700;display:flex}.panel-header .icon{color:var(--color-primary);flex:none}.parts-panel .panel-header h2,.stock-panel .panel-header h2{text-overflow:ellipsis;min-width:0;display:block;overflow:hidden}.panel-header .btn-primary .icon{color:currentColor}.unit-switch{border:1px solid var(--color-border);background:var(--color-surface);border-radius:8px;gap:2px;margin-left:auto;padding:2px;display:inline-flex}.unit-switch button{min-width:32px;min-height:36px;color:var(--color-text-secondary);font:600 12px var(--font-mono);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:0 6px}.unit-switch button:hover{background:var(--color-bg-hover)}.unit-switch button[aria-pressed=true]{background:var(--color-primary-light);color:var(--color-primary-dark)}.unit-switch button:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px}.panel-body{flex:1;min-height:0;padding:8px;overflow:auto}.parts-panel .panel-body,.stock-panel .panel-body{scrollbar-width:thin;scrollbar-color:var(--color-border) transparent;padding:0;overflow:hidden auto}.options-panel .panel-body{padding:4px 10px 8px;overflow:visible}.empty-hint{color:var(--color-text);text-align:center;margin:0;padding:22px 10px;font-size:12px}.empty-state{min-height:200px;color:var(--color-text);flex-direction:column;justify-content:center;align-items:center;gap:10px;display:flex}.empty-state .icon{opacity:.6}.empty-state p{text-align:center;max-width:280px;margin:0;font-size:13px}.table-scroll{-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--color-border) transparent;min-height:0;overflow-x:hidden}.table-scroll::-webkit-scrollbar{height:6px}.table-scroll::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:999px}.entry-table{border-collapse:collapse;table-layout:fixed;width:100%;font-size:12px}.entry-table .col-num{width:72px}.entry-table .col-qty{width:56px}.entry-table .col-actions{width:44px}.entry-table th{z-index:2;border-bottom:1px solid var(--color-border);background:var(--color-bg-subtle);color:var(--color-text-secondary);text-align:left;white-space:nowrap;text-overflow:ellipsis;padding:7px 6px;font-size:12px;font-weight:600;position:sticky;top:0;overflow:hidden}.entry-table th:nth-child(2),.entry-table th:nth-child(3),.entry-table th:nth-child(4){text-align:right}.entry-table th:nth-child(2),.entry-table td:nth-child(2){border-left:1px solid var(--color-bg-subtle)}.entry-table td{border-bottom:1px solid var(--color-bg-subtle);vertical-align:middle;padding:4px 6px}.entry-table tbody tr:hover td{background:var(--color-bg-hover)}.entry-table tbody tr.is-expanded td{background:var(--color-primary-light)}.cell-text-input,.num-cell-input{width:100%;min-width:0;height:32px;color:var(--color-text);text-overflow:ellipsis;background:0 0;border:1px solid #0000;border-radius:5px;outline:0;padding:3px 6px;font-size:12px}.cell-text-input:hover,.num-cell-input:hover{border-color:var(--color-border)}.cell-text-input:focus,.num-cell-input:focus{border-color:var(--color-primary);background:var(--color-surface)}.cell-text-input:focus-visible,.num-cell-input:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.cell-text-input::placeholder{color:var(--color-text-placeholder);opacity:1}.num-cell-input{text-align:right;min-width:24px;font:600 12px var(--font-mono);font-variant-numeric:tabular-nums;padding-right:0}td.row-actions{white-space:nowrap}.row-actions{text-align:right}.entry-actions-cell{min-width:0;padding:0 4px 0 0!important}.row-action{width:30px;height:30px;color:var(--color-text-secondary);cursor:pointer;vertical-align:middle;background:0 0;border:1px solid #0000;border-radius:6px;place-items:center;margin-left:2px;padding:0;display:inline-grid}.row-action:hover{color:var(--color-text);background:var(--color-bg-subtle);border-color:var(--color-border)}tr.is-expanded .row-action:hover{background:#0d737724}.row-action:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}@container inputs (width<=379px){.panel-header .btn-label{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}}.detail-row td{border-bottom:1px solid var(--color-border);background:var(--color-bg-subtle);padding:10px 12px}.detail-row:hover td{background:var(--color-bg-subtle)!important}.detail-grid{grid-template-columns:1fr 1fr;align-items:end;gap:10px 12px;display:grid}.detail-title{color:var(--color-text);overflow-wrap:anywhere;grid-column:1/-1;font-size:14px;display:none}.detail-field{flex-direction:column;gap:3px;min-width:0;display:flex}.detail-field>span{color:var(--color-text-secondary);font-size:12px;font-weight:600}.detail-field--material{min-width:0}.detail-grid--stock .detail-field--material{grid-column:1/-1}.detail-grid--stock .detail-field--grain{grid-column:1;min-width:0}.detail-grid--stock .detail-field--cost{grid-column:2;min-width:0}.detail-grid--parts .detail-field--material{grid-column:1;min-width:0}.detail-grid--parts .detail-field--grain{grid-column:2;min-width:0}.detail-grid--parts .detail-check--inline{min-height:28px;color:var(--color-text);cursor:pointer;grid-column:1/-1;justify-self:start;align-items:center;gap:6px;font-size:12px;display:inline-flex}.detail-grid--parts .detail-edge{grid-column:1/-1}.detail-field--cost .field-label{text-overflow:clip;white-space:normal;line-height:1.25;overflow:visible}.detail-field select,.detail-field .text-field{border:1px solid var(--color-border);background:var(--color-surface);height:32px;color:var(--color-text);border-radius:6px;padding:4px 8px;font-size:12px}.detail-field select:focus-visible,.detail-field .text-field:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow);border-color:var(--color-focus)}.detail-field select:focus,.detail-field .text-field:focus{border-color:var(--color-primary);outline:0}.detail-check{min-height:28px;color:var(--color-text);cursor:pointer;align-items:center;gap:6px;padding-bottom:0;font-size:12px;display:flex}.detail-edge{grid-column:1/-1}.detail-help{display:none}.detail-allowance-help{max-width:none;color:var(--color-text-tertiary);grid-column:1/-1;margin-top:2px;font-size:11px;line-height:1.35;display:block}.detail-allowance-group{grid-column:1/-1;grid-template-columns:1fr 1fr;align-items:end;gap:8px 12px;display:grid}.detail-field--allowance{min-width:0}.detail-field--allowance .field-label{text-overflow:clip;white-space:normal;line-height:1.25;overflow:visible}.detail-cut-size{flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:6px;min-height:auto;padding:2px 0;display:flex}.detail-cut-size-label{color:var(--color-text-secondary);font-size:12px;font-weight:600}.detail-cut-size-value{color:var(--color-text);font:600 12px var(--font-mono);white-space:nowrap;background:0 0;border-radius:0;padding:0}.field-control{flex-direction:column;gap:3px;min-width:0;display:flex}.field-label{color:var(--color-text-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:600;line-height:1;overflow:hidden}.numeric-shell{border:1px solid var(--color-border);background:var(--color-surface);border-radius:6px;align-items:center;min-width:0;height:32px;display:flex}.numeric-shell:focus-within{border-color:var(--color-focus);box-shadow:0 0 0 3px var(--color-focus-shadow)}.numeric-input{width:100%;min-width:0;color:var(--color-text);font:600 12px var(--font-mono);background:0 0;border:0;outline:0;padding:4px 8px}.numeric-suffix{color:var(--color-text-tertiary);font:600 12px var(--font-sans);padding-right:6px}.text-field{width:100%;min-width:0}.material-select{cursor:pointer}.material-add-row{grid-template-columns:minmax(110px,1fr) 32px 32px;align-items:center;gap:4px;display:grid}.material-add-row .text-field{height:32px}.material-save{color:var(--color-success)}.material-add-row .row-action:disabled{opacity:.4;cursor:not-allowed}.option-row{justify-content:space-between;align-items:center;gap:10px;min-height:42px;display:flex}.option-row>label{color:var(--color-text-secondary);font-size:12px;font-weight:550}.option-row select,.option-row input[type=number]{border:1px solid var(--color-border);background:var(--color-surface);max-width:130px;height:32px;color:var(--color-text);border-radius:6px;padding:4px 8px;font-size:12px}.option-input-with-unit{border:1px solid var(--color-border);background:var(--color-surface);border-radius:6px;align-items:center;width:94px;height:32px;display:flex;overflow:hidden}.option-input-with-unit:focus-within{border-color:var(--color-focus);box-shadow:0 0 0 3px var(--color-focus-shadow)}.option-row .option-input-with-unit input[type=number]{width:100%;min-width:0;height:30px;color:var(--color-text);background:0 0;border:0;border-radius:0;outline:0;padding:4px 5px 4px 8px;font-size:12px}.option-input-unit{color:var(--color-text-tertiary);font:600 11px var(--font-mono);padding-right:7px}.option-row select:focus-visible,.option-row input:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow);border-color:var(--color-focus)}.option-row .input-narrow{width:72px}.checkbox-row label{cursor:pointer;align-items:center;gap:8px;font-size:12px;display:flex;color:var(--color-text)!important}.collapse-toggle{border:0;border-top:1px solid var(--color-border);width:100%;min-height:44px;color:var(--color-text-secondary);text-align:left;cursor:pointer;background:0 0;align-items:center;gap:6px;padding:8px 2px;font-size:12px;font-weight:500;display:flex}.collapse-toggle:hover{color:var(--color-primary-dark)}.collapse-toggle:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.advanced-options{padding-top:2px}.edge-banding-block{flex-direction:column;gap:6px;display:flex}.edge-banding-heading{align-items:center;gap:8px;display:flex}.edge-banding-heading strong{color:var(--color-text-secondary);font-size:12px;font-weight:600}.edge-banding-editor{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.edge-sides,.edge-details{align-items:center;gap:6px;display:flex}.edge-btn{border:1px solid var(--color-border);background:var(--color-surface);width:26px;height:26px;color:var(--color-text-secondary);cursor:pointer;border-radius:6px;place-items:center;font-size:11px;font-weight:700;display:grid}.edge-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.edge-btn.active{border-color:var(--color-primary);background:var(--color-primary);color:#fff}.edge-btn:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.edge-color-label,.edge-thickness-label{color:var(--color-text-secondary);flex-direction:column;align-items:flex-start;gap:3px;font-size:12px;display:flex}.edge-thickness-control{color:var(--color-text-secondary);align-items:center;gap:6px;font-size:12px;display:flex}.edge-color-input{border:1px solid var(--color-border);background:var(--color-surface);border-radius:6px;width:32px;height:32px;padding:1px}.edge-thickness-input{border:1px solid var(--color-border);background:var(--color-surface);text-align:right;width:64px;height:32px;font:600 12px var(--font-mono);border-radius:6px;padding:4px 6px}.diagram-panel{flex:1;min-height:0}.diagram-body{flex-direction:column;align-items:center;gap:10px;min-height:0;padding:12px;display:flex}.diagram-body--continuous{scroll-behavior:smooth;align-items:stretch;overflow-y:auto}.sheet-plan{border-bottom:2px solid var(--color-border);flex-direction:column;gap:8px;width:100%;padding:0 0 18px;display:flex}.sheet-plan:last-child{border-bottom:0;padding-bottom:4px}.sheet-plan-heading{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;display:flex}.sheet-plan-heading>*{color:var(--color-text-secondary);overflow-wrap:anywhere;min-width:0;padding:4px 6px;font-size:12px}.sheet-plan-heading strong{color:var(--color-text);font-weight:700}.sheet-canvas-wrap{border-radius:8px;width:100%;overflow:auto}.diagram-empty{justify-content:center}.diagram-controls{align-items:center;gap:6px;display:flex}.diagram-counter{min-width:48px;color:var(--color-text);text-align:center;font:600 12px var(--font-mono);white-space:nowrap}.swipe-hint{color:var(--color-text-secondary);font-size:12px;display:none}.diagram-info{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;width:100%;display:flex}.diagram-info>span{border:1px solid var(--color-border);background:var(--color-surface);border-radius:999px;padding:4px 10px;font-size:12px}.diagram-sheet-label{color:var(--color-text);font-weight:700}.diagram-dim{color:var(--color-text);font-family:var(--font-mono);font-weight:600}.diagram-waste{color:var(--color-warning);font-weight:700}.cut-svg{border:1px solid var(--color-border-strong);background:#fff;border-radius:8px;max-height:calc(100dvh - 205px);padding:6px;box-shadow:0 8px 26px #0f172a1a}.diagram-legend{width:100%;padding:0 2px;font-size:12px}.legend-toggle{min-height:32px;color:var(--color-text);cursor:pointer;align-items:center;gap:6px;padding:4px 0;font-weight:600;display:flex}.legend-toggle:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.legend-items{flex-wrap:wrap;gap:4px;padding:5px 0;display:flex}.legend-item{border:1px solid var(--color-border);background:var(--color-surface);border-radius:6px;align-items:center;gap:4px;padding:4px 8px 4px 4px;font-size:12px;display:inline-flex}.legend-swatch{border:1px solid var(--color-border-strong);border-radius:3px;width:12px;height:12px}.legend-label{color:var(--color-text);font-weight:650}.legend-dim{color:var(--color-text);font:500 12px var(--font-mono)}.stats-list{margin:0;display:grid}.stats-list>div{border-bottom:1px solid var(--color-bg-subtle);grid-template-columns:1fr auto;align-items:center;gap:8px;min-height:30px;padding:4px 0;display:grid}.stats-list>div:last-child{border-bottom:0}.stats-list dt{color:var(--color-text);font-size:12px}.stats-list dd{color:var(--color-text);font:650 12px var(--font-mono);margin:0}.sheet-breakdown{border-top:1px solid var(--color-border);margin-top:8px;padding-top:6px}.sheet-breakdown summary{min-height:32px;color:var(--color-text);cursor:pointer;align-items:center;gap:6px;font-size:12px;font-weight:600;display:flex}.sheet-breakdown summary:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.sheet-breakdown summary span{color:var(--color-text-secondary);font-family:var(--font-mono)}.sheet-breakdown-list{gap:6px;padding-top:6px;display:grid}.sheet-stat-row{border:1px solid var(--color-border);background:var(--color-bg-subtle);border-radius:7px;grid-template-columns:1fr auto;gap:4px 10px;padding:8px 10px;font-size:12px;display:grid}.sheet-stat-row strong{color:var(--color-text);font-size:12px}.sheet-stat-row span{color:var(--color-text-secondary);font-size:12px}.sheet-yield{text-align:right}.yield-track{background:var(--color-border);border-radius:3px;grid-column:1/-1;height:6px;overflow:hidden}.yield-track span{background:var(--color-primary);height:100%;display:block}.cut-instructions{flex-direction:column;gap:7px;padding:8px;display:flex}.cut-order-hint{color:var(--color-text);margin:0 0 1px;font-size:12px}.cut-sheet-group{border-top:1px solid var(--color-border);background:var(--color-surface);overflow:hidden}.cut-sheet-group>summary{color:var(--color-text);cursor:pointer;min-height:44px;padding:8px 2px;font-size:12px;font-weight:600}.cut-sheet-group>summary:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.cut-step-list{gap:0;margin:0;padding:0;list-style:none;display:grid}.cut-step{border-top:1px solid var(--color-bg-subtle);grid-template-columns:28px minmax(0,1fr);align-items:start;gap:8px;padding:8px 10px;display:grid}.cut-step-number{background:var(--color-primary-light);width:26px;height:26px;color:var(--color-primary-dark);font:700 12px var(--font-mono);border-radius:50%;place-items:center;display:grid}.cut-step-copy{flex-direction:column;gap:2px;min-width:0;display:flex}.cut-step-copy strong{color:var(--color-text);font-size:12px;font-weight:500;line-height:1.4}.cut-step-copy span{color:var(--color-text);font-size:12px;line-height:1.4}.table-wrap{border:1px solid var(--color-border);scrollbar-width:thin;scrollbar-color:var(--color-border) transparent;border-radius:7px;width:100%;overflow:auto}.table-wrap::-webkit-scrollbar{width:6px;height:6px}.table-wrap::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:999px}.data-table{border-collapse:separate;border-spacing:0;width:100%;font-size:12px}.data-table th{z-index:1;border-bottom:1px solid var(--color-border);background:var(--color-bg-subtle);color:var(--color-text);text-align:left;letter-spacing:.3px;text-transform:uppercase;white-space:nowrap;padding:7px 8px;font-size:12px;font-weight:700;position:sticky;top:0}.data-table td{border-bottom:1px solid var(--color-bg-subtle);color:var(--color-text);padding:6px 8px}.data-table tr:last-child td{border-bottom:0}.data-table tbody tr:hover{background:var(--color-bg-hover)}.cell-mono{font:500 12px var(--font-mono)}.col-center{text-align:center}.pagination{justify-content:center;align-items:center;gap:8px;padding-top:7px;display:flex}.page-info{color:var(--color-text);font:600 12px var(--font-mono)}.modal-backdrop{z-index:1000;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0f172a8c;justify-content:center;align-items:center;padding:20px;animation:.15s fadeIn;display:flex;position:fixed;inset:0}.modal-backdrop.bottom-sheet-backdrop{align-items:flex-end;padding:0}.bottom-sheet{border:1px solid var(--color-border);background:var(--color-surface);width:100%;max-height:82dvh;color:var(--color-text);padding-bottom:env(safe-area-inset-bottom);border-bottom:0;border-radius:16px 16px 0 0;animation:.18s slideUp;overflow:auto;box-shadow:0 -18px 60px #00000061}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{border:1px solid var(--color-border-strong);background:var(--color-surface);max-width:92vw;max-height:88dvh;box-shadow:var(--shadow-sm);border-radius:12px;animation:.18s slideUp;overflow:auto}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.confirm-dialog{width:400px;padding:16px}.confirm-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.confirm-header h3{margin:0;font-size:18px;font-weight:600}.confirm-message{color:var(--color-text);margin:0 0 18px;font-size:13px;line-height:1.5}.confirm-actions{justify-content:flex-end;gap:8px;display:flex}.settings-modal{width:540px}.settings-header{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.settings-header h2{margin:0;font-size:18px;font-weight:600}.settings-header .toolbar-icon-btn,.confirm-header .toolbar-icon-btn,.help-center__header .toolbar-icon-btn{width:44px;height:44px}.settings-body{max-height:62dvh;padding:4px 16px 12px;overflow:auto}.settings-body fieldset{border:0;border-bottom:1px solid var(--color-bg-subtle);margin:0;padding:11px 0}.settings-body legend{color:var(--color-text);margin-bottom:6px;padding:0;font-size:13px;font-weight:600}.settings-segments{border:1px solid var(--color-border);background:var(--color-bg);border-radius:9px;gap:2px;padding:3px;display:flex}.settings-segments .radio-label{cursor:pointer;border-radius:6px;flex:1;justify-content:center;min-width:0;min-height:44px;padding:8px 4px;font-size:12px;display:flex;position:relative}.settings-segments .radio-label input{opacity:0;width:1px;height:1px;position:absolute}.settings-segments .radio-label:has(:checked){background:var(--color-surface);color:var(--color-primary);box-shadow:var(--shadow-sm)}.settings-segments .radio-label:has(:focus-visible){outline:2px solid var(--color-focus);outline-offset:1px}.settings-footer{border-top:1px solid var(--color-border);background:var(--color-bg-subtle);justify-content:flex-end;padding:12px 16px;display:flex}@media (width<=720px){.settings-modal{border-radius:0;flex-direction:column;width:100%;max-width:100%;height:100dvh;max-height:100dvh;display:flex}.settings-header{flex:none;padding:12px 16px}.settings-body{flex:1;min-height:0;max-height:none;padding-inline:16px}.settings-body input[type=number],.settings-body select{min-height:44px}.settings-footer{padding:12px 16px calc(12px + env(safe-area-inset-bottom));flex:none}.modal-backdrop:has(.confirm-dialog){align-items:flex-end}.confirm-dialog{width:100%;max-width:100%;padding-bottom:calc(16px + env(safe-area-inset-bottom));border-radius:16px 16px 0 0;margin:0}.confirm-actions .btn{min-height:44px}}.radio-group{flex-wrap:wrap;gap:10px;display:flex}.radio-label,.checkbox-label{color:var(--color-text);cursor:pointer;align-items:center;gap:8px;font-size:12px;display:flex}.radio-label input,.checkbox-label input{width:16px;height:16px}.select-full,.field-row input,.input-narrow{border:1px solid var(--color-border);background:var(--color-surface);min-height:32px;color:var(--color-text);border-radius:7px;padding:4px 8px;font-size:12px}.select-full:focus-visible,.field-row input:focus-visible,.input-narrow:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow);border-color:var(--color-focus)}.select-full{width:100%}.field-row{gap:12px;display:flex}.field-row label{color:var(--color-text-secondary);flex-direction:column;flex:1;gap:4px;font-size:12px;display:flex}.field-row input{width:100%}.settings-number-unit{border:1px solid var(--color-border);background:var(--color-surface);border-radius:7px;align-items:center;min-height:32px;display:flex}.settings-number-unit input{border:0}.settings-number-unit span{color:var(--color-text-tertiary);font:600 11px var(--font-mono);padding-right:8px}.input-narrow{width:80px}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:100;background:var(--color-primary);color:#fff;font:600 14px var(--font-sans);border-radius:0 0 8px;padding:8px 12px;text-decoration:none;transition:transform .12s;position:absolute;top:0;left:0;transform:translateY(-100%)}.skip-link:focus{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow);transform:translateY(0)}.skip-link:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.focus-sentinel{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}#main:focus{outline:none}#main:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.toast-container{z-index:1100;pointer-events:none;flex-direction:column;align-items:center;gap:8px;display:flex;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.toast{background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-sm);border:1px solid var(--color-border);pointer-events:auto;text-align:left;border-radius:10px;align-items:center;gap:8px;max-width:calc(100vw - 32px);padding:10px 14px;font-size:12px;font-weight:500;animation:.2s toastIn;display:inline-flex}.toast-action{border:1px solid var(--color-border-strong);background:var(--color-bg-subtle);min-height:26px;color:var(--color-primary-dark);font:700 12px var(--font-sans);cursor:pointer;border-radius:999px;flex:none;padding:3px 11px}.toast-action:hover{background:var(--color-bg-hover)}.toast-action:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.toast--success{border-color:var(--color-success)}.toast--error{border-color:var(--color-error)}.toast--info{border-color:var(--color-primary)}@keyframes toastIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media (width<=720px){.toast-container{top:calc(60px + env(safe-area-inset-top));bottom:auto;left:12px;right:12px;transform:none}.toast{width:100%}}@media (width<=1180px){.app-layout{height:auto;min-height:100dvh;overflow:auto}.app-layout--model:has(.modeler-shell[data-sketch-active]){height:100dvh;min-height:0;overflow:hidden}.app-layout--model:has(.modeler-shell[data-sketch-active])>.top-toolbar{display:none}.app-layout--model{height:100dvh;overflow:hidden}.workbench{grid-template-columns:minmax(360px,400px) minmax(0,1fr);overflow:visible}.top-toolbar:has(.toolbar-modes) .pwa-label{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.top-toolbar:has(.toolbar-modes) .pwa-action{justify-content:center;min-width:36px;padding:4px 8px}.top-toolbar:has(.toolbar-modes) .pwa-action .icon{width:18px;height:18px}.panel-left{overflow:visible}.parts-panel,.stock-panel{flex:none;max-height:none}.panel-center{min-height:520px}.panel-right{grid-column:1/-1;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));display:grid;overflow:visible}}@media (width<=1180px) and (orientation:portrait){.workbench{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"center center""left right"}.panel-left{grid-area:left}.panel-center{grid-area:center}.panel-right{grid-area:right}}@media (width<=720px){.app-layout--model{height:auto;overflow:auto}.top-toolbar{min-height:0;padding:calc(2px + env(safe-area-inset-top)) calc(8px + env(safe-area-inset-right)) 2px calc(4px + env(safe-area-inset-left));flex-wrap:wrap;gap:4px;position:sticky;top:0}.toolbar-left,.toolbar-right{flex:none}.top-toolbar:has(.toolbar-modes) .toolbar-brand{display:none}.top-toolbar:not(:has(.toolbar-modes)) .toolbar-right{flex:auto}.toolbar-modes{flex:1 1 0}.toolbar-modes .mode-selector-wrap,.toolbar-modes .mode-selector{width:100%}.toolbar-modes .mode-selector{padding:2px}.toolbar-modes .mode-selector-btn{flex-direction:column;flex:1 1 0;gap:2px;min-width:0;min-height:46px;padding:3px 0;font-size:11px}.toolbar-modes .mode-selector-label{text-overflow:ellipsis;max-width:100%;overflow:hidden}.toolbar-primary{z-index:40;padding:8px calc(12px + env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom)) calc(12px + env(safe-area-inset-left));border-top:1px solid var(--color-border);background:var(--color-surface);display:flex;position:fixed;bottom:0;left:0;right:0}.toolbar-primary .btn{width:100%;min-height:48px;font-size:15px}body:has(.toolbar-primary) .workbench{padding-bottom:76px}body:has(.workbench input:focus) .toolbar-primary{display:none}.workbench{flex-direction:column;gap:12px;padding:8px;display:flex}.panel-left{order:1;min-height:auto}.panel-center{order:2;min-height:auto}.panel-right{order:3;min-height:auto;display:flex}.diagram-body--continuous{flex-direction:column;align-items:stretch;gap:12px;padding:10px 6px 14px;overflow:hidden visible}.swipe-hint,.diagram-counter,.diagram-controls .btn{display:none}.sheet-plan{border-bottom:2px solid var(--color-border);flex:none;width:100%;min-width:0;max-width:100%;padding-bottom:14px}.sheet-plan-heading{justify-content:flex-start;gap:4px;position:static}.sheet-plan-heading>*{padding:3px 7px;font-size:11px}.sheet-canvas-wrap{overflow:hidden}.cut-svg{width:100%;max-width:100%;max-height:420px;padding:3px;display:block}.diagram-legend{display:none}.entry-table .col-num{width:72px}.entry-table .col-qty{width:52px}.entry-table[data-unit=in] .col-num{width:84px}.entry-table th{white-space:normal;padding:4px;font-size:11px;line-height:1.2}.entry-table td{padding:2px}.entry-actions-cell{padding:0!important}.cell-text-input,.num-cell-input{height:44px;padding:0 6px;font-size:16px}.num-cell-input{text-overflow:clip;padding-inline:2px}.row-action{width:44px;height:44px;margin-left:0}.entry-table .detail-row td{padding:10px}.detail-title{display:block}.material-add-row{grid-template-columns:minmax(110px,1fr) 44px 44px}.detail-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px 12px;display:grid}.detail-field--grain,.detail-field--cost{min-width:0}.detail-check--inline{grid-column:1/-1;justify-self:start;min-width:0}.detail-edge,.detail-allowance-group{grid-column:1/-1}.detail-allowance-group{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px 12px;display:grid}.detail-field--allowance{min-width:0}.detail-cut-size,.detail-allowance-help{grid-column:1/-1;min-width:0}.detail-cut-size-value{max-width:100%;font-size:14px;overflow:auto}.edge-banding-heading{flex-direction:column;align-items:flex-start;gap:2px}.edge-banding-heading span{line-height:1.35}.detail-field select,.detail-field .text-field,.detail-field .numeric-shell{height:44px;font-size:14px}.detail-check{min-height:44px;padding-bottom:0}.detail-cut-size{flex-wrap:wrap;min-height:44px}.edge-btn{width:44px;height:44px;font-size:13px}.edge-color-input{width:44px;height:44px}.edge-thickness-input{width:72px;height:44px}.option-row{min-height:48px}.option-row select,.option-row input[type=number]{height:44px;font-size:14px}.option-input-with-unit{width:96px;height:44px}.option-row .option-input-with-unit input[type=number]{height:42px;font-size:14px}.btn,.btn-xs,.btn-sm{min-height:44px}.unit-switch button{min-width:38px;min-height:40px;padding:0 4px}.pwa-action{min-width:44px;min-height:44px}.modal-backdrop{padding:0}}.mode-selector{background:var(--color-bg);border-radius:11px;gap:2px;padding:3px;display:inline-flex}.mode-selector-btn{min-height:36px;color:var(--color-text-secondary);font:600 13px/1.2 var(--font-sans);cursor:pointer;background:0 0;border:0;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:4px 14px;transition:background .15s,color .15s;display:inline-flex}.mode-selector-btn:hover:not([aria-disabled=true]):not(.is-active){background:var(--color-bg-hover);color:var(--color-text)}.mode-selector-btn:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px}.mode-selector-btn.is-active{background:var(--color-surface);color:var(--color-primary);box-shadow:var(--shadow-sm)}.mode-selector-btn[aria-disabled=true]{opacity:.4;cursor:not-allowed}.mode-selector-wrap{min-width:0;max-width:100%;display:inline-flex;position:relative}.mode-selector-tooltip{z-index:30;border:1px solid var(--color-border-strong);background:var(--color-surface);width:max-content;max-width:min(260px,100vw - 24px);color:var(--color-text);box-shadow:var(--shadow-md);text-align:center;border-radius:7px;padding:6px 10px;font-size:12px;line-height:1.4;position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%)}.mode-selector-icon{align-items:center;display:inline-flex}.mode-selector-label{white-space:nowrap}@media (width>=721px) and (width<=960px){.mode-selector-btn{padding:4px 10px}.mode-selector-icon{display:none}}@media (width<=400px){.top-toolbar:has(.toolbar-modes) .pwa-actions{display:none}}@media (width<=340px){.toolbar-modes .mode-selector-btn{font-size:10px}}@media (width<=480px){.table-scroll{-webkit-overflow-scrolling:touch;overflow-x:auto}.entry-table{min-width:280px}.data-table{min-width:320px}.table-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}}.empty-cta{text-align:center;flex-direction:column;align-items:center;gap:8px;padding:24px 16px;display:flex}.empty-cta-title{color:var(--color-text);margin:0;font-size:14px;font-weight:700}.empty-cta-hint{max-width:260px;color:var(--color-text-secondary);margin:0;font-size:12px;line-height:1.4}.empty-cta-actions{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:4px;display:flex}.empty-cta .btn{min-height:40px}.skeleton{background:var(--color-bg-subtle);border-radius:4px;min-width:32px;animation:1.2s ease-in-out infinite skeleton-pulse;display:inline-block;color:#0000!important}.stats-list--skeleton dd.skeleton{text-align:center;min-width:44px}@keyframes skeleton-pulse{0%{opacity:1}50%{opacity:.45}to{opacity:1}}[data-testid=plan-inputs-busy-wrapper][aria-busy=true] .entry-table td,[data-testid=plan-diagram-busy-wrapper][aria-busy=true] .cut-svg,[data-testid=plan-inputs-busy-wrapper][aria-busy=true] .stats-list dd{animation:1.2s ease-in-out infinite skeleton-pulse}@media (prefers-reduced-motion:reduce){.skeleton,[aria-busy=true] .entry-table td,[aria-busy=true] .stats-list dd{animation:none}}.toast-icon{flex:none;align-items:center;display:inline-flex}.toast-icon .icon{color:currentColor}.toast--success .toast-icon{color:var(--color-success)}.toast--error .toast-icon{color:var(--color-error)}.toast--info .toast-icon{color:var(--color-primary)}.entry-table tbody tr.is-even td{background:var(--color-bg-subtle)}.entry-table tbody tr.is-even.is-expanded td{background:var(--color-primary-light)}.detail-actions{grid-column:1/-1;gap:8px;display:flex}.detail-actions .btn{flex:1 1 0}.detail-delete{color:var(--color-error)}@media (width>=721px) and (pointer:coarse){.num-cell-input{min-height:36px}}@media (width>=721px) and (pointer:fine){.row-action{width:30px;height:30px}.entry-table .col-actions{width:108px}}.toolbar-optimize-icon{align-items:center;display:inline-flex}.toolbar-optimize-icon.is-spinning{animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.toolbar-optimize-progress{background:#ffffff40;border-radius:0 0 7px 7px;height:3px;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.toolbar-optimize-bar{background:#fff;height:100%;transition:width .2s;display:block}.diagram-panel[data-stepper-active=true] .cut-svg{background:#fffdf7}[data-cut-active=true] line{filter:drop-shadow(0 0 2px #ff572299)}.diagram-sheet-order li[data-cut-active=true]{border-color:var(--color-primary);background:#0d73771f}.diagram-sheet-order li[data-cut-done=true]{opacity:.55}.diagram-sheet-order li[data-cut-done=true] strong{text-decoration:line-through}[data-theme=dark] .diagram-sheet-order li[data-cut-active=true]{background:#0d737747}.pwa-update-banner{z-index:60;color:#fff;min-height:44px;font:600 13px/1.2 var(--font-sans);background:linear-gradient(135deg,#0d7377,#095b5e);justify-content:center;align-items:center;gap:10px;padding:8px 12px;display:flex;position:fixed;top:0;left:0;right:0;box-shadow:0 4px 14px #0f172a38}.pwa-update-banner span{text-align:center;flex:1;max-width:520px}.pwa-update-banner .pwa-banner-action{color:#082f2f;min-height:32px;font:700 12px var(--font-sans);cursor:pointer;background:#fff;border:1px solid #2dd4d4;border-radius:999px;align-items:center;gap:6px;padding:6px 14px;display:inline-flex}.pwa-update-banner .pwa-banner-action:hover{filter:brightness(1.05)}.pwa-update-banner .pwa-banner-action:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.pwa-update-banner .pwa-banner-dismiss{color:#fff;cursor:pointer;background:0 0;border:1px solid #ffffff40;border-radius:8px;place-items:center;width:32px;height:32px;font-size:18px;display:grid}.pwa-update-banner .pwa-banner-dismiss:hover{background:#ffffff1f}.pwa-update-banner .pwa-banner-dismiss:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}[data-theme=dark] .pwa-update-banner{background:linear-gradient(135deg,#14a3a8,#0d7377)}[data-theme=dark] .pwa-update-banner .pwa-banner-action{color:#082f2f}.app-layout:has(.pwa-update-banner) .top-toolbar{margin-top:44px}@media (forced-colors:active){.toolbar-project-name:focus-visible,.toolbar-icon-btn:focus-visible,.mode-selector-btn:focus-visible,.export-popup-options button:focus-visible,.toolbar-sheet-items>button:focus-visible,.toolbar-sheet-items>a:focus-visible,.pwa-action:focus-visible,.pwa-update-banner .pwa-banner-action:focus-visible,.pwa-update-banner .pwa-banner-dismiss:focus-visible,.cell-text-input:focus-visible,.num-cell-input:focus-visible,.row-action:focus-visible,.detail-field select:focus-visible,.detail-field .text-field:focus-visible,.option-row select:focus-visible,.option-row input:focus-visible,.collapse-toggle:focus-visible,.edge-btn:focus-visible,.legend-toggle:focus-visible,.sheet-breakdown summary:focus-visible,.cut-sheet-group>summary:focus-visible,.select-full:focus-visible,.field-row input:focus-visible,.input-narrow:focus-visible,.toast-action:focus-visible{outline-offset:2px;box-shadow:none!important;outline:3px solid highlight!important}.pwa-status,.pwa-action,.pwa-update-banner{forced-color-adjust:none;border:1px solid canvastext!important}.pwa-status-dot{forced-color-adjust:auto}}.app-error{justify-content:center;align-items:center;gap:var(--space-3);min-height:100dvh;padding:var(--space-5);background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);text-align:center;flex-direction:column;display:flex}.app-error h1{letter-spacing:var(--tracking-title);margin:0;font-size:22px}.app-error p{max-width:34ch;margin:0 0 var(--space-2);color:var(--color-text-secondary);font-size:15px;line-height:1.5}.app-error button{min-width:220px;min-height:44px;padding:0 var(--space-4);font:700 14px var(--font-sans);cursor:pointer;border-radius:8px}.app-error-primary{border:1px solid var(--color-primary-dark);background:var(--color-primary-dark);color:var(--color-surface)}.app-error-secondary{border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text)}.app-error button:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.app-error small{max-width:34ch;color:var(--color-text-tertiary);font-size:12px}
