*{box-sizing:border-box}body{margin:0;background:#f5f2e9;color:#293d35;font-family:system-ui,-apple-system,"Noto Sans JP",sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}main{max-width:500px;margin:auto;padding:18px 18px 24px}header{display:flex;justify-content:space-between;align-items:center;font-size:11px}header a{color:#294e43;font-weight:800;text-decoration:none;font-size:16px}header span{color:#6f776b}.intro{text-align:center;margin:20px 0 18px}.eyebrow{font-size:9px;font-weight:800;letter-spacing:2px;color:#698171}h1{font-size:27px;letter-spacing:-1px;margin:8px 0}p{line-height:1.7}.intro>p:last-child{font-size:13px;margin:4px}.dashboard{display:grid;grid-template-columns:repeat(3,1fr);text-align:center;background:#fffdf7;border:1px solid #dddccd;border-radius:16px;padding:12px 0}.dashboard>div+div{border-left:1px solid #e8e6db}small{font-size:11px}.dashboard small{display:block;color:#788273}.dashboard strong{display:block;font-size:25px;line-height:1.5;font-variant-numeric:tabular-nums}.dashboard strong span{font-size:12px;margin-left:3px}.instruction{display:flex;gap:10px;align-items:center;min-height:68px;padding:10px 0}.instruction>span{width:30px;height:30px;border-radius:50%;background:#294e43;color:white;display:grid;place-items:center;font-weight:bold;flex-shrink:0}.instruction strong{font-size:15px;display:block}.instruction small{display:block;color:#697367;font-size:11px;margin-top:3px}#board{position:relative;height:340px;border-radius:18px;border:5px solid #dbdccd;background:#d0cbbf;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none;box-shadow:0 7px 0 #e7e3d7}.wall{position:absolute;inset:16px 30px 55px;background:#b7baad;border:1px solid #9b9f92;box-shadow:inset 0 8px 18px #62706625;overflow:hidden}.room-shadow{position:absolute;inset:0;background:linear-gradient(110deg,#ffffff60,transparent 60%)}#paper{position:absolute;inset:0;background-color:#fbf5e4;background-image:repeating-linear-gradient(90deg,transparent,transparent 23px,#e4dcc850 24px,#e4dcc850 25px);transform:scaleY(0);transform-origin:top;transition:transform .25s;box-shadow:0 3px 8px #0002}#paper.pasted{transform:scaleY(1)}.skirting{position:absolute;bottom:46px;height:10px;background:#ede6d4;left:0;right:0;box-shadow:0 2px 3px #0002}.floor{position:absolute;bottom:0;height:46px;width:100%;background:repeating-linear-gradient(100deg,#b79a73 0,#b79a73 45px,#a78965 46px,#a78965 48px)}.tool{position:absolute;bottom:7px;left:50%;transform:translateX(-50%);background:#294e43;color:#fff;padding:6px 14px;border-radius:20px;white-space:nowrap;font-size:12px;box-shadow:0 3px 5px #0002}.gesture{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;font-size:75px;color:#fff;pointer-events:none;animation:float 1.6s ease-in-out infinite}.gesture small{font-size:13px}.target{position:absolute;transform:translate(-50%,-50%);width:58px;height:58px;border:0;border-radius:50%;font-size:23px;touch-action:none}.bubble{background:radial-gradient(circle at 35% 25%,#fff,#dfd4b5 60%,#a4997e);box-shadow:3px 4px 8px #6a634e44,inset 0 0 0 2px #fff7;animation:breathe 1.8s ease-in-out infinite}.bubble:after{content:"";position:absolute;inset:9px;border:1px solid #fff8;border-radius:50%}.screw{background:#c3c6c5;border:5px solid #8b9290;box-shadow:2px 5px 0 #696f69;color:#455049;font-weight:bold}.socket{border-radius:9px;border:3px solid #aaa99a;background:#fffdf5;color:#505850;font-size:27px;box-shadow:0 3px 0 #999581}.target small{position:absolute;top:100%;left:50%;transform:translateX(-50%);background:#294e43;color:#fff;white-space:nowrap;border-radius:8px;padding:2px 5px;font-size:10px}.cut{display:none;position:absolute;left:0;right:0;height:32px;border-top:3px dashed #df9255;pointer-events:none}.cut.top{top:14px}.cut.bottom{bottom:0}.cut.done{border-color:#5f9a76;border-style:solid}.cut:after{content:"横にスライド →";position:absolute;top:2px;left:50%;transform:translateX(-50%);font-size:10px;color:#9b5727;white-space:nowrap}.cut.done:after{content:"カット完了 ✓";color:#467957}#toast{position:absolute;top:42%;left:0;right:0;text-align:center;color:#294e43;font-size:22px;font-weight:900;pointer-events:none;text-shadow:0 2px #fff;opacity:0;transition:opacity .15s}.progress{display:flex;justify-content:space-between;margin:18px 0;font-size:11px;color:#97a090;gap:7px}.progress span{flex:1;padding:7px 0;text-align:center;background:#e7e8dc;border-radius:8px}.progress .active{color:white;background:#294e43}.progress .done{color:#477457;background:#dce8d7}.controls{display:flex;gap:8px}.controls button{flex:1;padding:12px 3px;background:#fffdf7;border:1px solid #d4d7c8;color:#43594b;border-radius:10px;font-size:12px}.note{text-align:center;font-size:10px;color:#7b8176}footer{text-align:center;font-size:11px;color:#768171;margin-top:20px}footer small{font-size:9px}dialog{border:0;border-radius:23px;padding:0;max-width:calc(100% - 32px);width:360px;color:#293d35;background:#fffdf6;box-shadow:0 24px 80px #0003}dialog::backdrop{background:#183d32aa;backdrop-filter:blur(3px)}.modal{padding:26px;text-align:center}h2{font-size:27px;line-height:1.5;margin:10px 0 18px}.how{text-align:left}.how p{display:flex;align-items:center;gap:10px;font-size:12px;margin:12px 0}.how b{display:grid;place-items:center;width:35px;height:35px;flex-shrink:0;border-radius:10px;background:#e5ebde;font-size:23px;color:#3f6955}.obstacle-note{font-size:11px;color:#7e725c;padding:10px;background:#f1eddd;border-radius:9px}.primary,.secondary{display:block;width:100%;border-radius:12px;padding:14px;font-weight:700;margin-top:10px}.primary{background:#294e43;color:white;border:0}.primary span{display:block;font-size:10px;font-weight:400;margin-top:3px}.secondary{background:transparent;border:1px solid #c3cdbc;color:#47684f}#modalText{white-space:pre-line;font-size:14px}@keyframes float{50%{transform:translateY(8px)}}@keyframes breathe{50%{filter:brightness(1.06)}}@media(max-height:740px){main{padding-top:10px}.intro{margin:12px 0}#board{height:290px}.dashboard{padding:8px 0}.progress{margin:14px 0}footer{margin-top:12px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
[hidden]{display:none!important}
