:root{--font-size-base: 14px;--fs-xs: .786rem;--fs-sm: .893rem;--fs-md: 1rem;--fs-lg: 1.15rem;--fs-xl: 1.4rem;--fs-2xl: 1.8rem;--fs-3xl: 2.3rem;--sp-1: .25rem;--sp-2: .5rem;--sp-3: .75rem;--sp-4: 1rem;--sp-5: 1.5rem;--sp-6: 2rem;--sp-7: 3rem;--radius-sm: 3px;--radius: 5px;--radius-lg: 8px;--sidebar-width: 15.7rem;--sidebar-width-collapsed: 3.6rem;--topbar-height: 3.4rem;--font-sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: ui-monospace, "Cascadia Mono", "Segoe UI Mono", Consolas, "Liberation Mono", monospace;--transition: .12s ease;--accent: #2563eb;--accent-hover: #1d4ed8;--accent-soft: #dbeafe;--accent-contrast: #ffffff}[data-accent=blue]{--accent: #2563eb;--accent-hover: #1d4ed8;--accent-soft: #dbeafe}[data-accent=orange]{--accent: #ea580c;--accent-hover: #c2410c;--accent-soft: #ffedd5}[data-accent=green]{--accent: #16a34a;--accent-hover: #15803d;--accent-soft: #dcfce7}[data-accent=purple]{--accent: #7c3aed;--accent-hover: #6d28d9;--accent-soft: #ede9fe}[data-accent=red]{--accent: #dc2626;--accent-hover: #b91c1c;--accent-soft: #fee2e2}[data-accent=teal]{--accent: #0d9488;--accent-hover: #0f766e;--accent-soft: #ccfbf1}:root,[data-theme=light]{--bg: #f1f3f6;--bg-raised: #ffffff;--bg-sunken: #e8ebf0;--bg-hover: #f4f6f9;--bg-active: var(--accent-soft);--sidebar-bg: #16202e;--sidebar-fg: #b9c4d2;--sidebar-fg-strong: #ffffff;--sidebar-hover: #223145;--sidebar-border: #24344a;--text: #16202e;--text-muted: #5c6a7d;--text-faint: #8896a8;--text-inverse: #ffffff;--border: #d5dbe4;--border-strong: #b6bfcc;--border-subtle: #e5e9ef;--success: #15803d;--success-bg: #dcfce7;--warning: #b45309;--warning-bg: #fef3c7;--danger: #b91c1c;--danger-bg: #fee2e2;--info: #1d4ed8;--info-bg: #dbeafe;--shadow-sm: 0 1px 2px rgba(16, 24, 40, .06);--shadow: 0 2px 6px rgba(16, 24, 40, .09);--shadow-lg: 0 10px 32px rgba(16, 24, 40, .16);--diagram-bg: #ffffff;--diagram-sheet: #f7f9fc;--diagram-sheet-border: #334155;--diagram-waste: #eef1f6;--diagram-waste-hatch: #cbd5e1;--diagram-grid: #e2e8f0;--diagram-dimension: #475569;--diagram-cut: #dc2626;--diagram-margin: #94a3b8;--diagram-remnant: #16a34a;color-scheme:light}[data-theme=dark]{--bg: #0e141c;--bg-raised: #171f2b;--bg-sunken: #0a0f16;--bg-hover: #1e2836;--bg-active: #1e304a;--sidebar-bg: #0a0f16;--sidebar-fg: #94a3b8;--sidebar-fg-strong: #f1f5f9;--sidebar-hover: #1b2431;--sidebar-border: #1e2836;--text: #e8edf4;--text-muted: #9aa8ba;--text-faint: #6b7a8d;--text-inverse: #0e141c;--border: #2a3646;--border-strong: #3d4d61;--border-subtle: #202a37;--success: #4ade80;--success-bg: #052e16;--warning: #fbbf24;--warning-bg: #3a2606;--danger: #f87171;--danger-bg: #3f1212;--info: #60a5fa;--info-bg: #12244a;--accent-soft: #1e304a;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow: 0 2px 8px rgba(0, 0, 0, .5);--shadow-lg: 0 12px 36px rgba(0, 0, 0, .6);--diagram-bg: #171f2b;--diagram-sheet: #1c2634;--diagram-sheet-border: #8595a8;--diagram-waste: #141c26;--diagram-waste-hatch: #35435a;--diagram-grid: #263141;--diagram-dimension: #9aa8ba;--diagram-cut: #f87171;--diagram-margin: #5b6b81;--diagram-remnant: #4ade80;color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html{font-size:var(--font-size-base);-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font-sans);font-size:var(--fs-md);line-height:1.5;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}h1,h2,h3,h4,h5,h6{margin:0;font-weight:600;line-height:1.25;color:var(--text)}h1{font-size:var(--fs-xl)}h2{font-size:var(--fs-lg)}h3{font-size:var(--fs-md)}p{margin:0 0 var(--sp-3)}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit;color:inherit}code,kbd,pre,.mono{font-family:var(--font-mono);font-size:.92em}hr{border:0;border-top:1px solid var(--border);margin:var(--sp-4) 0}:focus{outline:none}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}.skip-link{position:absolute;left:-9999px;top:0;z-index:999;padding:var(--sp-2) var(--sp-4);background:var(--accent);color:var(--accent-contrast);border-radius:0 0 var(--radius) 0}.skip-link:focus{left:0}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:var(--border-strong);border:2px solid var(--bg);border-radius:6px}*::-webkit-scrollbar-thumb:hover{background:var(--text-faint)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.stack{display:flex;flex-direction:column;gap:var(--sp-4)}.stack-2{display:flex;flex-direction:column;gap:var(--sp-2)}.row{display:flex;align-items:center;gap:var(--sp-3)}.row-2{display:flex;align-items:center;gap:var(--sp-2)}.wrap{flex-wrap:wrap}.spacer{flex:1 1 auto}.right{margin-left:auto}.text-muted{color:var(--text-muted)}.text-faint{color:var(--text-faint)}.text-sm{font-size:var(--fs-sm)}.text-xs{font-size:var(--fs-xs)}.text-right{text-align:right}.text-center{text-align:center}.nowrap{white-space:nowrap}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-4)}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-4)}.grid-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--sp-4)}@media (max-width: 1100px){.grid-4,.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 720px){.grid-2,.grid-3,.grid-4{grid-template-columns:minmax(0,1fr)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-up{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:.45rem .85rem;min-height:2.2rem;font-size:var(--fs-sm);font-weight:500;line-height:1.2;white-space:nowrap;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg-raised);color:var(--text);cursor:pointer;transition:background var(--transition),border-color var(--transition),color var(--transition);-webkit-user-select:none;user-select:none}.btn:hover:not(:disabled){background:var(--bg-hover);border-color:var(--text-faint)}.btn:active:not(:disabled){transform:translateY(.5px)}.btn:disabled,.btn[aria-disabled=true]{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.btn-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){filter:brightness(.92)}.btn-ghost{background:transparent;border-color:transparent}.btn-ghost:hover:not(:disabled){background:var(--bg-hover);border-color:var(--border)}.btn-subtle{background:var(--bg-sunken);border-color:transparent}.btn-subtle:hover:not(:disabled){background:var(--bg-hover);border-color:var(--border)}.btn-sm{padding:.25rem .55rem;min-height:1.8rem;font-size:var(--fs-xs)}.btn-lg{padding:.7rem 1.4rem;min-height:2.9rem;font-size:var(--fs-md);font-weight:600}.btn-xl{padding:.95rem 2rem;min-height:3.4rem;font-size:var(--fs-lg);font-weight:600;letter-spacing:.02em}.btn-block{width:100%}.btn-icon{padding:0;width:2.2rem;min-height:2.2rem;flex:0 0 auto}.btn-icon.btn-sm{width:1.8rem;min-height:1.8rem}.btn.is-active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}[data-theme=dark] .btn.is-active{color:var(--text)}.btn-group{display:inline-flex;border:1px solid var(--border-strong);border-radius:var(--radius);overflow:hidden}.btn-group .btn{border:none;border-right:1px solid var(--border);border-radius:0;min-height:2.1rem}.btn-group .btn:last-child{border-right:none}.field{display:flex;flex-direction:column;gap:.3rem;min-width:0}.label{font-size:var(--fs-xs);font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.label .req{color:var(--danger);margin-left:.15rem}.input,.select,.textarea{width:100%;padding:.4rem .6rem;min-height:2.2rem;font-size:var(--fs-sm);color:var(--text);background:var(--bg-raised);border:1px solid var(--border-strong);border-radius:var(--radius);transition:border-color var(--transition),box-shadow var(--transition)}.input:hover:not(:disabled),.select:hover:not(:disabled){border-color:var(--text-faint)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent)}.input:disabled,.select:disabled,.textarea:disabled{background:var(--bg-sunken);color:var(--text-faint);cursor:not-allowed}.input.is-invalid,.select.is-invalid,.textarea.is-invalid{border-color:var(--danger)}.input.is-invalid:focus{box-shadow:0 0 0 3px color-mix(in srgb,var(--danger) 22%,transparent)}.textarea{min-height:5rem;resize:vertical;line-height:1.5}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:1.8rem;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - .85rem) 55%,calc(100% - .55rem) 55%;background-size:.3rem .3rem,.3rem .3rem;background-repeat:no-repeat}.field-error{font-size:var(--fs-xs);color:var(--danger)}.field-hint{font-size:var(--fs-xs);color:var(--text-faint)}.input-group{display:flex;align-items:stretch}.input-group .input{border-top-right-radius:0;border-bottom-right-radius:0}.input-group .select{width:auto;min-width:4.6rem;border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.input-group .addon{display:flex;align-items:center;padding:0 .55rem;font-size:var(--fs-xs);color:var(--text-muted);background:var(--bg-sunken);border:1px solid var(--border-strong);border-left:0;border-radius:0 var(--radius) var(--radius) 0;white-space:nowrap}.checkbox{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);cursor:pointer;-webkit-user-select:none;user-select:none}.checkbox input{width:.95rem;height:.95rem;accent-color:var(--accent);cursor:pointer;margin:0}.checkbox.is-disabled{opacity:.55;cursor:not-allowed}.switch{display:inline-flex;align-items:center;gap:var(--sp-2);cursor:pointer;font-size:var(--fs-sm)}.switch input{position:absolute;opacity:0;width:0;height:0}.switch .track{position:relative;width:2.2rem;height:1.2rem;flex:0 0 auto;background:var(--border-strong);border-radius:999px;transition:background var(--transition)}.switch .track:after{content:"";position:absolute;top:.15rem;left:.15rem;width:.9rem;height:.9rem;background:#fff;border-radius:50%;transition:transform var(--transition)}.switch input:checked+.track{background:var(--accent)}.switch input:checked+.track:after{transform:translate(1rem)}.switch input:focus-visible+.track{outline:2px solid var(--accent);outline-offset:2px}.card{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.card-header{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border-subtle)}.card-header h2,.card-header h3{font-size:var(--fs-md);font-weight:600}.card-body{padding:var(--sp-4)}.card-body.tight{padding:var(--sp-3)}.card-body.flush{padding:0}.card-footer{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--border-subtle);background:var(--bg-sunken);border-radius:0 0 var(--radius-lg) var(--radius-lg)}.stat{display:flex;flex-direction:column;gap:.15rem;padding:var(--sp-4);background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.stat-label{font-size:var(--fs-xs);font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.stat-value{font-size:var(--fs-2xl);font-weight:650;line-height:1.1;font-variant-numeric:tabular-nums}.stat-sub{font-size:var(--fs-xs);color:var(--text-faint)}.stat-accent .stat-value{color:var(--accent)}.stat-good .stat-value{color:var(--success)}.stat-warn .stat-value{color:var(--warning)}.stat-bad .stat-value{color:var(--danger)}.table-wrap{width:100%;overflow-x:auto;border-radius:var(--radius-lg)}.table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}.table th,.table td{padding:.5rem .7rem;text-align:left;border-bottom:1px solid var(--border-subtle);vertical-align:middle}.table th{position:sticky;top:0;z-index:1;font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);background:var(--bg-sunken);border-bottom:1px solid var(--border);white-space:nowrap}.table tbody tr:hover{background:var(--bg-hover)}.table tbody tr:last-child td{border-bottom:none}.table td.num,.table th.num{text-align:right;font-variant-numeric:tabular-nums}.table td.actions{text-align:right;white-space:nowrap}.table .row-actions{display:inline-flex;gap:.2rem}.table-compact th,.table-compact td{padding:.3rem .5rem}.table-input{width:100%;padding:.25rem .4rem;min-height:1.85rem;font-size:var(--fs-sm);background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--text)}.table-input:hover{border-color:var(--border);background:var(--bg-raised)}.table-input:focus{outline:none;background:var(--bg-raised);border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 22%,transparent)}.table-input.is-invalid{border-color:var(--danger);background:var(--danger-bg)}.badge{display:inline-flex;align-items:center;gap:.3rem;padding:.1rem .45rem;font-size:var(--fs-xs);font-weight:600;line-height:1.5;border-radius:999px;background:var(--bg-sunken);color:var(--text-muted);white-space:nowrap}.badge-success{background:var(--success-bg);color:var(--success)}.badge-warning{background:var(--warning-bg);color:var(--warning)}.badge-danger{background:var(--danger-bg);color:var(--danger)}.badge-info{background:var(--info-bg);color:var(--info)}.badge-accent{background:var(--accent-soft);color:var(--accent)}[data-theme=dark] .badge-accent{color:var(--text)}.alert{display:flex;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);font-size:var(--fs-sm);border:1px solid transparent;border-radius:var(--radius);line-height:1.5}.alert-icon{flex:0 0 auto;margin-top:.1rem}.alert-body{min-width:0;flex:1}.alert-title{font-weight:600;margin-bottom:.15rem}.alert ul{margin:.35rem 0 0;padding-left:1.1rem}.alert li{margin-bottom:.2rem}.alert-info{background:var(--info-bg);color:var(--info);border-color:color-mix(in srgb,var(--info) 30%,transparent)}.alert-success{background:var(--success-bg);color:var(--success);border-color:color-mix(in srgb,var(--success) 30%,transparent)}.alert-warning{background:var(--warning-bg);color:var(--warning);border-color:color-mix(in srgb,var(--warning) 35%,transparent)}.alert-danger{background:var(--danger-bg);color:var(--danger);border-color:color-mix(in srgb,var(--danger) 30%,transparent)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:var(--sp-4);background:#0a0f168c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:fade-in .12s ease}.modal{width:100%;max-width:34rem;max-height:calc(100vh - 4rem);display:flex;flex-direction:column;background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);animation:slide-up .14s ease}.modal-sm{max-width:24rem}.modal-lg{max-width:52rem}.modal-xl{max-width:72rem}.modal-header{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-4);border-bottom:1px solid var(--border-subtle)}.modal-header h2{font-size:var(--fs-lg);flex:1}.modal-body{padding:var(--sp-4);overflow-y:auto;flex:1}.modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--border-subtle);background:var(--bg-sunken);border-radius:0 0 var(--radius-lg) var(--radius-lg)}.toast-region{position:fixed;right:var(--sp-4);bottom:var(--sp-4);z-index:300;display:flex;flex-direction:column;gap:var(--sp-2);max-width:26rem;pointer-events:none}.toast{display:flex;align-items:flex-start;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);font-size:var(--fs-sm);background:var(--bg-raised);border:1px solid var(--border);border-left:3px solid var(--text-faint);border-radius:var(--radius);box-shadow:var(--shadow-lg);pointer-events:auto;animation:slide-up .14s ease}.toast-success{border-left-color:var(--success)}.toast-error{border-left-color:var(--danger)}.toast-warning{border-left-color:var(--warning)}.toast-info{border-left-color:var(--info)}.toast-body{flex:1;min-width:0}.toast-title{font-weight:600;margin-bottom:.1rem}.tip{position:relative;display:inline-flex}.tip>.tip-content{position:absolute;z-index:150;bottom:calc(100% + .4rem);left:50%;transform:translate(-50%);padding:.25rem .5rem;font-size:var(--fs-xs);font-weight:500;white-space:nowrap;color:#fff;background:#1f2937;border-radius:var(--radius-sm);box-shadow:var(--shadow);opacity:0;visibility:hidden;transition:opacity var(--transition)}.tip:hover>.tip-content,.tip:focus-within>.tip-content{opacity:1;visibility:visible}.tip[data-placement=bottom]>.tip-content{bottom:auto;top:calc(100% + .4rem)}.tabs{display:flex;gap:.15rem;border-bottom:1px solid var(--border);overflow-x:auto}.tab{padding:.5rem .9rem;font-size:var(--fs-sm);font-weight:500;color:var(--text-muted);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;white-space:nowrap;transition:color var(--transition),border-color var(--transition)}.tab:hover{color:var(--text);background:var(--bg-hover)}.tab[aria-selected=true]{color:var(--accent);border-bottom-color:var(--accent)}.empty{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);padding:var(--sp-7) var(--sp-4);text-align:center;color:var(--text-muted)}.empty-icon{color:var(--text-faint);opacity:.7}.empty h3{font-size:var(--fs-lg);color:var(--text)}.empty p{max-width:30rem;margin:0;font-size:var(--fs-sm)}.spinner{display:inline-block;border:2px solid color-mix(in srgb,currentColor 25%,transparent);border-top-color:currentColor;border-radius:50%;animation:spin .62s linear infinite}.progress-track{width:100%;height:.4rem;background:var(--bg-sunken);border-radius:999px;overflow:hidden}.progress-bar{height:100%;background:var(--accent);border-radius:999px;transition:width .18s ease}.progress-bar.is-indeterminate{width:35%!important;animation:indeterminate 1.1s ease-in-out infinite}@keyframes indeterminate{0%{margin-left:-35%}to{margin-left:100%}}.meter{height:.5rem;background:var(--bg-sunken);border-radius:999px;overflow:hidden}.meter-fill{height:100%;border-radius:999px;transition:width .2s ease}.meter-good{background:var(--success)}.meter-mid{background:var(--warning)}.meter-low{background:var(--danger)}.page{padding:var(--sp-5);max-width:1600px;margin:0 auto}.page-wide{max-width:none}.page-header{display:flex;align-items:flex-start;gap:var(--sp-4);flex-wrap:wrap;margin-bottom:var(--sp-5)}.page-header h1{font-size:var(--fs-2xl)}.page-header .subtitle{font-size:var(--fs-sm);color:var(--text-muted);margin-top:.15rem}.page-header .actions{margin-left:auto;display:flex;gap:var(--sp-2);flex-wrap:wrap}.toolbar{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;padding:var(--sp-3);background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius-lg);margin-bottom:var(--sp-4)}.toolbar-sticky{position:sticky;top:0;z-index:40;border-radius:0;border-left:0;border-right:0;margin:0 calc(-1 * var(--sp-5));padding-left:var(--sp-5);padding-right:var(--sp-5);box-shadow:var(--shadow-sm)}.divider-v{width:1px;align-self:stretch;background:var(--border);margin:0 .2rem}.stepper{display:flex;align-items:center;gap:0;margin-bottom:var(--sp-5);overflow-x:auto;padding-bottom:.2rem}.step{display:flex;align-items:center;gap:var(--sp-2);padding:.4rem .75rem;font-size:var(--fs-sm);color:var(--text-muted);background:none;border:none;cursor:pointer;white-space:nowrap;border-radius:var(--radius)}.step:hover:not(:disabled){background:var(--bg-hover);color:var(--text)}.step:disabled{cursor:not-allowed;opacity:.55}.step-num{display:inline-flex;align-items:center;justify-content:center;width:1.55rem;height:1.55rem;flex:0 0 auto;font-size:var(--fs-xs);font-weight:600;border-radius:50%;border:1.5px solid var(--border-strong);color:var(--text-muted);background:var(--bg-raised)}.step.is-active{color:var(--text);font-weight:600}.step.is-active .step-num{border-color:var(--accent);background:var(--accent);color:var(--accent-contrast)}.step.is-done .step-num{border-color:var(--success);background:var(--success);color:#fff}.step.is-done{color:var(--text)}.step-line{flex:1 1 1.5rem;min-width:1rem;height:1.5px;background:var(--border)}.search{position:relative;display:flex;align-items:center;min-width:14rem;flex:0 1 22rem}.search .search-icon{position:absolute;left:.55rem;color:var(--text-faint);pointer-events:none}.search .input{padding-left:2rem}@media (max-width: 900px){.page{padding:var(--sp-4)}.toolbar-sticky{margin:0 calc(-1 * var(--sp-4));padding-left:var(--sp-4);padding-right:var(--sp-4)}.page-header .actions{margin-left:0;width:100%}}.app-shell{display:flex;min-height:100vh}.sidebar{position:fixed;top:0;left:0;bottom:0;z-index:60;width:var(--sidebar-width);display:flex;flex-direction:column;background:var(--sidebar-bg);color:var(--sidebar-fg);border-right:1px solid var(--sidebar-border);transition:width var(--transition),transform var(--transition)}.sidebar.is-collapsed{width:var(--sidebar-width-collapsed)}.sidebar-brand{display:flex;align-items:center;gap:var(--sp-3);height:var(--topbar-height);padding:0 var(--sp-3);flex:0 0 auto;border-bottom:1px solid var(--sidebar-border);overflow:hidden}.sidebar-mark{display:flex;align-items:center;justify-content:center;width:1.9rem;height:1.9rem;flex:0 0 auto;border-radius:var(--radius);background:var(--accent);color:#fff}.sidebar-name{font-size:var(--fs-sm);font-weight:650;line-height:1.15;color:var(--sidebar-fg-strong);white-space:nowrap}.sidebar-name small{display:block;font-size:var(--fs-xs);font-weight:400;color:var(--sidebar-fg);opacity:.75}.sidebar-nav{flex:1;overflow-y:auto;overflow-x:hidden;padding:var(--sp-3) var(--sp-2)}.nav-section{margin-top:var(--sp-4);margin-bottom:var(--sp-1);padding:0 var(--sp-2);font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--sidebar-fg);opacity:.55;white-space:nowrap}.nav-section:first-child{margin-top:0}.sidebar.is-collapsed .nav-section{height:1px;overflow:hidden;color:transparent;margin:var(--sp-3) var(--sp-2);background:var(--sidebar-border)}.nav-item{display:flex;align-items:center;gap:var(--sp-3);padding:.5rem var(--sp-2);margin-bottom:1px;font-size:var(--fs-sm);color:var(--sidebar-fg);border-radius:var(--radius);text-decoration:none;white-space:nowrap;overflow:hidden;transition:background var(--transition),color var(--transition)}.nav-item:hover{background:var(--sidebar-hover);color:var(--sidebar-fg-strong);text-decoration:none}.nav-item svg{flex:0 0 auto}.nav-item.is-active{background:var(--accent);color:#fff;font-weight:500}.nav-item.is-active:hover{background:var(--accent-hover)}.sidebar.is-collapsed .nav-item{justify-content:center;padding:.5rem 0}.sidebar.is-collapsed .nav-label{display:none}.sidebar-footer{flex:0 0 auto;padding:var(--sp-2);border-top:1px solid var(--sidebar-border)}.sidebar-toggle{display:flex;align-items:center;gap:var(--sp-3);width:100%;padding:.45rem var(--sp-2);font-size:var(--fs-sm);color:var(--sidebar-fg);background:none;border:none;border-radius:var(--radius);cursor:pointer;white-space:nowrap;overflow:hidden}.sidebar-toggle:hover{background:var(--sidebar-hover);color:var(--sidebar-fg-strong)}.sidebar.is-collapsed .sidebar-toggle{justify-content:center;padding:.45rem 0}.app-main{flex:1;min-width:0;margin-left:var(--sidebar-width);display:flex;flex-direction:column;transition:margin-left var(--transition)}.app-shell.is-collapsed .app-main{margin-left:var(--sidebar-width-collapsed)}.topbar{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:var(--sp-3);height:var(--topbar-height);padding:0 var(--sp-5);flex:0 0 auto;background:var(--bg-raised);border-bottom:1px solid var(--border)}.topbar-title{font-size:var(--fs-md);font-weight:600}.topbar-actions{margin-left:auto;display:flex;align-items:center;gap:var(--sp-2)}.app-content{flex:1;min-width:0}.mobile-only{display:none}.user-menu{position:relative}.user-chip{display:flex;align-items:center;gap:var(--sp-2);padding:.25rem .5rem .25rem .25rem;background:none;border:1px solid transparent;border-radius:999px;cursor:pointer;font-size:var(--fs-sm)}.user-chip:hover{background:var(--bg-hover);border-color:var(--border)}.avatar{display:flex;align-items:center;justify-content:center;width:1.8rem;height:1.8rem;flex:0 0 auto;font-size:var(--fs-xs);font-weight:600;color:#fff;background:var(--accent);border-radius:50%}.menu-popover{position:absolute;right:0;top:calc(100% + .4rem);z-index:90;min-width:13rem;padding:var(--sp-1);background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);animation:slide-up .11s ease}.menu-head{padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--border-subtle);margin-bottom:var(--sp-1)}.menu-item{display:flex;align-items:center;gap:var(--sp-2);width:100%;padding:.4rem var(--sp-3);font-size:var(--fs-sm);text-align:left;color:var(--text);background:none;border:none;border-radius:var(--radius-sm);cursor:pointer;text-decoration:none}.menu-item:hover{background:var(--bg-hover);text-decoration:none}.menu-item.is-danger{color:var(--danger)}.sidebar-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:55;background:#0a0f1680;animation:fade-in .12s ease}@media (max-width: 900px){.sidebar{transform:translate(-100%);width:var(--sidebar-width)}.sidebar.is-open{transform:translate(0);box-shadow:var(--shadow-lg)}.sidebar.is-collapsed{width:var(--sidebar-width)}.sidebar.is-collapsed .nav-label{display:inline}.sidebar.is-collapsed .nav-item{justify-content:flex-start;padding:.5rem var(--sp-2)}.app-main,.app-shell.is-collapsed .app-main{margin-left:0}.topbar{padding:0 var(--sp-4)}.mobile-only{display:inline-flex}}.diagram-panel{display:flex;flex-direction:column;background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.diagram-toolbar{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--border-subtle);background:var(--bg-sunken)}.diagram-stage{position:relative;overflow:hidden;background:var(--diagram-bg);touch-action:none;min-height:22rem;height:62vh;cursor:grab}.diagram-stage.is-panning{cursor:grabbing}.diagram-stage.is-editing{cursor:default}.diagram-stage.is-fullscreen{height:calc(100vh - 12rem)}.diagram-stage svg{display:block;width:100%;height:100%}.diagram-hint{position:absolute;left:var(--sp-3);bottom:var(--sp-3);padding:.2rem .5rem;font-size:var(--fs-xs);color:var(--text-faint);background:color-mix(in srgb,var(--bg-raised) 88%,transparent);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);pointer-events:none}.zoom-readout{min-width:3.4rem;text-align:center;font-size:var(--fs-xs);font-variant-numeric:tabular-nums;color:var(--text-muted)}.svg-sheet{fill:var(--diagram-sheet);stroke:var(--diagram-sheet-border);stroke-width:1.5;vector-effect:non-scaling-stroke}.svg-usable{fill:none;stroke:var(--diagram-margin);stroke-width:1;stroke-dasharray:5 4;vector-effect:non-scaling-stroke}.svg-waste{fill:var(--diagram-waste);stroke:var(--diagram-waste-hatch);stroke-width:.5;vector-effect:non-scaling-stroke}.svg-piece{stroke:var(--diagram-sheet-border);stroke-width:1;vector-effect:non-scaling-stroke;transition:opacity .1s ease}.svg-piece.is-mono{fill:var(--bg-raised)}.svg-piece.is-selected{stroke:var(--accent);stroke-width:2.5}.svg-piece.is-locked{stroke-dasharray:4 2}.svg-piece.is-draggable{cursor:move}.svg-piece.is-invalid{stroke:var(--danger);stroke-width:2.5}.svg-piece-label{font-family:var(--font-sans);font-weight:600;fill:#0f172a;text-anchor:middle;dominant-baseline:middle;pointer-events:none;-webkit-user-select:none;user-select:none}.svg-piece-sub{font-family:var(--font-sans);font-weight:400;fill:#334155;text-anchor:middle;dominant-baseline:middle;pointer-events:none;-webkit-user-select:none;user-select:none}.svg-piece-label.on-dark{fill:#f8fafc}.svg-piece-sub.on-dark{fill:#e2e8f0}.svg-cut-line{stroke:var(--diagram-cut);stroke-width:1.2;stroke-dasharray:7 4;fill:none;vector-effect:non-scaling-stroke;pointer-events:none}.svg-kerf{fill:var(--diagram-cut);opacity:.16;pointer-events:none}.svg-dim-line{stroke:var(--diagram-dimension);stroke-width:1;fill:none;vector-effect:non-scaling-stroke;pointer-events:none}.svg-dim-text{font-family:var(--font-sans);fill:var(--diagram-dimension);text-anchor:middle;dominant-baseline:middle;pointer-events:none;-webkit-user-select:none;user-select:none}.svg-remnant{fill:none;stroke:var(--diagram-remnant);stroke-width:1.4;stroke-dasharray:6 3;vector-effect:non-scaling-stroke;pointer-events:none}.svg-remnant-text{font-family:var(--font-sans);font-weight:600;fill:var(--diagram-remnant);text-anchor:middle;dominant-baseline:middle;pointer-events:none;-webkit-user-select:none;user-select:none}.svg-grid{stroke:var(--diagram-grid);stroke-width:.5;vector-effect:non-scaling-stroke}.legend{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-4)}.legend-item{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-xs)}.legend-swatch{width:.85rem;height:.85rem;flex:0 0 auto;border:1px solid var(--border-strong);border-radius:2px}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 17rem;gap:var(--sp-4);align-items:start}@media (max-width: 1100px){.workspace{grid-template-columns:minmax(0,1fr)}}.inspector{position:sticky;top:calc(var(--topbar-height) + var(--sp-4))}.inspector .card-body{display:flex;flex-direction:column;gap:var(--sp-3)}.cut-list{list-style:none;margin:0;padding:0;font-size:var(--fs-sm)}.cut-list li{display:flex;align-items:baseline;gap:var(--sp-3);padding:.35rem .6rem;border-bottom:1px solid var(--border-subtle)}.cut-list li:last-child{border-bottom:none}.cut-list li:hover{background:var(--bg-hover)}.cut-step{flex:0 0 auto;min-width:2rem;font-size:var(--fs-xs);font-weight:600;font-variant-numeric:tabular-nums;color:var(--text-faint)}.cut-type{flex:0 0 auto;min-width:4.6rem;font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:.03em}.cut-type-rip{color:var(--info)}.cut-type-crosscut{color:var(--accent)}.cut-type-trim{color:var(--text-faint)}.cut-type-piece{color:var(--success)}.cut-type-extract{color:var(--warning)}.print-only{display:none}@media print{@page{size:A4 portrait;margin:12mm 10mm}@page diagram{size:A4 landscape;margin:10mm}html{font-size:10pt}body{background:#fff!important;color:#000!important}:root,[data-theme=dark]{--bg: #ffffff;--bg-raised: #ffffff;--bg-sunken: #f4f4f4;--bg-hover: #ffffff;--text: #000000;--text-muted: #333333;--text-faint: #666666;--border: #999999;--border-strong: #666666;--border-subtle: #cccccc;--shadow-sm: none;--shadow: none;--shadow-lg: none;--diagram-bg: #ffffff;--diagram-sheet: #ffffff;--diagram-sheet-border: #000000;--diagram-waste: #f2f2f2;--diagram-waste-hatch: #b0b0b0;--diagram-dimension: #333333;--diagram-cut: #cc0000;--diagram-margin: #888888;--diagram-remnant: #007700;--diagram-grid: #e0e0e0}.no-print,.sidebar,.topbar,.toolbar,.diagram-toolbar,.toast-region,.modal-backdrop,.sidebar-scrim,.btn,.stepper,.tabs{display:none!important}.print-only{display:block}.app-main,.app-shell.is-collapsed .app-main{margin-left:0!important}.page{padding:0!important;max-width:none!important}.card,.stat{border:1px solid var(--border)!important;box-shadow:none!important;break-inside:avoid}a{color:#000!important;text-decoration:none!important}.report{font-size:9.5pt;line-height:1.4}.report-header{display:flex;justify-content:space-between;align-items:flex-start;gap:8mm;padding-bottom:3mm;margin-bottom:5mm;border-bottom:1.5pt solid #000}.report-company{font-size:13pt;font-weight:700}.report-company .meta{font-size:8.5pt;font-weight:400;color:#444;line-height:1.35}.report-title{text-align:right}.report-title h1{font-size:15pt;margin-bottom:1mm}.report-title .meta{font-size:8.5pt;color:#444}.report-section{margin-bottom:6mm;break-inside:avoid}.report-section>h2{font-size:10.5pt;text-transform:uppercase;letter-spacing:.06em;padding-bottom:1mm;margin-bottom:2.5mm;border-bottom:.75pt solid #666}.report-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:2mm 5mm}.report-grid.cols-3{grid-template-columns:repeat(3,1fr)}.report-field .k{font-size:7.5pt;text-transform:uppercase;letter-spacing:.05em;color:#555}.report-field .v{font-size:9.5pt;font-weight:600}.report table{width:100%;border-collapse:collapse;font-size:8.5pt}.report table th,.report table td{padding:1.2mm 2mm;border:.5pt solid #999;text-align:left}.report table th{background:#eee!important;font-weight:700;text-transform:uppercase;font-size:7.5pt;letter-spacing:.04em;-webkit-print-color-adjust:exact;print-color-adjust:exact}.report table td.num,.report table th.num{text-align:right;font-variant-numeric:tabular-nums}.report thead{display:table-header-group}.report tr{break-inside:avoid}.report-sheet{page:diagram;break-before:page;break-inside:avoid}.report-sheet-head{display:flex;justify-content:space-between;align-items:baseline;gap:6mm;margin-bottom:2.5mm;padding-bottom:1.5mm;border-bottom:.75pt solid #666}.report-sheet-head h2{font-size:12pt}.report-sheet-head .meta{font-size:8.5pt;color:#444}.report-sheet svg{display:block;width:100%;height:auto;max-height:165mm}.report-scale{display:flex;align-items:center;gap:3mm;margin-top:2mm;font-size:8pt;color:#333}.report-scale .bar{height:2mm;border:.5pt solid #000;border-top:none;-webkit-print-color-adjust:exact;print-color-adjust:exact}.report-footer{margin-top:6mm;padding-top:2mm;border-top:.5pt solid #999;font-size:7.5pt;color:#555;display:flex;justify-content:space-between}.svg-piece,.svg-waste,.svg-sheet,.legend-swatch,.badge{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
