:root{--cream: #fff8e7;--ink: #3a3340;--teal: #4fa89a;--teal-dark: #357f74;--coral: #ee6c5b;--butter: #f2cf4a;--shadow: 0 6px 0 rgba(30, 20, 40, .25), 0 10px 24px rgba(10, 5, 20, .35);--safe-t: env(safe-area-inset-top, 0px);--safe-r: env(safe-area-inset-right, 0px);--safe-b: env(safe-area-inset-bottom, 0px);--safe-l: env(safe-area-inset-left, 0px);font-family:Fredoka,Trebuchet MS,system-ui,sans-serif;color:var(--ink)}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:#14111f;-webkit-user-select:none;user-select:none;touch-action:none;overscroll-behavior:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}#game{display:block;width:100vw;height:100vh;height:100dvh}#overlay,#hud,#screen{position:fixed;inset:0;pointer-events:none}kbd{display:inline-block;min-width:1.6em;padding:.05em .45em;margin:0 .1em;border-radius:6px;background:#fff;box-shadow:0 2px #c9bfa6;font:600 .85em Fredoka,system-ui,sans-serif;text-align:center}.label{position:absolute;left:0;top:0;will-change:transform;white-space:nowrap}.badge{font-size:20px;line-height:1;padding:5px 7px;border-radius:999px;background:var(--cream);box-shadow:0 3px #1e14284d;opacity:0;transition:opacity .2s}.pointer{display:flex;flex-direction:column;align-items:center;font-size:26px;line-height:1;opacity:0;transition:opacity .2s;animation:bob .7s ease-in-out infinite alternate;filter:drop-shadow(0 2px 0 rgba(30,20,40,.35))}.pointer i{font-style:normal;font-size:18px;color:var(--coral)}.pointer.show{opacity:1}@keyframes bob{0%{margin-top:-8px}to{margin-top:4px}}.badge.show{opacity:1}.badge.dim{opacity:.45}.badge.urgent{outline:3px solid var(--coral);animation:throb .7s ease-in-out infinite alternate}.badge:after{content:"";position:absolute;left:50%;bottom:-6px;margin-left:-6px;border:6px solid transparent;border-top-color:var(--cream);border-bottom:0}@keyframes throb{to{outline-offset:4px;outline-color:#ee6c5b59}}.dial{width:38px;height:38px;border-radius:50%;background:conic-gradient(var(--butter) calc(var(--p, 0) * 1turn),rgba(255,255,255,.4) 0);-webkit-mask:radial-gradient(circle,transparent 10px,#000 11px);mask:radial-gradient(circle,transparent 10px,#000 11px);opacity:0}.dial.show{opacity:1}.pop{animation:pop 1.4s ease-out forwards}.pop.emote{font-size:26px;padding:4px 8px;border-radius:14px;background:var(--cream);box-shadow:0 3px #1e14284d}.pop.emote.bad{background:#ffd9d2}.pop.sparkle{font-size:30px}.pop.tip{font-size:22px;font-weight:700;color:#ffe27a;text-shadow:0 2px 0 #7a5a12}@keyframes pop{0%{opacity:0;scale:.4}15%{opacity:1;scale:1.15}25%{scale:1}75%{opacity:1}to{opacity:0}}#hud{opacity:0;transition:opacity .4s}#hud.show{opacity:1}.panel{position:absolute;top:calc(16px + var(--safe-t));padding:10px 16px;border-radius:16px;background:var(--cream);box-shadow:var(--shadow)}.shift{left:calc(16px + var(--safe-l));display:flex;align-items:center;gap:18px}.clock{font-size:28px;font-weight:700;line-height:1.1;font-variant-numeric:tabular-nums}.night{font-size:14px;font-weight:500;color:var(--teal-dark);letter-spacing:.04em;text-transform:uppercase}.hygiene{width:190px;padding-left:18px;border-left:2px solid #e6dcc3}.caption{margin-bottom:4px;font-size:13px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.meter{height:14px;border-radius:999px;background:#e6dcc3;overflow:hidden}.fill{height:100%;border-radius:999px;background:var(--teal);transition:width .3s,background .3s}.hygiene[data-level=poor] .fill{background:var(--butter)}.hygiene[data-level=bad] .fill{background:var(--coral)}.caption .note{margin-left:4px;font-weight:700;letter-spacing:0;text-transform:none;color:var(--coral)}.hygiene:not(.nerves){width:230px}.nerves{width:150px}.nerves .face:after{content:"😌"}.nerves[data-level=poor] .face:after{content:"😬"}.nerves[data-level=bad] .face:after{content:"🤯"}.score{right:calc(16px + var(--safe-r));display:flex;align-items:center;gap:16px}.stat{display:flex;align-items:center;gap:6px;font-size:20px}.stat b{min-width:1.4em;font-weight:700;font-variant-numeric:tabular-nums}.strikes{display:flex;gap:4px;padding-left:14px;border-left:2px solid #e6dcc3}.strikes i{width:12px;height:20px;border-radius:4px;background:#e6dcc3}.strikes i.on{background:var(--coral)}.strikes.shake{animation:shake .4s}@keyframes shake{25%{translate:-4px 0}50%{translate:4px 0}75%{translate:-2px 0}}.prompt{position:absolute;left:50%;bottom:28px;padding:10px 20px;border-radius:999px;background:var(--cream);box-shadow:var(--shadow);font-size:18px;font-weight:500;translate:-50% 12px;opacity:0;transition:opacity .15s,translate .15s}.prompt.show{translate:-50% 0;opacity:1}#screen{display:grid;place-items:center;background:#14111f8c;opacity:0;transition:opacity .3s}#screen.show{opacity:1;pointer-events:auto}.loading{color:var(--cream);font-size:22px;letter-spacing:.08em;animation:beckon 1.4s ease-in-out infinite}.splash{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:16px;background:radial-gradient(ellipse at center,#14111f73,#0a0712f0);color:var(--cream);text-align:center;cursor:pointer}.splash .neon{padding:26px 60px 22px;border:4px solid #ffe1ef;border-radius:30px;box-shadow:0 0 10px #ff3d9a,0 0 34px #ff3d9ab3,inset 0 0 10px #ff3d9a,inset 0 0 34px #ff3d9a59}.splash .zh{font:900 clamp(88px,19vw,190px) / 1 "Noto Sans TC",sans-serif;color:#fff1f8;text-shadow:0 0 8px #ff3d9a,0 0 26px #ff3d9a,0 0 70px #ff3d9a;animation:flicker 6s linear infinite}.splash h1{margin:10px 0 0;font-size:clamp(30px,6.4vw,68px);font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#effff6;text-shadow:0 0 6px #3dff86,0 0 22px #3dff86,0 0 54px rgba(61,255,134,.7)}.splash .strap{margin:26px 0 0;font-size:clamp(16px,2.2vw,22px);opacity:.85}.splash .go{margin:26px 0 0;font-size:clamp(18px,2.6vw,26px);font-weight:600;color:var(--butter);animation:beckon 1.4s ease-in-out infinite}.splash .sound{margin:14px 0 0;font-size:15px;opacity:.7}.splash kbd{color:var(--ink)}@keyframes beckon{50%{opacity:.35}}@keyframes flicker{0%,41%,43%,45%,78%,80%,to{opacity:1}42%,44%,79%{opacity:.45}}@media(prefers-reduced-motion:reduce){.splash .zh,.splash .go,.loading{animation:none}}.card{width:min(480px,calc(100vw - 32px));padding:28px 32px 30px;border-radius:24px;background:var(--cream);box-shadow:var(--shadow);text-align:center}.card h1{margin:6px 0 4px;font-size:34px;font-weight:700;letter-spacing:.02em}.card .tag{margin:0 0 18px;font-size:17px;color:#6b6272}.tally{width:100%;margin:0 0 22px;border-collapse:collapse;font-size:18px}.tally td{padding:7px 4px;border-bottom:2px dashed #e6dcc3;text-align:left}.tally td:last-child{font-weight:700;text-align:right;font-variant-numeric:tabular-nums}.card button{padding:12px 34px;border:0;border-radius:999px;background:var(--teal);box-shadow:0 5px 0 var(--teal-dark);color:#fff;font:700 20px Fredoka,system-ui,sans-serif;cursor:pointer}.card button:hover{filter:brightness(1.08)}.card button:active{translate:0 3px;box-shadow:0 2px 0 var(--teal-dark)}.menu{width:min(1040px,calc(100vw - 32px));max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);overflow-y:auto;touch-action:pan-y;padding:26px 30px 22px;border-radius:24px;background:var(--cream);box-shadow:var(--shadow)}.masthead{display:flex;align-items:center;gap:18px;margin-bottom:18px}.masthead .zh{font:900 60px/1 Noto Sans TC,sans-serif;color:var(--teal)}.masthead h1{margin:0;font-size:32px;font-weight:700}.masthead .tag{margin:2px 0 0;font-size:16px;color:#6b6272}.shifts{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}.shift-card{position:relative;display:flex;flex-direction:column;gap:3px;padding:14px 16px 12px;border:0;border-radius:16px;background:#fff;box-shadow:0 4px #e2d7bd;color:var(--ink);font:inherit;text-align:left;cursor:pointer;transition:translate .1s,box-shadow .1s}.shift-card:hover{translate:0 -2px;box-shadow:0 6px 0 var(--teal)}.shift-card:active{translate:0 2px;box-shadow:0 2px 0 var(--teal)}.shift-card .num{position:absolute;top:12px;right:14px;width:22px;height:22px;border-radius:6px;background:var(--cream);box-shadow:0 2px #c9bfa6;font-size:13px;font-weight:600;line-height:22px;text-align:center}.shift-card:disabled{cursor:default;translate:none;box-shadow:0 4px #e2d7bd}.venue{margin-top:16px;padding:14px 16px 16px;border-radius:18px;background:#f3ead3}.venue header{display:flex;align-items:center;gap:14px;margin-bottom:12px}.venue header .zh{font:900 30px/1 Noto Sans TC,sans-serif;color:var(--teal)}.venue header .name,.venue header .terms{display:flex;flex-direction:column;gap:1px}.venue header .name{flex:1}.venue header b{font-size:19px;font-weight:600}.venue header span{font-size:14px;color:#6b6272}.venue header .terms{text-align:right;white-space:nowrap}.venue header .terms b{font-size:16px;color:var(--teal-dark)}.venue.locked .shifts{opacity:.5}.venue.locked .shift-card .blurb,.venue.locked .shift-card .best{display:none}.venue .wanted{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 12px;font-size:15px;font-weight:600}.venue .wanted span{padding:3px 12px;border-radius:999px;background:#fff;box-shadow:0 2px #e2d7bd;font-weight:400}.venue .wanted span.met{background:#dff3e8;color:var(--teal-dark)}.shift-card .zh{font:900 24px/1.1 Noto Sans TC,sans-serif;color:var(--teal-dark)}.shift-card b{font-size:19px;font-weight:600}.shift-card .where{font-size:13px;font-weight:600;color:var(--coral)}.shift-card .blurb{flex:1;margin-top:4px;font-size:14px;line-height:1.35;color:#6b6272}.shift-card .best{min-height:1.2em;margin-top:6px;font-size:13px;font-weight:600;color:var(--teal-dark)}.menu .how{margin:18px 0 0;font-size:14px;line-height:1.9;color:#6b6272;text-align:center}.actions{display:flex;flex-wrap:wrap;justify-content:center;gap:12px}.card button.quiet{background:#e6dcc3;box-shadow:0 5px #c9bfa6;color:var(--ink)}.card button.quiet:active{box-shadow:0 2px #c9bfa6}.banner{position:absolute;left:50%;top:92px;padding:10px 24px;border-radius:999px;background:var(--coral);box-shadow:var(--shadow);color:#fff;font-size:20px;font-weight:600;white-space:nowrap;translate:-50% -16px;opacity:0;transition:opacity .25s,translate .25s}.banner.show{translate:-50% 0;opacity:1}.hand{top:auto;left:calc(16px + var(--safe-l));bottom:calc(22px + var(--safe-b));display:flex;align-items:baseline;gap:10px;padding:8px 16px}.hand .caption{margin:0;color:#8a8190}.hand b{font-size:19px;font-weight:600}.hand .empty{font-weight:400;color:#a39aa8}.hand small{font-size:14px;font-weight:400;color:#6b6272}.prompt small{display:block;font-size:13px;color:#8a8190}.hint{position:absolute;left:50%;bottom:86px;max-width:min(680px,calc(100vw - 32px));padding:10px 18px;border-radius:14px;background:#fffdf5;border:2px solid var(--butter);box-shadow:var(--shadow);font-size:16px;line-height:1.4;text-align:center;translate:-50% 12px;opacity:0;transition:opacity .25s,translate .25s}.hint.show{translate:-50% 0;opacity:1}.cupboard{margin-left:auto;padding:10px 18px;border:0;border-radius:14px;background:var(--butter);box-shadow:0 4px #c9a52a;color:var(--ink);font:600 17px Fredoka,system-ui,sans-serif;text-align:left;cursor:pointer}.cupboard small{display:block;font-size:13px;font-weight:400}.cupboard:hover{filter:brightness(1.05)}.cupboard:active{translate:0 2px;box-shadow:0 2px #c9a52a}.shop{width:min(760px,calc(100vw - 32px))}.shop .masthead .zh{font-size:48px}.shop h2{margin:0 0 8px;font-size:18px;font-weight:600}.shop h2 small{font-size:14px;font-weight:400;color:#6b6272}.upgrades{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:10px;margin-bottom:20px}.upgrade{display:flex;align-items:center;gap:12px;padding:10px 14px;border:0;border-radius:14px;background:#fff;box-shadow:0 3px #e2d7bd;color:var(--ink);font:inherit;text-align:left;cursor:pointer}.upgrade:not(:disabled):hover{box-shadow:0 3px 0 var(--teal)}.upgrade:disabled{cursor:default;opacity:.55}.upgrade.owned{opacity:1;background:#eef7f2}.upgrade .icon{font-size:26px}.upgrade .what{flex:1;display:flex;flex-direction:column}.upgrade .what b{font-size:16px;font-weight:600}.upgrade .what span{font-size:13px;color:#6b6272}.upgrade .cost{font-size:16px;font-weight:700;color:var(--teal-dark);white-space:nowrap}.shop .actions button{padding:10px 30px;border:0;border-radius:999px;background:var(--teal);box-shadow:0 5px 0 var(--teal-dark);color:#fff;font:700 18px Fredoka,system-ui,sans-serif;cursor:pointer}.continue{display:flex;align-items:baseline;gap:12px;width:100%;margin-bottom:2px;padding:12px 18px;border:0;border-radius:16px;background:var(--teal);box-shadow:0 4px 0 var(--teal-dark);color:#fff;font:600 18px Fredoka,system-ui,sans-serif;text-align:left;cursor:pointer}.continue b{margin-left:auto;font-size:16px;font-weight:500;opacity:.92}.continue:hover{filter:brightness(1.08)}.continue:active{translate:0 2px;box-shadow:0 2px 0 var(--teal-dark)}#touch{position:fixed;inset:0;display:none;pointer-events:none}#touch.on.live{display:block}#touch .pad{position:absolute;left:0;top:18%;bottom:0;width:46%;pointer-events:auto;touch-action:none}#touch .pad:after{content:"";position:absolute;left:calc(34px + var(--safe-l));bottom:calc(34px + var(--safe-b));width:92px;height:92px;border:2px dashed rgba(255,248,231,.4);border-radius:50%;transition:opacity .15s}#touch .pad:has(+.stick.on):after{opacity:0}#touch .stick{position:absolute;left:0;top:0;width:0;height:0;opacity:0;transition:opacity .12s}#touch .stick.on{opacity:1}#touch .stick:before{content:"";position:absolute;left:-58px;top:-58px;width:116px;height:116px;border:2px solid rgba(255,248,231,.55);border-radius:50%;background:#fff8e729}#touch .stick i{position:absolute;left:-26px;top:-26px;width:52px;height:52px;border-radius:50%;background:#fff8e7e0;box-shadow:0 3px #1e14284d}.tb{position:absolute;display:grid;place-items:center;padding:0;border:0;border-radius:50%;background:#fff8e7eb;box-shadow:0 4px #1e14284d;color:var(--ink);font:600 16px Fredoka,system-ui,sans-serif;pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;transition:opacity .15s}.tb span{font-size:30px;line-height:1}.tb b{position:absolute;right:-2px;top:-4px;width:22px;height:22px;border-radius:50%;background:var(--ink);color:var(--cream);font-size:13px;line-height:22px}.tb.down{translate:0 3px;background:var(--butter);box-shadow:0 1px #1e14284d}.tb.idle{opacity:.4}.tb.none{display:none}.tb.use{right:calc(18px + var(--safe-r));bottom:calc(22px + var(--safe-b));width:86px;height:86px}.tb.use span{font-size:38px}.tb.take{right:calc(116px + var(--safe-r));bottom:calc(14px + var(--safe-b));width:62px;height:62px}.tb.swap{right:calc(34px + var(--safe-r));bottom:calc(122px + var(--safe-b));width:50px;height:50px}.tb.swap span{font-size:22px}.tb.pause{right:calc(12px + var(--safe-r));top:calc(60px + var(--safe-t));width:40px;height:40px;background:#fff8e7c7;font-size:18px}body.thumbs .hand{top:calc(60px + var(--safe-t));bottom:auto}body.thumbs .prompt,body.thumbs .hint{max-width:calc(100vw - 400px)}#rotate{position:fixed;inset:0;z-index:10;display:none;place-items:center;padding:24px;background:#14111f;color:var(--cream);font-size:20px;text-align:center}#rotate .turn{font-size:72px;animation:tilt 1.6s ease-in-out infinite alternate}#rotate small{opacity:.7}@keyframes tilt{0%{rotate:0deg}to{rotate:-90deg}}@media(orientation:portrait)and (pointer:coarse){#rotate{display:grid}}@media(max-height:520px),(max-width:820px){.panel{top:calc(8px + var(--safe-t));padding:6px 10px;border-radius:12px}.shift{left:calc(8px + var(--safe-l));gap:10px}.clock{font-size:18px}.night{max-width:104px;overflow:hidden;font-size:9px;text-overflow:ellipsis;white-space:nowrap}.hygiene{padding-left:10px}.hygiene:not(.nerves){width:118px}.nerves{width:74px}.caption{margin-bottom:3px;overflow:hidden;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.meter{height:9px}.score{right:calc(8px + var(--safe-r));gap:9px}.stat{gap:3px;font-size:15px}.stat b{min-width:1.1em}.strikes{gap:2px;padding-left:8px}.strikes i{width:7px;height:15px;border-radius:3px}.banner{top:calc(52px + var(--safe-t));max-width:calc(100vw - 120px);padding:6px 16px;font-size:14px;text-align:center;white-space:normal}.prompt{bottom:calc(10px + var(--safe-b));padding:5px 14px;font-size:13px;text-align:center}.hint{bottom:calc(46px + var(--safe-b));max-width:min(440px,calc(100vw - 32px));padding:6px 12px;font-size:12.5px;line-height:1.3}.hand{top:auto;left:calc(8px + var(--safe-l));bottom:calc(10px + var(--safe-b));padding:5px 10px}body.thumbs .hand{top:calc(57px + var(--safe-t));bottom:auto}.tb.pause{top:calc(52px + var(--safe-t))}.hand .caption{display:none}.hand b{font-size:14px}.hand small{font-size:12px}.badge{padding:4px 5px;font-size:16px}.pop.emote{font-size:20px}.pop.sparkle{font-size:22px}.menu{width:calc(100vw - 16px - var(--safe-l) - var(--safe-r));max-height:calc(100dvh - 16px);padding:14px 16px 12px;border-radius:18px}.masthead{gap:12px;margin-bottom:10px}.masthead .zh{font-size:38px}.masthead h1{font-size:22px}.masthead .tag{font-size:13px}.cupboard{padding:8px 12px;font-size:14px}.continue{padding:9px 14px;font-size:15px}.continue b{font-size:13px}.venue{margin-top:10px;padding:10px 12px 12px}.venue header{gap:10px;margin-bottom:8px}.venue header .zh{font-size:22px}.venue header b{font-size:16px}.venue header span{font-size:12px}.shifts{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}.shift-card{padding:10px 12px 9px;border-radius:12px}.shift-card .zh{font-size:18px}.shift-card b{font-size:15px}.shift-card .blurb{font-size:12px}.menu .how{margin-top:10px;font-size:12px;line-height:1.7}.card{max-height:calc(100dvh - 16px);overflow-y:auto;padding:16px 20px 18px;border-radius:18px}.card h1{margin-top:0;font-size:24px}.card .tag{margin-bottom:10px;font-size:14px}.tally{margin-bottom:12px;font-size:14px}.tally td{padding:4px}.card button{padding:9px 18px;font-size:15px}.upgrades{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px;margin-bottom:12px}.splash .neon{padding:3vh 8vw 2.5vh;border-radius:22px}.splash .zh{font-size:clamp(54px,30vh,190px)}.splash h1{margin-top:1vh;font-size:clamp(20px,9vh,68px)}.splash .strap,.splash .go{margin-top:3vh}.splash .strap{font-size:15px}.splash .go{font-size:18px}.splash .sound{margin-top:1.5vh;font-size:12px}}
