:root{color-scheme:dark;--bg:#171b13;--panel:#242d1e;--lime:#d4fa53;--ink:#eef4e4;--muted:#b0bea0;--line:#415335;font-family:'PingFang SC','Microsoft YaHei',sans-serif;color:var(--ink);background:#0d100b}*{box-sizing:border-box}body{margin:0;-webkit-text-size-adjust:100%;background:var(--bg);min-height:100vh;min-height:100dvh}button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button{font:inherit;color:inherit;border:0;cursor:pointer}button:disabled{opacity:.36;cursor:default}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid var(--lime);outline-offset:2px}button:active:not(:disabled){filter:brightness(.9)}.phone-game{width:100%;max-width:460px;margin:0 auto;padding:calc(9px + env(safe-area-inset-top,0px)) 13px calc(12px + env(safe-area-inset-bottom,0px));overflow:hidden}.app-header{display:flex;align-items:center;gap:4px;height:48px}.app-name{flex:1}.logo{display:block;font:italic 19px/1 Impact,'Arial Narrow',sans-serif;letter-spacing:.2px}.logo>span{color:var(--lime)}h1{font-size:11px;font-weight:500;color:#bac9a6;letter-spacing:2px;margin:5px 0 0}.icon-button{width:44px;height:44px;display:grid;place-items:center;background:transparent;font-size:21px;border-radius:50%;color:#d4e5b8}.icon-button.on{color:var(--lime);background:#37412a}.shift-head{display:flex;align-items:center;gap:11px;padding:10px 1px 8px}.mascot{height:50px;width:50px;flex-shrink:0;border:2px solid #bad879;outline:2px solid #455735;border-radius:13px;overflow:hidden;transform:rotate(-5deg);background:#5f6b50}.mascot img{display:block;width:100%;height:100%;object-fit:cover;transform:scale(1.8);transform-origin:45% 42%}.mascot.close-up img{transform:none}.shift-copy{min-width:0;flex:1}.shift-line{display:flex;align-items:center;gap:11px;height:26px}.level-picker{background:none;text-align:left;padding:0;min-height:44px;display:flex;align-items:center}.level-picker strong{font-size:19px;letter-spacing:-.5px}.level-picker strong span{font-size:18px;color:var(--lime)}.shift-badge{border:1px solid #4e6934;font-size:10px;color:#c3e594;border-radius:4px;padding:2px 5px;line-height:1.4}.shift-copy p{font-size:11px;color:#b1c198;margin:6px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stats{display:flex;align-items:center;justify-content:space-between;gap:8px;height:46px;padding:0 1px}.hearts{color:#ffa4b5;font-size:20px;letter-spacing:0;white-space:nowrap}.hearts .lost{color:#505e40}.progress{display:flex;align-items:center;gap:6px}.progress #found{font:20px Impact,'Arial Narrow',sans-serif;letter-spacing:1px;color:#e1f8b4}.progress #difficulty{font-size:10px;color:#b9c9a3}.timer{background:transparent;display:flex;align-items:center;gap:8px;min-height:44px;padding:0 2px;font:13px monospace;color:#c4d6a8}.timer>span:last-child{color:var(--lime);font-size:13px}.board-wrap{position:relative;padding:3px;background:#11180c;border:1px solid #6e8054;border-radius:11px;box-shadow:0 5px 0 #070c05,0 6px 0 #3f5031}.board{display:grid;aspect-ratio:1;overflow:hidden;border-radius:6px;background:#14200d;user-select:none;-webkit-user-select:none;touch-action:pan-y}.cell{position:relative;display:grid;place-items:center;min-height:0;min-width:0;padding:0;overflow:hidden;background:var(--color);border-right:1px solid #2f44234a;border-bottom:1px solid #2f44234a;touch-action:manipulation;color:#22341a}.cell.edge-right{border-right:3px solid #273d1c}.cell.edge-bottom{border-bottom:3px solid #273d1c}.cell:disabled{opacity:1}.region-label{position:absolute;z-index:2;top:5px;left:6px;font:10px monospace;color:#283f2399}.portrait{display:block;position:relative;overflow:hidden;width:100%;height:100%;border-radius:inherit}.portrait img{display:block;width:100%;height:100%;object-fit:cover;transform:scale(var(--zoom,1));transform-origin:var(--focus-x,50%) var(--focus-y,50%);pointer-events:none}.cell .portrait{position:absolute;inset:2px;width:calc(100% - 4px);height:calc(100% - 4px);border-radius:3px}.cell.placed .region-label,.cell.revealed-error .region-label{background:#f2f8e5db;border-radius:2px;color:#273b1c;padding:1px 2px;top:3px;left:3px}.state-badge{position:absolute;right:3px;bottom:3px;z-index:3;width:17px;height:17px;border-radius:4px;display:grid;place-items:center;background:var(--lime);color:#294815;font-size:12px;font-weight:800;box-shadow:0 0 0 1px #263c19}.revealed-error .state-badge{background:#ff9eb1;color:#582336}.exclude-cross{font-size:36px;font-weight:300;color:#3b542c80;line-height:1}.cell.marked{filter:saturate(.65)}.cell.hint-cell{box-shadow:inset 0 0 0 3px #274b20}.cell.hint-cell:after{content:'';position:absolute;inset:7px;border:2px dashed #2f4f24;border-radius:4px;pointer-events:none}.cell.wrong{animation:shake .25s}.instruction{font-size:11px;color:#bed0a4;text-align:center;padding:13px 0 10px;line-height:1.4}.mode-switch{display:flex;gap:9px}.mode-switch button{flex:1;display:flex;align-items:center;gap:9px;background:#303e25;border:1px solid #50663c;box-shadow:0 3px 0 #0d1608;border-radius:9px;padding:9px 13px;min-height:52px;text-align:left}.mode-switch button>span{font-size:30px;line-height:1}.mode-switch button>div{font-size:15px;font-weight:750;line-height:1.2}.mode-switch small{display:block;font-size:9px;font-weight:400;margin-top:4px}.mode-dot{width:7px;height:7px;border:1px solid #819767;border-radius:50%;margin-left:auto}.mode-switch .active{background:var(--lime);border-color:#e5ff9d;color:#233518}.active .mode-dot{background:#354e20;border-color:#354e20}.tools{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;padding-top:8px}.tools button{display:flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:0;background:transparent;color:#c3d4aa;font-size:12px}.tools button>span{font-size:23px}.tools #hint{color:var(--lime)}.feedback{display:flex;gap:7px;align-items:flex-start;min-height:45px;border:1px solid #3a5028;background:#23311a;padding:8px 10px;border-radius:8px}.feedback-icon{font-size:20px;color:var(--lime);line-height:1}.feedback p{margin:0;font-size:11px;color:#d7e6c3;line-height:1.65}.tasks-panel{padding-top:14px}.tasks-heading{display:flex;align-items:center;justify-content:space-between;margin:0 0 9px;font-size:10px;color:#b8cba0}.tasks-heading strong{font-size:12px;color:#d4e8b7;font-weight:650}.tasks-heading #taskCount{margin-left:6px;font:11px monospace;color:var(--lime)}.tasks-heading>span{font-size:10px}.day-tasks{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}.todo-card{border:1px solid #465a34;border-radius:8px;background:#242f1b;padding:4px;color:#c8dcb1;min-width:0;min-height:44px}.todo-card:disabled{opacity:1}.todo-card .portrait,.task-blank{aspect-ratio:1;width:100%;height:auto;border-radius:4px;display:grid;place-items:center}.task-blank{background:#354329;border:1px dashed #69874e;color:#b4cd91;font:20px Impact,sans-serif}.task-title{display:block;font-size:9px;margin-top:5px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.todo-card small{display:none}.todo-card.done{background:#334822;border-color:#a0c86c}.todo-card.done .task-title{color:#e3ffb8}footer{display:flex;justify-content:space-between;align-items:center;padding:7px 0 0;font-size:10px;color:#aabe92;min-height:44px}footer>a{display:flex;align-items:center;min-height:44px}.pause-cover{position:absolute;z-index:5;inset:3px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#1d2c15f5;border-radius:6px;padding:24px;text-align:center}.pause-cover[hidden]{display:none}.break-title{font:58px/.9 Impact,sans-serif;color:var(--lime);transform:rotate(-6deg)}.pause-cover h2{font-size:22px;margin:20px 0 0}.pause-cover p{font-size:12px;color:#c0d6a2;line-height:1.8}.primary,.secondary{width:100%;min-height:48px;border-radius:9px;padding:13px 16px;font-size:14px;font-weight:650;margin-top:12px}.primary{background:var(--lime);color:#24351a;box-shadow:0 3px 0 #485e2c}.secondary{background:#3c502d;color:#dcefc6}dialog{position:fixed;color:#eff8e4;background:#24331b;border:1px solid #6f8952;border-radius:22px 22px 0 0;width:100%;max-width:460px;margin:auto auto 0;inset:auto 0 0;padding:26px 22px calc(20px + env(safe-area-inset-bottom,0px));max-height:88vh;max-height:88dvh;overflow-y:auto;box-shadow:0 -12px 60px #0006}dialog::backdrop{background:#0a1209bb;backdrop-filter:blur(4px)}dialog:not([open]){display:none}.dialog-close{position:absolute;top:5px;right:9px;width:44px;height:44px;font-size:27px;background:transparent;color:#cce0b0}dialog .eyebrow{font:10px monospace;letter-spacing:1px;color:var(--lime)}dialog h2{font-size:25px;line-height:1.4;margin:12px 0}dialog p{font-size:13px;line-height:1.8;color:#c7dcb0}dialog ol{font-size:14px;line-height:2.1;padding-left:20px}.result{text-align:center}.work-photo,.off-photo{display:block;aspect-ratio:1;width:min(100%,230px);max-height:230px;object-fit:cover;border-radius:14px;margin:5px auto 19px}.done-list{display:flex;flex-wrap:wrap;justify-content:center;gap:5px}.done-list span{font-size:10px;padding:5px 7px;background:#3c5428;border-radius:4px;color:#d8f3b5}.result-stats{display:flex;justify-content:center;gap:30px;margin:17px 0}.result-stats strong{font:25px Impact,sans-serif;display:block}.result-stats small{font-size:10px;display:block;margin-top:5px;color:#b5cc99}.level-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-top:18px}.level-grid button{height:52px;border-radius:8px;background:#3b5429;position:relative;font:22px Impact,sans-serif}.level-grid .current{background:var(--lime);color:#243d14}.level-grid .done:after{content:'✓';position:absolute;right:6px;top:3px;font-size:12px}.toast{position:fixed;z-index:20;bottom:calc(24px + env(safe-area-inset-bottom,0px));left:50%;transform:translateX(-50%);background:var(--lime);color:#263c19;border:1px solid #e2ff92;padding:11px 16px;border-radius:8px;font-size:12px;box-shadow:0 4px 20px #0005;opacity:0;pointer-events:none;white-space:nowrap}.toast.show{opacity:1}.reaction{position:absolute;z-index:4;bottom:15px;left:50%;transform:translateX(-50%) rotate(-4deg);pointer-events:none;font-size:17px;font-weight:800;padding:9px 13px;background:var(--lime);color:#294318;border:2px solid #273e18;box-shadow:3px 4px 0 #16240d70;white-space:nowrap;opacity:0}.reaction.show{animation:reaction 1s both}.reaction.bad{background:#ffa5b8;color:#582a36}@keyframes reaction{0%,100%{opacity:0;translate:0 6px}15%,75%{opacity:1;translate:0 0}}@keyframes shake{25%{transform:translateX(-2px)}75%{transform:translateX(2px)}}@media(min-width:600px){body{background:#0d110a;padding:25px 0;background-image:linear-gradient(#c5e49c04 1px,transparent 1px),linear-gradient(90deg,#c5e49c04 1px,transparent 1px);background-size:40px 40px}.phone-game{background:var(--bg);border:1px solid #465936;border-radius:25px;padding:17px 17px 12px;box-shadow:0 25px 80px #0008}dialog{bottom:20px;border-radius:20px}.app-header{height:52px}.shift-head{padding:13px 0}.tasks-panel{padding-top:17px}}@media(max-height:740px) and (max-width:599px){.phone-game{padding-top:calc(4px + env(safe-area-inset-top,0px))}.app-header{height:44px}.shift-head{padding:6px 0}.mascot{width:44px;height:44px}.shift-copy p{margin-top:3px}.stats{height:41px}.instruction{padding:11px 0 8px}.mode-switch button{min-height:48px;padding:7px 11px}.tools{padding-top:4px}.feedback{min-height:40px;padding:6px 8px}.tasks-panel{padding-top:10px}}@media(max-width:350px){.phone-game{padding-left:10px;padding-right:10px}.shift-badge{display:none}.shift-copy p{font-size:10px}.progress{gap:4px}.progress #difficulty{font-size:9px}.hearts{font-size:18px}.timer{font-size:12px}.tasks-heading>span{font-size:9px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.reaction.show{opacity:1}}
/* The game, not a poster: keep controls visible in a phone webview. */
.app-header{gap:8px;height:52px}.app-header .mascot{width:39px;height:39px;border-radius:10px;margin-right:3px}.shift-head{padding:5px 1px 0;min-height:32px}.shift-copy{display:flex;align-items:center;justify-content:space-between;gap:8px}.shift-line{flex-shrink:0;gap:8px}.level-picker strong{font-size:16px}.shift-badge{display:none}.shift-copy p{font-size:10px;margin:0;max-width:205px}.stats{height:42px}.instruction{padding:11px 0 9px}.board-wrap{width:100%;max-width:max(270px,calc(100svh - 322px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px)));margin-inline:auto}.tools{padding-top:5px}.tools button{min-height:44px}.feedback{min-height:41px}.tasks-panel{padding-top:12px}
@media(min-width:600px){.board-wrap{max-width:none}.app-header{height:54px}.shift-head{padding:12px 1px 3px}.stats{height:45px}}
