@font-face{font-family:RoomJP;src:local("Hiragino Kaku Gothic ProN");font-display:swap}
:root{color-scheme:dark;--bg:#10121e;--ink:#f1eddc;--line:#68658e;--purple:#8074b8;--blue:#438ef3;--orange:#e6aa5f;font-family:RoomJP,"Hiragino Kaku Gothic ProN","Yu Gothic",sans-serif;background:var(--bg);color:var(--ink)}
*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden;overscroll-behavior:none}body{touch-action:manipulation;background:#10121e}button,input{font:inherit}button{color:inherit;border:0;cursor:default;-webkit-tap-highlight-color:transparent;touch-action:manipulation}button:focus-visible,canvas:focus-visible{outline:2px solid #b3c9ff;outline-offset:5px}button:disabled{opacity:.27}button[hidden],[hidden]{display:none!important}svg{pointer-events:none}#game{height:100dvh;max-width:1450px;margin:auto;padding: max(18px,env(safe-area-inset-top)) 34px max(12px,env(safe-area-inset-bottom));display:grid;grid-template-rows:54px 76px minmax(0,1fr) 27px;gap:14px}.topbar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center}.top-actions{justify-self:end;display:flex;align-items:center;gap:14px}#stages{display:flex;gap:12px;justify-content:center;align-items:center}.stage-button{width:52px;height:48px;background:#1e2135;color:#c7bedb;border:2px solid #4c4d70;box-shadow:inset 3px 3px #2e304a,inset -3px -3px #131622;font-family:monospace;font-weight:700;font-size:29px;line-height:1}.stage-button[aria-current]{background:#514184;border-color:#b7a2f0;color:#fff8e8;box-shadow:inset 3px 3px #6f5caa,inset -3px -3px #342854}.stage-button.solved:after{content:"";display:block;background:#d6ad67;width:4px;height:4px;position:absolute;margin-left:35px;margin-top:-3px}.icon-button{width:40px;height:40px;background:transparent;color:#a5a1bd;font-size:29px;padding:7px}.gear svg{width:27px;height:27px;fill:#a5a1bd;stroke:#10121e;stroke-width:1.4}.retry{justify-self:start}.rule-frame{justify-self:center;align-self:center;width:max-content;max-width:100%;min-width:45%;background:#191c2d;border:2px solid var(--line);box-shadow:4px 4px 0 #080b16;padding:13px 31px;text-align:center;position:relative}.rule-frame:before,.rule-frame:after{content:"";width:6px;height:6px;background:#9187ad;position:absolute;top:calc(50% - 3px)}.rule-frame:before{left:9px}.rule-frame:after{right:9px}#rule{font-size:clamp(17px,2.1vw,27px);line-height:1.6;font-weight:700;letter-spacing:.025em;margin:0;white-space:normal;user-select:text;touch-action:none;-webkit-user-select:text;-webkit-touch-callout:none}#rule span{white-space:pre}#rule .selected,#backText.selected{background:#3277d9;color:#fff;box-shadow:0 0 0 1px #3277d9}::selection{background:#3277d9;color:#fff}.play-area{min-height:0;display:flex;align-items:center;justify-content:center}.room-frame{position:relative;width:100%;aspect-ratio:1100/620;max-height:100%;isolation:isolate}canvas{display:block;width:100%;height:100%;image-rendering:pixelated;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;outline:none}.directions{position:absolute;right:2.6%;bottom:2.3%;display:grid;grid-template-columns:51px 51px 51px;grid-template-rows:51px 51px;gap:5px;z-index:4;touch-action:none}.directions button{background:#24263a;box-shadow:inset 3px 3px #55546c,inset -3px -3px #111321,2px 2px 0 #070a12;border:2px solid #79758f;color:#ded8ed;font-size:24px;touch-action:none;user-select:none;line-height:1;padding:0}.directions button.active{background:#57447d;border-color:#bba2ec;transform:translateY(2px)}[data-direction=up]{grid-column:2;grid-row:1}[data-direction=left]{grid-column:1;grid-row:2}[data-direction=down]{grid-column:2;grid-row:2}[data-direction=right]{grid-column:3;grid-row:2}footer{display:flex;align-items:center;justify-content:space-between;gap:12px;font-family:monospace;font-size:10px;letter-spacing:.15em;color:#696b87;user-select:none}footer i{font-style:normal;opacity:.45;margin:0 6px}.edition{font-size:9px;letter-spacing:.24em}#status{font:12px/1.4 RoomJP,sans-serif;letter-spacing:.04em;color:#b9b1cd}.clear-panel{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(420px,80%);padding:28px 28px 25px;background:#1c1d30;border:2px solid #8d7fac;box-shadow:5px 5px 0 #090b16;z-index:5;text-align:center}.clear-panel h1{font-size:clamp(20px,2.2vw,28px);letter-spacing:.08em;margin:9px 0 12px}.clear-panel p{font-size:13px;line-height:1.9;margin:0 0 20px;color:#c0b8ce}.clear-star{color:var(--orange);font-size:24px}.clear-actions{display:flex;justify-content:center;gap:12px}.paper-button{background:#292a40;border:2px solid #68637f;box-shadow:inset 2px 2px #3c3d55,inset -2px -2px #191b2b;padding:10px 22px;min-height:44px;font-size:15px;font-weight:600}.paper-button.primary{background:#554177;border-color:#a28cc5}.close-button{position:absolute;right:9px;top:5px;width:30px;height:30px;font-size:25px;background:transparent;color:#b9b1cb;padding:0}#backButton{touch-action:none;user-select:none;-webkit-user-select:none}.carry-back{position:absolute;left:50%;bottom:9%;transform:translateX(-50%);z-index:5}.carry-back .paper-button{background:#22293b}.settings-panel{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(360px,calc(100vw - 36px));max-height:calc(100dvh - 40px);overflow:auto;background:#1b1d2e;border:2px solid #78708d;padding:28px 25px;z-index:21;box-shadow:6px 6px #070a13}.settings-panel h2{margin:0 0 24px;font-size:22px}.sound-row{display:flex;align-items:center;gap:12px;margin-bottom:22px}.sound-row .paper-button{padding:5px;width:42px;min-height:38px}.sound-row label{font-size:14px;flex-shrink:0}.sound-row input{min-width:0;width:100%;accent-color:#a991d2}.menu-button{display:block;width:100%;text-align:left;background:transparent;padding:15px 0;border-top:1px solid #39384f;font-size:14px}.settings-panel p{font-size:11px;color:#8d879e;line-height:1.9;margin:17px 0 0}#shade{position:fixed;inset:0;background:#070913b8;z-index:20}body.selecting{cursor:crosshair}body.selecting #rule{cursor:text}noscript{position:fixed;inset:0;background:#10121e;padding:40px}
@media(max-width:650px){#game{padding: max(12px,env(safe-area-inset-top)) 10px max(9px,env(safe-area-inset-bottom));grid-template-rows:44px 88px minmax(0,1fr) 24px;gap:10px}.top-actions{gap:4px}.stage-button{width:41px;height:39px;font-size:25px}#stages{gap:8px}.icon-button{width:34px;height:34px;padding:5px;font-size:25px}.rule-frame{width:100%;min-width:0;padding:11px 17px;min-height:65px;display:flex;align-items:center;justify-content:center}#rule{font-size:18px;letter-spacing:0}.play-area{align-items:center}.room-frame{aspect-ratio:720/820;max-width:610px}.directions{grid-template-columns:44px 44px 44px;grid-template-rows:44px 44px;gap:4px;right:4%;bottom:3%}.directions button{font-size:21px}.clear-panel{width:85%;padding:25px 15px}.clear-panel h1{font-size:21px}.clear-panel p{font-size:12px}.paper-button{padding:9px 17px;font-size:14px}.edition{display:none}.key-hint{font-size:9px}#status{font-size:10px}.carry-back{bottom:8%}}
@media(max-height:530px) and (min-width:651px){#game{padding:8px 22px;grid-template-rows:35px 51px minmax(0,1fr) 17px;gap:7px}.stage-button{width:36px;height:32px;font-size:22px}.icon-button{height:32px;width:32px;padding:3px}.rule-frame{padding:6px 23px}#rule{font-size:18px}.directions{grid-template-columns:35px 35px 35px;grid-template-rows:35px 35px;gap:4px}.directions button{font-size:17px}.clear-panel{padding:16px 22px}.clear-panel h1{font-size:21px;margin:4px 0}.clear-panel p{margin-bottom:10px}.clear-star{display:none}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto}}
#retry,#reopen{display:grid;place-items:center;padding:0;line-height:1;align-self:center}.icon-glyph{display:block;line-height:1;transform:translateY(-2px)}#reopen .icon-glyph{transform:translateY(-3px)}
.share-link{display:block;text-decoration:none;text-align:center;padding:12px 18px;background:#090b12;border:1px solid #625875;color:#fff;margin-top:16px;font-size:15px}.clear-panel .share-pending{font-size:10px;color:#9e94af;margin:10px 0 0}.menu-button{color:inherit;text-decoration:none}.hint-note{display:block;font-size:10px;line-height:1.8;color:#938caa;margin:0 0 10px}.menu-button[aria-disabled=true]{opacity:.5}.sound-row .paper-button{width:62px;flex-shrink:0;font-size:12px}.sound-row .is-muted{text-decoration:line-through;color:#a49bb6}dialog.settings-panel{margin:0;color:var(--ink)}dialog::backdrop{background:#080a14ba}#recordsContent dl{display:grid;grid-template-columns:1fr auto;gap:15px;font-size:15px;margin:24px 0}#recordsContent dt{color:#bbb2c9}#recordsContent dd{margin:0;font-variant-numeric:tabular-nums}.connection{position:fixed;inset:0;background:#10121ef5;z-index:40;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:18px;padding:24px;text-align:center}.connection p{font-size:15px;color:#c1b7ce}#recordWarning{color:#d3ae6a}
#game{width:100%;min-width:0}#game>*{min-width:0}.topbar{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}.play-area{width:100%;min-width:0}.room-frame{min-width:0;flex-shrink:0}.rule-frame{min-width:0}
@media(max-width:650px){.topbar{grid-template-columns:36px minmax(0,1fr) 72px}#stages{gap:6px}.stage-button{width:39px}.directions{grid-template-columns:clamp(32px,11.3vw,44px) clamp(32px,11.3vw,44px) clamp(32px,11.3vw,44px);grid-template-rows:clamp(32px,11.3vw,44px) clamp(32px,11.3vw,44px)}}
.help-button{height:36px;padding:0 11px;background:#242639;border:1px solid #5f5975;font-size:12px;white-space:nowrap}.help-dialog{width:min(430px,calc(100vw - 32px))}.help-dialog h2{margin-bottom:17px}.help-dialog p,.help-steps{font-size:13px;line-height:1.9;color:#c9bfd8}.help-steps{padding-left:1.3em;margin:20px 0}.help-steps li{margin:10px 0}.help-dialog .help-goal{font-size:15px;color:#eee6d6}.help-principle{padding:17px 10px;margin:20px 0;border:1px solid #7d6aa6;background:#29233d;text-align:center;color:#f5e9d3;font-size:19px;font-weight:700;line-height:1.8}.help-dialog #helpStart{width:100%;margin-top:22px}#rule{letter-spacing:0;font-feature-settings:"palt" 0}#rule span{display:inline-block;width:1em;text-align:center}
@media(max-width:650px){#game{grid-template-rows:80px 76px minmax(0,1fr) 24px}.topbar{grid-template-columns:36px minmax(0,1fr) auto;grid-template-rows:34px 40px;row-gap:6px}.retry{grid-row:1;grid-column:1}.top-actions{grid-row:1;grid-column:3}#stages{grid-row:2;grid-column:1/-1}.rule-frame{padding:10px 16px}.help-dialog{padding:24px 22px}.help-dialog .help-principle{font-size:18px;padding:12px 7px;margin:15px 0}.help-dialog p,.help-steps{font-size:12px}.help-steps{margin:14px 0}.help-dialog #helpStart{margin-top:17px}}
@media(max-width:650px){.help-dialog h2{margin-bottom:12px}.help-dialog .help-goal{font-size:13px}.help-dialog p{line-height:1.75;margin-top:12px}.help-steps{line-height:1.75;margin:10px 0}.help-steps li{margin:8px 0}.help-dialog .help-principle{font-size:17px;line-height:1.7;padding:10px 7px;margin:12px 0}.help-dialog #helpStart{margin-top:14px}}
#game,#rule,.clear-panel,.carry-back{touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}#selectionBox,.ui-fixed-frame{position:fixed;pointer-events:none;border:2px solid #72b5ff;background:#428df52a;box-sizing:border-box}#selectionBox{z-index:50}#uiSelectionLayer{position:fixed;inset:0;z-index:9;pointer-events:none}.ui-fixed-frame{background:transparent}.range-selected{outline:2px solid #72b5ff!important;outline-offset:0;background-color:#3277d94d!important}.clear-panel [data-surface],.carried-copy [data-surface]{display:inline-block;white-space:pre}.clear-panel .selected,.carried-copy .selected{background:#3277d94d;color:inherit}.carried-copy{margin:0 0 9px;font-size:14px;line-height:1.6;color:#e9dff6;text-align:center}.carry-back{max-width:85%;padding:8px;background:#141929d9}.portrait .room-frame{aspect-ratio:620/1100}.portrait .directions{left:3%;right:auto;bottom:1.7%}body.selecting{cursor:crosshair}body.selecting #rule{cursor:crosshair}
:root{--selection:#ff9d3d;--selection-fill:#ff973a35}#selectionBox{border-color:var(--selection);background:var(--selection-fill)}.ui-fixed-frame{border-color:var(--selection)}#rule .selected,#backText.selected,.clear-panel .selected,.carried-copy .selected{background:var(--selection-fill);box-shadow:none;color:#fff4df}.range-selected{outline-color:var(--selection)!important;background-color:var(--selection-fill)!important}::selection{background:#a94e1c;color:#fff4df}
.treasure-corridor{position:fixed;pointer-events:none;z-index:1;background-color:#090e1c;background-image:linear-gradient(#1b223633,transparent 35% 65%,#02040b88),repeating-linear-gradient(90deg,transparent 0 28px,#1b24394d 29px 30px);border-top:2px solid #1a2237;border-bottom:2px solid #141c2d;box-shadow:0 4px 8px #0007}
*:focus,*:focus-visible{outline:none!important}.range-selected:focus,.range-selected:focus-visible{outline:2px solid var(--selection)!important;outline-offset:0}.rule-frame{user-select:text;-webkit-user-select:text;touch-action:auto}.rule-frame:before,.rule-frame:after{user-select:none;-webkit-user-select:none}#settingsButton{display:grid;place-items:center;padding:0;line-height:1;align-self:center}#settingsButton svg{display:block;transform:translateY(-1px)}.help-principle{text-wrap:balance}
#game{touch-action:manipulation}#rule,#rule span{user-select:text;-webkit-user-select:text;touch-action:auto;-webkit-touch-callout:default;cursor:text}#rule span{display:inline;white-space:pre}#rule .selected{background:var(--selection);color:#271708}#rule::selection,#rule span::selection{background:var(--selection);color:#271708}body.selecting #rule{cursor:text}.dark-world,.dark-world #game{background:#000}.dark-world .room-frame{background:#000}.dark-world .key-hint,.dark-world .edition{visibility:hidden}.dark-world .rule-frame{visibility:hidden}#status{min-height:1.4em}
#rule:focus,#rule:focus-visible{outline:none!important}.help-principle{position:relative;border:2px solid var(--selection);background:var(--selection-fill);box-shadow:none}.help-principle:before,.help-principle:after{content:"";position:absolute;left:-3px;right:-3px;height:4px;background:linear-gradient(to right,#ffbe73 0 4px,transparent 4px calc(100% - 4px),#ffbe73 calc(100% - 4px))}.help-principle:before{top:-3px}.help-principle:after{bottom:-3px}#reopen{color:#ffe7af;text-shadow:0 0 5px #ffd17b,0 0 16px #e5a955,0 0 28px #bd752a;filter:drop-shadow(0 0 5px #ffc97590);animation:diamond-glow 2.8s ease-in-out infinite}@keyframes diamond-glow{50%{color:#fff8df;text-shadow:0 0 8px #fff1bd,0 0 24px #ffc777,0 0 36px #d98b42;filter:drop-shadow(0 0 8px #ffd59b)}}.dark-world .room-frame{position:fixed;inset:0;max-width:none;max-height:none;aspect-ratio:auto;z-index:0}.dark-world .topbar{position:relative;z-index:3}.dark-world #helpButton,.dark-world #settingsButton,.dark-world #recordWarning,.dark-world #retry{visibility:hidden}.dark-world #reopen{position:fixed;right:32px;top:32px;width:40px;height:40px;font-size:35px;padding:0;z-index:4}.dark-world .directions{position:fixed;right:20px;left:auto;bottom:20px}.dark-world .clear-panel{position:fixed;left:50%;top:50%;width:min(420px,calc(100vw - 36px))}.dark-world footer{position:relative;z-index:2}.dark-world .portrait .directions{left:20px;right:auto}@media(max-width:650px){.dark-world .directions{left:20px;right:auto}.dark-world #stages{grid-row:1;grid-column:1/3;justify-content:flex-start;padding-left:5px}}@media(prefers-reduced-motion:reduce){#reopen{animation:none}}

/* One continuous input surface; blank corners belong to the pad, never the board. */
#game{height:var(--app-height,100dvh)}.play-area{position:relative;gap:8px}
#directions{--pad-size:51px;grid-template-columns:repeat(3,var(--pad-size));grid-template-rows:repeat(2,var(--pad-size));width:calc(var(--pad-size)*3);height:calc(var(--pad-size)*2);gap:0;padding:0;background:#181b2a;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-user-drag:none;-webkit-tap-highlight-color:transparent}
#directions button{width:100%;height:100%;min-width:0;min-height:0;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-user-drag:none;-webkit-appearance:none;appearance:none;-webkit-text-size-adjust:100%;box-shadow:inset 3px 3px #55546c,inset -3px -3px #111321;transform:none}
#directions button.active{transform:none;box-shadow:inset 3px 3px #35284f,inset -3px -3px #766194}
.portrait #directions{--pad-size:clamp(44px,11.3vw,48px);position:relative;inset:auto;flex:none;align-self:flex-end}
.portrait .room-frame{aspect-ratio:620/820}
.portrait .play-area[data-dock=below]{flex-direction:column;align-items:center;justify-content:center}
.portrait .play-area[data-dock=beside]{flex-direction:row;align-items:center;justify-content:center}
.portrait .play-area[data-dock=beside] #directions{align-self:flex-end}
.portrait #game{grid-template-rows:80px 76px minmax(0,1fr) 16px;gap:8px}
.portrait footer .key-hint,.portrait footer .edition{display:none}
.portrait .clear-panel{max-height:100%;overflow:auto}.portrait .clear-panel h1{font-size:clamp(13px,calc(var(--room-width,250px)*.065),21px)}.portrait .clear-actions{flex-wrap:wrap}.portrait .clear-actions .paper-button{max-width:100%}
.dark-world #directions{position:fixed;left:auto;right:max(12px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));z-index:4}
@media(max-height:700px){.portrait #game{padding-top:max(7px,env(safe-area-inset-top));padding-bottom:max(7px,env(safe-area-inset-bottom));grid-template-rows:68px 58px minmax(0,1fr) 14px;gap:6px}.portrait .topbar{grid-template-rows:30px 34px;row-gap:4px}.portrait .stage-button{height:34px;width:36px;font-size:23px}.portrait .rule-frame{min-height:50px;padding:7px 16px}.portrait #rule{font-size:clamp(15px,4.1vw,18px)}.portrait #directions{--pad-size:44px}}
@media(max-height:530px) and (min-width:651px){#directions{--pad-size:40px}}
/* Native text selection belongs only to the rule, never the controls/page. */
html,body,body *{user-select:none!important;-webkit-user-select:none!important;-webkit-touch-callout:none}
#rule,#rule span{user-select:text!important;-webkit-user-select:text!important;-webkit-touch-callout:default}
body.pad-operating #rule,body.pad-operating #rule span{user-select:none!important;-webkit-user-select:none!important;-webkit-touch-callout:none}
#directions svg{width:48%;height:48%;fill:currentColor;display:block;margin:auto;pointer-events:none}
/* A translucent, continuously angled stick overlays the room without shrinking it. */
#directions.joystick{--stick-size:108px;position:absolute;inset:auto 12px 12px auto;display:block;width:var(--stick-size);height:var(--stick-size);border-radius:50%;padding:0;border:2px solid #c8bce063;background:radial-gradient(circle,#6d608944 0 37%,#302d454d 39% 66%,#aaa0c624 68%);box-shadow:inset 0 0 18px #080a1740,0 2px 8px #0003;opacity:.62;z-index:4;overflow:hidden;touch-action:none;cursor:default}
#directions.joystick .stick-knob{display:block;position:absolute;width:42%;height:42%;left:29%;top:29%;border-radius:50%;background:radial-gradient(circle at 35% 28%,#d8d0ee,#9182b8 65%,#5c507e);border:2px solid #ddd4efaa;box-shadow:0 2px 7px #03061188,inset 0 1px 3px #eee6fa77;transform:translate(var(--stick-x,0px),var(--stick-y,0px));pointer-events:none}
#directions.joystick.active{opacity:.78;border-color:#e1d3f099}
.portrait #directions.joystick{--stick-size:clamp(92px,25vw,108px);position:absolute;left:12px;right:auto;bottom:12px}
.dark-world #directions.joystick{position:fixed;right:max(12px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));left:auto}
.dark-world.portrait #directions.joystick{left:max(12px,env(safe-area-inset-left));right:auto}
@media(pointer:coarse),(max-width:650px){#directions.joystick{left:12px;right:auto;--stick-size:clamp(92px,25vw,108px)}.dark-world #directions.joystick{left:max(12px,env(safe-area-inset-left));right:auto}}
/* Keep the clear diamond inside its own stage button at every viewport size. */
.stage-button{position:relative}
.stage-button.solved::after{content:"";position:absolute;display:block;inset:auto 1px 1px auto;margin:0;width:11px;height:11px;background:transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2 15 9 22 12 15 15 12 22 9 15 2 12 9 9Z' fill='none' stroke='%23ffe7af' stroke-width='2' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;filter:drop-shadow(0 0 3px #efb95499);pointer-events:none}
