:root{--bg-deep: #0b0e1a;--bg-panel: rgba(16, 20, 38, .92);--accent: #ffd23f;--accent2: #4ecdc4;--danger: #ff5c7a;--text: #eef1ff;--text-dim: #8b93b8;--border-glow: rgba(255, 210, 63, .35)}*{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%;overflow:hidden;background:var(--bg-deep);color:var(--text);font-family:Segoe UI,Hiragino Sans,Noto Sans JP,system-ui,sans-serif;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:none;overscroll-behavior:none}#app{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at 20% 10%,rgba(78,205,196,.08),transparent 50%),radial-gradient(ellipse at 80% 90%,rgba(255,210,63,.06),transparent 50%),var(--bg-deep)}#stage-wrap{position:relative;width:800px;height:450px;flex:none;container-type:size;box-shadow:0 0 0 1px #ffffff0f,0 0 40px #0009,0 0 80px #4ecdc414;border-radius:6px;overflow:hidden}canvas#game{display:block;width:100%;height:100%;image-rendering:pixelated;image-rendering:crisp-edges;background:#12172e}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4%;background:linear-gradient(160deg,#0b0e1ae0,#140e28eb);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:10;text-align:center;overflow-y:auto}@supports (justify-content: safe center){.overlay{justify-content:safe center}}.overlay.hidden{display:none}.game-title{font-size:clamp(28px,9cqw,64px);font-weight:900;letter-spacing:.06em;color:var(--accent);text-shadow:0 4px 0 #b8860b,0 8px 24px rgba(255,210,63,.4);font-style:italic}.game-title span{color:var(--accent2);text-shadow:0 4px 0 #1d7a74,0 8px 24px rgba(78,205,196,.4)}.subtitle{color:var(--text-dim);letter-spacing:.5em;font-size:clamp(10px,2cqw,16px)}.screen-title{font-size:clamp(22px,6cqw,44px);font-weight:800;letter-spacing:.12em;color:var(--text)}.clear-title{color:var(--accent);text-shadow:0 0 30px var(--border-glow);animation:pulse 1.2s ease-in-out infinite}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}.menu{display:flex;flex-direction:column;gap:14px;align-items:center}.menu-row{display:flex;gap:10px;align-items:center;justify-content:center;flex-wrap:wrap}.menu-btn{font:inherit;font-size:clamp(14px,3cqw,20px);font-weight:700;letter-spacing:.1em;color:var(--text);background:var(--bg-panel);border:2px solid var(--accent);border-radius:10px;padding:.7em 2.4em;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,background .12s;box-shadow:0 0 18px #ffd23f26}.menu-btn:hover,.menu-btn:focus-visible{background:#ffd23f24;transform:translateY(-2px);box-shadow:0 6px 24px var(--border-glow);outline:none}.menu-btn:active{transform:translateY(1px)}.menu-btn.small{font-size:clamp(11px,2.2cqw,15px);padding:.55em 1.6em;border-color:var(--text-dim);box-shadow:none}.hint{color:var(--text-dim);font-size:clamp(9px,1.8cqw,13px);letter-spacing:.05em}.total-coins{color:var(--accent);font-size:clamp(12px,2.4cqw,17px);font-weight:700;letter-spacing:.08em;background:#ffd23f14;border:1px solid rgba(255,210,63,.35);border-radius:999px;padding:.35em 1.4em}.total-coins #total-coins-value{color:var(--text)}#version-label{position:absolute;right:max(14px,1.8%);bottom:max(10px,1.6%);color:var(--text-dim);font-size:clamp(9px,1.6cqw,12px);letter-spacing:.08em}#btn-pause{position:absolute;top:1.6%;right:1%;z-index:5;width:clamp(34px,6cqw,48px);height:clamp(34px,6cqw,48px);font:inherit;font-size:clamp(16px,3cqw,22px);line-height:1;color:var(--text);background:#0b0e1a8c;border:2px solid var(--text-dim);border-radius:10px;cursor:pointer;transition:background .12s,border-color .12s}#btn-pause:hover,#btn-pause:focus-visible{background:#ffd23f24;border-color:var(--accent);outline:none}#btn-pause.hidden{display:none}.stage-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:10px;width:min(80%,560px)}.stage-cell{font:inherit;aspect-ratio:1;display:flex;flex-direction:column;gap:2px;align-items:center;justify-content:center;font-size:clamp(16px,4cqw,24px);font-weight:800;border-radius:12px;border:2px solid var(--accent2);background:var(--bg-panel);color:var(--accent2);cursor:pointer;transition:transform .12s,box-shadow .12s;padding:4px}.stage-cell .best-time{font-size:clamp(8px,1.6cqw,11px);color:var(--accent);font-weight:600;letter-spacing:0}.stage-cell:hover:not(:disabled){transform:scale(1.08);box-shadow:0 0 20px #4ecdc466}.stage-cell:disabled{border-color:#2a3050;color:#3a4166;background:#0a0c18cc;cursor:not-allowed}.shop-balance{color:var(--accent);font-size:clamp(13px,2.6cqw,18px);font-weight:700;letter-spacing:.08em;background:#ffd23f14;border:1px solid rgba(255,210,63,.35);border-radius:999px;padding:.3em 1.4em}.shop-balance #shop-coins-value{color:var(--text)}.shop-lead{color:var(--text-dim);font-size:clamp(10px,2cqw,14px);letter-spacing:.1em}.shop-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;width:min(88%,600px)}.shop-item{font:inherit;display:flex;flex-direction:column;align-items:center;gap:5px;padding:10px 6px;border-radius:12px;border:2px solid var(--text-dim);background:var(--bg-panel);color:var(--text);cursor:pointer;transition:transform .12s,box-shadow .12s,border-color .12s}.shop-item:hover:not(:disabled){transform:scale(1.05);box-shadow:0 0 18px #ffd23f40}.shop-item .swatch{width:clamp(22px,4.5cqw,32px);height:clamp(22px,4.5cqw,32px);border-radius:50% 50% 46% 46%;border:2px solid rgba(238,241,255,.5)}.shop-item .item-name{font-size:clamp(10px,2cqw,13px);font-weight:700}.shop-item .item-state{font-size:clamp(9px,1.8cqw,12px);color:var(--accent);font-weight:600}.shop-item.selected{border-color:var(--accent);background:#ffd23f1f;box-shadow:0 0 18px var(--border-glow)}.shop-item.locked .item-state{color:var(--accent2)}.shop-item.unaffordable{opacity:.55}.shop-item.unaffordable .item-state{color:var(--danger)}@container (max-height: 430px){.overlay{gap:10px}.game-title{font-size:clamp(20px,7cqw,44px)}.screen-title{font-size:clamp(18px,5cqw,32px)}.menu{gap:8px}.menu-btn{padding:.5em 1.9em}.menu-btn.small{padding:.4em 1.2em}.total-coins{padding:.25em 1.2em}.stage-grid{gap:6px}.shop-grid{gap:7px}.shop-item{padding:7px 5px;gap:3px}}@container (max-height: 350px){.overlay{gap:7px}.game-title{font-size:clamp(18px,6cqw,36px)}.subtitle{font-size:clamp(8px,1.7cqw,12px);letter-spacing:.35em}.menu{gap:6px}.menu-btn{font-size:clamp(12px,2.6cqw,17px);padding:.42em 1.6em}.menu-btn.small{font-size:clamp(10px,2cqw,13px);padding:.35em 1em}.total-coins{font-size:clamp(10px,2.2cqw,14px)}.tc-size-btn{padding:.22em .7em}.hint{font-size:clamp(8px,1.6cqw,11px)}}#feedback-modal{z-index:20;background:#080a16b3;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.feedback-panel{display:flex;flex-direction:column;gap:10px;width:min(88%,460px);max-height:92%;overflow-y:auto;padding:clamp(14px,3cqw,26px);text-align:left;background:var(--bg-panel);border:2px solid var(--accent);border-radius:16px;box-shadow:0 0 30px #ffd23f40,inset 0 0 24px #4ecdc40f;animation:fb-pop .24s cubic-bezier(.2,.9,.3,1.2)}@keyframes fb-pop{0%{opacity:0;transform:scale(.9) translateY(12px)}to{opacity:1;transform:scale(1) translateY(0)}}.feedback-title{text-align:center;font-size:clamp(15px,3.4cqw,22px);font-weight:800;letter-spacing:.06em;color:var(--accent);text-shadow:0 0 18px var(--border-glow)}.fb-label{display:flex;flex-direction:column;gap:5px;color:var(--text-dim);font-size:clamp(10px,2cqw,13px);font-weight:600;letter-spacing:.06em}.fb-required{color:var(--danger);font-size:.85em;margin-left:6px}#feedback-modal input,#feedback-modal select,#feedback-modal textarea{font:inherit;font-size:clamp(12px,2.4cqw,15px);color:var(--text);background:#0b0e1ad9;border:1.5px solid rgba(238,241,255,.25);border-radius:10px;padding:.5em .8em;outline:none;-webkit-user-select:text;user-select:text;transition:border-color .15s ease,box-shadow .25s ease}#feedback-modal textarea{resize:vertical;min-height:4.5em}#feedback-modal input:focus,#feedback-modal select:focus,#feedback-modal textarea:focus{border-color:var(--accent);box-shadow:0 0 10px #ffd23f80,0 0 22px #ffd23f38}.fb-debug{border:1px solid rgba(78,205,196,.3);border-radius:10px;padding:7px 10px;background:#0b0e1a80}.fb-debug summary{cursor:pointer;color:var(--accent2);font-size:clamp(10px,2cqw,13px);font-weight:600;letter-spacing:.05em}.fb-debug pre{margin-top:7px;max-height:110px;overflow:auto;font-size:clamp(9px,1.8cqw,11px);line-height:1.55;color:var(--text-dim);white-space:pre-wrap;word-break:break-all;-webkit-user-select:text;user-select:text}.fb-actions{display:flex;gap:12px;justify-content:center;margin-top:4px}.fb-submit:disabled{opacity:.55;cursor:wait;transform:none}#feedback-toast{position:absolute;top:9%;left:50%;transform:translate(-50%,-14px);z-index:30;max-width:86%;padding:.7em 1.6em;border-radius:999px;font-size:clamp(11px,2.4cqw,15px);font-weight:700;letter-spacing:.05em;text-align:center;color:var(--text);background:var(--bg-panel);opacity:0;pointer-events:none;transition:opacity .45s ease,transform .45s ease}#feedback-toast.show{opacity:1;transform:translate(-50%)}#feedback-toast.ok{border:1.5px solid var(--accent2);box-shadow:0 0 18px #4ecdc48c,0 0 40px #4ecdc440}#feedback-toast.ng{border:1.5px solid var(--danger);box-shadow:0 0 18px #ff5c7a8c,0 0 40px #ff5c7a40}#touch-ui{display:none;position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:50}#touch-ui.hidden{display:none!important}@media(pointer:coarse){#touch-ui{display:block}}.tc-left{position:absolute;left:max(12px,env(safe-area-inset-left));bottom:max(14px,env(safe-area-inset-bottom));display:flex;gap:10px}.tc-right{position:absolute;right:max(12px,env(safe-area-inset-right));bottom:max(14px,env(safe-area-inset-bottom));display:flex;gap:14px;align-items:flex-end}#touch-ui{--tc-scale: 1}#touch-ui.tc-small{--tc-scale: .78}#touch-ui.tc-large{--tc-scale: 1.28}.tc-btn{width:calc(64px * var(--tc-scale));height:calc(64px * var(--tc-scale));display:flex;align-items:center;justify-content:center;font-size:calc(24px * var(--tc-scale));font-weight:800;color:#eef1ffd9;background:#1e24428c;border:2px solid rgba(238,241,255,.35);border-radius:14px;pointer-events:auto}.tc-round{border-radius:50%}.tc-jump{width:calc(76px * var(--tc-scale));height:calc(76px * var(--tc-scale));border-color:#ffd23f99;color:var(--accent)}.tc-btn.pressed{background:#ffd23f59;border-color:var(--accent);color:#fff}.tc-size-picker{display:none;align-items:center;gap:8px}@media(pointer:coarse){.tc-size-picker{display:flex}}.tc-size-label{color:var(--text-dim);font-size:clamp(10px,2cqw,14px);letter-spacing:.1em}.tc-size-btn{font:inherit;font-size:clamp(11px,2.2cqw,15px);font-weight:700;color:var(--text-dim);background:#1e24428c;border:1px solid rgba(238,241,255,.25);border-radius:8px;padding:.3em .9em;cursor:pointer}.tc-size-btn.selected{color:var(--accent);border-color:var(--accent);background:#ffd23f1f}#rotate-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:var(--bg-deep);align-items:center;justify-content:center}.rotate-inner{text-align:center;color:var(--text);font-size:18px;letter-spacing:.1em}.rotate-icon{font-size:56px;margin-bottom:20px;animation:rotate-hint 1.6s ease-in-out infinite}@keyframes rotate-hint{0%,to{transform:rotate(0)}50%{transform:rotate(-90deg)}}@media(orientation:portrait)and (pointer:coarse){#rotate-overlay{display:flex}}#install-gate{position:fixed;top:0;right:0;bottom:0;left:0;z-index:150;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,#0b0e1a,#140e28);padding:20px}#install-gate.hidden{display:none}.gate-inner{max-width:420px;text-align:center;color:var(--text);display:flex;flex-direction:column;align-items:center;gap:14px}.gate-icon{width:96px;height:96px;border-radius:22px;border:2px solid rgba(238,241,255,.25);box-shadow:0 8px 32px #00000080}.gate-inner h2{font-size:22px;font-weight:800;letter-spacing:.08em;color:var(--accent)}.gate-lead{font-size:14px;line-height:1.7}.gate-steps{font-size:13px;line-height:1.9;color:var(--text-dim);background:#1e24428c;border:1px solid rgba(238,241,255,.15);border-radius:12px;padding:12px 18px}.gate-steps b{color:var(--text)}.gate-kbd{display:inline-block;padding:0 6px;border:1px solid rgba(238,241,255,.4);border-radius:5px;font-size:12px}.gate-note{font-size:11px;color:var(--text-dim);letter-spacing:.05em}
