
:root{--cream:#f0e7d5;--muted:#a1afa6;--gold:#d9b978;--green:#173c33;--line:#ffffff20;--bg:#091713;font-family:Arial,Helvetica,sans-serif;color:var(--cream);color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--bg)}button,input,select{font:inherit}button,a,input{ -webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit;border:1px solid var(--line);background:#152d26;transition:background .18s,border-color .18s,transform .18s}button:hover{border-color:var(--gold);background:#284b3d}button:active{transform:translateY(1px)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--gold);outline-offset:4px}button:disabled{opacity:.4;cursor:default;transform:none}.hidden{display:none!important}.eyebrow{font-size:10px;font-weight:600;letter-spacing:2.4px;line-height:1.6}.gold{color:var(--gold)}#scene{position:absolute;inset:0}#scene canvas{width:100%;height:100%;display:block;touch-action:none}.loading{position:absolute;inset:0;display:grid;place-content:center;text-align:center;background:#0b211b;font-size:21px;z-index:30}.loading small{font-size:12px;letter-spacing:1px;margin-top:24px;color:var(--muted)}.home{position:absolute;inset:0;overflow:hidden}.home-art{position:absolute;inset:0;background:url('assets/club-cover.png') center right/cover no-repeat;opacity:.96}.home-shade{position:absolute;inset:0;background:linear-gradient(90deg,#061710fa 0%,#071913c9 28%,#08191133 62%,#0003),linear-gradient(0deg,#06150ddd,transparent 30%)}.home-top{position:absolute;left:5%;right:5%;top:5%;display:flex;align-items:center;justify-content:space-between;gap:15px}.brand{color:var(--cream);text-decoration:none;display:flex;align-items:center;gap:12px;font-family:Georgia,serif;font-size:15px;letter-spacing:2.8px;white-space:nowrap}.brand img{width:41px;height:41px}.icon-button{width:42px;height:42px;border-radius:50%;font-size:20px;flex-shrink:0;background:#10281e99}.home-copy{position:absolute;left:9%;top:24%;width:390px}.tiny-line{display:inline-block;width:28px;height:1px;background:var(--gold);vertical-align:middle;margin-right:13px}h1{font:normal clamp(64px,6.7vw,110px)/.95 Georgia,'Times New Roman',serif;letter-spacing:-5px;margin:25px 0 24px}h1 em{font-weight:normal;color:var(--gold)}.home-copy>p{font-size:14px;line-height:1.8;color:#bfcbc2;letter-spacing:.2px;margin:0 0 28px}.home-actions{display:flex;flex-direction:column;gap:10px;width:300px}.primary,.secondary{height:52px;padding:0 22px;border-radius:3px;display:flex;align-items:center;justify-content:space-between;gap:18px;font-size:13px;font-weight:600}.primary{background:var(--gold);color:#162c23;border-color:var(--gold)}.primary:hover{background:#ebd1a0}.primary>span{font-size:22px}.secondary{background:#0d241bbf;font-weight:400}.secondary span{font-size:10px;letter-spacing:1px;color:var(--muted)}.text-button{background:none;border:0;padding:13px 0;text-align:left;font-size:12px;display:flex;justify-content:space-between;color:#c9d2c9}.home-note{font-size:8px;letter-spacing:1.8px;color:#819a8b;margin-top:24px;display:flex;align-items:center;gap:8px}.home-note i{width:5px;height:5px;background:var(--gold);border-radius:50%}.home-foot{position:absolute;bottom:4%;left:5%;right:5%;display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding-top:18px;font-size:8px;letter-spacing:1.8px;color:#a7b3a6}.home-foot button{background:none;border:0;font-size:11px;letter-spacing:0;color:var(--cream)}#game-ui{position:absolute;inset:0;pointer-events:none}#game-ui button,#game-ui input,#spin-pad{pointer-events:auto}.game-top{height:83px;position:absolute;top:0;left:0;right:0;background:linear-gradient(#071811ef,#071811b3);padding:13px 28px;display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line)}.brand-button{border:none;background:none;padding:0}.brand-button:hover{background:none}.scoreboard{display:flex;align-items:center;gap:26px;position:absolute;left:50%;transform:translateX(-50%)}.player{display:flex;align-items:center;gap:20px;opacity:.5}.player.active{opacity:1}.player span{font-size:10px;letter-spacing:1.5px;max-width:112px}.player strong{font:30px Georgia,serif}.score-divider{display:flex;flex-direction:column;align-items:center;gap:5px;font:italic 12px Georgia,serif;color:var(--gold)}.score-divider small{font:8px Arial;letter-spacing:1.4px;white-space:nowrap}.table-meta{position:absolute;top:107px;left:32px;right:32px;display:flex;justify-content:space-between;gap:12px}.table-meta h2{font:24px Georgia,serif;margin:8px 0 9px}.table-meta p{font-size:12px;color:#a5b5a9;margin:0;max-width:350px;line-height:1.5}.table-tools{display:flex;gap:7px;align-items:flex-start}.table-tools button{border-radius:24px;padding:10px 14px;font-size:11px;background:#0c221cbb;backdrop-filter:blur(10px)}.table-tools button span{margin-left:4px}.opponent-card{position:absolute;left:32px;bottom:162px;display:flex;align-items:center;gap:12px;width:290px;pointer-events:none}.opponent-card img{height:55px;width:55px;border-radius:50%;object-fit:cover;background:#244136;border:1px solid #d9b97866}.opponent-card small{font-size:8px;color:var(--gold);letter-spacing:1.7px}.opponent-card p{font:italic 13px/1.5 Georgia,serif;margin:5px 0;color:#c1cbbf}.status{position:absolute;bottom:158px;left:50%;transform:translateX(-50%);font-size:12px;border:1px solid #fff1;border-radius:22px;padding:11px 20px;background:#081d16db;text-align:center;max-width:42%;backdrop-filter:blur(9px)}.control-dock{position:absolute;bottom:41px;left:50%;transform:translateX(-50%);width:min(1020px,94%);height:98px;border:1px solid #c5c5a62a;border-radius:7px;background:#0e281fde;backdrop-filter:blur(16px);box-shadow:0 12px 70px #0005;display:flex;align-items:center;padding:13px 22px;gap:24px}.control-dock small,.power-control label{font-size:8px;letter-spacing:1.5px;color:var(--muted)}.shot-info{min-width:88px}.shot-info>div{display:flex;align-items:center;gap:8px;margin:9px 0 6px}.shot-info strong{font-size:12px;font-weight:400}.shot-info i{display:block;width:11px;height:11px;background:#b7232a;border-radius:50%;box-shadow:inset -2px -2px 3px #0007}.shot-info>span{font-size:8px;letter-spacing:1px;color:var(--gold)}.aim-control{border-left:1px solid var(--line);padding-left:23px;text-align:center}.aim-control>div{display:flex;gap:9px;align-items:center;margin-top:7px}.aim-control button{width:30px;height:30px;border-radius:50%;font-size:19px}.aim-control span{font-size:17px;color:#c3cbb4}.spin-control{display:flex;gap:13px;align-items:center}.spin-control>div:first-child{display:flex;flex-direction:column;gap:10px;width:53px}.spin-control button{border:0;background:none;font-size:9px;color:var(--gold);padding:0;text-align:left}#spin-pad{position:relative;height:58px;width:58px;border-radius:50%;background:radial-gradient(circle at 35% 25%,#fff9e9,#babeb2);box-shadow:inset -5px -5px 9px #0004;touch-action:none;cursor:crosshair;flex-shrink:0}.crosshair{position:absolute;inset:15%;border:1px dashed #162c2350;border-radius:50%}.crosshair:after,.crosshair:before{content:'';position:absolute;background:#173c3325}.crosshair:after{width:100%;height:1px;top:50%}.crosshair:before{height:100%;width:1px;left:50%}#spin-dot{position:absolute;left:50%;top:50%;width:8px;height:8px;border-radius:50%;background:#934a39;transform:translate(-50%,-50%);z-index:2;border:1px solid #63352b}.power-control{flex:1;min-width:80px}.power-control>div{display:flex;justify-content:space-between;align-items:center}.power-control output{font-size:12px;color:var(--gold)}input[type=range]{width:100%;height:20px;accent-color:var(--gold);cursor:pointer}.power-captions{font-size:6px;letter-spacing:1px;color:#778f7f}.shoot{min-width:168px;height:55px;flex-shrink:0}.game-foot{position:absolute;left:4%;right:4%;bottom:14px;display:flex;justify-content:space-between;align-items:center;font-size:8px;letter-spacing:1.4px;color:#91a496}.game-foot button{border:0;background:none;font-size:10px;letter-spacing:0}.nomination{position:absolute;bottom:154px;right:30px;background:#0b241be8;border:1px solid var(--line);padding:12px;border-radius:6px;pointer-events:auto}.nomination>span{font-size:9px;letter-spacing:1px}.nomination>div{display:flex;gap:7px;margin-top:10px}.color-ball{border-radius:50%;width:25px;height:25px;box-shadow:inset -4px -4px 5px #0004}.color-ball.selected{outline:2px solid var(--gold);outline-offset:3px}.modal{position:absolute;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:25px;background:#020b08be;backdrop-filter:blur(14px)}.modal-panel{position:relative;background:linear-gradient(140deg,#163b2d,#0c221a);border:1px solid #c8b68545;box-shadow:0 30px 100px #0007;border-radius:8px;padding:38px;width:min(790px,100%);max-height:90dvh;overflow-y:auto;scrollbar-width:thin}.modal-panel>h2{font:42px/1.15 Georgia,serif;letter-spacing:-1.4px;margin:12px 0 23px}.close{position:absolute;right:17px;top:15px;background:none;border:0;font-size:28px;color:#c3cdbe}.modal-lead{color:#b1c2b3;font-size:13px;line-height:1.8;margin-top:-8px}.card-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.choice-card{padding:18px;border-radius:4px;text-align:left;background:#071b144d;display:flex;gap:15px;align-items:center;position:relative}.choice-card img{width:67px;height:76px;object-fit:cover;border-radius:6px}.choice-card h3{font:20px Georgia,serif;margin:0 0 5px}.choice-card p{font-size:11px;line-height:1.5;margin:0;color:#a7bbab}.choice-card small{display:block;font-size:8px;letter-spacing:1.5px;color:var(--gold);margin-top:9px}.choice-card .stars{position:absolute;right:10px;top:10px;color:var(--gold);font-size:12px}.menu-row{margin-top:23px;display:flex;gap:12px;align-items:center;justify-content:space-between;font-size:12px}.menu-row select{padding:10px;background:#102c21;color:var(--cream);border:1px solid var(--line);border-radius:4px}.wide{width:100%;justify-content:center}.challenge-number{font:italic 37px Georgia,serif;color:var(--gold);opacity:.65;min-width:40px}.settings-list{display:grid;gap:0}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:18px 0;border-bottom:1px solid var(--line);font-size:14px}.settings-row small{display:block;margin-top:6px;color:#a8b9a9;font-size:11px;line-height:1.5}.settings-row input[type=checkbox]{width:21px;height:21px;accent-color:var(--gold)}.settings-row input[type=range]{width:145px}.help-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.help-grid h3{font:20px Georgia,serif;color:var(--gold);margin:0 0 8px}.help-grid p,.fine-print{font-size:12px;line-height:1.8;color:#b5c6b6}.fine-print{font-size:11px;border-top:1px solid var(--line);padding-top:15px;margin-top:22px}.look-card{min-height:115px;display:block;padding-left:74px}.look-swatch{position:absolute;left:18px;top:22px;width:40px;height:65px;border-radius:20px;border:1px solid #fff3;background:linear-gradient(45deg,#08664a,#b99868)}.look-card[data-look=mushroom] .look-swatch{background:radial-gradient(circle,#ffa0de,#8651a6,#00baa1)}.look-card[data-look=acid] .look-swatch{background:repeating-conic-gradient(#9be833 0 40deg,#dd448d 40deg 80deg,#553fe4 80deg 120deg)}.look-card[data-look=pixel] .look-swatch{border-radius:0;background:repeating-linear-gradient(0deg,#495b6b 0 8px,#8bbc7b 8px 16px)}.look-card[data-look=ink] .look-swatch{background:repeating-linear-gradient(40deg,#e7ddc1 0 4px,#504c40 4px 5px)}.look-card[data-look=watercolour] .look-swatch{background:radial-gradient(ellipse at 20% 20%,#dce8b7,transparent),radial-gradient(ellipse at 80% 70%,#bd837e,transparent),#8eb8ad}.look-card[data-look=noir] .look-swatch{background:linear-gradient(120deg,#eee,#252525)}.look-card.selected{border-color:var(--gold)}.result-medal{text-align:center;font:70px Georgia,serif;color:var(--gold);margin:15px 0 25px}.result-actions{display:flex;gap:12px;margin-top:24px}.result-actions button{flex:1 0 auto;min-height:48px}.toast{position:absolute;bottom:170px;left:50%;transform:translateX(-50%);z-index:60;max-width:80%;padding:14px 22px;border:1px solid #a68d54;background:#193b2b;box-shadow:0 5px 30px #0005;border-radius:5px;font-size:12px;text-align:center}
@media(min-width:1700px){.home-copy{top:25%;left:12%}.home-copy>p{font-size:17px}.home-actions{width:330px}.home-note{margin-top:40px}}
@media(max-height:760px) and (min-width:701px){.home-copy{top:20%}h1{font-size:75px;margin:18px 0}.home-copy>p{margin-bottom:20px}.home-note{margin-top:14px}.home-actions{gap:6px}.home-actions>button{height:43px}.home-foot{bottom:3%}}
@media(max-width:1000px){.brand-button span{display:none}.control-dock{gap:17px;padding:12px 16px}.aim-control{padding-left:15px}.spin-control>div:first-child{display:none}.opponent-card{width:220px}.opponent-card img{width:44px;height:44px}.opponent-card p{font-size:11px}.status{max-width:40%;font-size:11px}.table-meta h2{font-size:20px}.home-top>.eyebrow{font-size:8px}}
@media(max-width:700px){.home-art{background-position:63% center}.home-shade{background:linear-gradient(0deg,#061910 3%,#071910e8 38%,#06171022 90%),linear-gradient(90deg,#03160b99,transparent)}.home-top{top:28px;left:24px;right:24px}.home-top>.eyebrow{display:none}.brand{font-size:12px;letter-spacing:2px}.brand img{width:35px;height:35px}.home-copy{left:28px;right:28px;top:auto;bottom:100px;width:auto}.home-copy>.eyebrow{font-size:8px;letter-spacing:1.9px}h1{font-size:74px;letter-spacing:-4px;margin:20px 0}.home-copy>p{font-size:13px;margin-bottom:20px}.home-actions{width:100%}.home-actions .primary,.home-actions .secondary{height:49px}.home-note{font-size:6px;letter-spacing:1px;margin-top:16px}.home-foot{left:28px;right:28px;bottom:28px;font-size:6px;gap:8px}.home-foot>span:last-child{display:none}.home-foot button{font-size:10px}.game-top{height:65px;padding:10px 15px;gap:7px}.game-top .brand img{width:30px;height:30px}.game-top .icon-button{width:32px;height:32px;font-size:17px}.scoreboard{gap:12px}.player{gap:7px}.player span{max-width:66px;font-size:8px;letter-spacing:.4px}.player strong{font-size:23px}.score-divider small{font-size:6px;letter-spacing:.6px}.score-divider{font-size:10px;gap:3px}.table-meta{top:83px;left:20px;right:20px}.table-meta .eyebrow{font-size:7px}.table-meta h2{font-size:20px;margin:5px 0 7px}.table-meta p{font-size:10px;max-width:230px}.table-tools{gap:4px}.table-tools button{padding:8px 10px;font-size:12px}.table-tools button span{display:none}.table-tools #help{display:none}.opponent-card{display:none}.control-dock{height:138px;bottom:38px;width:calc(100% - 24px);padding:12px;gap:12px;flex-wrap:wrap;justify-content:space-between;align-content:center}.shot-info{min-width:52px;width:62px}.shot-info>div{margin:7px 0 4px;gap:5px}.shot-info strong{font-size:10px}.shot-info small{font-size:7px;letter-spacing:1px}.shot-info>span{font-size:7px}.aim-control{padding-left:12px}.aim-control small{font-size:7px}.aim-control>div{gap:5px}.aim-control button{width:25px;height:25px}.aim-control span{font-size:13px}.spin-control{margin-left:0}#spin-pad{height:46px;width:46px}.power-control{width:calc(100% - 145px);order:5;flex:0 0 calc(100% - 145px)}.power-control label{font-size:7px}.power-control output{font-size:10px}.power-captions{display:none}.shoot{order:6;height:43px;min-width:128px;width:128px;padding:0 13px;font-size:11px}.shoot>span{font-size:18px}.status{bottom:190px;max-width:calc(100% - 35px);width:max-content;font-size:11px;padding:10px 16px;max-height:53px}.game-foot{bottom:14px;font-size:6px;letter-spacing:.6px}.game-foot button{font-size:9px}.nomination{bottom:240px;right:20px}.nomination>span{font-size:8px}.nomination .color-ball{width:22px;height:22px}#undo{width:30px;height:30px;font-size:18px}.modal{padding:12px}.modal-panel{padding:29px 20px;max-height:94dvh}.modal-panel>h2{font-size:32px;margin-bottom:19px}.card-grid{gap:9px}.choice-card{padding:12px;gap:10px;flex-direction:column;align-items:flex-start}.choice-card img{width:100%;height:100px;object-fit:contain}.choice-card h3{font-size:18px}.choice-card p{font-size:10px}.choice-card small{font-size:7px;letter-spacing:.8px}.menu-row{gap:10px;font-size:10px;flex-wrap:wrap}.look-card{padding-left:60px;min-height:108px}.look-swatch{left:12px;width:32px;height:56px}.look-card h3{font-size:17px}.challenge-number{font-size:28px}.help-grid{gap:16px}.help-grid h3{font-size:18px}.help-grid p{font-size:11px}.modal-lead{font-size:12px}.toast{bottom:200px}.result-actions{flex-direction:column}}
@media(max-height:600px) and (orientation:landscape){.game-top{height:53px}.table-meta{top:63px}.table-meta h2{font-size:16px;margin:3px 0}.table-meta p,.table-meta>.table-tools #help,.opponent-card,.game-foot{display:none}.control-dock{height:73px;bottom:10px;flex-wrap:nowrap;width:94%;padding:10px}.status{bottom:95px;padding:6px 13px;font-size:10px}.nomination{bottom:100px}.home-copy{top:22%;bottom:auto;width:330px}.home-copy h1{font-size:52px;margin:13px 0}.home-copy>p,.home-note{display:none}.home-actions{gap:5px}.home-actions>button{height:38px}.home-foot{bottom:14px;padding-top:10px}.home-top{top:15px}.modal-panel{max-height:94dvh}.power-control{order:0;flex:1;width:auto}.shoot{order:0}.spin-control{display:flex}.shot-info{width:auto}.table-meta .eyebrow{display:none}}

.view-controls{position:absolute;right:28px;bottom:166px;display:flex;gap:5px;pointer-events:auto}.view-controls button{min-height:36px;padding:0 12px;border-radius:20px;background:#071b17da;font-size:10px;backdrop-filter:blur(10px)}.view-controls button[aria-pressed="true"]{color:#142c22;background:var(--gold)}#scene.orbiting{cursor:grab}#scene.orbiting:active{cursor:grabbing}
@media(max-width:700px){.view-controls{right:12px;bottom:238px;gap:4px}.view-controls button{min-height:36px;padding:0 10px;font-size:9px}}
@media(max-height:600px) and (orientation:landscape){.view-controls{bottom:90px;right:12px}.view-controls button{min-height:32px}}
.character-portrait{display:block;flex-shrink:0;background-image:url('assets/characters/club-cast-illustrated.png');background-size:400% auto;background-repeat:no-repeat;background-position:0 0%;border:1px solid #d9b97855}.portrait-otter{background-position:33.3333% 0%}.portrait-owl{background-position:66.6667% 0%}.portrait-panther{background-position:100% 0%}.choice-card .character-portrait{width:106px;height:144px;border-radius:3px}.opponent-card .character-portrait{width:64px;height:76px;border-radius:4px}.opponent-card{width:310px;padding:10px;background:linear-gradient(90deg,#071b17e8,#071b1700);border-radius:6px}.choice-card{min-height:180px}.choice-card h3{font-size:23px}
@media(max-width:700px){.choice-card .character-portrait{width:100%;height:165px}.choice-card{min-height:0}.choice-card h3{font-size:18px}.opponent-card{display:flex;left:12px;bottom:auto;top:78px;width:auto;padding:0;background:none}.opponent-card .character-portrait{width:34px;height:42px}.opponent-card>div{display:none}body:has(#opponent-card:not(.hidden)) .table-meta>div:first-child{padding-left:44px}}
@media(max-height:600px) and (orientation:landscape){.opponent-card{display:none}}
/* Keep the complete playing surface clear of the compact HUD. */
.table-meta{text-shadow:0 1px 5px #061710,0 0 12px #061710}
@media(max-width:700px){
 body:has(#game-ui:not(.hidden)) #scene{top:158px;bottom:228px}
 .aim-control button{width:34px;height:34px}
 .status{bottom:184px}
 .toast{bottom:230px}
}
@media(max-height:600px) and (orientation:landscape){
 body:has(#game-ui:not(.hidden)) #scene{top:53px;bottom:83px}
 .status{top:59px;bottom:auto}
}
