:root{--cream:#FFF9F1;--peach-50:#FFF3E8;--peach-100:#FFE8D6;--peach-200:#FFD4B5;--coral:#FF8A5E;--coral-deep:#F06D3F;--butter:#FFD98E;--honey:#F5B940;--sage:#A9C98F;--sage-deep:#6E9B58;--rose:#F2A3A3;--rose-deep:#D97777;--cocoa:#5B4636;--cocoa-60:#93806E;--cocoa-30:#C9B9A6;--card:#FFFDFA;--shadow-warm:0 3px 14px rgba(181,130,84,.10);--radius-card:14px;--font-app:"Microsoft YaHei","PingFang SC","Hiragino Sans GB","Helvetica Neue",Arial,sans-serif}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--cream);color:var(--cocoa);line-height:1.6;-webkit-font-smoothing:antialiased}.display-font,body{font-family:var(--font-app)}.display-font{font-weight:700;letter-spacing:.3px}.blob{position:fixed;border-radius:50%;filter:blur(60px);opacity:.5;z-index:-1;pointer-events:none}.blob-1{width:420px;height:420px;background:var(--peach-200);top:-120px;right:-100px}.blob-2{width:360px;height:360px;background:var(--butter);bottom:8%;left:-140px}.blob-3{width:300px;height:300px;background:#F6D9E3;top:40%;right:-120px}.page{max-width:1100px;margin:0 auto;padding:0 24px 100px}.card{background:var(--card);border-radius:var(--radius-card);box-shadow:var(--shadow-warm);padding:20px}.field{width:100%;text-align:left;margin-bottom:16px}.field label{font-size:12px;color:var(--cocoa-60);margin-left:4px}.field input,.field select,.field textarea{width:100%;margin-top:6px;padding:12px 16px;border:1.5px solid var(--peach-200);border-radius:10px;background:var(--card);font-size:15px;color:var(--cocoa);outline:none;transition:border .2s;font-family:inherit}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--coral)}.field .err{font-size:12px;color:var(--rose-deep);margin-left:4px}.btn-primary{width:100%;padding:14px;border:none;border-radius:10px;background:linear-gradient(135deg,var(--coral),var(--coral-deep));color:#fff;font-size:15px;font-weight:600;letter-spacing:1px;cursor:pointer;box-shadow:0 6px 16px rgba(240,109,63,.28);transition:transform .15s;font-family:inherit}.btn-primary:active{transform:scale(.98)}.btn-primary:disabled{opacity:.55;cursor:not-allowed}.btn-secondary{padding:9px 20px;border:1.5px solid var(--peach-200);border-radius:10px;background:var(--card);color:var(--cocoa);font-size:14px;cursor:pointer;transition:all .2s;font-family:inherit}.btn-secondary:hover{border-color:var(--coral);color:var(--coral-deep)}.btn-secondary:disabled{opacity:.55;cursor:not-allowed}.btn-danger{padding:9px 20px;border:none;border-radius:10px;background:var(--rose);color:#fff;font-size:14px;cursor:pointer;box-shadow:0 4px 12px rgba(217,119,119,.3);transition:transform .15s;font-family:inherit}.btn-danger:active{transform:scale(.98)}.btn-danger:disabled{opacity:.55;cursor:not-allowed}.chip{font-size:12px;padding:6px 14px;border-radius:999px;background:var(--card);color:var(--cocoa-60);border:1.5px solid var(--peach-100);cursor:pointer;transition:all .2s;font-family:inherit}.chip.active{background:var(--coral);border-color:var(--coral);color:#fff;font-weight:600}.tip-error{background:#FBECEC;color:var(--rose-deep)}.tip-error,.tip-success{font-size:13px;border-radius:12px;padding:10px 16px;margin-bottom:14px}.tip-success{background:#EEF5E6;color:var(--sage-deep)}.auth-screen{min-height:100vh;flex-direction:column;text-align:center;padding:32px 24px}.auth-screen,.login-sun{display:flex;justify-content:center;align-items:center}.login-sun{width:96px;height:96px;border-radius:50%;background:linear-gradient(145deg,var(--butter),var(--coral));font-size:44px;box-shadow:0 12px 30px rgba(255,138,94,.35);margin-bottom:22px;animation:floaty 4s ease-in-out infinite}@keyframes floaty{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.auth-box{width:100%;max-width:360px}.auth-screen h1{font-size:28px;font-weight:700}.login-slogan{margin:8px 0 34px}.login-foot,.login-slogan{font-size:13px;color:var(--cocoa-60)}.login-foot{margin-top:26px}.login-foot a{color:var(--coral-deep);text-decoration:none;font-weight:600}.login-terms{margin-top:14px;font-size:11px;color:var(--cocoa-30)}.terms-check{display:flex;align-items:center;gap:6px;justify-content:center;font-size:12px;color:var(--cocoa-60);margin:4px 0 16px}.terms-check a{color:var(--coral-deep);text-decoration:none}.wb-header{padding:26px 22px 18px;background:linear-gradient(160deg,var(--peach-100),var(--cream) 80%);border-radius:0 0 30px 30px}.wb-greet{font-size:20px}.wb-sub{font-size:12px;color:var(--cocoa-60);margin-top:2px}.wb-class-chips{display:flex;gap:8px;margin-top:14px;flex-wrap:wrap}.wb-stats{display:flex;gap:10px;padding:16px 22px 4px}.stat-pill{flex:1 1;background:var(--card);border-radius:12px;padding:12px 14px;box-shadow:var(--shadow-warm)}.stat-pill .num{font-size:22px;color:var(--coral-deep)}.stat-pill .lab{font-size:11px;color:var(--cocoa-60)}.stat-pill.star .num{color:var(--honey);font-size:15px;white-space:nowrap}.wb-grid-wrap{flex:1 1;overflow-y:auto;padding:12px 18px 90px;max-width:720px;margin:0 auto;width:100%}.stu-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:10px;gap:10px}.stu-card{background:var(--card);border-radius:14px;padding:12px 8px 10px;text-align:center;box-shadow:var(--shadow-warm);position:relative;transition:transform .15s;cursor:pointer}.stu-card:active{transform:scale(.95)}.stu-card.selected{outline:2.5px solid var(--coral);outline-offset:-2.5px}.stu-card .avatar{width:56px;height:56px;margin:0 auto 6px;border-radius:50%;overflow:hidden;position:relative;background:var(--peach-100);display:flex;align-items:center;justify-content:center}.avatar-lg img,.stu-card .avatar img{width:100%;height:100%;position:relative;z-index:2}.avatar-fb{font-size:22px;color:var(--coral-deep);font-weight:700;position:absolute}.stu-card .name{font-size:13px}.stu-card .pts{display:inline-block;margin-top:4px;font-size:11px;color:var(--sage-deep);background:#EEF5E6;padding:1px 10px;border-radius:999px;font-weight:700}.stu-card .pts.neg{color:var(--rose-deep);background:#FBECEC}.stu-card .plus{top:-6px;right:-4px;width:24px;height:24px;border-radius:50%;border:none;cursor:pointer;background:var(--coral);color:#fff;line-height:24px;box-shadow:0 4px 10px rgba(240,109,63,.4)}.float-plus,.stu-card .plus{position:absolute;font-size:15px}.float-plus{left:50%;top:6px;transform:translateX(-50%);color:var(--sage-deep);font-weight:800;pointer-events:none;animation:rise .8s ease-out forwards}.float-minus{color:var(--rose-deep)!important}@keyframes rise{to{transform:translate(-50%,-34px);opacity:0}}.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:40;display:flex;background:var(--card);border-top:1px solid var(--peach-100);padding:8px 6px calc(18px + env(safe-area-inset-bottom));max-width:720px;margin:0 auto}.tabbar .tb{flex:1 1;text-align:center;font-size:10px;color:var(--cocoa-30);text-decoration:none;display:block}.tabbar .tb .ico{font-size:21px;display:block}.tabbar .tb.on{color:var(--coral-deep);font-weight:600}.tv-warm-bg{position:absolute;inset:0;background:linear-gradient(150deg,var(--tv-bg-a,#FFEFD9) 0,var(--tv-bg-b,#FFF7EA) 45%,var(--tv-bg-c,#FFE3CB) 100%)}.tv-blob{position:absolute;border-radius:50%;filter:blur(46px);opacity:.55}.tvb-1{width:240px;height:240px;background:var(--tv-blob-1,var(--butter));top:-70px;left:-50px}.tvb-2{width:220px;height:220px;background:var(--tv-blob-2,var(--peach-200));bottom:-80px;right:-40px}.lb-head{position:relative;z-index:2;text-align:center;padding-top:26px}.lb-head .cls{font-size:15px;color:var(--tv-ink,var(--coral-deep));opacity:.8;font-weight:600}.lb-head h2{font-size:34px;font-weight:700;color:var(--tv-ink,var(--cocoa));margin-top:2px}.lb-list{position:relative;z-index:2;display:grid;grid-template-columns:repeat(2,1fr);grid-gap:10px 18px;gap:10px 18px;padding:22px 64px 0}.lb-row{display:flex;align-items:center;gap:12px;background:rgba(255,253,250,.88);border-radius:12px;padding:8px 16px;box-shadow:0 3px 12px rgba(181,130,84,.1)}.lb-row .rank{width:30px;text-align:center;font-size:17px;font-weight:800;color:var(--cocoa-30)}.lb-row:first-child .rank{color:var(--honey);font-size:20px}.lb-row:nth-child(2) .rank{color:#B8A88F}.lb-row:nth-child(3) .rank{color:#CE9563}.lb-row .avatar{width:38px;height:38px;border-radius:50%;overflow:hidden;position:relative;background:var(--peach-100);flex-shrink:0;display:flex;align-items:center;justify-content:center}.lb-row .avatar img{width:100%;height:100%;position:relative;z-index:2}.lb-row .nm{font-size:15px}.lb-row .sc{margin-left:auto;font-size:18px;font-weight:800;color:var(--coral-deep)}.lb-row .sc i{font-style:normal;font-size:11px;color:var(--cocoa-30);margin-left:2px}.lb-row.hot{animation:glow 2.4s ease-in-out infinite}@keyframes glow{0%,to{box-shadow:0 4px 14px rgba(181,130,84,.12)}50%{box-shadow:0 6px 24px rgba(245,185,64,.45);transform:translateY(-2px)}}.lb-foot{position:absolute;z-index:2;bottom:14px;left:0;right:0;text-align:center;font-size:12px;color:var(--cocoa-30)}.slot-wrap{position:relative;z-index:2;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px}.slot-title{font-size:30px;font-weight:700;color:var(--tv-ink,var(--cocoa))}.slot-machine{width:300px;background:rgba(255,253,250,.94);border-radius:18px;padding:26px 24px 20px;text-align:center;box-shadow:0 12px 32px rgba(240,109,63,.18);border:2px solid var(--peach-200);position:relative}.slot-machine .sparkle{position:absolute;font-size:20px;animation:twinkle 1.6s infinite}.sp-1{top:-12px;left:-14px}.sp-2{bottom:-10px;right:-14px;animation-delay:.8s}@keyframes twinkle{0%,to{transform:scale(1);opacity:.9}50%{transform:scale(1.35);opacity:.4}}.slot-avatar{width:118px;height:118px;margin:0 auto;border-radius:50%;overflow:hidden;background:linear-gradient(145deg,var(--peach-100),var(--butter));display:flex;align-items:center;justify-content:center;position:relative;border:4px solid #fff;box-shadow:0 8px 20px rgba(240,109,63,.25)}.slot-avatar img{width:100%;height:100%;z-index:2;position:relative}.slot-avatar.rolling{animation:wobble .18s linear infinite}@keyframes wobble{0%,to{transform:rotate(-2deg)}50%{transform:rotate(2deg)}}.slot-name{font-size:22px;margin-top:12px;min-height:30px}.slot-sub{font-size:12px;color:var(--cocoa-30);margin-top:2px}.btn-lottery{margin-top:4px;padding:13px 52px;border:none;border-radius:10px;cursor:pointer;background:linear-gradient(135deg,var(--coral),var(--coral-deep));color:#fff;font-size:17px;font-weight:700;box-shadow:0 8px 20px rgba(240,109,63,.32);transition:transform .15s;font-family:inherit}.btn-lottery:active{transform:scale(.96)}.slot-remain{font-size:12px;color:var(--cocoa-30)}.winner-tag{display:none;font-size:14px;color:#fff;background:var(--honey);padding:4px 18px;border-radius:999px;font-weight:600}.confetti{position:absolute;z-index:5;top:40%;left:50%;pointer-events:none}.confetti i{position:absolute;width:8px;height:13px;border-radius:2px;opacity:0;animation:burst 1.2s ease-out forwards}@keyframes burst{0%{transform:translate(0) rotate(0);opacity:1}to{transform:translate(var(--dx),var(--dy)) rotate(var(--rot));opacity:0}}.scratch-stage{position:relative;z-index:2;width:min(680px,58vw);height:320px;border-radius:24px;background:var(--card);box-shadow:0 12px 32px rgba(240,109,63,.18);border:2px solid var(--peach-200);justify-content:center;overflow:hidden}.scratch-prize,.scratch-stage{display:flex;align-items:center}.scratch-prize{flex-direction:column;gap:12px}.scratch-avatar{width:116px;height:116px;border-radius:50%;overflow:hidden;position:relative;background:linear-gradient(145deg,var(--peach-100),var(--butter));border:4px solid #fff;box-shadow:0 8px 20px rgba(240,109,63,.25);display:flex;align-items:center;justify-content:center}.scratch-avatar img{width:100%;height:100%;position:relative;z-index:2;object-fit:cover}.scratch-name{font-size:28px}.scratch-prize-tag{background:var(--honey);color:#fff;font-weight:700;font-size:19px;padding:7px 26px;border-radius:999px}.scratch-empty{display:flex;flex-direction:column;align-items:center}.scratch-coating{position:absolute;inset:0;width:100%;height:100%}.scratch-modal{position:fixed;inset:0;z-index:60;background:rgba(42,36,90,.4);display:flex;align-items:center;justify-content:center}.scratch-textarea{width:100%;padding:12px;border:2px solid var(--peach-200);border-radius:12px;font:inherit;font-size:15px;resize:vertical;background:#fff}.gacha-machine{position:relative;z-index:2;width:300px;border-radius:22px;background:rgba(255,253,250,.94);border:2px solid var(--peach-200);box-shadow:0 12px 32px rgba(240,109,63,.18);padding:18px 18px 22px}.gacha-machine.shaking{animation:gacha-shake .3s ease-in-out infinite}@keyframes gacha-shake{0%,to{transform:rotate(-1.2deg)}50%{transform:rotate(1.2deg)}}.gacha-dome{position:relative;height:170px;border-radius:85px;overflow:hidden;background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.95),rgba(255,248,240,.55) 42%,rgba(255,212,181,.35));border:2px solid var(--peach-200)}.gacha-ball{position:absolute;width:52px;height:52px;border-radius:50%;box-shadow:inset -6px -8px 0 rgba(0,0,0,.12),inset 6px 8px 0 rgba(255,255,255,.35)}.gacha-ball:first-child{left:14px;top:38px}.gacha-ball:nth-child(2){left:66px;top:16px}.gacha-ball:nth-child(3){left:122px;top:44px}.gacha-ball:nth-child(4){left:178px;top:20px}.gacha-ball:nth-child(5){left:214px;top:74px}.gacha-ball:nth-child(6){left:40px;top:98px}.gacha-ball:nth-child(7){left:118px;top:100px}.gacha-machine.shaking .gacha-ball{animation:ball-jiggle .24s ease-in-out infinite}@keyframes ball-jiggle{0%,to{transform:translate(0)}50%{transform:translate(3px,-4px)}}.gacha-face{display:flex;align-items:flex-end;gap:16px;margin-top:16px}.gacha-knob{position:relative;width:76px;height:76px;border-radius:50%;flex-shrink:0;background:conic-gradient(from 0deg,#f06d3f,#ffb36b,#f06d3f);border:4px solid #fff;box-shadow:0 6px 16px rgba(240,109,63,.35)}.gacha-knob span{position:absolute;left:50%;top:7px;width:6px;height:20px;margin-left:-3px;border-radius:3px;background:#fff}.gacha-knob.knob-spin{animation:knob-rot 1.25s cubic-bezier(.45,.05,.55,.95) forwards}@keyframes knob-rot{to{transform:rotate(2turn)}}.gacha-chute{flex:1 1;height:130px;border-radius:14px;position:relative;background:var(--peach-50);border:2px dashed var(--peach-200)}.gacha-capsule{position:absolute;left:50%;top:8px;width:96px;height:96px;margin-left:-48px}.gacha-capsule.cap-drop{animation:cap-fall 1s cubic-bezier(.3,.7,.4,1.4) forwards}@keyframes cap-fall{0%{transform:translateY(-130px) scale(.7);opacity:0}55%{transform:translateY(22px) scale(1);opacity:1}75%{transform:translateY(-8px)}to{transform:translateY(10px);opacity:1}}.gacha-shell{position:absolute;left:0;width:96px;height:48px}.shell-l{top:0;border-radius:96px 96px 0 0}.shell-r{top:48px;border-radius:0 0 96px 96px}.gacha-capsule.cap-crack{transform:translateY(10px)}.gacha-capsule.cap-crack .shell-l{animation:shell-l-open .5s ease forwards}.gacha-capsule.cap-crack .shell-r{animation:shell-r-open .5s ease forwards}@keyframes shell-l-open{to{transform:translate(-30px,-22px) rotate(-40deg);opacity:0}}@keyframes shell-r-open{to{transform:translate(30px,22px) rotate(40deg);opacity:0}}.gacha-result{position:absolute;inset:5px;border-radius:16px;background:#fff;box-shadow:0 8px 20px rgba(91,70,54,.22);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;animation:result-pop .45s cubic-bezier(.34,1.56,.64,1) .25s backwards}@keyframes result-pop{0%{transform:scale(.4);opacity:0}}.gacha-avatar{width:46px;height:46px;border-radius:50%;overflow:hidden;position:relative;background:linear-gradient(145deg,var(--peach-100),var(--butter));display:flex;align-items:center;justify-content:center}.gacha-avatar img{width:100%;height:100%;position:relative;z-index:2;object-fit:cover}.gacha-name{font-size:16px}.gacha-banner{position:relative;z-index:2;margin-top:2px;font-size:26px;color:var(--cocoa)}.gacha-banner .prize{display:inline-block;background:var(--honey);color:#fff;font-weight:700;border-radius:999px;padding:5px 24px;margin-left:12px}.ttv-card{position:relative;z-index:2;background:rgba(255,253,250,.92);border-radius:20px;padding:18px 22px;box-shadow:0 12px 32px rgba(240,109,63,.18)}.ttv-grid{display:grid;grid-template-columns:88px repeat(5,148px);grid-gap:7px;gap:7px}.ttv-row{display:contents}.ttv-head{text-align:center;font-size:19px;font-weight:800;color:var(--cocoa);padding:7px 0;border-radius:10px}.ttv-head.today{color:#fff;background:var(--tv-accent-1,var(--coral))}.ttv-corner,.ttv-time{color:var(--cocoa-30)}.ttv-time{display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:12px}.ttv-no{font-size:17px;font-weight:800;color:var(--cocoa-60)}.ttv-cell{min-height:54px;border-radius:10px;background:var(--peach-50);display:flex;align-items:center;justify-content:center;font-size:19px;font-weight:700;color:var(--cocoa)}.ttv-cell.today{box-shadow:inset 0 0 0 2.5px var(--tv-accent-1,var(--coral));background:#fff}.ttv-cell.now{background:var(--tv-accent-1,var(--coral));color:#fff}.ttv-cell.empty{background:rgba(255,253,250,.5);color:var(--cocoa-30);font-weight:400}.ttv-status{position:relative;z-index:2;font-size:22px;color:var(--tv-ink,var(--cocoa))}.tt-grid{display:grid;grid-template-columns:64px repeat(5,1fr);grid-gap:6px;gap:6px}.tt-head{text-align:center;font-size:13px;font-weight:700;color:var(--cocoa);padding:6px 0;border-radius:8px;background:var(--peach-50)}.tt-head.tt-today{color:#fff;background:var(--coral)}.tt-today-dot{display:block;font-size:10px;font-weight:400}.tt-corner{background:none;color:var(--cocoa-30);font-size:12px;align-self:center}.tt-row{display:contents}.tt-time{display:flex;flex-direction:column;align-items:center;justify-content:center}.tt-no{font-size:14px;font-weight:800;color:var(--cocoa-60)}.tt-mm{font-size:10px;color:var(--cocoa-30)}.tt-cell{min-height:46px;border-radius:8px;border:1.5px dashed var(--peach-200);background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:4px 2px;cursor:pointer}.tt-cell.filled{border-style:solid;background:var(--peach-50)}.tt-cell.tt-today{box-shadow:inset 0 0 0 1.5px var(--coral)}.tt-subject{font-size:14px;font-weight:700;color:var(--cocoa)}.tt-teacher{font-size:10px;color:var(--cocoa-60)}.tt-plus{color:var(--cocoa-30);font-size:15px}.aw-overlay{position:absolute;inset:0;z-index:30;overflow:hidden;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;background:linear-gradient(150deg,var(--tv-bg-a,#FFEFD9) 0,var(--tv-bg-b,#FFF7EA) 50%,var(--tv-bg-c,#FFE3CB) 100%);transition:opacity .7s ease}.aw-period{position:relative;z-index:2;font-size:24px;font-weight:700;color:var(--tv-ink,var(--cocoa));letter-spacing:2px}.aw-list{z-index:2;flex-direction:column;gap:14px;max-width:760px}.aw-item,.aw-list{position:relative;display:flex;align-items:center}.aw-item{gap:16px;background:rgba(255,253,250,.94);border-radius:18px;padding:12px 28px;box-shadow:0 10px 26px rgba(91,70,54,.18);animation:aw-pop .5s cubic-bezier(.34,1.56,.64,1)}@keyframes aw-pop{0%{transform:scale(.5) translateY(20px);opacity:0}}.aw-avatar{width:56px;height:56px;border-radius:50%;overflow:hidden;position:relative;flex-shrink:0;background:linear-gradient(145deg,var(--peach-100),var(--butter));border:3px solid #fff;box-shadow:0 4px 12px rgba(240,109,63,.25);display:flex;align-items:center;justify-content:center}.aw-avatar img{width:100%;height:100%;position:relative;z-index:2;object-fit:cover}.aw-text{text-align:left}.aw-name{font-size:24px;color:var(--cocoa)}.aw-reason{font-size:14px;color:var(--cocoa-60);margin-top:2px}.aw-hint{position:absolute;bottom:18px;font-size:13px;color:var(--tv-ink,var(--cocoa));opacity:.6;z-index:2}@media (prefers-reduced-motion:reduce){.aw-item{animation:none}}.wall-wrap{position:relative;z-index:2;height:100%;padding:30px 44px;display:flex;flex-direction:column}.wall-title{text-align:center;font-size:26px;font-weight:700;color:var(--tv-ink,var(--cocoa))}.wall-sub{text-align:center;font-size:12px;color:var(--cocoa-30);margin-bottom:18px}.photo-grid{flex:1 1;display:flex;justify-content:center;align-items:center;gap:20px}.polaroid{background:#fff;padding:10px 10px 14px;border-radius:8px;box-shadow:0 10px 26px rgba(91,70,54,.18);position:relative;transition:transform .25s}.polaroid:hover{transform:scale(1.05) rotate(0deg)!important;z-index:3}.polaroid .tape{position:absolute;top:-10px;left:50%;transform:translateX(-50%) rotate(-4deg);width:74px;height:20px;background:rgba(255,217,142,.8);border-radius:2px}.polaroid .ph{width:170px;height:122px;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:42px}.polaroid .ph img{width:100%;height:100%;object-fit:cover;border-radius:4px}.polaroid .cap{text-align:center;font-size:13px;margin-top:8px;color:var(--cocoa-60)}.polaroid .date{text-align:center;font-size:10px;color:var(--cocoa-30)}.wall-progress{position:absolute;bottom:16px;left:50%;transform:translateX(-50%);width:180px;height:5px;background:var(--peach-100);border-radius:999px;overflow:hidden}.wall-progress i{display:block;height:100%;width:40%;background:var(--coral);border-radius:999px}.wall-music{position:absolute;top:24px;right:32px;font-size:12px;color:var(--cocoa-60);background:rgba(255,253,250,.8);padding:5px 14px;border-radius:999px;z-index:3}.pi-overlay{position:absolute;inset:0;z-index:40;overflow:hidden;display:flex;align-items:center;justify-content:center;transition:opacity .7s ease;cursor:pointer;background:linear-gradient(150deg,var(--tv-bg-a,#FFEFD9) 0,var(--tv-bg-b,#FFF7EA) 50%,var(--tv-bg-c,#FFE3CB) 100%)}.pi-overlay.leaving{opacity:0}.pi-overlay svg.pi-bunting{position:absolute;top:0;left:0;width:100%}.pi-line{position:relative;display:flex;align-items:flex-start;gap:16px;margin-top:40px}.pi-tile-wrap{display:flex;flex-direction:column;align-items:center;animation:pi-drop .7s cubic-bezier(.34,1.56,.64,1) backwards}.pi-string{width:3px;height:44px;background:var(--tv-ink,var(--cocoa));opacity:.55;border-radius:2px}.pi-tile{width:110px;height:110px;border-radius:22px;display:grid;place-items:center;font-size:64px;font-weight:900;box-shadow:inset 0 -9px 0 rgba(0,0,0,.14),0 9px 0 rgba(0,0,0,.22)}.pi-star{font-size:50px;margin-top:46px;text-shadow:0 4px 0 rgba(0,0,0,.2)}.pi-star,.pi-sub{color:var(--tv-ink,var(--cocoa))}.pi-sub{position:absolute;bottom:18%;left:0;right:0;text-align:center;font-size:26px;font-weight:700;letter-spacing:2px}@keyframes pi-drop{0%{transform:translateY(-140px) scale(.6);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}@media (prefers-reduced-motion:reduce){.pi-tile-wrap{animation:none}}.avatar-lg{width:88px;height:88px;border-radius:50%;overflow:hidden;background:var(--peach-100);position:relative}.avatar-lg,.modal-mask{display:flex;align-items:center;justify-content:center}.modal-mask{position:fixed;inset:0;z-index:60;background:rgba(91,70,54,.35);padding:24px;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.modal{background:var(--card);border-radius:var(--radius-card);box-shadow:0 20px 50px rgba(91,70,54,.26);width:100%;max-width:420px;padding:24px;max-height:86vh;overflow-y:auto}.modal h3{font-size:18px;margin-bottom:14px}.modal-actions{display:flex;gap:10px;margin-top:18px}.modal-actions button{flex:1 1}.batch-point-panel{position:-webkit-sticky;position:sticky;bottom:84px;z-index:30}@media (min-width:960px){.batch-point-panel{bottom:16px}}