/* Existing artwork is composed as independent, accessible controls. */
body{--home-scene:url('assets/organized/home/home0-d5db0619c935.png')}body[data-character="1"]{--home-scene:url('assets/organized/home/home1-a01ceff42566.png')}body[data-character="2"]{--home-scene:url('assets/organized/home/home2-6836aab2d716.png')}body[data-character="3"]{--home-scene:url('assets/organized/home/home3-2700d058a484.png')}
.asset{display:block;width:100%;height:100%;overflow:hidden;pointer-events:none}button:focus-visible{outline:3px solid #fff5a2;outline-offset:4px}#home{height:max(100svh,177.7vw);min-height:680px;max-height:none;background:var(--home-scene) center/100% 100%}#home .home-title{top:8%;left:12%;width:76%}#home .home-greeting,#home>img:not(.home-title),#hero-frame{display:none}#home #cats-toggle{bottom:30%;right:4%;width:64px;height:70px;background:#fff1cfeb;border:2px solid #986b40;border-radius:18px;box-shadow:0 3px 0 #62462b}#cats-toggle:after{content:'切换角色';font-size:10px;display:block;color:#65432b}#cats-toggle img{height:36px;width:42px}#home #play{background:linear-gradient(#fff1c9,#efd19b);border:3px solid #9e703d;border-radius:24px;box-shadow:0 5px 0 #614627,inset 0 0 0 3px #ffedc5;left:21%;width:58%;top:78%;height:7%;padding:0;font-size:24px;animation:button-breathe 3s infinite}#home #home-login{background:#fff1dce8;border:2px solid #ad8453;border-radius:20px;padding:0;top:87%;height:4.7%;font-size:15px}#home footer{top:94%;color:#fff8df}#home:after,.ambience{content:'';position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 11% 23%,#ffdb88aa 0,transparent 5%),radial-gradient(circle at 66% 44%,#ffd78855 0,transparent 8%),radial-gradient(circle at 39% 32%,#fff5b9 0 1px,transparent 3px),radial-gradient(circle at 83% 15%,#fff5b9 0 1px,transparent 3px),radial-gradient(circle at 18% 66%,#fff5b9 0 1px,transparent 3px);animation:camp-glow 4s ease-in-out infinite}
body[data-page="lobby"] #panel,body[data-page="total"] #panel,body[data-page="rank"] #panel{padding:0;margin:0;border:0;border-radius:0;background:none;box-shadow:none;min-height:100svh}body[data-page="lobby"] #back,body[data-page="total"] #back,body[data-page="rank"] #back{position:absolute;top:max(14px,env(safe-area-inset-top));left:15px;width:47px;height:47px;padding:0;background:none;box-shadow:none;border:0;z-index:8;font-size:0}#back .asset{width:100%;height:100%}main>header{pointer-events:none}.wallet{pointer-events:auto}body:has(#game:not([hidden])) main>header{display:none}
.camp-scene{position:relative;isolation:isolate;width:100%;min-height:100svh;background:var(--scene) top center/100% auto repeat-y;overflow:hidden;color:#603d27}.lobby-scene{height:177.7vw;max-height:907px;min-height:690px}.lobby-title{position:absolute;left:22%;top:7%;width:56%;height:20%}.camp-menu{position:absolute;top:47%;left:4%;width:92%;display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:1.65fr 1fr 1.12fr;gap:7px;height:39%}.camp-menu .art-button{background:none;padding:0;margin:0;border:0;border-radius:0;box-shadow:none;min-height:0;transition:transform .15s}.art-button:active{transform:scale(.96)}.menu-play,.menu-event,.menu-total,.menu-song{grid-column:span 2}.honor{filter:drop-shadow(0 0 4px #ffd063);animation:button-breathe 3s infinite}.camp-motto{text-align:center;color:#fff4d6;font-size:12px;letter-spacing:2px;text-shadow:0 2px 3px #3c3327}.lobby-scene>.camp-motto{position:absolute;top:88%;width:100%}.rank-title{height:145px;width:62%;margin:55px auto 0}.rank-main{padding:0 4% 25px}.activity-sign{position:relative;width:38%;height:140px;margin:-15px 0 -105px auto}.activity-copy{position:absolute;left:20%;right:20%;top:40%;height:25%;background:#fff2d8;display:flex;flex-direction:column;justify-content:center;font-size:10px;text-align:center}.activity-copy small{font-size:8px}.rank-tabs{display:flex;gap:4px;width:58%;padding-top:32px;margin-bottom:5px}.rank-tabs button,.difficulty button{padding:8px 4px;background:#eee0b9;border:2px solid #735534;color:#603d27;font-size:11px;box-shadow:0 2px 0 #644931}.rank-tabs .selected,.difficulty .selected{background:#ffeaa0;box-shadow:0 0 12px #ffc752}.podium{position:relative;height:270px}.podium-label{position:absolute;display:flex;flex-direction:column;text-align:center;width:22%;font-size:10px}.podium-label b{background:#fff0ca;border-radius:5px;padding:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.podium-label strong{background:#56301a;color:#fff1d4;border-radius:15px;margin:5px 9px 0;padding:1px;font-size:11px}.podium-label.p0{left:6%;top:74%}.podium-label.p1{left:39%;top:66%}.podium-label.p2{left:72%;top:74%}.rank-tools{display:flex;align-items:center;justify-content:space-between;background:#fff1dfe8;border-radius:8px;padding:3px 7px;font-size:9px}.rank-tools button{padding:4px 6px;font-size:9px;margin:0;box-shadow:none}.rank-columns{display:grid;grid-template-columns:10% 47% 25% 18%;padding:10px 3%;font-size:10px;background:#765136;color:#fff2d3;border-radius:8px;margin-top:6px}.rank-row{display:grid;grid-template-columns:10% 47% 25% 18%;align-items:center;position:relative;min-height:61px;margin-top:2px;padding:6px 3%;isolation:isolate}.row-bg{position:absolute;inset:0;z-index:-1;width:100%;height:100%;preserve-aspect-ratio:none}.rank-row.champion{filter:drop-shadow(0 0 4px #ffcf54)}.rank-number{font-size:19px;text-align:center;color:#90652f}.rank-player{display:flex;gap:5px;align-items:center;min-width:0}.rank-player .avatar{width:34px;height:34px;flex-shrink:0;border-radius:8px}.rank-player b{display:block;font-size:11px;max-width:90px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.rank-player small{display:block;font-size:8px;color:#9a7452}.rank-points{font-size:12px;text-align:center}.rank-badge{text-align:center;font-size:9px;color:#97601e}.rank-note{padding:8px;background:#fff2dfe8;border-radius:8px;font-size:10px;margin-top:7px;line-height:1.6}.empty-rank{background:#fff0d7e8;text-align:center;padding:30px 10px;border:2px solid #b79664;border-radius:12px;font-size:15px}.empty-rank small{font-size:10px}.song-scene .rank-title{height:120px;width:65%;margin-top:40px}.song-feature{display:flex;align-items:center;gap:12px;background:#423c35b8;border:2px solid #b18a51;border-radius:14px;padding:10px;color:#fff0d5;margin:5px 0 14px;min-height:150px}.song-feature .cover{width:43%;height:145px;flex-shrink:0}.song-feature h2{font-size:24px;margin:8px 0;color:#fff0d5}.song-feature small{font-size:8px}.song-feature p{font-size:10px}.difficulty{display:flex;gap:3px;margin-bottom:7px}.difficulty button{flex:1;font-size:16px;border-radius:20px 20px 4px 4px;margin:0}.song-picker{background:#76543ade;border:3px solid #b38b59;border-radius:12px;padding:10px;color:#ffefcc}.song-picker h3{font-size:16px;margin:0 0 9px}.song-scroll{display:flex;gap:7px;overflow-x:auto;padding-bottom:5px;scroll-snap-type:x mandatory}.song-scroll button{flex:0 0 90px;padding:4px;background:#fff0d0;border:2px solid #c4a06d;box-shadow:none;margin:0;scroll-snap-align:start}.song-scroll button.selected{border-color:#ffdc56;box-shadow:0 0 8px #ffd450}.song-scroll .asset{height:75px}.song-scroll span{font-size:10px}.avatar-picker{display:flex;gap:8px;border:0;padding:5px;margin:8px 0}.avatar-choice{position:relative;flex:1;cursor:pointer}.avatar-choice input{position:absolute;opacity:0}.avatar-choice .avatar{width:44px;height:44px;border-radius:10px;border:3px solid transparent}.avatar-choice:has(input:checked) .avatar{border-color:#c98e30;box-shadow:0 0 8px #e6b54c}.avatar-choice:focus-within{outline:2px solid #8d642d}.practice-toggle{display:block;margin:8px auto;font-size:12px}.fever-stage{position:absolute;top:3%;left:15%;width:70%;text-align:center;color:#ffe8ad;font-weight:bold;text-shadow:0 2px 4px #61391f;z-index:3;pointer-events:none}#field[data-stage="3"]{box-shadow:inset 0 0 50px #ffbe4e88}#field[data-stage="4"]{box-shadow:inset 0 0 70px #fa947eaa}.note[data-type="hold"]{border-radius:22px;border:3px solid #ffd572}.note[data-type="hold"]:after{content:'按住';position:absolute;top:80%;left:15%;font-size:12px;color:#fff3c1}.note[data-type="swipe"]:after{content:'↔';position:absolute;inset:20%;font-size:26px;color:#fff}.note[data-type="coin"]{filter:drop-shadow(0 0 8px gold)}.note.holding{filter:brightness(1.4)}
@keyframes camp-glow{50%{opacity:.4;transform:translateY(-3px)}}@keyframes button-breathe{50%{filter:drop-shadow(0 0 7px #ffde79)}}@media(min-width:511px){#home{height:max(100svh,907px)}.lobby-scene{height:907px}}@media(prefers-reduced-motion:reduce){#home:after,.ambience,.honor,#home #play{animation:none}}body.reduced-effects #home:after,body.reduced-effects .ambience,body.reduced-effects .honor,body.reduced-effects #play{animation:none}
#home #play{background:url('assets/organized/home/login-button-28b36bcfd7ab.png') center/100% 100% no-repeat;border:0;border-radius:0;box-shadow:none;left:14%;width:72%;height:9%;padding:0 0 0 8%;font-size:clamp(18px,5cqw,25px)}#home #home-login{background:url('assets/organized/home/guest-button-6d046418e4e8.png') center/100% 100% no-repeat;border:0;box-shadow:none;height:6%;padding:0 0 0 4%;top:88%}
.lobby-scene{height:max(100svh,177.7vw);max-height:none}.camp-menu{margin:0;gap:6px}.camp-menu .asset{max-width:none}.camp-scene{background-size:100% 100%;background-repeat:no-repeat}.wallet{position:relative;width:135px;height:44px;border:0;border-radius:0;background:none;box-shadow:none;padding:0}.wallet .coin-art{display:none}.wallet-art{position:absolute;inset:0}.wallet #balance{position:absolute;left:34%;top:25%;width:43%;height:49%;background:#ffefd6;text-align:center;color:#785136;font-size:15px;line-height:22px}.wallet:before{display:none}.activity-date{position:absolute;top:32.5%;left:12%;right:10%;height:8%;background:#785034;color:#fff0cd;text-align:center;font-size:8px}.rank-tools button{min-height:30px}.rank-tools{min-height:36px}.rank-row{min-height:61px}.rank-note{margin-bottom:10px}body[data-page="lobby"] main{background:none}.total-scene .rank-title{margin-top:65px;height:135px;width:65%}
#field:after{content:'';position:absolute;inset:0;background:var(--stage-tint,transparent);mix-blend-mode:soft-light;pointer-events:none;z-index:0;transition:background 1s}.note,#cat-rig{z-index:2}.reduced-effects#field:after{display:none}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.difficulty button{background:none;border:0;box-shadow:none;padding:0;height:42px;filter:saturate(.5) brightness(.85)}.difficulty button.selected{background:none;filter:drop-shadow(0 0 6px #ffde73);box-shadow:none}.song-feature{background:#493a2ce8}.rank-scene .rank-player{text-align:left}
#starlight-heading{height:66px;width:160px;max-width:100%}
#back{width:48px;height:48px;padding:0;border:0;background:none;box-shadow:none;font-size:0;display:block}.activity-copy{font-size:9px;line-height:1.3}.activity-copy small{font-size:8px;line-height:1.4}
.song-scene .rank-columns,.song-scene .rank-row{grid-template-columns:9% 37% 13% 25% 16%}.rank-grade{font-size:14px;color:#bc7a26;text-shadow:0 1px 0 #fff2bc}.song-scene .rank-player b{max-width:70px}.song-scene .rank-points{font-size:11px}

/* 2026-09-08 audit: viewport composition and independently clipped source art. */
#home,.lobby-scene{height:100svh;min-height:640px;max-height:none;background-size:cover;background-position:center center;background-repeat:no-repeat}
#home .home-title{top:8%;left:21%;width:58%;height:22%;object-fit:contain}
#home #cats-toggle{width:54px;height:63px;bottom:28%;border-radius:16px}
#home #play{top:79%;height:8%;font-size:clamp(17px,4.8cqw,24px)}
#home #home-login{top:88%;height:5.5%}#home footer{top:95%;font-size:11px}
.lobby-title{top:8%;left:20%;width:60%;height:22%}
.camp-menu{top:46%;left:5%;width:90%;height:42%;grid-template-rows:1.7fr .9fr 1fr;gap:8px}
.lobby-scene>.camp-motto{top:auto;bottom:max(22px,env(safe-area-inset-bottom));margin:0}
.rank-scene{background-size:100% auto;background-color:#344737;background-attachment:scroll}
.total-scene .rank-title{height:125px;margin-top:60px;width:68%}
.activity-sign{width:100%;height:auto;min-height:78px;margin:8px 0 12px;display:flex;align-items:center;gap:14px;padding:13px 16px;background:#fff0d9f2;border:2px solid #ae8650;border-radius:15px;box-shadow:0 4px 0 #63472c}
.activity-kicker{font-weight:900;font-size:16px;border-right:1px solid #bd9a6c;padding-right:14px;white-space:nowrap}
.activity-copy{position:static;background:none;height:auto;text-align:left;font-size:19px;gap:6px}
.activity-copy small{font-size:11px;line-height:1.5}.rank-tabs{width:100%;padding:0;margin:16px 0 4px}.rank-tabs button{flex:1;min-height:40px;font-size:13px}
.podium{height:auto;margin:12px 0 18px}#podium-labels{display:grid;grid-template-columns:1fr 1.18fr 1fr;align-items:end;gap:5px}
.podium-label{position:static;width:auto;min-width:0;font-size:11px;display:flex;align-items:stretch}
.podium-label .podium-cat{height:136px;width:100%}.podium-label.p1 .podium-cat{height:165px}
.podium-label small{color:#fff0be;text-shadow:0 1px 3px #3e2b16}.podium-label b{padding:6px 2px;border:1px solid #ba945c;border-radius:7px;margin-top:4px}.podium-label strong{background:#fff0d8;color:#6c462d;border-radius:6px;margin:3px 0 0;padding:5px;font-size:11px}
.rank-tools,.rank-player small,.rank-badge,.rank-note{font-size:11px}.rank-tools button{font-size:11px;min-height:40px}.rank-columns{font-size:11px}.rank-row{min-height:67px}
.song-feature .cover{height:125px}.song-feature{min-height:145px}.song-picker{margin-top:15px}.song-scroll button{min-height:110px}.song-scroll span{font-size:12px}
#selection{height:auto;min-height:100svh;overflow:hidden;padding-top:200px}.selection-top{z-index:5}
#selection .selection-heading{top:70px}.selection-heading h1{font-size:32px;margin:0}.selection-heading p{font-size:12px}
#selection .selection-bottom{position:relative;inset:auto;padding:0 16px max(20px,env(safe-area-inset-bottom));margin-top:160px}
#selection-cats button{height:82px;padding-top:57px}#selection-cats img{height:53px}
.preparation{padding:12px}.native-mode{position:absolute!important;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.mode-art-picker{display:flex;gap:7px;margin:10px 0}.mode-art-picker button{flex:1;min-width:0;height:46px;margin:0;padding:0;background:none;border:0;box-shadow:none;filter:saturate(.45);border-radius:12px}
.mode-art-picker button[aria-pressed=true]{filter:drop-shadow(0 0 5px #ffcf5f);outline:2px solid #c99645;outline-offset:2px}
.gesture-guide{display:flex;justify-content:space-around;gap:10px;padding:6px;border-radius:12px;background:#fff1d69c}.gesture-guide>span{display:flex;flex-direction:column;align-items:center;gap:3px}.gesture-guide .asset{width:42px;height:42px}.gesture-guide small{font-size:11px}
.practice-toggle{font-size:11px;line-height:1.6}.judgeline span{background:none!important;border:0!important;box-shadow:none!important;height:64px!important}.judgeline .asset{width:100%;height:100%}
.judgment-art{position:absolute;z-index:4;top:21%;left:32%;width:36%;height:90px;pointer-events:none}.fever-stage{height:65px;font-size:13px}.note[data-type=hold]{height:110px;border:0;background:none}.note[data-type=swipe]:after{content:none}
@media(max-height:700px){#home,.lobby-scene{min-height:620px}#selection .selection-bottom{margin-top:10px}#selection{padding-top:175px}}
@media(prefers-reduced-motion:reduce){.judgment-art{animation:none}}
#selection .selection-top{position:absolute;top:0;left:0;right:0}

.judgeline span:after{content:none}.note .asset{width:100%;height:100%}.judgeline span{width:90%;height:60px!important}

#selection .selection-stage{background-image:var(--preparation-scene);background-size:cover}#selection-still{inset:165px 0 auto;height:190px}#selection-still svg{height:100%;width:auto;max-width:90%}#field{background:linear-gradient(#243d3033,#806b3822),var(--preparation-scene) center/cover}

/* Podium balance is each ranked player's current wallet, below their name. */
.podium-label .podium-name{display:block;position:static;min-width:0}
.podium-coins{display:flex;position:static;align-items:center;justify-content:center;gap:5px;min-height:32px;margin:5px 2px 0;padding:3px 7px;border:2px solid #b47b37;border-radius:18px;background:linear-gradient(#613b20,#3e2416);box-shadow:inset 0 0 0 1px #dbab62;color:#fff4d6;font-size:13px;font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap}
.podium-coins .podium-coin-icon{width:24px;height:24px;flex:0 0 24px}.podium-coins span{min-width:0;overflow-wrap:anywhere;white-space:normal}
.podium-caption{font-size:10px;text-align:center;color:#fff0cf;text-shadow:0 1px 3px #392514;margin:9px 0 0}
/* Shared 941 × 1672 artboard: background and controls scale together. */
body[data-page=home] main,body[data-page=lobby] main{background:#253e38;display:flow-root;background-image:linear-gradient(#172f39,#476065 45%,#263f34)}
#home,.lobby-scene{width:100%;height:auto;min-height:0;aspect-ratio:941/1672;background-size:contain;background-position:center;margin-block:max(0px,calc((100svh - min(100vw,510px)*1672/941)/2))}
#home .home-title{top:6%;left:19%;width:62%;height:22%;object-fit:contain}
#home #cats-toggle{bottom:25%;right:5%;width:60px;height:66px;background:linear-gradient(145deg,#fff5d9,#e8c58c);border:2px solid #9d753f;box-shadow:0 3px 0 #5c412a,0 0 15px #ffe5a640}
#home #cats-toggle[aria-expanded=true]{box-shadow:0 0 0 3px #ffe8a1}
#home:before{content:'';position:absolute;left:20%;top:30%;width:53%;height:8%;pointer-events:none;background:repeating-linear-gradient(178deg,transparent 0 10px,#ffeab321 12px,transparent 14px);mask-image:radial-gradient(ellipse,black,transparent 70%);animation:water-shimmer 6s ease-in-out infinite}
.lobby-title{top:5%;height:23%;left:21%;width:58%}.camp-menu{top:49%;height:40%;grid-template-rows:1.35fr 1fr .85fr;gap:5px}
body[data-page=lobby] main>header>span:first-child,body[data-page=lobby] #account{display:none}
.activity-sign{display:grid;grid-template-columns:1fr auto;gap:9px 12px;padding:15px;background:repeating-linear-gradient(3deg,#765137 0 19px,#805a3b 20px 23px,#745036 24px 40px);border:3px solid #b38c56;border-radius:17px;color:#fff0d0;box-shadow:inset 0 0 0 2px #4e3529,0 5px 0 #412d23}
.activity-kicker{grid-column:1/-1;display:flex;justify-content:space-between;align-items:center;border:0;border-bottom:1px solid #d4b58470;padding:0 0 8px;font-size:13px}.activity-kicker small{font-size:8px;letter-spacing:1px;color:#dfc399}.activity-copy{font-size:21px;min-width:0}.activity-copy small{font-size:10px;color:#eddbbd}.activity-count{text-align:center;align-self:center;background:#36291e66;padding:8px;border-radius:9px;border:1px solid #c7a371}.activity-count span{display:block;font-size:10px;color:#e1c9a0}.activity-count strong{display:block;font-size:13px;color:#ffdf8b;font-variant-numeric:tabular-nums;margin-top:5px}.activity-sign>p{grid-column:1/-1;margin:0;padding-top:8px;border-top:1px solid #d4b58470;font-size:10px;color:#ffe1a1}
#selection{padding-top:0;min-height:100svh;height:auto;overflow:hidden}#selection .selection-heading{top:76px}#selection-still{inset:150px 0 auto;height:165px}#selection .selection-bottom{margin-top:315px;padding:0 16px max(20px,env(safe-area-inset-bottom))}.selection-shade{background:linear-gradient(#18372c33,transparent 20%,#1c3b3299 40%,#19392f 80%)}
#selection-cats button{height:70px;padding-top:48px}#selection-cats img{height:47px}#entrance-replay{margin:5px auto}.mode-destinations{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:6px 0}.mode-destinations button{height:78px;min-width:0;background:none;border:0;box-shadow:none;padding:0}.mode-destinations .competitive{filter:drop-shadow(0 0 6px #edc372);animation:button-breathe 3s infinite}
.preparation{background:linear-gradient(135deg,#304c3ded,#17342fed);border:2px solid #b79b64;box-shadow:inset 0 0 0 3px #203b32,0 4px 0 #152b26;color:#fff0cc}.preparation #song-picker{background:#ead5a7;color:#583e2b;border:2px solid #ad8857}.preparation .gesture-guide{background:#ffffff0a}.preparation #launch{background:url('assets/organized/home/login-button-28b36bcfd7ab.png') center/100% 100% no-repeat;border:0;box-shadow:none;color:#593c27;width:100%;height:61px;font-weight:bold;padding-left:35px}.fever-stage>span{display:block;font-size:12px;letter-spacing:2px}.fever-stage>.asset{height:48px}.note[data-type=hold].holding{filter:brightness(1.4) drop-shadow(0 0 12px #ffcd62)}
@keyframes water-shimmer{50%{opacity:.4;transform:translateX(5px)}}
@media(prefers-reduced-motion:reduce){#home:before,.mode-destinations .competitive{animation:none}}body.reduced-effects #home:before,body.reduced-effects .competitive{animation:none}
/* Contain artboard margins inside the panel; prevent collapsed-margin extra scroll. */
body[data-page=lobby] #content{display:flow-root}
.mode-destinations{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 10px}.mode-destinations button{height:105px}.mode-destinations button.selected{filter:drop-shadow(0 2px 3px #0d241e)}
/* Screenshot revision: reference composition, unobstructed characters. */
.lobby-scene .camp-menu{top:var(--menu-top,49%);height:40%}
.song-scene .rank-title{height:28vw;max-height:143px;width:61%;margin:45px auto 0}
.song-feature{position:relative;display:block;height:37vw;max-height:189px;min-height:0;margin:5px 0 10px;padding:0;background:none;border:0;border-radius:0;box-shadow:none;color:#fff0d4}
.song-feature .cover{position:absolute;left:0;top:0;width:40%;height:100%;filter:drop-shadow(0 3px 2px #342b1d)}
.song-feature .song-copy{position:absolute;left:43%;top:7%;width:28%;text-shadow:0 2px 3px #213c34}
.song-feature h2{font-size:clamp(17px,4.5vw,23px);line-height:1.2;margin:0 0 8px}.song-feature #starlight-heading{width:100%;height:65px}.song-feature #song-details{font-size:10px;line-height:1.8;color:#fff5d9;margin:7px 0}.song-scene .difficulty{margin-top:8px}
.rank-tools{background:none;color:#fff4ce;padding:0 5px;min-height:29px;font-size:10px}.rank-tools button{min-height:28px;font-size:10px;padding:3px 7px;background:#fff0d3d9}.rank-columns{margin-top:3px}.total-scene .rank-title{margin-top:50px;height:130px}.total-scene .podium{margin:3px 0 10px}.podium-caption{display:none}
.total-scene #rank-rows{background:#f6e4c4;border:3px solid #ac8151;border-top:0;border-radius:0 0 12px 12px;padding:2px 6px}.total-scene .rank-row{border-bottom:1px solid #cfa8797d;margin:0;min-height:59px;padding:5px 1%;grid-template-columns:9% 39% 27% 25%}.total-scene .rank-row:last-child{border:0}.total-scene .rank-row .row-bg{display:none}.total-scene .rank-columns{grid-template-columns:9% 39% 27% 25%;border-radius:10px 10px 0 0;padding:10px 3%;background:#765136}.total-scene .rank-badge{display:flex;align-items:center;justify-content:center;gap:3px;color:#8b5a24}.list-coin{width:19px;height:19px;flex:0 0 19px}.total-scene .rank-points{font-size:12px}.total-scene .rank-player b{max-width:94px}.total-scene .rank-player small{font-size:9px}.my-ranking{display:flex;gap:7px;align-items:center;justify-content:space-between;background:linear-gradient(#825b3d,#64432f);border:2px solid #ba955e;border-radius:10px;color:#ffedc6;padding:10px 8px;font-size:10px;margin:10px 0;min-height:54px}.my-ranking .avatar{width:30px;height:30px;flex:0 0 30px}.my-ranking>span>b{display:block;font-size:13px;color:#ffdb7b}.my-coins{display:flex;gap:3px;align-items:center}.activity-details{margin:14px 0;color:#fff1cd;background:#3b4b36d9;border-radius:10px;padding:8px}.activity-details summary{font-size:12px;min-height:36px;line-height:36px;cursor:pointer}.activity-details .activity-sign{margin:8px 0}.activity-details .rank-note{color:#63452d}
#selection .selection-stage{position:relative;height:min(112vw,570px);width:100%;inset:auto;background-size:cover;background-position:center;overflow:hidden}
#selection .selection-stage video{object-fit:contain;background:#233d31}#selection-still{inset:130px 0 10px;height:auto}#selection .selection-bottom{margin-top:0;padding-top:12px;background:linear-gradient(#244334,#17392e)}#selection .selection-shade{height:160px;bottom:auto;background:linear-gradient(#14372a80,transparent)}#selection .selection-heading{top:75px}#selection .selection-top{z-index:6}.selection-heading p{max-width:90%;margin-top:4px}.selection-heading{left:20px!important}#selection{background:#244334}
/* Four readable, constant-speed lanes; art lands exactly on the hit line. */
#field:before{inset:0;height:100%;background:linear-gradient(90deg,transparent 24.5%,#ffe5a429 25%,transparent 25.5%,transparent 49.5%,#ffe5a429 50%,transparent 50.5%,transparent 74.5%,#ffe5a429 75%,transparent 75.5%),linear-gradient(#153a3055,#183b3277);border:0}
#field .note{width:17%;height:64px;top:0;z-index:4;filter:drop-shadow(0 3px 3px #172b20);will-change:transform}#field .note[data-type=hold]{height:112px}#field .note[data-type=hold]:after{content:none}#field .note[data-type=swipe]{width:21%;height:65px}#field .note[data-direction=left]>.asset{transform:scaleX(-1)}#field .note[data-lane="1"]{filter:drop-shadow(0 0 4px #edc592)}#field .note[data-lane="2"]{filter:drop-shadow(0 0 4px #bde1a1)}#field .note.holding{filter:brightness(1.35) drop-shadow(0 0 10px #ffe683)}#field #feedback{top:43%;font-size:15px}#field .judgment-art{top:26%;height:66px}#field .judgeline{z-index:3}
.song-scene .rank-title{margin-top:35px;height:24vw;max-height:123px;width:68%}.song-feature{height:34vw;max-height:174px}.song-feature .cover{border:3px solid #faebc7;border-radius:8px;transform:rotate(-2deg)}.song-scroll button{color:#694729}.rank-tools button{color:#694729}.song-scene .empty-rank{min-height:110px}

.list-coin{border-radius:50%;overflow:hidden}.rank-tools button{color:#63452b!important;background:#f4e4bfe8!important}

.lobby-scene:not([data-theme="0"]) .lobby-title{top:2%;height:17%;left:20%;width:60%}

#field:before{clip-path:none;transform:none;z-index:0}#field:after{clip-path:none;transform:none;inset:0;width:100%;height:100%;border:0}.rank-version{max-width:116px;padding:5px;font-size:10px;min-height:30px}
.lobby-scene:not([data-theme="0"]) .lobby-title{top:1%;height:20%}
/* Reference handwriting stays attached to the original 941 × 1672 home artboard. */
#home .home-greeting{display:block;position:absolute;left:16%;top:1.1%;width:33%;margin:0;z-index:2;color:#fff8df;font-size:clamp(9px,2.7cqw,14px);line-height:1.3;transform:rotate(-9deg);text-align:left;letter-spacing:1px;font-family:Round,Camp,cursive;text-shadow:0 1px 2px #455164}
.home-greeting>span{display:block;font-size:15px;line-height:1;letter-spacing:8px}.coin-note{position:absolute;right:2%;top:5%;width:21%;margin:0;color:#fff8de;font:clamp(8px,2.35cqw,12px)/1.6 Round,Camp,cursive;transform:rotate(7deg);text-shadow:0 1px 2px #40527c;z-index:2}.coin-note svg{width:70%;height:29px;display:block;margin-left:14%}.coin-note path{fill:none;stroke:#fff7dc;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.home-board-copy{position:absolute;inset:0;pointer-events:none;z-index:2}.home-board-copy span{position:absolute;left:0;width:15.5%;color:#f1dac3;font:clamp(9px,3.15cqw,16px)/1.04 Round,cursive;text-align:center;letter-spacing:.4px;text-shadow:0 1px 2px #543e31}.board-food{top:19.5%;transform:rotate(10deg)}.board-friends{top:26%;transform:rotate(-2deg)}.board-birthday{top:33.5%;transform:rotate(-9deg)}
.home-side-details{position:absolute;inset:0;pointer-events:none;z-index:2}.home-side-details img{position:absolute;object-fit:contain;filter:drop-shadow(0 2px 2px #31402a55)}.good-sign{right:-1%;top:48%;width:22%;height:17%}.life-sign{left:-3%;top:81%;width:23%;height:20%}.stump-note{position:absolute;left:63%;top:55%;width:14%;padding:7px 1px;border:2px solid #af8452;border-radius:5px 7px 3px 2px;background:repeating-linear-gradient(88deg,#d0ac79 0 9px,#c6a06b 10px 12px,#d4b382 14px 19px);color:#6d4b30;font:800 clamp(7px,2.1cqw,11px)/1.1 Round,cursive;text-align:center;transform:rotate(-9deg);box-shadow:2px 3px 1px #654b3459}
#ambience-toggle{position:absolute;right:4%;top:16%;z-index:6;min-height:35px;border:1px solid #f4df9c88;background:#334f4144;backdrop-filter:blur(3px);color:#fff4cc;box-shadow:none;border-radius:25px;padding:5px 8px;font-size:11px}#ambience-toggle[aria-pressed=true]{text-shadow:0 0 8px #ffe599}#ambience-toggle span{font-size:9px}
#home #home-login{top:87%;left:24%;width:52%;height:6.5%;min-height:44px;font-size:17px;z-index:5}#home #home-passport{position:absolute;bottom:4%;right:3%;font-size:10px;min-height:30px;border:0;box-shadow:none;background:#fff1d4e6;padding:3px 9px;z-index:5}#home footer{top:95%;font-size:10px}#auth-guest{display:block;width:100%;background:#e2ebc9;margin-top:12px!important}
/* A continuous character scene: full-width film, soft edges, a shared wooden shelf. */
#selection{--companion-light:#e7c281;--companion-ground:#344837;background:var(--companion-ground);transition:background .45s;min-height:100svh;padding-top:0}
#selection[data-companion="1"]{--companion-light:#e6af6e;--companion-ground:#504734}#selection[data-companion="2"]{--companion-light:#f3b8a0;--companion-ground:#4a4936}#selection[data-companion="3"]{--companion-light:#c5da93;--companion-ground:#294438}
#selection .selection-stage{position:relative;height:min(166vw,760px);width:100%;background:linear-gradient(#26493410,#233e3025),var(--preparation-scene) center/cover;overflow:hidden;isolation:isolate;mask-image:linear-gradient(black 0 87%,transparent 100%)}
#selection .selection-stage video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;background:transparent;opacity:0;transition:opacity .45s ease;pointer-events:none}
#selection.video-ready .selection-stage video{opacity:0}#selection.video-ready .selection-stage video.is-current{opacity:1}#selection-still{inset:130px 0 7%;height:auto;opacity:1;transition:opacity .45s}#selection.video-ready #selection-still{opacity:0}
#selection .selection-heading{top:73px;right:20px;transition:opacity .3s;z-index:3}.selection-heading h1{font-size:28px!important}.selection-heading p{font-size:11px}.selection-top small{font-size:9px;letter-spacing:1px}.selection-top button{background:#25423766;backdrop-filter:blur(8px)}
#selection .selection-bottom{position:relative;z-index:3;margin-top:-22px;padding:0 13px max(20px,env(safe-area-inset-bottom));background:none}.companion-shelf{padding:8px 7px 12px;position:relative;isolation:isolate}.companion-shelf:before{content:'';position:absolute;left:0;right:0;bottom:0;height:42%;background:repeating-linear-gradient(2deg,#795737 0 9px,#896440 10px 15px,#755337 16px 17px);border:2px solid #b49461;border-radius:9px 12px 18px 15px;box-shadow:0 5px 0 #263a2b,inset 0 0 0 2px #513e2a;z-index:-1;transform:rotate(-.6deg)}
.companion-caption{margin:0 0 9px;text-align:center;color:#fff0cc;font:700 15px Round,Camp,sans-serif;text-shadow:0 2px 2px #243828}.companion-caption small{display:block;font-size:10px;font-weight:400;margin-top:3px;color:#e5d4ad}
#selection-cats{gap:8px;align-items:end}#selection-cats button{border:0;background:none;backdrop-filter:none;box-shadow:none;border-radius:0;height:105px;padding:79px 0 1px;font-size:11px;overflow:visible;color:#f9eacd;transition:transform .28s,filter .28s;transform:translateY(0)}
#selection-cats button:before{content:'';position:absolute;left:3%;right:3%;top:7px;height:69px;border:2px solid #b89a67;border-radius:47% 47% 44% 44%;background:radial-gradient(ellipse,#f3dfb2 0 48%,#ccb080 75%,#80603f 78%,#b6935c 83%);box-shadow:0 4px 0 #3e3527;z-index:-1}
#selection-cats img{top:3px;left:0;width:100%;height:76px;object-fit:contain;clip-path:none;filter:drop-shadow(0 2px 1px #694f3d70)}#selection-cats button.selected{border:0;box-shadow:none;background:none;color:#fff2ab;transform:translateY(-5px)}#selection-cats button.selected:before{border-color:#ffe6a0;box-shadow:0 0 0 2px #b98e46,0 0 17px var(--companion-light)}#selection-cats button span{background:#58442fe8;padding:3px 4px;border-radius:8px;display:inline-block;font-size:10px;line-height:1.4}#selection-cats button:not(.selected){filter:saturate(.75)}#selection-cats button:focus-visible{outline:2px solid #ffe0a0;outline-offset:3px;border-radius:15px}
#entrance-replay{margin:11px auto 10px;color:#e9d6ac;min-height:30px;font-size:11px}.preparation{background:linear-gradient(#263f34dc,#17392ee8);border-color:#a38c5c;border-radius:20px;box-shadow:0 4px 0 #152f26}.selection-fireflies{position:absolute;inset:0;z-index:2;pointer-events:none;background:radial-gradient(circle at 13% 69%,#ffe28b 0 1px,transparent 3px),radial-gradient(circle at 88% 57%,#ffeb9e 0 1px,transparent 3px),radial-gradient(circle at 72% 83%,#fff4c1 0 1px,transparent 3px);animation:camp-glow 5s ease-in-out infinite}.changing-companion #selection-name{opacity:.65}
@media(prefers-reduced-motion:reduce){#selection,#selection-cats button,#selection .selection-stage video,.selection-fireflies{animation:none;transition:none}}body.reduced-effects .selection-fireflies{animation:none}

/* Reference artwork refinements */
.coin-note{top:8%;right:1%;font-size:clamp(8px,2.2cqw,11px)}
.home-board-copy span{left:.5%;width:14%;font-family:Round,cursive;font-style:italic;font-weight:700;font-size:clamp(8px,2.7cqw,14px);letter-spacing:-.2px;color:#e3c9a1;opacity:.85;text-shadow:0 1px 0 #674b38;mix-blend-mode:soft-light}
.board-food{top:19.7%;transform:rotate(11deg)}.board-friends{top:26.1%;transform:rotate(-3deg)}.board-birthday{top:33.7%;transform:rotate(-10deg)}
.home-candidates{position:absolute;top:93.5%;left:25%;width:50%;text-align:center;color:#fff3d4;font-size:11px;z-index:6;text-underline-offset:3px}
#home footer{top:97%}.passport-stamp .avatar{width:100%;height:100%;display:block;border-radius:50%}

.reference-boards{position:absolute;inset:0;z-index:2;pointer-events:none}.reference-board{position:absolute;left:0;overflow:visible;width:17%}.reference-board.food{top:18.8%;height:6.1%}.reference-board.friends{top:25.1%;height:4.95%}.reference-board.birthday{top:32.7%;width:18%;height:6.8%}
.home-atmosphere{position:absolute;inset:0;pointer-events:none;z-index:3;overflow:hidden;--light:255,229,150;--fly:220,245,139}
.home-atmosphere i{position:absolute;left:var(--x);top:var(--y);display:block;animation-delay:var(--delay);pointer-events:none}
.twinkle{width:12px;height:12px;background:rgb(var(--light));clip-path:polygon(50% 0,60% 40%,100% 50%,60% 60%,50% 100%,40% 60%,0 50%,40% 40%);filter:drop-shadow(0 0 5px #fff);animation:star-shimmer var(--time) ease-in-out infinite}
.firefly{width:3px;height:3px;border-radius:50%;background:rgb(var(--fly));box-shadow:0 0 6px 2px rgba(var(--fly),.6),0 0 16px 4px rgba(var(--fly),.2);animation:firefly-drift calc(var(--time)*2) ease-in-out infinite}
.bokeh{width:35px;height:35px;border-radius:50%;background:radial-gradient(circle,rgba(var(--light),.22),rgba(var(--light),.08) 45%,transparent 70%);filter:blur(2px);animation:bokeh-float calc(var(--time)*2) ease-in-out infinite}
body[data-character="1"] .home-atmosphere{--light:255,191,113;--fly:255,213,161}body[data-character="1"] .firefly{box-shadow:0 0 5px rgba(var(--fly),.3);opacity:.4}
body[data-character="2"] .home-atmosphere{--light:255,200,225;--fly:255,225,158}
body[data-character="3"] .home-atmosphere{--light:208,245,200;--fly:191,255,130}
@keyframes star-shimmer{0%,100%{opacity:.12;transform:scale(.45) rotate(0)}45%{opacity:.9;transform:scale(1.12) rotate(12deg)}65%{opacity:.25;transform:scale(.7)}}
@keyframes firefly-drift{0%,100%{opacity:.15;transform:translate(0,0)}40%{opacity:.85;transform:translate(9px,-14px)}75%{opacity:.4;transform:translate(-6px,-22px)}}
@keyframes bokeh-float{0%,100%{opacity:.3;transform:translateY(0) scale(.85)}50%{opacity:.7;transform:translateY(-12px) scale(1.2)}}
body:not([data-page="home"]) .home-atmosphere i{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.home-atmosphere i{animation:none;opacity:.25}}body.reduced-effects .home-atmosphere i{animation:none;opacity:.25}
.reference-board.food{top:18.3%;height:7%;width:18%}.reference-board.friends{top:24.7%;height:6%;width:18%}.reference-board.birthday{top:31.6%;height:8%;width:19%}

/* Soft optical glints, without drawn star silhouettes. */
.home-atmosphere .twinkle{clip-path:none;width:16px;height:16px;border-radius:50%;background:radial-gradient(circle,#fffef3 0 3%,rgba(var(--light),.7) 8%,rgba(var(--light),.22) 24%,transparent 68%);filter:blur(.35px);box-shadow:none;animation:optical-glow calc(var(--time)*1.4) ease-in-out infinite}
.home-atmosphere .bokeh{width:48px;height:48px;filter:blur(5px)}
.scene-glow{display:none}
@keyframes optical-glow{0%,100%{opacity:.08;transform:scale(.7)}42%{opacity:.65;transform:scale(1.1)}62%{opacity:.23;transform:scale(.9)}}
.grass-motion{position:absolute;inset:0;background:var(--home-scene) center/100% 100%;pointer-events:none;z-index:2;transform-origin:50% 82%;animation:grass-breeze 7s ease-in-out infinite;will-change:transform}
.grass-left{clip-path:polygon(0 52%,3% 57%,5% 53%,8% 61%,11% 59%,14% 70%,19% 66%,23% 78%,0 80%);mask-image:linear-gradient(transparent 50%,#000 59%,#000 72%,transparent 80%)}
.grass-right{clip-path:polygon(79% 76%,82% 65%,85% 68%,88% 58%,91% 64%,94% 54%,97% 59%,100% 51%,100% 80%);mask-image:linear-gradient(transparent 50%,#000 59%,#000 72%,transparent 80%);animation-delay:-3s;animation-duration:9s}
@keyframes grass-breeze{0%,100%{transform:skewX(-.18deg)}35%{transform:skewX(.35deg)}65%{transform:skewX(.06deg)}}
body:not([data-page="home"]) .grass-motion{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.grass-motion,.home-atmosphere .twinkle{animation:none}}body.reduced-effects .grass-motion,body.reduced-effects .home-atmosphere .twinkle{animation:none}
/* Phone controls keep the source artwork's 3:1 aspect ratio. */
#home #play{top:76.5%;left:16%;width:68%;height:auto;min-height:0;aspect-ratio:3/1;background-size:contain;padding:0 10% 0 18%;font-size:clamp(14px,4cqw,21px);letter-spacing:0;white-space:nowrap}
#home #home-login{top:87%;left:25%;width:50%;height:auto;min-height:44px;aspect-ratio:3/1;background-size:contain;padding:0 0 0 3%;font-size:clamp(13px,3.6cqw,18px);letter-spacing:1px}
.preparation #launch{display:block;width:86%;max-width:320px;height:auto;min-height:0;aspect-ratio:3/1;margin:12px auto 2px;background-size:contain;padding:0 10% 0 20%;font-size:clamp(15px,4vw,20px);letter-spacing:1px;white-space:nowrap}
#home .home-candidates{top:94.7%}#home footer{top:98%;font-size:9px}
.home-atmosphere .firefly{width:4px;height:4px;background:#fffbd0;box-shadow:0 0 5px 2px #f9ed95,0 0 13px 5px rgba(var(--fly),.48),0 0 25px 8px rgba(var(--fly),.14);animation-name:firefly-visible}
.home-atmosphere .firefly:nth-child(3n){width:3px;height:3px;filter:blur(.4px)}
@keyframes firefly-visible{0%,100%{opacity:.4;transform:translate(0,0) scale(.8)}35%{opacity:1;transform:translate(12px,-18px) scale(1.1)}70%{opacity:.6;transform:translate(-8px,-27px) scale(.9)}}
#playstyle-picker{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}
#playstyle-picker button{position:relative;display:flex;flex-direction:column;align-items:center;gap:3px;min-width:0;margin:0;padding:8px 3px 10px;background:linear-gradient(#42614bd9,#203c30);border:1px solid #b3a77b70;border-radius:15px;color:#eaddbd;box-shadow:0 3px 0 #142b22}
#playstyle-picker .asset{height:38px;width:65px;max-width:90%}#playstyle-picker b{font-size:12px}#playstyle-picker small{font-size:9px;color:#e6d5ab}#playstyle-picker button[aria-pressed=true]{background:linear-gradient(#846139,#513822);border-color:#f2ca76;box-shadow:0 0 12px #ffce6740,inset 0 0 0 1px #d9a64e}
#playstyle-picker button[data-playstyle=combo]{background:linear-gradient(#72534f,#382b30)}#playstyle-picker button[data-playstyle=combo][aria-pressed=true]{border-color:#ffc876;box-shadow:0 0 14px #ffab5f55}
#playstyle-description{font-size:11px;line-height:1.7;text-align:center;color:#fae6b9;min-height:36px;margin:9px 0}
#game-goal{position:absolute;top:13%;left:12%;width:76%;text-align:center;font-size:11px;color:#fff1c6;text-shadow:0 1px 4px #203527;z-index:3;pointer-events:none}
.practice-result{text-align:center;margin:80px 12px 20px;padding:24px 12px;border:2px solid #c9a368;border-radius:22px;background:#fff0d6;color:#62452f}.practice-result h1{font-size:32px}.practice-result button{display:block;max-width:250px;width:90%;margin:12px auto!important}
#wallet-add{position:absolute;right:0;top:0;z-index:5;width:36px;height:44px;min-height:44px;padding:0;background:transparent;border:0;box-shadow:none;color:transparent;cursor:pointer}
#beta-banner{position:absolute;top:10px;left:12px;z-index:9;max-width:48%;margin:0;color:#ffe2a2;font-size:10px;letter-spacing:1px;pointer-events:none}
body.beta-edition #home-passport{bottom:4%;font-size:10px}#invite-field{font-size:13px}#invite-field input{margin-top:5px}
.total-scene .rank-columns{grid-template-columns:9% 36% 24% 31%;background:#efdbb8;color:#765034;border:3px solid #ac8151;border-bottom:1px solid #d2b28b;font-weight:700;font-size:10px;padding:9px 2%}
.total-scene .rank-row{grid-template-columns:9% 36% 24% 31%;min-height:62px}.total-scene .rank-player .avatar{border-radius:50%;width:30px;height:30px}.total-scene .rank-player b{font-size:11px;max-width:74px}.total-scene .rank-player small{display:flex;align-items:center;font-size:9px;gap:2px}.total-scene .rank-player .list-coin{width:13px;height:13px;flex:0 0 13px}
.rank-eligibility{display:block;border:1px solid #c5a46b;border-radius:9px;padding:5px 2px;background:#ead6b6;color:#85684a;font-size:9px;line-height:1.4;text-align:center}.rank-eligibility.eligible{background:#ffdf85;border-color:#d79728;color:#9f431f}.rank-eligibility small{display:block;font-size:8px}.podium-points{font-size:10px;margin-top:3px;color:#ffe7b0;text-shadow:0 1px 2px #342b20}
@media(prefers-reduced-motion:reduce){.home-atmosphere .firefly{animation:none;opacity:.55}}body.reduced-effects .home-atmosphere .firefly{animation:none;opacity:.55}
body:not([data-page=home]) #beta-banner{display:none}
#field[data-playstyle=relax] .judgeline{filter:drop-shadow(0 0 8px #b6dca9)}
#field[data-playstyle=combo] #game-goal{color:#ffdc8c;background:#51322bba;border:1px solid #e4b369;border-radius:12px;padding:6px 4px;box-shadow:0 0 15px #ffbe5630}
#home footer{top:97.5%;line-height:1.2}
