:root{ --ink:#182126; --ink-faint:#69777D; --line:#dde3e1; --cream:#F7F9F8; --accent:#00A6A6; --accent-dark:#0d3a3a; --accent-tint:#e3f5f5; --graphite:#182126; }
  *{box-sizing:border-box;}
  body{ margin:0; background:var(--cream); font-family:'Manrope','Helvetica Neue',Arial,sans-serif; color:var(--ink); }
  .banner{ background:#182126; color:#00A6A6; font-size:12px; font-weight:700; letter-spacing:.06em; text-align:center; padding:10px; text-transform:uppercase; }
  .app-header{ background:#182126; padding:16px 20px; position:sticky; top:0; z-index:100; }
  .app-header-inner{ max-width:1040px; margin:0 auto; display:flex; align-items:center; justify-content:space-between; }
  .app-header a{ display:flex; align-items:center; line-height:0; }
  .app-header .beta-pill{ font-size:10.5px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; color:#00A6A6; background:rgba(0,166,166,0.14); border:1px solid rgba(0,166,166,0.4); border-radius:20px; padding:5px 12px; }
  /* ---- header machine illustration ---- */
  .header-top{ display:flex; align-items:center; gap:26px; }
  .header-copy{ flex:1 1 auto; min-width:0; }
  .header-machine{ width:340px; max-width:100%; height:auto; flex:none; }
  @media(max-width:860px){ .header-top{ flex-direction:column; align-items:flex-start; gap:16px; } .header-machine{ width:100%; max-width:440px; } }
  .page-header-card{ background:#fff; border:1.5px solid var(--line); border-radius:16px; padding:28px 28px 0; margin-bottom:28px; box-shadow:0 1px 2px rgba(0,0,0,.04); }
  .wrap{ max-width:1040px; margin:0 auto; padding:32px 20px 80px; }
  h1{ font-size:26px; font-weight:700; letter-spacing:-.03em; margin:0 0 6px; }
  .sub{ color:var(--ink-faint); font-size:13.5px; margin-bottom:24px; line-height:1.6; }
  .section-title{ display:flex; align-items:center; gap:12px; margin:44px 0 6px; }
  .section-title .num{ font-size:13px; font-weight:800; color:#fff; background:var(--graphite); border-radius:50%; width:28px; height:28px; display:inline-flex; align-items:center; justify-content:center; flex:none; }
  .section-title h2{ font-size:19px; font-weight:800; letter-spacing:-.02em; margin:0; }
  .section-sub{ color:var(--ink-faint); font-size:13px; margin:0 0 16px; }
  .panel{ background:#fff; border:1.5px solid var(--line); border-radius:16px; margin-bottom:20px; overflow:hidden; }
  .panel-head{ padding:18px 22px; border-bottom:1px solid var(--line); }
  .panel-head h2{ font-size:13px; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-faint); margin:0; }
  .panel-body{ padding:24px; }
  label{ display:block; font-size:12px; font-weight:700; color:var(--ink-faint); text-transform:uppercase; letter-spacing:.04em; margin-bottom:6px; }
  select, input[type=number], input[type=text]{ width:100%; padding:12px 14px; border:1.5px solid var(--line); border-radius:10px; font-size:14px; margin-bottom:16px; background:#f9f8f5; font-family:inherit; transition:border-color .15s; }
  /* sub-label hint | kept OUT of <label> so labels stay one line and inputs in a row share a baseline */
  .field-hint{ font-size:11px; font-weight:400; text-transform:none; letter-spacing:0; color:var(--ink-faint); margin:-12px 0 14px; line-height:1.45; }
  select:focus, input[type=number]:focus, input[type=text]:focus{ outline:none; border-color:var(--accent); }
  .req-star{ color:var(--bad); font-weight:800; }
  .row2{ display:grid; grid-template-columns:1fr 1fr; gap:14px; align-items:start; }
  .row3{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:14px; align-items:start; }
  .mfg-cat{ margin-bottom:22px; }
  .mfg-cat-title{ font-size:12px; text-transform:uppercase; letter-spacing:.04em; color:var(--accent-dark); font-weight:700; margin:0 0 8px; }
  .mfg-row{ display:grid; grid-template-columns:2fr 1fr 1fr 1fr; gap:10px; align-items:center; padding:6px 0; border-bottom:1px solid var(--line); font-size:12.5px; }
  .mfg-row-head{ font-size:10.5px; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-faint); font-weight:700; border-bottom:1.5px solid var(--line); }
  .mfg-row input{ width:100%; padding:6px 8px; margin:0; font-size:12.5px; border:1px solid var(--line); border-radius:5px; background:#f9f8f5; }
  .mfg-amount{ text-align:right; font-weight:700; color:var(--ink); }
  .mfg-row-subtotal{ border-bottom:none; font-weight:700; }
  .mfg-row-subtotal .mfg-amount{ color:var(--accent-dark); }
  @media(max-width:640px){ .mfg-row{ grid-template-columns:1.4fr 1fr 1fr 1fr; font-size:11px; } }
  .mech-row{ display:grid; grid-template-columns:1fr 1fr 1fr 1fr auto; gap:10px; align-items:end; margin-bottom:10px; }
  .mech-row label{ font-size:10px; margin-bottom:4px; }
  .mech-row input, .mech-row select{ margin-bottom:0; padding:8px 10px; font-size:13px; }
  .mech-remove-btn{ background:#fff; border:1.5px solid var(--line); border-radius:10px; color:var(--ink-faint); font-size:12px; font-weight:700; padding:9px 12px; cursor:pointer; white-space:nowrap; transition:border-color .15s, color .15s; }
  .mech-remove-btn:hover{ border-color:#c0392b; color:#c0392b; }
  @media(max-width:640px){ .mech-row{ grid-template-columns:1fr 1fr; } }
  .result-box{ background:var(--accent-tint); border:1.5px solid var(--accent); border-left:5px solid var(--accent); color:var(--ink); border-radius:10px; padding:24px; }
  .mould-diagram-grid{ display:grid; grid-template-columns:1fr 300px; gap:18px; align-items:start; }
  .mould-diagram-grid .result-col{ min-width:0; }
  .diagram-card{ background:#fff; border:1px solid var(--line); border-radius:10px; padding:14px; }
  .diagram-card h4{ font-size:11px; text-transform:uppercase; letter-spacing:.04em; text-align:center; margin:0 0 10px; color:var(--ink-faint); font-weight:700; }
  .diagram-card svg{ width:100%; height:auto; display:block; }
  .mapping-table{ width:100%; border-collapse:collapse; margin-top:12px; font-size:11px; }
  .mapping-table th, .mapping-table td{ border:1px solid var(--line); padding:5px 7px; text-align:left; }
  .mapping-table th{ background:#f3f0e9; font-size:9px; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-faint); }
  @media (max-width:700px){ .mould-diagram-grid{ grid-template-columns:1fr; } }
  .popup-trigger{ display:inline-block; margin-top:14px; background:#fff; border:1.5px solid var(--line); color:var(--ink-faint); font-weight:700; font-size:12px; border-radius:10px; padding:9px 16px; cursor:pointer; }
  .popup-trigger.highlight{ background:var(--accent-tint); border-color:var(--accent); color:var(--accent-dark); font-size:13px; padding:11px 18px; box-shadow:0 2px 8px rgba(0,166,166,0.15); }
  .popup-trigger.highlight:hover{ box-shadow:0 3px 12px rgba(0,166,166,0.25); }
  .popup-trigger:hover{ border-color:var(--accent); color:var(--accent-dark); }
  .popup-overlay{ position:fixed; inset:0; background:rgba(20,16,12,.55); display:flex; align-items:center; justify-content:center; padding:20px; z-index:1000; }
  .popup-box{ background:#fff; border-radius:18px; padding:26px; max-width:520px; width:100%; max-height:88vh; overflow-y:auto; position:relative; box-shadow:0 16px 48px rgba(0,0,0,.22); }
  .popup-close{ position:absolute; top:10px; right:12px; background:none; border:none; font-size:24px; line-height:1; color:var(--ink-faint); cursor:pointer; padding:4px 8px; }
  .popup-close:hover{ color:var(--ink); }
  .result-box .label{ font-size:11px; text-transform:uppercase; letter-spacing:.06em; color:var(--accent-dark); font-weight:700; margin-bottom:6px; }
  .result-box .grade{ font-size:24px; font-weight:700; margin-bottom:4px; color:var(--ink); }
  .result-box .aisi{ font-size:13px; color:var(--ink-faint); margin-bottom:14px; }
  .chem-row{ display:flex; gap:10px; margin-bottom:14px; flex-wrap:wrap; }
  .chem-pill{ background:#fff; border:1px solid #ecd9bf; border-radius:20px; padding:6px 14px; font-size:12.5px; }
  .chem-pill b{ color:var(--accent-dark); }
  .why{ font-size:13.5px; color:var(--ink-faint); line-height:1.6; margin-bottom:14px; }
  .brand-picker{ border:1.5px dashed var(--accent); background:#fff; border-radius:12px; padding:14px 16px; margin-top:14px; }
  .brand-picker label{ color:var(--accent-dark); font-size:12px; font-weight:800; }
  .brand-note{ font-size:12px; color:var(--ink-faint); }
  .brand-swap-chip{ background:var(--accent-tint); font-weight:600; }
  .brand-swap-chip:hover{ background:var(--accent); color:#fff; border-color:var(--accent); }
  .note{ font-size:12px; color:var(--ink-faint); background:#f3f0e9; border:1px dashed var(--line); border-radius:10px; padding:14px; margin-top:16px; line-height:1.6; }
  .detail-box{ border:1.5px solid var(--line); border-radius:16px; padding:22px; margin-top:16px; background:#fdfcf9; }
  .detail-box h3{ font-size:13px; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-faint); margin:0 0 14px; }
  .detail-row{ margin-bottom:14px; }
  .detail-row .dlabel{ font-size:11px; text-transform:uppercase; letter-spacing:.04em; color:var(--accent); font-weight:700; margin-bottom:4px; }
  .detail-row .dtext{ font-size:13.5px; line-height:1.6; }
  .chem-table{ width:100%; min-width:420px; border-collapse:collapse; font-size:12.5px; margin-top:4px; }
  .chem-table th, .chem-table td{ border:1px solid var(--line); padding:6px 8px; text-align:center; }
  .chem-table th{ background:#f3f0e9; color:var(--ink-faint); font-weight:700; }
  .lookup-table{ width:100%; border-collapse:collapse; font-size:11px; }
  .lookup-table th, .lookup-table td{ border:1px solid var(--line); padding:4px 6px; text-align:center; }
  .lookup-table th{ background:#f3f0e9; }
  .lookup-table tr.match{ background:#e3f5f5; font-weight:700; }

  .step-label{ display:flex; align-items:baseline; gap:8px; margin-bottom:10px; }
  .step-label .stepnum{ font-size:11px; font-weight:800; color:#fff; background:var(--accent); border-radius:50%; width:20px; height:20px; display:inline-flex; align-items:center; justify-content:center; flex:none; }
  .step-label .steptext{ font-size:13px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--ink); }
  .step-hint{ font-size:12px; color:var(--ink-faint); margin:-4px 0 12px 28px; }
  .card-grid{ display:grid; gap:10px; margin-bottom:22px; }
  .card-grid.cols-2{ grid-template-columns:1fr 1fr; }
  .card-grid.cols-3{ grid-template-columns:repeat(3,1fr); }
  .card-grid.cols-4{ grid-template-columns:repeat(4,1fr); }
  .card-grid.chips{ grid-template-columns:repeat(auto-fill,minmax(120px,1fr)); }
  .opt-card{ border:1.5px solid var(--line); border-radius:12px; padding:15px 14px; cursor:pointer; background:#fff; text-align:center; transition:border-color .15s, background .15s, box-shadow .15s; }
  .opt-card:hover{ border-color:var(--accent); }
  .opt-card.on{ border-color:var(--accent); background:var(--accent-tint); box-shadow:0 0 0 1px var(--accent) inset; }
  .opt-card .icon{ font-size:22px; margin-bottom:6px; display:block; }
  .opt-card .card-img{ width:52px; height:52px; aspect-ratio:1/1; object-fit:cover; border-radius:8px; margin:0 auto 6px; display:block; }
  .opt-card.chip .card-img{ aspect-ratio:1/1; }
  .opt-card .title{ font-size:13px; font-weight:700; margin-bottom:2px; }
  .opt-card .sub{ font-size:11px; color:var(--ink-faint); margin:0; line-height:1.4; }
  .opt-card.chip{ padding:10px 8px; }
  .opt-card.chip .title{ font-size:12.5px; }
  .brand-badge{ width:100%; aspect-ratio:2.4/1; border-radius:6px; display:flex; align-items:center; justify-content:center; color:#fff; font-weight:800; font-size:12px; letter-spacing:.03em; margin-bottom:6px; }
  .brand-logo-img{ width:100%; height:36px; object-fit:contain; margin-bottom:6px; display:block; }
  .weight-tag{ display:inline-block; background:#fff; border:1px solid #ecd9bf; border-radius:20px; padding:6px 14px; font-size:12.5px; margin-bottom:14px; color:var(--accent-dark); font-weight:700; }
  .missing-item{ margin-bottom:10px; padding-left:18px; position:relative; }
  .missing-item:before{ content:"⚠"; position:absolute; left:0; color:var(--accent); }
  @media(max-width:640px){ .card-grid.cols-4{ grid-template-columns:1fr 1fr; } .row3{ grid-template-columns:1fr; } }

  /* ---- Cavity Layout Designer styles (merged in) ---- */
  :root{ --ink:#182126; --ink-faint:#69777D; --line:#dde3e1; --cream:#F7F9F8; --accent:#00A6A6; --bad:#c0392b; --good:#3a7a4a; }
  *{box-sizing:border-box;}
  body{ margin:0; background:var(--cream); font-family:'Manrope','Helvetica Neue',Arial,sans-serif; color:var(--ink); }
  .banner{ background:#182126; color:#00A6A6; font-size:12px; font-weight:700; letter-spacing:.06em; text-align:center; padding:10px; text-transform:uppercase; }
  .wrap{ max-width:1040px; margin:0 auto; padding:32px 20px 80px; }
  h1{ font-size:26px; font-weight:700; letter-spacing:-.03em; margin:0 0 6px; }
  .sub{ color:var(--ink-faint); font-size:13.5px; margin-bottom:24px; line-height:1.6; }
  .panel{ background:#fff; border:1.5px solid var(--line); border-radius:16px; margin-bottom:20px; overflow:hidden; }
  .panel-head{ padding:18px 22px; border-bottom:1px solid var(--line); }
  .panel-head h2{ font-size:13px; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-faint); margin:0; }
  .panel-body{ padding:24px; }
  label{ display:block; font-size:12px; font-weight:700; color:var(--ink-faint); text-transform:uppercase; letter-spacing:.04em; margin-bottom:6px; }
  input[type=number], input[type=text]{ width:100%; padding:12px 14px; border:1.5px solid var(--line); border-radius:10px; font-size:14px; margin-bottom:12px; background:#f9f8f5; font-family:inherit; transition:border-color .15s; }
  input[type=number]:focus, input[type=text]:focus{ outline:none; border-color:var(--accent); }
  .row4{ display:grid; grid-template-columns:1fr 1fr 1fr 1fr; gap:12px; align-items:start; }
  .card-grid{ display:grid; gap:10px; margin-bottom:20px; grid-template-columns:1fr 1fr; }
  .opt-card{ border:1.5px solid var(--line); border-radius:12px; padding:15px 14px; cursor:pointer; background:#fff; text-align:center; transition:border-color .15s, background .15s, box-shadow .15s; }
  .opt-card:hover{ border-color:var(--accent); }
  .opt-card.on{ border-color:var(--accent); background:var(--accent-tint); box-shadow:0 0 0 1px var(--accent) inset; }
  .opt-card .title{ font-size:13px; font-weight:700; margin-bottom:2px; }
  .opt-card .sub{ font-size:11px; color:var(--ink-faint); margin:0; line-height:1.4; }
  .btn{ background:var(--accent); color:#fff; border:none; border-radius:10px; padding:11px 18px; font-size:12.5px; font-weight:700; cursor:pointer; margin-right:8px; margin-bottom:10px; box-shadow:0 3px 10px rgba(0,166,166,0.2); transition:background .15s, box-shadow .15s; }
  .btn:hover{ background:var(--accent-dark, #0d3a3a); }
  .btn.ghost{ background:#fff; color:var(--ink); border:1.5px solid var(--line); box-shadow:none; }
  .designer-grid{ margin-top:10px; }
  .canvas-wrap{ background:#f3f0e9; border:1px dashed var(--line); border-radius:14px; position:relative; overflow:hidden; height:560px; }
  .canvas-wrap.pan-mode{ cursor:grab; }
  .canvas-wrap.pan-mode.panning{ cursor:grabbing; }
  .canvas-wrap.bg-clear{ background-color:var(--ws-clear-bg, #ffffff); }
  .canvas-wrap.bg-clear .grid-line{ display:none; }
  .canvas-stage{ position:relative; }
  .canvas-controls{ position:absolute; top:10px; right:10px; z-index:25; display:flex; flex-direction:column; gap:5px; background:rgba(18,24,27,0.62); backdrop-filter:blur(14px) saturate(160%); -webkit-backdrop-filter:blur(14px) saturate(160%); border:1px solid rgba(255,255,255,0.14); border-radius:10px; padding:5px; box-shadow:0 8px 24px rgba(0,0,0,0.28), inset 0 1px 0 rgba(255,255,255,0.08); }
  .canvas-controls button{ width:32px; height:32px; display:flex; align-items:center; justify-content:center; background:transparent; border:1px solid rgba(255,255,255,0.16); border-radius:7px; font-size:15px; line-height:1; cursor:pointer; padding:0; margin:0; color:#F7F9F8; }
  .canvas-controls button:hover{ background:rgba(0,166,166,0.25); border-color:var(--accent); }
  .canvas-controls .canvas-controls-sep{ height:1px; background:rgba(255,255,255,0.16); margin:2px 2px; }
  #panModeBtn{ font-size:13px; }
  #panModeBtn.on{ background:var(--accent); color:#fff; border-color:var(--accent); }
  #hideChromeBtn.on{ background:var(--accent); color:#fff; }
  .canvas-axis{ padding:2px; line-height:0; }
  .canvas-stage.canvas-fullscreen{ position:fixed; inset:0; z-index:9000; background:#fff; padding:16px; display:flex; flex-direction:column; }
  .canvas-stage.canvas-fullscreen .canvas-wrap{ height:100%; flex:1; }
  #canvasFullscreenBtn.on{ background:var(--accent); color:#fff; border-color:var(--accent); }

  /* ===== Canvas workstation: floating glass panels on the canvas itself ===== */
  .floating-ui{ transition:opacity .25s ease, transform .25s ease; }
  .ws-hide-chrome .floating-ui{ opacity:0; transform:translateY(-6px); pointer-events:none; }
  .glass{ background:rgba(18,24,27,0.62); backdrop-filter:blur(14px) saturate(160%); -webkit-backdrop-filter:blur(14px) saturate(160%); border:1px solid rgba(255,255,255,0.14); box-shadow:0 8px 24px rgba(0,0,0,0.28), inset 0 1px 0 rgba(255,255,255,0.08); border-radius:12px; color:#F7F9F8; }
  .ws-topbar{ position:absolute; top:10px; left:10px; right:56px; z-index:26; display:flex; gap:8px; flex-wrap:wrap; }
  .glass-dropdown{ position:relative; }
  .glass-trigger{ display:flex; align-items:center; gap:8px; padding:9px 12px; font-size:12px; font-weight:700; color:#F7F9F8; cursor:pointer; user-select:none; white-space:nowrap; }
  .glass-trigger .sub{ font-weight:600; color:rgba(247,249,248,0.65); font-size:11px; }
  .glass-trigger .chev{ margin-left:2px; font-size:9px; color:var(--accent); transition:transform .2s; }
  .glass-dropdown.open .chev{ transform:rotate(180deg); }
  .glass-panel{ position:absolute; top:calc(100% + 8px); left:0; min-width:270px; max-height:380px; overflow-y:auto; padding:12px; display:none; z-index:40; color:#F7F9F8;
    background:rgba(15,20,23,0.82) !important; backdrop-filter:blur(22px) saturate(180%) !important; -webkit-backdrop-filter:blur(22px) saturate(180%) !important;
    border:1px solid rgba(255,255,255,0.16) !important; box-shadow:0 16px 36px rgba(0,0,0,0.4), inset 0 1px 0 rgba(255,255,255,0.1) !important; }
  .glass-dropdown.open .glass-panel{ display:block; }
  .glass-panel h3{ margin:0 0 10px !important; font-size:10.5px !important; text-transform:uppercase; letter-spacing:.06em; color:rgba(247,249,248,0.6) !important; }
  .glass-panel label{ color:rgba(247,249,248,0.6) !important; }
  .glass-panel select{ width:100%; padding:9px 10px; border:1px solid rgba(255,255,255,0.2); border-radius:9px; font-size:12px; margin-bottom:10px; background:rgba(255,255,255,0.1); color:#F7F9F8; }
  .glass-panel select option{ color:#182126; }
  .glass-panel .quick-status{ background:rgba(255,255,255,0.08); border:1px dashed rgba(255,255,255,0.25); color:#F7F9F8; }
  .glass-panel .preset-btn{ background:rgba(255,255,255,0.08); border:1px solid rgba(255,255,255,0.2); color:#F7F9F8; }
  .glass-panel .preset-btn .ps{ color:rgba(247,249,248,0.6); }
  .glass-panel .preset-btn:hover{ border-color:var(--accent); background:rgba(0,166,166,0.18); }
  .ws-bottombar{ position:absolute; bottom:10px; left:10px; right:10px; z-index:24; display:flex; justify-content:space-between; align-items:flex-end; }
  .bg-style-switch{ display:flex; align-items:center; gap:2px; padding:5px; }
  .bg-style-switch button{ padding:6px 11px; font-size:11px; font-weight:700; border:none; background:transparent; border-radius:7px; cursor:pointer; color:rgba(247,249,248,0.65); }
  .bg-style-switch button.sel{ background:var(--accent); color:#fff; }
  .bg-style-switch input[type=color]{ width:24px; height:24px; border:none; border-radius:6px; padding:0; cursor:pointer; background:none; display:none; margin-left:3px; }
  .bg-style-switch.clear-mode input[type=color]{ display:inline-block; }
  .grid-line{ position:absolute; background:#e2ddd2; }
  .grid-line.major{ background:#cfc8b8; }
  .guide-line{ position:absolute; background:var(--accent); z-index:20; pointer-events:none; }
  .cavity-box{ position:absolute; z-index:4; background:#2a251f; border:2px solid #5a5148; border-radius:4px; color:#e8b98a; font-size:11px; display:flex; align-items:center; justify-content:center; cursor:grab; user-select:none; text-align:center; line-height:1.3; }
  .mech-indicator{ position:absolute; z-index:5; display:flex; align-items:center; justify-content:center; font-size:9px; font-weight:700; color:#fff; border-radius:2px; pointer-events:none; overflow:hidden; }
  .slide-indicator{ background:rgba(74,138,196,0.85); border:1px solid #2f6ba0; }
  .lifter-indicator{ background:rgba(155,89,182,0.85); border:1px solid #7d3c98; }
  .cavity-box.overlap{ border-color:var(--bad); background:#4a2020; color:#ffb4b4; }
  .cavity-box.selected{ border-color:var(--accent); border-width:3px; box-shadow:0 0 0 3px rgba(0,166,166,0.35); }
  .cavity-box:active{ cursor:grabbing; z-index:10; }
  .runner-line{ position:absolute; z-index:3; background:#6b5a45; border-radius:2px; pointer-events:none; }
  .tiebar-rect{ position:absolute; z-index:1; border:2px dashed #4a7ab8; pointer-events:none; box-sizing:border-box; }
  .platen-rect{ position:absolute; z-index:0; border:2px solid #6a8fb5; background:rgba(90,140,190,0.16); pointer-events:none; box-sizing:border-box; }
  .platen-label{ position:absolute; z-index:2; font-size:10px; font-weight:700; color:#3a5f8f; background:#eaf1fa; padding:1px 6px; border-radius:8px; white-space:nowrap; pointer-events:none; }
  .tiebar-post{ position:absolute; z-index:1; border-radius:50%; background:radial-gradient(circle at 35% 30%, #6a7580, #2a3138 75%); border:1.5px solid #1a2025; box-shadow:0 0 0 2px rgba(255,255,255,0.35) inset; pointer-events:none; }
  .mount-hole{ position:absolute; z-index:1; border-radius:50%; background:#5a7595; opacity:0.55; pointer-events:none; }
  .dim-line{ position:absolute; z-index:2; background:#c0392b; pointer-events:none; }
  .dim-tick{ position:absolute; z-index:2; background:#c0392b; pointer-events:none; }
  .dim-label{ position:absolute; z-index:2; font-size:10px; font-weight:700; color:#c0392b; background:#fdf3f1; padding:1px 5px; border-radius:4px; white-space:nowrap; pointer-events:none; }
  .moldbase-rect{ position:absolute; z-index:2; border:2px dashed var(--accent); background:rgba(0,166,166,0.20); pointer-events:none; box-sizing:border-box; }
  .moldbase-label{ position:absolute; z-index:2; font-size:10px; font-weight:700; color:#0d3a3a; background:#e3f5f5; padding:1px 6px; border-radius:8px; white-space:nowrap; pointer-events:none; }
  .shotweight-label{ position:absolute; z-index:2; font-size:10px; font-weight:700; color:#1e5c8a; background:#eaf3fb; padding:1px 6px; border-radius:8px; white-space:nowrap; pointer-events:none; }
  .guide-pillar{ position:absolute; z-index:2; border-radius:50%; background:#5a5148; border:1.5px solid #2a251f; pointer-events:none; }
  .return-pin{ position:absolute; z-index:2; border-radius:50%; border:1.5px dashed #8a7a62; background:transparent; pointer-events:none; }
  .spacer-rail{ position:absolute; z-index:1; border:1.5px dashed #9a8a70; background:rgba(154,138,112,0.08); box-sizing:border-box; pointer-events:none; }
  .ejector-plate-outline{ position:absolute; z-index:1; border:1.5px dashed #00A6A6; box-sizing:border-box; pointer-events:none; }
  .clamp-mark{ position:absolute; z-index:2; background:#2a251f; pointer-events:none; }
  .gap-label{ position:absolute; background:#1e1a16; color:#fff; font-size:10px; padding:2px 6px; border-radius:10px; white-space:nowrap; z-index:15; pointer-events:none; }
  .gap-label.bad{ background:var(--bad); }
  .gap-label.good{ background:var(--good); }
  .presets-panel{ background:#fff; border:1.5px solid var(--line); border-radius:14px; padding:16px; overflow-y:auto; height:420px; }
  .presets-panel h3{ font-size:11px; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-faint); margin:0 0 10px; }
  .preset-btn{ display:block; width:100%; text-align:left; background:#f9f8f5; border:1px solid var(--line); border-radius:10px; padding:11px; margin-bottom:8px; cursor:pointer; font-size:12px; transition:border-color .15s; }
  .preset-btn:hover{ border-color:var(--accent); }
  .preset-btn .pt{ font-weight:700; margin-bottom:2px; }
  .preset-btn .ps{ color:var(--ink-faint); font-size:10.5px; }
  .part-type-row{ display:grid; grid-template-columns:1.3fr 0.7fr 0.7fr 0.7fr 0.7fr 0.9fr auto auto; gap:10px; align-items:end; margin-bottom:10px; }
  .swatch{ width:22px; height:22px; border-radius:4px; display:inline-block; margin-right:6px; vertical-align:middle; }
  .why{ font-size:13.5px; color:var(--ink-faint); line-height:1.6; margin-top:10px; }
  .warn{ color:#a72e2e; font-weight:700; }
  .note{ font-size:12px; color:var(--ink-faint); background:#f3f0e9; border:1px dashed var(--line); border-radius:10px; padding:14px; margin-top:16px; line-height:1.6; }
  .note b{ color:var(--ink); }

  /* ---- Wizard shell ---- */
  .wizard-nav{ display:flex; gap:0; margin:0 0 28px; border-bottom:2px solid var(--line); }
  .wizard-step{ flex:1; text-align:center; padding:12px 8px 16px; cursor:pointer; color:var(--ink-faint); border-bottom:3px solid transparent; margin-bottom:-2px; font-size:13px; font-weight:700; transition:color .15s; }
  .wizard-step .wizard-num{ display:inline-flex; align-items:center; justify-content:center; width:26px; height:26px; border-radius:50%; background:var(--line); color:var(--ink-faint); font-size:12px; margin-right:8px; vertical-align:middle; transition:background .15s, box-shadow .15s; }
  .wizard-step.active{ color:var(--ink); border-bottom-color:var(--accent); }
  .wizard-step.active .wizard-num{ background:var(--accent); color:#fff; box-shadow:0 0 0 4px var(--accent-tint); }
  .wizard-step.done{ color:var(--good, #3a7a4a); }
  .wizard-step.done .wizard-num{ background:var(--good, #3a7a4a); color:#fff; }
  .wizard-step.done .wizard-num::before{ content:"✓"; }
  .wizard-actions{ display:flex; justify-content:space-between; align-items:center; margin-top:24px; padding-top:16px; border-top:1px solid var(--line); }

  /* ---- Info tooltip (ⓘ) | replaces long always-visible explanation paragraphs ---- */
  .info-tip{ display:inline-flex; align-items:center; justify-content:center; width:17px; height:17px; max-height:1em; line-height:1; border-radius:50%; background:var(--line); color:var(--ink-faint); font-size:11px; font-weight:700; font-style:normal; cursor:pointer; margin-left:6px; position:relative; vertical-align:middle; user-select:none; }
  .info-tip:hover, .info-tip.open{ background:var(--accent); color:#fff; }
  .info-tip .tip-content{ display:none; position:absolute; left:0; top:24px; z-index:60; width:340px; max-width:80vw; background:#1e1a16; color:#e8dfd2; font-size:12px; font-weight:400; font-style:normal; line-height:1.6; padding:14px 16px; border-radius:8px; box-shadow:0 10px 28px rgba(0,0,0,0.3); text-align:left; text-transform:none; letter-spacing:normal; cursor:auto; }
  .info-tip.open .tip-content{ display:block; }
  .info-tip .tip-content b{ color:#f0d9bd; }
  .info-line{ font-size:12.5px; color:var(--ink-faint); margin:8px 0 16px; display:flex; align-items:center; }
  .view-toggle-row{ display:flex; flex-wrap:wrap; align-items:center; gap:10px; row-gap:12px; margin:0 0 18px; }
  .view-toggle-label{ font-size:12px; font-weight:700; color:var(--ink-faint); text-transform:uppercase; letter-spacing:.04em; white-space:nowrap; flex-shrink:0; }
  .view-toggle{ display:inline-flex; flex-shrink:0; border:1px solid var(--line); border-radius:20px; overflow:hidden; cursor:pointer; user-select:none; }
  .view-toggle-option{ padding:6px 16px; font-size:12.5px; font-weight:600; color:var(--ink-faint); background:#fff; transition:background .15s,color .15s; white-space:nowrap; }
  .view-toggle-option.active{ background:var(--accent); color:#fff; }
  @media(max-width:480px){
    .view-toggle-row{ gap:8px; }
    .view-toggle-label[style*="margin-left"]{ margin-left:0 !important; }
    .view-toggle-option{ padding:6px 11px; font-size:11.5px; }
  }
  body.simple-view #resultBox .chem-row,
  body.simple-view #baseResultBox .chem-row{ display:none; }
  .bypass-btn{ display:inline-flex; align-items:center; gap:6px; font-size:13px; font-weight:700; color:var(--accent-dark); background:#fff; border:1.5px solid var(--accent); border-radius:10px; padding:10px 16px; margin-top:14px; cursor:pointer; }
  .bypass-btn:hover{ background:var(--accent); color:#fff; }
  .bypass-btn.active{ background:var(--accent); color:#fff; }
  .badge-row{ display:flex; align-items:center; flex-wrap:wrap; gap:6px; padding:7px 0; font-size:13px; }
  .tag-est{ font-size:10.5px; font-weight:700; color:#a72e2e; background:rgba(192,57,43,0.1); border-radius:4px; padding:2px 6px; letter-spacing:.02em; }
  .tag-ok{ font-size:10.5px; font-weight:700; color:#3a7a4a; background:rgba(58,122,74,0.1); border-radius:4px; padding:2px 6px; letter-spacing:.02em; }
  .cta-btn{ display:block; width:100%; font-size:14.5px; font-weight:700; color:#fff; background:var(--accent); border:none; border-radius:12px; padding:15px 20px; margin-top:28px; cursor:pointer; box-shadow:0 4px 16px rgba(0,166,166,0.25); transition:background .15s, transform .1s, box-shadow .15s; }
  .cta-btn:hover{ background:var(--accent-dark); box-shadow:0 6px 20px rgba(0,166,166,0.32); }
  .cta-btn:active{ transform:scale(0.99); }
  .grand-total-box{ background:var(--graphite); border:none; border-radius:16px; padding:24px 26px; margin-top:14px; font-size:14px; line-height:1.9; color:#b9c4c6; box-shadow:0 10px 32px rgba(0,0,0,0.18); transition:box-shadow .3s; }
  .grand-total-box b{ color:#fff; }
  .grand-total-box.flash{ box-shadow:0 0 0 5px rgba(0,166,166,0.35); }
  .grand-total-box .final-line{ display:flex; align-items:baseline; gap:8px; margin-top:12px; padding-top:14px; border-top:1px solid rgba(255,255,255,0.14); font-size:26px; font-weight:800; color:var(--accent); }
  .disclaimer-box{ margin-top:14px; padding:14px 16px; background:#f9f8f5; border:1px solid var(--line); border-left:3px solid var(--ink-faint); border-radius:10px; font-size:11.5px; line-height:1.6; color:var(--ink-faint); }
  .disclaimer-box b{ color:var(--ink); }
  .beta-badge{ display:inline-block; vertical-align:middle; font-size:11px; font-weight:800; letter-spacing:.05em; background:var(--accent); color:#fff; padding:2px 9px; border-radius:10px; margin-left:8px; }

  #accessGateOverlay{ position:fixed; inset:0; background:var(--cream); z-index:5000; display:flex; align-items:center; justify-content:center; padding:20px; }
  .access-gate-box{ background:#fff; border:1.5px solid var(--line); border-radius:18px; padding:36px 32px; max-width:360px; width:100%; text-align:center; box-shadow:0 16px 48px rgba(0,0,0,0.1); }
  .access-gate-mark{ width:52px; height:52px; margin:0 auto 16px; }
  .access-gate-mark svg{ display:block; width:100%; height:100%; }
  .access-gate-box h2{ font-size:17px; margin:0 0 8px; }
  .access-gate-box p{ font-size:13px; color:var(--ink-faint); margin:0 0 18px; line-height:1.5; }
  .access-gate-box input{ width:100%; text-align:center; letter-spacing:.08em; font-size:15px; padding:11px 12px; border:1.5px solid var(--line); border-radius:8px; }
  .report-label-row{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
  @media(max-width:640px){ .report-label-row{ grid-template-columns:1fr; } }

  /* ---- PDF Report: hidden on screen, shown only when printing (browser's own Print-to-PDF) ---- */
  #printReport{ display:none; }
  @media print{
    body > *:not(#printReport){ display:none !important; }
    #printReport{ display:block !important; padding:10mm; font-family:'Manrope','Helvetica Neue',Helvetica,Arial,sans-serif; color:var(--ink); }
    .rpt-head{ display:flex; justify-content:space-between; align-items:flex-start; border-bottom:3px solid var(--accent); padding-bottom:14px; margin-bottom:20px; }
    .rpt-brand{ display:flex; align-items:center; gap:10px; }
    .rpt-mark{ width:38px; height:38px; border-radius:6px; background:var(--accent); color:#fff; display:flex; align-items:center; justify-content:center; font-weight:800; font-size:16px; }
    .rpt-name{ font-weight:800; font-size:16px; }
    .rpt-tag{ font-size:10px; color:var(--ink-faint); text-transform:uppercase; letter-spacing:.05em; }
    .rpt-meta{ text-align:right; font-size:10.5px; color:var(--ink-faint); line-height:1.6; }
    .rpt-meta b{ color:var(--ink); }
    .rpt-mode{ background:var(--ink); color:#fff; font-size:9px; font-weight:700; padding:2px 7px; border-radius:4px; margin-left:6px; text-transform:uppercase; }
    .rpt-beta{ background:var(--accent); color:#fff; font-size:9px; font-weight:800; padding:2px 7px; border-radius:4px; margin-left:6px; letter-spacing:.05em; }
    .rpt-beta-banner{ background:var(--accent-tint); border:1px solid var(--accent); border-radius:6px; padding:8px 12px; font-size:10.5px; color:var(--accent-dark); font-weight:600; margin-bottom:14px; }
    .rpt-title{ font-size:19px; margin:0 0 4px; }
    .rpt-sub{ font-size:11.5px; color:var(--ink-faint); margin:0 0 18px; }
    .rpt-row2{ display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:16px; }
    .rpt-card{ border:1px solid var(--line); border-radius:6px; padding:10px 12px; }
    .rpt-lbl{ font-size:9px; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-faint); font-weight:700; margin-bottom:4px; }
    .rpt-val{ font-size:13px; font-weight:700; }
    .rpt-hero{ background:var(--accent-tint); border:1.5px solid var(--accent); border-radius:8px; padding:14px 16px; margin-bottom:18px; }
    .rpt-big{ font-size:22px; font-weight:800; }
    .rpt-small{ font-size:11px; color:var(--ink-faint); margin-top:3px; }
    .rpt-section{ font-size:11px; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-faint); border-bottom:1px solid var(--line); padding-bottom:6px; margin:18px 0 8px; }
    .rpt-table{ width:100%; border-collapse:collapse; font-size:10.5px; margin-bottom:4px; }
    .rpt-table th{ text-align:left; font-size:9px; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-faint); font-weight:700; padding:4px 6px; border-bottom:1.5px solid var(--ink); }
    .rpt-table td{ padding:5px 6px; border-bottom:1px solid var(--line); }
    .rpt-table .num{ text-align:right; font-variant-numeric:tabular-nums; }
    .rpt-subtotal td{ font-weight:700; border-top:1px solid var(--ink-faint); border-bottom:none; }
    .rpt-grandline td{ font-weight:800; border-top:1.5px solid var(--ink); }
    .rpt-badge{ font-size:8.5px; font-weight:700; background:#fdeceb; color:#b23b3b; padding:2px 7px; border-radius:8px; margin-left:6px; }
    .rpt-appendix{ display:grid; grid-template-columns:150px 1fr; gap:10px; padding:6px 0; border-bottom:1px solid var(--line); font-size:10.5px; }
    .rpt-k{ color:var(--ink-faint); font-weight:600; }
    .rpt-total{ display:flex; justify-content:space-between; align-items:center; background:var(--ink); color:#fff; border-radius:8px; padding:14px 16px; margin-top:16px; page-break-inside:avoid; }
    .rpt-total-lbl{ font-size:11px; text-transform:uppercase; letter-spacing:.05em; opacity:.7; }
    .rpt-total-amt{ font-size:20px; font-weight:800; color:var(--accent); }
    .rpt-disclaimer{ margin-top:16px; font-size:9.5px; color:var(--ink-faint); line-height:1.5; border-top:1px solid var(--line); padding-top:10px; }
    .rpt-foot{ display:flex; justify-content:space-between; font-size:9px; color:var(--ink-faint); margin-top:16px; border-top:1px solid var(--line); padding-top:8px; }
    h2.rpt-section{ page-break-after:avoid; }
    table.rpt-table{ page-break-inside:avoid; }
  }
  .sticky-total-widget{ position:fixed; right:18px; bottom:18px; z-index:500; background:#fff; border:1.5px solid var(--accent); border-radius:16px; padding:16px 20px; box-shadow:0 10px 32px rgba(0,0,0,0.16); font-size:12.5px; line-height:1.7; color:var(--ink); max-width:280px; display:none; }
  .sticky-total-widget.show{ display:block; }
  .sticky-total-widget .stw-head{ font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-faint); margin-bottom:6px; display:flex; justify-content:space-between; align-items:center; }
  .sticky-total-widget .stw-close{ cursor:pointer; font-weight:800; color:var(--ink-faint); padding:0 4px; }
  .sticky-total-widget .stw-line{ display:flex; justify-content:space-between; gap:10px; }
  .sticky-total-widget .stw-final{ display:flex; justify-content:space-between; gap:10px; margin-top:8px; padding-top:8px; border-top:1px dashed var(--line); font-size:16px; font-weight:800; color:var(--accent-dark); }
  @media(max-width:640px){ .sticky-total-widget{ left:12px; right:12px; max-width:none; bottom:12px; } }
  .step-import-btn{ display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:700; padding:8px 12px; }
  .step-import-status{ font-size:11.5px; color:var(--ink-faint); margin-top:4px; }
  .step-import-status.err{ color:var(--bad); }
  .step-import-status.ok{ color:#3a7a4a; }
