:root{--pv-hole:#4a423d;--pv-lever:#2f2a26;--paper:#faf5ee;--paper-2:#f3ece0;--card:#fffdf9;--ink:#2b2320;--ink-2:#6d5f55;--line:#e5d9c9;--line-2:#d8c8b4;--accent:#b4532a;--accent-soft:#f7e4d8;--accent-ink:#7e3416;--ok:#2f6b4f;--ok-bg:#e4f1e9;--warn:#8a5a14;--warn-bg:#f9ecd4;--danger:#a33a2a;--radius:14px;--radius-sm:10px;--shadow:0 6px 24px #3a2a1e14;--serif:"Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--sans:-apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{font-family:var(--sans);background:var(--paper);color:var(--ink);margin:0;font-size:16px;line-height:1.45}#loading{background:var(--paper);color:var(--ink-2);z-index:40;place-items:center;font-size:15px;display:grid;position:fixed;inset:0}#loading[hidden]{display:none}#loading.error{color:var(--danger);text-align:center;padding:24px}.app{flex-direction:column;max-width:1080px;min-height:100svh;margin:0 auto;display:flex}.top{z-index:20;padding:calc(10px + env(safe-area-inset-top)) 16px 10px;background:color-mix(in srgb, var(--paper) 92%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:10px;display:flex}.brand-mark{background:var(--accent);color:#fff;border-radius:10px;place-items:center;width:34px;height:34px;font-size:18px;display:grid}.brand-text{font-family:var(--serif);font-size:17px;line-height:1.1}.brand-text em{font-style:normal;font-family:var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);font-size:11px;display:block}.top-actions{align-items:center;gap:8px;display:flex}.cart-open{border:1px solid var(--line-2);background:var(--card);min-height:44px;color:var(--ink);font:inherit;border-radius:999px;padding:0 16px;font-size:15px}.cart-open b{color:var(--accent)}.reset-open{min-height:44px;color:var(--ink-2);font:inherit;background:0 0;border:none;padding:0 8px;font-size:14px;text-decoration:underline}.reset-open:disabled{opacity:.45;text-decoration:none}.layout{padding:0 16px calc(130px + env(safe-area-inset-bottom));flex-direction:column;flex:1;gap:14px;display:flex}.hero{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);margin-top:12px;overflow:hidden}.pv{aspect-ratio:4/3;background:radial-gradient(120% 90% at 50% 30%, #fffdf8 0%, var(--paper-2) 100%);place-items:center;max-height:46svh;padding:10px;display:grid}.pv svg{width:100%;height:100%}.pv-meta{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;padding:10px 14px;display:flex}.pv-meta-text{flex-direction:column;gap:2px;min-width:0;display:flex}.pv-caption{font-family:var(--serif);font-size:15px}.pv-status{font-size:12px}.pv-status.ok{color:var(--ok)}.pv-status.warn{color:var(--warn)}.pv-3d{flex:none}.pv-notes{margin:0;padding:0 14px 10px;list-style:none}.pv-note{color:var(--ink-2);font-size:12px}.pv-note-err{color:var(--danger)}.edit-bar{background:var(--accent-soft);color:var(--accent-ink);border-top:1px solid var(--line);padding:8px 14px;font-size:13px}.linklike{color:inherit;font:inherit;cursor:pointer;background:0 0;border:none;padding:0 2px;text-decoration:underline}.steps-nav{scrollbar-width:none;gap:8px;padding:2px;display:flex;overflow-x:auto}.steps-nav::-webkit-scrollbar{display:none}.step-chip{border:1px solid var(--line-2);background:var(--card);min-height:44px;color:var(--ink-2);font:inherit;white-space:nowrap;border-radius:999px;flex:none;padding:0 16px;font-size:14px}.step-chip.active{background:var(--ink);color:var(--paper);border-color:var(--ink)}.step-host{min-height:200px}.step-body{flex-direction:column;gap:14px;animation:.16s ease-out stepin;display:flex}@keyframes stepin{0%{opacity:0;transform:translateY(4px)}}.grp-head{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.grp-title{font-family:var(--serif);font-size:17px}.grp-hint{color:var(--ink-2);font-size:12px}.grp-note{color:var(--ink-2);margin:0;font-size:13px}.seg{background:var(--paper-2);border-radius:var(--radius-sm);gap:6px;padding:4px;display:flex;overflow-x:auto}.seg-item{min-height:44px;color:var(--ink-2);font:inherit;white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:8px;flex:1;padding:0 12px;font-size:14px}.seg-item.active{background:var(--card);color:var(--ink);border-color:var(--line-2);font-weight:600;box-shadow:0 1px 3px #3a2a1e1f}.seg-item:disabled{opacity:.35}.tile-grid{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;display:grid}.tile-grid.patterns{grid-template-columns:repeat(auto-fill,minmax(104px,1fr))}.tile{border:1.5px solid var(--line);border-radius:var(--radius-sm);background:var(--card);min-height:44px;color:var(--ink);font:inherit;flex-direction:column;align-items:center;gap:6px;padding:10px 6px;display:flex}.tile.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.tile:disabled{opacity:.35}.tile-thumb{width:64px;height:64px;color:var(--ink);place-items:center;display:grid}.tile-thumb svg{width:100%;height:100%}.tile-thumb img{object-fit:contain;border-radius:6px;width:100%;height:100%}.pattern-thumb svg{border-radius:6px}.cap-none{color:var(--ink-2);font-size:26px}.tile-name{text-align:center;color:var(--ink-2);font-size:12px}.tile.active .tile-name{color:var(--ink);font-weight:600}.pattern-none{border:1.5px dashed var(--line-2);border-radius:var(--radius-sm);background:var(--card);width:100%;min-height:44px;color:var(--ink-2);font:inherit}.pattern-none.active{border-style:solid;border-color:var(--accent);color:var(--ink)}.post-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.post-name{width:64px;color:var(--ink-2);flex:none;font-size:14px}.post-row .seg{flex:1;min-width:200px}.cap-block{flex-direction:column;gap:8px;display:flex}.swatches{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.sw{width:44px;height:44px;font:inherit;border:2px solid #0000;border-radius:50%;padding:0;box-shadow:inset 0 0 0 1px #0000001f}.sw.active{border-color:var(--accent);box-shadow:inset 0 0 0 1px #0000001f, 0 0 0 2px var(--accent-soft)}.sw-name{color:var(--ink-2);font-size:13px}.measure-status{border-radius:var(--radius-sm);padding:12px 14px;font-size:14px}.measure-status.ok{background:var(--ok-bg);color:var(--ok)}.measure-status.warn{background:var(--warn-bg);color:var(--warn)}.measure-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.fld{flex-direction:column;gap:4px;display:flex}.fld-label{color:var(--ink-2);font-size:12px}.fld input{border:1px solid var(--line-2);border-radius:var(--radius-sm);background:var(--card);min-height:48px;color:var(--ink);font:inherit;padding:0 12px;font-size:16px}.measure-extra summary{min-height:44px;color:var(--ink-2);cursor:pointer;align-items:center;font-size:14px;display:flex}.measure-extra .measure-grid{margin-top:8px}.measure-actions{flex-wrap:wrap;gap:10px;display:flex}.measure-warnings{background:var(--warn-bg);color:var(--warn);border-radius:var(--radius-sm);margin:0;padding:10px 14px;font-size:13px;list-style:none}.measure-warnings li+li{margin-top:4px}.measure-note{color:var(--ink-2);margin:8px 0 0;font-size:13px}.btn{min-height:48px;font:inherit;border:1px solid #0000;border-radius:999px;padding:0 22px;font-size:15px;font-weight:600}.btn.primary{background:var(--accent);color:#fff}.btn.primary:disabled{background:var(--line-2);color:var(--paper-2)}.btn.ghost{background:var(--card);border-color:var(--line-2);color:var(--ink)}.btn.ghost.danger{color:var(--danger)}.cta{z-index:20;background:color-mix(in srgb, var(--paper) 94%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--line);padding:10px 16px calc(10px + env(safe-area-inset-bottom));position:fixed;bottom:0;left:0;right:0}.cta-row{justify-content:space-between;align-items:center;gap:12px;max-width:1080px;margin:0 auto;display:flex}.cta-price{flex-direction:column;display:flex}.price-num{font-family:var(--serif);font-size:20px}.price-note{color:var(--ink-2);font-size:12px}.cta-main{flex:none}.cta-errors{max-width:1080px;margin:0 auto 8px;padding:0;list-style:none}.cta-err{color:var(--danger);font-size:13px}dialog.sheet:not([open]){display:none}dialog.sheet{background:var(--paper);width:100%;max-width:640px;max-height:86svh;color:var(--ink);border:none;border-radius:20px 20px 0 0;flex-direction:column;margin:auto 0 0;padding:0;display:flex}dialog.sheet::backdrop{background:#2b232066}.sheet-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.sheet-title{font-family:var(--serif);margin:0;font-size:20px;font-weight:600}.sheet-x{background:var(--paper-2);width:44px;height:44px;color:var(--ink-2);border:none;border-radius:50%;font-size:18px}.cart-list{flex-direction:column;flex:1;gap:12px;padding:12px 18px;display:flex;overflow-y:auto}.cart-empty{color:var(--ink-2)}.cart-item{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);gap:12px;padding:12px;display:flex}.cart-thumb{background:var(--paper-2);border-radius:var(--radius-sm);flex:none;place-items:center;width:76px;height:76px;display:grid;overflow:hidden}.cart-thumb svg{width:100%;height:100%}.cart-info{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.cart-title{font-size:14px;font-weight:600}.cart-sub{font-size:12px}.cart-sub.ok{color:var(--ok)}.cart-sub.warn{color:var(--warn)}.cart-price{font-family:var(--serif)}.qty{align-items:center;gap:8px;display:flex}.qty-btn{border:1px solid var(--line-2);background:var(--card);width:44px;height:44px;color:var(--ink);border-radius:50%;font-size:20px}.qty-num{text-align:center;font-variant-numeric:tabular-nums;min-width:24px}.qty-unit{color:var(--ink-2);font-size:12px}.cart-actions{gap:8px;display:flex}.cart-actions .btn{min-height:44px;padding:0 16px;font-size:14px}.sheet-foot{padding:12px 18px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;display:flex}.cart-total{font-family:var(--serif);font-size:18px}#cart-error{margin:0;padding:0 18px;list-style:none}.cart-notice{background:var(--warn-bg);color:var(--warn);border-radius:var(--radius-sm);margin:0 18px 10px;padding:10px 14px;font-size:13px}.cart-notice .linklike{color:inherit}.sheet-subhead{justify-content:flex-end;padding:0 18px 10px;display:flex}.sheet-subhead .btn{min-height:44px;padding:0 16px;font-size:14px}.price-retry{text-align:left;font-size:12px}.reset-actions{padding:12px 18px calc(12px + env(safe-area-inset-bottom));justify-content:flex-end;gap:10px;display:flex}.sheet-3d{height:92svh;max-height:92svh}.view3d-host{background:var(--paper-2);flex:1;min-height:0;position:relative}.view3d-host .viewport-wrap,.view3d-host canvas{width:100%!important;height:100%!important}.view3d-host .view-toolbar{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex;position:absolute;top:10px;right:10px}.view3d-host .view-toolbar button{border:1px solid var(--line-2);background:color-mix(in srgb, var(--card) 92%, transparent);min-height:40px;color:var(--ink);font:inherit;border-radius:999px;padding:0 14px;font-size:13px}.view3d-status{padding:10px 18px calc(10px + env(safe-area-inset-bottom));color:var(--ink-2);min-height:24px;font-size:13px}.sheet-done{text-align:center}.done-text{color:var(--ink-2);margin:18px 18px 4px;font-size:14px}.done-number{font-family:var(--serif);letter-spacing:.08em;font-variant-numeric:tabular-nums;-webkit-user-select:all;user-select:all;margin:12px 18px;font-size:52px}.sheet-done .btn{margin:0 18px 20px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button{cursor:pointer;-webkit-tap-highlight-color:transparent}button:disabled{cursor:default}@media (width>=900px){.layout{grid-template-columns:minmax(0,46%) minmax(0,1fr);grid-template-areas:"hero nav""hero steps";align-items:start;gap:18px 28px;display:grid}.hero{grid-area:hero;position:sticky;top:76px}.steps-nav{grid-area:nav}.step-host{grid-area:steps}.pv{aspect-ratio:1;max-height:none}dialog.sheet{border-radius:20px;max-width:560px;max-height:80svh;margin:auto}.sheet-3d{width:90vw;max-width:900px}}
