@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600&family=Noto+Sans+JP:wght@400;500&family=Noto+Serif+JP:wght@400;500&display=swap');
:root{--paper:#f0ebe0;--ink:#463d33;--muted:#716354;--olive:#68704e;--line:#d6cdbd;--serif:'Noto Serif JP','Yu Mincho',serif;--sans:'DM Sans','Noto Sans JP',sans-serif}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}body{font-family:var(--sans);background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button:focus-visible,a:focus-visible{outline:2px solid var(--olive);outline-offset:4px}button:disabled{opacity:.6;cursor:default}a{color:inherit;text-decoration:none}[hidden]{display:none!important}#stage{position:fixed;inset:0;touch-action:none}#stage canvas{display:block;touch-action:none;cursor:grab}.vignette{position:fixed;inset:0;pointer-events:none;background:linear-gradient(0deg,#eee7d855,transparent 23%,transparent 74%,#f2eee477)}header{position:absolute;inset:0 0 auto;padding:27px 38px;display:flex;justify-content:space-between;align-items:center;pointer-events:none;z-index:5}header a,header button{pointer-events:auto}.brand{font:58px/.8 Georgia,serif;letter-spacing:-7px;display:flex;gap:27px;align-items:center}.brand span{font:9px/1.7 var(--sans);letter-spacing:.16em;border-left:1px solid #c0b7a4;padding-left:22px}.round-button{border:1px solid #c9c0ae;background:#fcf8eecc;border-radius:50%;width:44px;height:44px;display:grid;place-items:center;font-size:20px;backdrop-filter:blur(12px);color:#65584b}.round-button svg,.tool svg,.sound-button svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}.round-button:hover{background:#fffcf4}.intro{position:absolute;left:38px;top:116px;pointer-events:none;transition:opacity .2s}.eyebrow{font-size:10px;letter-spacing:.17em;color:#746653}.intro h1{font:500 38px/1.4 var(--serif);letter-spacing:.05em;margin:12px 0 10px}.intro p{font-size:14px;line-height:1.9;margin:0;color:var(--muted)}.mobile-only{display:none}.view-controls{position:absolute;right:25px;top:42%;display:flex;flex-direction:column;gap:10px;z-index:4}.board-status{position:absolute;bottom:170px;left:50%;transform:translateX(-50%);font-size:12px;color:#65594a;padding:8px 13px;border-radius:20px;background:#f8f3e7cf;white-space:nowrap;max-width:95%;text-align:center;pointer-events:none}.toolbar{position:absolute;bottom:102px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:5px;padding:6px 8px;background:#fcf8efe8;border:1px solid #d6cdbd;border-radius:15px;box-shadow:0 6px 20px #6e553b0c;backdrop-filter:blur(16px);z-index:5;white-space:nowrap}.tool{display:flex;align-items:center;justify-content:center;gap:8px;padding:12px 14px;min-height:44px;font-size:13px;border:none;border-radius:9px;background:transparent}.tool.active{background:#68704e;color:#fffdf7}.toolbar-divider{height:25px;width:1px;background:var(--line);margin:0 4px}.sound-button{border:0;border-radius:9px;width:44px;height:44px;background:transparent;display:grid;place-items:center}.sound-button.muted{opacity:.6}.tool:hover,.sound-button:hover{background:#e8e1d1}.tool.active:hover{background:#747d5a}footer{position:absolute;inset:auto 0 0;height:86px;display:flex;align-items:center;gap:25px;padding:13px 30px;background:#f7f0e4ee;backdrop-filter:blur(16px);border-top:1px solid #d4c9b5;z-index:9}.saved-heading{display:flex;gap:9px;align-items:center;white-space:nowrap;font-size:12px}.saved-heading>span{font-size:23px;color:#788165}.saved-heading>div{display:flex;flex-direction:column;gap:5px}.saved-heading small{font-size:11px;color:#786b58}.saved-items{display:flex;align-items:center;gap:10px;overflow:auto;flex:1;min-width:0;scrollbar-width:none}.saved-items>p{font:13px var(--serif);color:#776956}.saved-card{display:flex;align-items:center;gap:7px;height:58px;border:1px solid #d0c6b1;border-radius:7px;background:#e9e1d1;padding:7px 10px;flex-shrink:0;font-size:11px;text-align:left}.saved-card img{width:47px;height:39px;object-fit:contain;transform:rotate(90deg)}.saved-card small{display:block;font-size:10px;color:#756957;margin-top:4px}.finger-dot{position:absolute;width:13px;height:13px;transform:translate(-50%,-50%);border:1px solid #fbf7ed;background:#9a7f59b0;border-radius:50%;pointer-events:none;z-index:6}.press-ring{position:absolute;width:52px;height:52px;transform:translate(-50%,-50%);pointer-events:none;z-index:7}.press-ring svg{fill:none;stroke:#95836055;stroke-width:2}.press-ring .ring-progress{stroke:#766448;stroke-width:3;stroke-dasharray:138.23;stroke-dashoffset:138.23;transform:rotate(-90deg);transform-origin:center}.piece-tooltip{position:absolute;pointer-events:none;background:#fcf8eddd;border:1px solid var(--line);padding:8px 11px;border-radius:8px;font-size:12px;color:#60523f;z-index:5}.action-bubble{position:absolute;width:264px;border:1px solid #d1c4af;background:#fffcf4f7;border-radius:18px;padding:19px 17px 14px;box-shadow:0 12px 40px #78553924;backdrop-filter:blur(15px);z-index:12;animation:appear .16s ease}.bubble-caption{font-size:10px;letter-spacing:.1em;color:#7c6c56}.bubble-name{font:500 19px var(--serif);margin:8px 0 16px}.dismiss{position:absolute;right:10px;top:8px;border:0;background:transparent;font-size:25px;padding:5px;min-width:36px;min-height:36px;color:#81715b}.bubble-save,.bubble-more,.bubble-swap{width:100%;min-height:46px;border-radius:10px;font-size:14px;display:flex;align-items:center;justify-content:center;gap:9px}.bubble-save{background:#e7eddd;border:1px solid #b8c3a2;color:#4e5c35}.bubble-save.saved{background:#dce6cc}.bubble-save span{font-size:20px}.bubble-more{margin-top:8px;border:1px solid #d4c6af;background:#f7efe1;font-size:13px}.bubble-more>span{font-size:17px}.bubble-swap{font-size:11px;min-height:40px;background:transparent;border:0;color:#75664f;margin-top:5px;text-decoration:underline;text-underline-offset:4px}.details{position:absolute;bottom:121px;right:30px;width:294px;background:#fbf7efef;border:1px solid #e2d5c1;padding:26px;border-radius:16px;backdrop-filter:blur(15px);z-index:6}.details h2{font:500 27px var(--serif);margin:11px 0}.details>p{font-size:14px;line-height:1.8;color:#746451}.spec-row{display:flex;justify-content:space-between;gap:10px;align-items:center;font-size:12px;padding:10px 0;border-bottom:1px solid var(--line)}.spec-row strong{font-size:14px;font-weight:500}.spec-row small{font-size:11px}.size-note{font-size:11px!important;line-height:1.8!important}.save-detail{width:100%;min-height:44px;border:1px solid #aeb89a;border-radius:9px;background:#e7eddd;color:#50603a;font-size:14px}.details>a{display:block;font-size:12px;margin-top:17px;text-align:center}.detail-controls{position:absolute;top:103px;left:30px;right:350px;display:flex;gap:12px;flex-wrap:wrap;z-index:8}.back-button{background:#fcf8eef0;border:1px solid #d3c6b0;border-radius:9px;min-height:44px;padding:10px 15px;font-size:13px}.size-controls{display:flex;align-items:center;gap:5px;background:#fcf8eef0;border-radius:9px;padding:5px 8px;font-size:10px}.size-controls button{font-size:11px;background:transparent;border:none;padding:11px 8px;min-height:39px;border-radius:6px}.size-controls button.active{background:#68704e;color:#fffaf0}.size-controls>span{padding-left:4px}.toast{position:absolute;bottom:180px;left:50%;transform:translate(-50%,8px);background:#5a6446f0;color:#fffaf0;font-size:13px;padding:12px 18px;border-radius:12px;opacity:0;transition:.16s;pointer-events:none;z-index:20;max-width:90%;text-align:center;white-space:nowrap}.toast.visible{opacity:1;transform:translate(-50%,0)}.loading{position:absolute;inset:0;background:var(--paper);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:30;transition:opacity .3s}.loading.done{opacity:0;pointer-events:none}.loading-logo{font:80px/.8 Georgia,serif;letter-spacing:-9px}.loading-line{width:150px;height:1px;background:#cdbfa6;margin-top:30px}.loading-line i{height:1px;display:block;background:#747e59;width:0;transition:width .2s}.loading p{font-size:12px;color:#74644f;letter-spacing:.04em}.keyboard-pieces{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.keyboard-pieces:focus-within{clip-path:none;width:auto;height:auto;left:20px;bottom:180px;max-width:320px;display:flex;gap:5px;flex-wrap:wrap;background:#fbf7ec;padding:12px;z-index:25}.keyboard-pieces button{font-size:12px;padding:10px;border:1px solid #bcb399;background:#ebe4d5}dialog{color:var(--ink);background:#faf5eb;border:1px solid #d3c4aa;border-radius:18px;padding:31px;width:min(470px,calc(100% - 30px));max-height:88dvh;overflow:auto;box-shadow:0 30px 100px #49382440}dialog::backdrop{background:#5a4e3875;backdrop-filter:blur(7px)}dialog h2{font:500 24px var(--serif);margin:18px 0 22px}dialog dt{font-size:14px;font-weight:500;margin-top:17px}dialog dd{font-size:14px;line-height:1.8;margin:4px 0 0;color:#71624e}.help-note{font-size:11px;line-height:1.8;border-top:1px solid var(--line);margin-top:20px;padding-top:14px}dialog .back-button{width:100%;background:#e6ecd9;margin-top:12px}body.inspecting .intro,body.inspecting .toolbar,body.inspecting .board-status{opacity:0;pointer-events:none}body.inspecting .view-controls{right:344px}.swap-mode .board-status{background:#e7edda;border:1px solid #b0bd96;color:#526239}.mobile-only{display:none}@keyframes appear{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media(max-width:900px){header{padding:22px}.brand{font-size:48px;gap:21px}.brand span{font-size:8px;padding-left:17px}.intro{top:104px;left:24px;right:24px;text-align:center}.intro .eyebrow{font-size:9px}.intro h1{font-size:29px;margin:9px 0}.intro p{font-size:13px;line-height:1.85}.mobile-only{display:block}.view-controls{right:14px;top:38%;gap:8px}.view-controls .round-button{width:42px;height:42px}.board-status{font-size:11px;bottom:166px}.toolbar{bottom:99px;padding:5px 7px;gap:0}.tool{font-size:12px;padding:10px 11px;gap:6px}.tool svg{width:19px;height:19px}footer{height:84px;padding:12px 18px;gap:14px}.saved-heading{font-size:11px}.saved-heading small{font-size:10px}.saved-items>p{font-size:12px}.saved-card{height:55px;padding:7px}.saved-card img{width:40px;height:34px}.details{bottom:99px;left:16px;right:16px;width:auto;padding:20px;display:grid;grid-template-columns:1fr 1fr;column-gap:15px}.details .eyebrow,.details h2,.details>p,.details>a{grid-column:1/3}.details h2{font-size:24px;margin:8px 0}.details>p{font-size:13px;margin:6px 0 12px}.details .spec-row{font-size:11px}.details .spec-row strong{font-size:12px}.details .size-note{font-size:10px!important;margin:10px 0}.details .save-detail{grid-column:1/3}.details>a{font-size:12px;margin-top:12px}.detail-controls{left:18px;right:18px;top:94px;gap:8px}.detail-controls .back-button{font-size:12px;padding:10px}.size-controls{width:100%;order:3;justify-content:center;font-size:10px;gap:4px}.size-controls button{font-size:10px;padding:10px 7px}body.inspecting .view-controls{right:14px;top:29%}.toast{font-size:12px;white-space:normal}.action-bubble{width:264px}.bubble-save{font-size:15px}.bubble-more{font-size:13px}.keyboard-pieces:focus-within{max-height:200px;overflow:auto;bottom:170px}}@media(max-width:359px){.intro h1{font-size:26px}.intro p{font-size:12px}.tool{padding:10px 9px;font-size:11px}.details .spec-row{grid-column:1/3}.details>p{font-size:12px;margin:3px 0 7px}.details{padding:15px}.details .size-note{font-size:9px!important}.saved-heading{font-size:10px}}@media(max-height:700px){.intro{top:91px}.intro .eyebrow{display:none}.intro h1{font-size:25px;margin:6px 0}.intro p{font-size:12px}.details{padding:16px}.details>p{font-size:12px}.details .size-note{font-size:10px!important}.details h2{font-size:22px}.detail-controls{top:80px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media(max-width:900px){.view-controls{flex-direction:row;top:238px;right:17px;gap:8px}body.inspecting .view-controls{flex-direction:column;top:28%;right:14px}}
html,body{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
input,textarea,select,option,[contenteditable="true"]{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}
@media(max-height:700px) and (max-width:900px){.view-controls{top:198px}}
@media(max-width:900px){.details .spec-row{grid-column:1/3;white-space:nowrap}.details .spec-row strong{font-size:14px}.details .spec-row>span{font-size:12px}}

.intro{left:24px;right:24px;top:125px;text-align:center}.intro h1{font:400 16px/1.6 var(--serif);letter-spacing:.14em;margin:0;color:#716354}@media(max-width:900px){.intro{top:116px}.intro h1{font-size:15px;margin:0}}@media(max-height:700px){.intro{top:101px}.intro h1{font-size:14px}}

.intro h1{font-family:var(--sans);font-weight:400;letter-spacing:.09em}

.bookmark-icon{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linejoin:round;flex-shrink:0}.saved .bookmark-icon{fill:currentColor}.detail-save-summary{position:absolute;bottom:calc(100% + 14px);left:0;right:0;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:9px 15px;font-size:11px;color:var(--muted)}.compact-saved{display:inline-flex;align-items:center;gap:6px}.compact-saved .bookmark-icon{width:15px;height:15px}.pending-save{font-size:11px;text-decoration:underline;text-underline-offset:4px;min-height:28px;display:inline-flex;align-items:center}.pending-save-global{position:absolute;bottom:176px;left:50%;transform:translateX(-50%);z-index:21;white-space:nowrap;font-size:12px;text-decoration:underline;text-underline-offset:4px;padding:14px 17px;border:1px solid var(--line);border-radius:12px;background:#fffcf4}.saved-heading>span{display:flex}.round-button.saved{color:var(--olive)}

.brand{font:inherit;letter-spacing:normal;gap:18px}.brand img{display:block;width:116px;height:auto}.brand span{font:500 11px/1.5 var(--sans);letter-spacing:.03em;padding-left:16px}.loading-logo{font:inherit;letter-spacing:normal}.loading-logo img{width:155px;height:auto;display:block}.cut-controls{display:flex;align-items:center;gap:9px;flex-wrap:wrap;background:#fcf8eef0;border-radius:9px;padding:8px 12px;min-height:44px}.cut-controls label{font-size:11px;white-space:nowrap}.cut-controls strong{font-weight:500}.cut-controls input{width:125px;accent-color:#68704e}.cut-controls button{border:0;background:none;text-decoration:underline;font-size:11px}.offcut-action{position:absolute;right:26px;bottom:228px;z-index:9;padding:12px 16px;border:1px solid #b8a78e;border-radius:10px;background:#fffaf0;font-size:12px;box-shadow:0 10px 26px #45332122}.request-dialog{width:min(450px,calc(100% - 24px))}.request-dialog p{font-size:12px;line-height:1.7}.request-dialog form{display:grid;gap:11px}.request-dialog form label{display:grid;gap:5px;font-size:12px}.request-dialog input,.request-dialog select,.request-dialog textarea{width:100%;min-height:42px;border:1px solid #cfc2ac;border-radius:8px;background:#fffdf8;padding:8px 10px;font:14px var(--sans);color:var(--ink)}.request-dialog textarea{min-height:64px;resize:vertical}.request-submit{min-height:46px;border:0;border-radius:9px;background:#68704e;color:white}.request-feedback{margin:0!important;color:#9b462f}.offcut-action[hidden]{display:none}@media(max-width:900px){.brand img{width:91px}.brand span{font-size:8px;line-height:1.45;padding-left:10px}.detail-controls{top:90px}.cut-controls{order:4;width:100%;justify-content:center}.offcut-action{right:17px;bottom:calc(86px + 44dvh);max-width:200px}.request-dialog{max-height:90dvh}}
.chair-count-label{display:flex;align-items:center;gap:7px;background:#fcf8eef0;border-radius:9px;padding:5px 9px;font-size:11px;white-space:nowrap}.chair-count-label select{border:0;background:transparent;padding:8px;font:inherit;color:inherit}
.cut-controls #cut-confirm{background:#68704e;color:#fffaf0;border-radius:7px;padding:9px 11px;text-decoration:none;font-size:11px}.chair-count-label option:disabled{color:#aaa}

.offcut-action{right:auto;bottom:auto;padding:8px 10px;border:0;border-radius:5px;text-decoration:underline;text-underline-offset:4px;background:#fffaf0e8;box-shadow:none;white-space:nowrap;max-width:none}.cut-handle{position:fixed;z-index:12;touch-action:none;border:1px solid #b6a183;background:#fffaf0ed;color:#705536;border-radius:20px;padding:10px 14px;font-size:11px;cursor:ew-resize}.cut-handle[hidden]{display:none}.cut-controls select{font:inherit;font-size:11px;border:0;background:transparent;color:inherit}.cut-controls button:disabled{opacity:.4}

.detail-controls{left:22px;right:auto;top:95px;display:flex;flex-direction:row;gap:8px;flex-wrap:nowrap;align-items:center}.detail-controls .round-button{flex-shrink:0;width:44px;height:44px}.detail-controls .round-button[aria-pressed=true],.detail-controls .round-button[aria-expanded=true]{background:#e1e8d6;border-color:#9aa884}.mini-tools{position:absolute;top:54px;left:0;display:flex;align-items:center;gap:10px;padding:6px 10px;background:#fffaf0ed;border:1px solid #d6cdbd;border-radius:14px;white-space:nowrap;font-size:12px}.mini-tools select{background:transparent;border:0;color:inherit;font:inherit;padding:8px}.mini-tools .round-button{width:36px;height:36px}.cut-handle{width:44px;height:44px;display:grid;place-items:center;padding:10px;border-radius:50%}.cut-handle svg{width:21px;height:21px;stroke:currentColor;fill:none;stroke-width:1.4;stroke-linecap:round}.details .size-controls{grid-column:1/-1;width:auto;padding:0;background:none;flex-wrap:wrap;justify-content:flex-start;margin-top:10px}.details .size-controls button{font-size:10px;min-height:32px;padding:6px}.details .size-note{margin-bottom:0}@media(max-width:900px){.detail-controls{left:18px;right:auto;top:86px;gap:7px}.details{padding:16px}.details>p{margin:4px 0 8px}.details .size-controls{margin-top:5px}.mini-tools{top:52px}}

.save-length,.details>a.purchase-length{display:block;width:100%;grid-column:1/-1;text-align:center;border-radius:9px;font:12px var(--sans);padding:13px 10px;margin:12px 0 0;border:1px solid #a5ae94;background:#e6ecde;color:#4d593d}.details>a.purchase-length{background:#68704e;color:#fffaf0;border:0}.save-length:disabled{background:transparent;border-color:#d6cdbd;opacity:.7}.details{max-height:65dvh;overflow:auto}@media(max-width:900px){.details{max-height:36dvh}.details .size-note{font-size:9px!important}.details h2{font-size:21px}.details .save-length,.details>a.purchase-length{margin-top:8px;padding:11px}}

.detail-save-summary{position:fixed;bottom:auto;right:auto;z-index:7}body:not(.inspecting) .detail-save-summary{display:none}

@media(max-width:900px){.details>a.purchase-length{position:sticky;bottom:0;z-index:2;box-shadow:0 0 0 7px #fbf7ef}.details{padding-bottom:12px}}

@media(max-width:900px){body:not(.inspecting) .intro{top:106px}body:not(.inspecting) .view-controls{top:146px;right:14px}body:not(.inspecting) .board-status{bottom:160px;font-size:10px}}

#toolbar,#board-status{display:none!important}
