*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#000;color:#f5f1e7;font-family:"Microsoft YaHei",serif}body{display:grid;place-items:center}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible{outline:2px solid #ddba79;outline-offset:5px}button:disabled{cursor:wait}#stage{position:relative;width:1920px;height:1080px;flex-shrink:0;overflow:hidden;transform-origin:center;touch-action:none;background:#000}canvas,#fade,#advance{position:absolute;inset:0;width:100%;height:100%}canvas{pointer-events:none}#world{z-index:0}#fade{z-index:2;background:#000;pointer-events:none}#nameplate{position:absolute;z-index:3;pointer-events:none;opacity:.95}#subtitles{z-index:4}#advance{z-index:5;border:0;background:none;outline-offset:-8px}#tap{position:absolute;width:38px;height:38px;z-index:4;pointer-events:none;animation:tap 1.6s ease-in-out infinite}#menu-button{position:absolute;right:42px;top:35px;width:90px;height:82px;z-index:7;background:rgba(7,9,12,.45);border:2px solid #c8c8c8;box-shadow:0 0 3px #000;padding:12px}#menu-button img{width:100%;height:100%;object-fit:contain}#auto{position:absolute;right:45px;bottom:36px;z-index:7;width:160px;height:47px;background:url('assets/media/btn_auto_base.png') center/100% 100%;border:0;padding:10px}#auto img{height:27px;width:auto}#auto.active{filter:sepia(.7);opacity:1}#auto:not(.active){opacity:.6}#choices{position:absolute;inset:0;z-index:6;pointer-events:none;display:flex;align-items:center;justify-content:center}#choices button{pointer-events:auto;width:750px;min-height:110px;background:#101018e0 url('assets/media/btn_select_outline.png') center/100% 100%;border:0;font-size:48px;text-shadow:0 2px 5px #000}#loading{position:absolute;inset:0;z-index:12;background:#08090b;display:grid;place-items:center;font-size:32px;letter-spacing:5px}#loading[hidden],[hidden]{display:none!important}dialog{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);margin:0;z-index:20;width:700px;max-width:none;max-height:90%;padding:52px;background:#111116f5;color:#eee;border:1px solid #777;box-shadow:0 10px 80px #000;font-size:30px}dialog::backdrop{background:#0009}dialog h1{font-size:36px;letter-spacing:4px;margin:0 0 12px}dialog p{line-height:1.7;font-size:27px;margin:12px 0 30px;white-space:pre-line}dialog button{width:100%;display:block;background:#222329;border:1px solid #666;padding:15px;margin:12px 0;font-size:28px}dialog button:hover{background:#414047}dialog small{display:block;font-size:20px;line-height:1.6;color:#aaa;margin-top:25px}.sr-only{position:absolute!important;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}@keyframes tap{50%{opacity:.3;transform:translateY(4px)}}@media(prefers-reduced-motion:reduce){#tap{animation:none}}
#stage{position:fixed;left:50%;top:50%}
#subtitles{z-index:7}#menu-button,#auto{z-index:9}
#tutorial{width:900px}#tutorial-text{display:block;width:100%;height:auto}
#advance:focus-visible{outline:none}

#loading{align-content:center;gap:28px;padding:90px;text-align:center}#loading-message{margin:0;line-height:1.6;max-width:1500px}#retry-loading{font-size:30px;letter-spacing:2px;padding:18px 48px;background:#222329;border:1px solid #aaa}
/* Player controls; the source game's full settings screen is not reconstructed. */
#menu{overflow:auto;padding:38px 48px}#menu button{font-size:25px;padding:11px;margin:10px 0}
#sound-settings{font-size:23px;border-top:1px solid #555;margin-top:20px;padding-top:17px}#sound-settings summary{cursor:pointer;padding-bottom:10px}#sound-settings label{display:block;margin-top:10px}#sound-settings output{float:right;font-variant-numeric:tabular-nums}#sound-settings input{display:block;width:100%;margin:12px 0 15px;accent-color:#dbceac}#sound-settings input:focus-visible{outline:2px solid #ddba79;outline-offset:5px}

/* WaitTap/Image Rect3335 and Normal clip538: 80px, 0.5s, +/-5px,
   zero-tangent cubic curves. The position supplied by the controller is centered. */
#stage[data-mode] #tap{width:80px;height:80px;animation:native-wait-tap .5s cubic-bezier(.333333,0,.666667,1) infinite,native-wait-enter .166666667s cubic-bezier(.333333,0,.666667,1) both}
@keyframes native-wait-tap{0%,100%{transform:translateY(5px)}50%{transform:translateY(-5px)}}
@keyframes native-wait-enter{from{opacity:0}to{opacity:1}}
#stage.reduce-motion #tap{animation:none!important}
@media(prefers-reduced-motion:reduce){#stage[data-mode] #tap{animation:none}}
/* ScreenSpaceOverlay PostEffectCanvas order 12 sits above Menu/System 10/11.
   A top-layer dialog is outside its ancestor's filter, so filter it separately. */
#stage[data-mode],.adv-dialog{filter:url(#native-brightness)}
.native-tap-effects{position:fixed;inset:auto;margin:0;padding:0;border:0;max-width:none;max-height:none;background:transparent;pointer-events:none;z-index:2147483647;filter:url(#native-brightness)}
.native-tap-effects::backdrop{background:transparent;pointer-events:none}
