.cfg-page{background:var(--bg-secondary);min-height:100vh}.app-header .bar{height:64px}.app-header .crumb{font-size:var(--fs-sm);color:var(--text-muted);margin-left:var(--sp-2)}.app-header .crumb b{color:var(--text-primary);font-weight:600}.cfg-page .container-wide{max-width:none;padding:0 clamp(16px,2.5vw,48px)}.cfg{gap:var(--sp-6);padding:var(--sp-6) 0 120px;grid-template-columns:minmax(0,1fr) clamp(392px,30vw,620px);align-items:start;display:grid}@media (max-width:1080px){.cfg{grid-template-columns:minmax(0,1fr)}.cfg-side{position:static!important}}.mat-header{align-items:center;gap:var(--sp-4);padding:var(--sp-4) var(--sp-5);display:flex}.mat-thumb{border-radius:var(--r-md);border:1px solid var(--border-strong);background-position:50%;background-size:cover;background-color:var(--bg-secondary);flex:none;width:64px;height:48px;position:relative;overflow:hidden}.thumb-rot{object-fit:cover;width:100%;height:100%;position:absolute;inset:0;transform:rotate(90deg)scale(1.6)}.sheets-xl{max-height:none!important;overflow:visible!important}.sheets-xl .sheet-block+.sheet-block{margin-top:var(--sp-5)}.mat-info{flex-direction:column;gap:3px;min-width:0;display:flex}.mat-info .nm{font-weight:600}.mat-info .meta{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-secondary)}.mat-info .meta .sep{color:var(--border-strong);margin:0 6px}.cfg-summary{gap:var(--sp-5);padding:var(--sp-4) var(--sp-5);border-top:1px solid var(--border);flex-wrap:wrap;display:flex}.cfg-summary .s{flex-direction:column;gap:1px;display:flex}.cfg-summary .s .v{font-family:var(--font-mono);font-size:var(--fs-lg);font-weight:500}.cfg-summary .s .k{letter-spacing:var(--ls-wide);text-transform:uppercase;color:var(--text-muted);font-size:11px}.grid-wrap{margin-top:var(--sp-5);overflow-x:auto}.grid-wrap.tall{max-height:62vh;overflow-y:auto}.grid-wrap.tall table.parts thead th{z-index:2;background:var(--bg-primary);box-shadow:0 1px 0 var(--border);position:sticky;top:0}table.parts{border-collapse:separate;border-spacing:0;width:100%;font-size:var(--fs-sm);min-width:880px}table.parts th{text-align:left;letter-spacing:var(--ls-wide);text-transform:uppercase;color:var(--text-muted);white-space:nowrap;padding:0 8px 10px;font-size:10.5px;font-weight:600}table.parts th.num,table.parts td.num{text-align:center;width:34px;padding-left:4px;padding-right:4px}table.parts td{border-top:1px solid var(--border);vertical-align:middle;padding:4px 6px}table.parts tbody tr:hover{background:var(--bg-secondary)}table.parts .idx{font-family:var(--font-mono);color:var(--text-muted);font-size:var(--fs-xs)}.cell-in{border-radius:var(--r-sm);width:100%;height:38px;color:var(--text-primary);font-size:var(--fs-sm);background:0 0;border:1px solid #0000;padding:0 8px}.cell-in:hover{border-color:var(--border)}.cell-in:focus{border-color:var(--brand);box-shadow:var(--sh-glow);background:var(--surface);outline:none}.cell-in.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.cell-in.dim{text-align:right;width:84px}.cell-in.qty{text-align:center;width:56px}.cell-in.name{min-width:130px}.cell-in.invalid{border-color:var(--error);box-shadow:0 0 0 3px var(--error-soft,#b91c1c26)}select.cell-sel{border-radius:var(--r-sm);height:38px;color:var(--text-primary);font-size:var(--fs-xs);background:0 0;border:1px solid #0000;max-width:150px;padding:0 4px}select.cell-sel:hover{border-color:var(--border)}select.cell-sel:focus{border-color:var(--brand);outline:none}.edge-cell{text-align:center;width:44px}.edge-btn{border-radius:var(--r-sm);border:1px dashed var(--border-strong);cursor:pointer;background:0 0;justify-content:center;align-items:center;width:36px;height:30px;display:inline-flex;position:relative}.edge-btn:hover{border-color:var(--text-secondary)}.edge-btn .bar{background:var(--border-strong);border-radius:2px;width:18px;height:4px}.edge-btn.on{border-style:solid;border-color:var(--brand);background:var(--accent-soft)}.edge-btn.on .bar{background:var(--brand);height:6px}.icon-btn{border-radius:var(--r-sm);width:32px;height:32px;color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;display:inline-flex}.icon-btn:hover{color:var(--text-primary);background:var(--bg-secondary);border-color:var(--border)}.icon-btn.active{color:var(--brand);background:var(--accent-soft)}.icon-btn svg{width:16px;height:16px}.row-actions{gap:2px;display:inline-flex}.grid-toolbar{gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);border-top:1px solid var(--border);flex-wrap:wrap;display:flex}.pop{z-index:100;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-lg);width:248px;box-shadow:var(--sh-xl);padding:var(--sp-4);position:fixed}.pop h6{margin:0 0 var(--sp-3);letter-spacing:var(--ls-wide);text-transform:uppercase;color:var(--text-muted);font-size:11px;font-weight:600}.pop .opt{align-items:center;gap:var(--sp-3);border-radius:var(--r-md);cursor:pointer;border:1px solid #0000;padding:8px;display:flex}.pop .opt:hover{background:var(--bg-secondary)}.pop .opt.sel{border-color:var(--brand);background:var(--accent-soft)}.pop .opt .sw{border:1px solid var(--border-strong);border-radius:4px;flex:none;width:22px;height:22px}.pop .opt .l{font-size:var(--fs-sm)}.pop .opt .l small{font-family:var(--font-mono);color:var(--text-muted);font-size:11px;display:block}.pop .none{color:var(--text-secondary)}.cfg-side{gap:var(--sp-5);flex-direction:column;display:flex;position:sticky;top:80px}.preview .cap{margin-bottom:var(--sp-3);justify-content:space-between;align-items:baseline;display:flex}.preview .eff-big{font-family:var(--font-mono);font-size:var(--fs-2xl);color:var(--brand);font-weight:500;line-height:1}.preview .eff-k{letter-spacing:var(--ls-wide);text-transform:uppercase;color:var(--text-muted);font-size:11px}.sheets{gap:var(--sp-3);flex-direction:column;max-height:360px;display:flex;overflow-y:auto}.sheet-block .sl{font-family:var(--font-mono);color:var(--text-muted);justify-content:space-between;margin-bottom:4px;font-size:11px;display:flex}.est-note{font-size:var(--fs-xs);color:var(--text-muted);margin-top:var(--sp-3);align-items:center;gap:6px;display:flex}.price-row{font-size:var(--fs-sm);justify-content:space-between;align-items:baseline;padding:7px 0;display:flex}.price-row .lbl{color:var(--text-secondary)}.price-row .val{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.price-row.total{padding-top:var(--sp-3);margin-top:var(--sp-2);border-top:1px solid var(--border)}.price-row.total .lbl{color:var(--text-primary);font-weight:600;font-family:var(--font-display);font-size:var(--fs-xl)}.price-row.total .val{font-size:var(--fs-2xl);font-weight:500}.btn-block{text-align:center;width:100%;display:block}.mobile-bar{display:none}@media (max-width:1080px){.mobile-bar{z-index:60;justify-content:space-between;align-items:center;gap:var(--sp-4);padding:var(--sp-3) var(--sp-5);background:var(--surface);border-top:1px solid var(--border-strong);box-shadow:var(--sh-lg);display:flex;position:fixed;bottom:0;left:0;right:0}.mobile-bar .tt{font-family:var(--font-mono);font-size:var(--fs-lg);font-weight:500}.mobile-bar .tk{color:var(--text-muted);text-transform:uppercase;letter-spacing:var(--ls-wide);font-size:11px}}.c2s-modal{z-index:200;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#1a14108c;position:fixed;inset:0}.c2s-modal .sheet{max-width:720px;max-height:82vh;box-shadow:var(--sh-xl);margin:8vh auto;overflow:auto}.form-field{margin-bottom:var(--sp-3);flex-direction:column;gap:4px;display:flex}.form-field label{font-size:var(--fs-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:var(--ls-wide)}.form-field input,.form-field textarea{border:1px solid var(--border-strong);border-radius:var(--r-md);background:var(--bg-primary);width:100%;color:var(--text-primary);font-size:var(--fs-sm);padding:10px 12px}.form-field input:focus,.form-field textarea:focus{border-color:var(--brand);box-shadow:var(--sh-glow);outline:none}.review-sum{margin:var(--sp-3) 0 var(--sp-4);padding:var(--sp-3) var(--sp-4);background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--r-md)}.review-sum .rs-row{font-size:var(--fs-xs);align-items:baseline;gap:8px;padding:3px 0;display:flex}.review-sum .rs-cnt{color:var(--brand);flex-shrink:0;min-width:24px;font-weight:700}.review-sum .rs-nm{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}.review-sum .rs-meta{color:var(--text-secondary);white-space:nowrap;flex-shrink:0;margin-left:auto}.card.preview.calc-pending .sheets{opacity:.45;transition:opacity .12s var(--ease)}.calc-overlay{top:var(--sp-4);z-index:5;background:var(--bg-primary);border:1px solid var(--brand);border-radius:var(--r-md);box-shadow:var(--sh-md);font-size:var(--fs-sm);white-space:nowrap;align-items:center;gap:10px;padding:10px 18px;font-weight:600;display:flex;position:absolute;left:50%;transform:translate(-50%)}.calc-spinner{border:2.5px solid var(--border-strong);border-top-color:var(--brand);border-radius:50%;width:16px;height:16px;animation:.7s linear infinite calc-spin}@keyframes calc-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.calc-spinner{animation-duration:1.6s}}.mat-sum .grp{padding:var(--sp-2) 0 var(--sp-3);border-bottom:1px solid var(--border)}.mat-sum .grp:last-of-type{border-bottom:0;padding-bottom:0}.mat-sum .hdr{font-size:var(--fs-sm);align-items:baseline;gap:8px;display:flex}.mat-sum .hdr .cnt{color:var(--brand);font-weight:700;font-family:var(--font-mono)}.mat-sum .hdr .nm{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}.mat-sum .hdr .mt{font-size:var(--fs-xs);color:var(--text-muted);white-space:nowrap;margin-left:auto}.mat-sum .price-row.sub{font-size:var(--fs-xs);padding:3px 0}@media (max-width:1080px){.mobile-bar{padding-bottom:max(var(--sp-3), env(safe-area-inset-bottom))}}@media (max-width:768px){.grid-wrap{-webkit-overflow-scrolling:touch}table.parts{min-width:760px;font-size:var(--fs-xs)}table.parts th,table.parts td{padding:3px 5px}.cell-in{height:38px;font-size:var(--fs-xs);padding:0 6px}html{scroll-padding-top:64px}}@media (max-width:640px){.mat-header{flex-wrap:wrap}.mat-header .mat-info{flex:1 1 0;min-width:0}.mat-header .btn{text-align:center;flex:100%}.grid-wrap{overflow-x:hidden}.grid-wrap.tall{max-height:none;overflow-y:visible}table.parts{min-width:0;display:block}table.parts thead{display:none}table.parts tbody{display:block}table.parts tbody tr{padding:var(--sp-4);margin:var(--sp-3) 0;border:1px solid var(--border-strong);border-radius:var(--r-lg);background:var(--surface);grid-template-columns:repeat(12,1fr);align-items:end;gap:6px 8px;display:grid}table.parts tbody tr:hover{background:var(--surface)}table.parts td{border-top:0;min-width:0;padding:0;display:block}table.parts td:nth-child(5):before,table.parts td:nth-child(6):before,table.parts td:nth-child(7):before,table.parts td.edge-cell:before{letter-spacing:var(--ls-wide);text-transform:uppercase;color:var(--text-muted);margin-bottom:2px;font-size:10px;font-weight:600;display:block}table.parts td:nth-child(5):before{content:"Length mm"}table.parts td:nth-child(6):before{content:"Width mm"}table.parts td:nth-child(7):before{content:"Qty"}table.parts td:nth-child(8):before{content:"L1";text-align:center}table.parts td:nth-child(9):before{content:"L2";text-align:center}table.parts td:nth-child(10):before{content:"W1";text-align:center}table.parts td:nth-child(11):before{content:"W2";text-align:center}table.parts td:first-child{grid-column:1/span 2;align-self:center}table.parts td:nth-child(2){grid-column:3/span 7}table.parts td:nth-child(3){grid-column:10/span 3}table.parts td:nth-child(4){grid-column:1/-1}table.parts td:nth-child(5){grid-column:1/span 4}table.parts td:nth-child(6){grid-column:5/span 4}table.parts td:nth-child(7){grid-column:9/span 4}table.parts td:nth-child(8){text-align:center;grid-column:1/span 2}table.parts td:nth-child(9){text-align:center;grid-column:3/span 2}table.parts td:nth-child(10){text-align:center;grid-column:5/span 2}table.parts td:nth-child(11){text-align:center;grid-column:7/span 2}table.parts td:nth-child(12){grid-column:9/span 3;align-self:center}table.parts td:nth-child(13){grid-column:12/span 1;place-self:center end}table.parts .cell-in,table.parts select.cell-sel{border-color:var(--border);background:var(--bg-primary);width:100%;max-width:none;height:42px;font-size:16px}table.parts .cell-in.dim,table.parts .cell-in.qty{text-align:left;width:100%}table.parts td:nth-child(2) select.cell-sel{font-size:var(--fs-xs)}.edge-btn{width:100%;height:38px}.row-actions{gap:4px;display:inline-flex}.row-actions .icon-btn{border-color:var(--border);width:38px;height:38px}}@media (max-width:480px),(max-height:700px){.c2s-modal{overflow:auto}.c2s-modal .sheet{max-height:none;margin:var(--sp-3) auto;padding-bottom:max(var(--sp-5), env(safe-area-inset-bottom))}}@media (max-width:480px){.pop{max-width:min(248px,88vw);max-height:60vh;overflow-y:auto}}.tour-root{z-index:250;position:fixed;inset:0}.tour-catch{position:absolute;inset:0}.tour-hl{border-radius:var(--r-md);outline:2px solid var(--brand);outline-offset:0;pointer-events:none;transition:top .18s var(--ease), left .18s var(--ease), width .18s var(--ease), height .18s var(--ease);position:fixed;box-shadow:0 0 0 9999px #140f0a9e}.tour-tip{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-xl);padding:var(--sp-4) var(--sp-5) var(--sp-5);animation:tour-pop .16s var(--ease);position:fixed}.tour-tip-head{justify-content:space-between;align-items:center;gap:var(--sp-3);display:flex}.tour-step{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:var(--ls-wide);text-transform:uppercase;color:var(--text-muted)}.tour-skip{color:var(--text-muted);cursor:pointer;font-size:var(--fs-xs);background:0 0;border:0;padding:2px 4px}.tour-skip:hover{color:var(--text-primary);text-decoration:underline}.tour-title{margin:var(--sp-2) 0 4px;font-size:var(--fs-md);font-weight:600}.tour-body{font-size:var(--fs-sm);color:var(--text-secondary);text-wrap:pretty;margin:0;line-height:1.5}.tour-actions{justify-content:space-between;align-items:center;gap:var(--sp-3);margin-top:var(--sp-4);display:flex}.tour-dots{gap:5px;display:flex}.tour-dot{background:var(--border-strong);width:6px;height:6px;transition:background .18s var(--ease);border-radius:50%}.tour-dot.on{background:var(--brand)}.tour-btns{gap:var(--sp-2);display:flex}@keyframes tour-pop{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.tour-hl{transition:none}.tour-tip{animation:none}.tour-dot{transition:none}}
