*{box-sizing:border-box}body{margin:0;background:#102b23;color:#f0f2df;font:15px system-ui,sans-serif;background-image:radial-gradient(ellipse at 80% 0,#41634899,transparent 60%);min-height:100vh}a{color:inherit}button,input{font:inherit}button,.button{cursor:pointer;border:1px solid #ffffff25;border-radius:12px;padding:13px 18px;background:#ffffff09;color:inherit;text-decoration:none;display:inline-block}button:hover,.button:hover{background:#ffffff18}button:disabled{opacity:.45;cursor:default}.primary{background:#d1e6a0!important;color:#16362a!important;font-weight:700}.wrap{max-width:1120px;margin:auto;padding:30px 24px 60px}.top{display:flex;justify-content:space-between;align-items:center;gap:12px}.brand{font-size:12px;letter-spacing:5px;color:#cbdcb3;text-decoration:none}h1,h2,h3{font-family:Georgia,serif;font-weight:400}h1{font-size:clamp(36px,6vw,66px);margin:34px 0 12px}h2{font-size:28px;margin:0 0 16px}.muted{color:#b4c8b6;line-height:1.7}.card{background:#183c30b8;border:1px solid #ffffff1c;border-radius:22px;padding:25px;margin-top:22px}.grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.characters{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-top:18px}.character{padding:10px 7px;text-align:center;border:1px solid #ffffff24;background:#ffffff04;border-radius:15px;position:relative}.character.selected{border-color:#d1e6a0;box-shadow:inset 0 0 0 1px #d1e6a0;background:#d1e6a014}.character small{display:block;font-size:10px;color:#b7cbbb;line-height:1.4;margin-top:5px}.avatar{width:90px;max-width:100%;height:100px;overflow:visible}.golfer{transform-origin:50% 90%;animation:breathe 3s ease-in-out infinite}@keyframes breathe{50%{transform:translateY(-2px) rotate(1deg)}}input{background:#0d271e;border:1px solid #ffffff30;color:white;border-radius:12px;padding:13px;width:100%;margin:8px 0 15px}label{font-size:12px;letter-spacing:1px}.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.row.between{justify-content:space-between}.room{padding:14px;border-bottom:1px solid #ffffff18;display:flex;align-items:center;justify-content:space-between;gap:12px}.players{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.player{text-align:center;background:#ffffff06;border-radius:16px;padding:16px 8px}.pill{font-size:11px;padding:6px 9px;background:#ffffff10;border-radius:8px;color:#d2e3ba}.error{color:#ffd0a8;min-height:24px;margin:12px 0}table{width:100%;border-collapse:collapse;text-align:left}td,th{padding:12px 8px;border-bottom:1px solid #ffffff15}th{font-size:11px;color:#b9cdb8;text-transform:uppercase}.smallavatar{width:36px;height:42px;vertical-align:middle;margin-right:8px}.links{display:flex;gap:10px;flex-wrap:wrap}#lobby[hidden],#setup[hidden]{display:none}.hero-art{display:flex;align-items:end;justify-content:center;padding:25px;gap:10px}.hero-art .avatar{width:120px;height:150px}.guide{display:flex;gap:12px;flex-wrap:wrap;margin:22px 0}.guide span{background:#ffffff08;border:1px solid #ffffff15;border-radius:30px;padding:9px 15px;font-size:12px}.mp-hud{position:fixed;top:110px;left:24px;z-index:20;background:#123429eb;border:1px solid #ffffff30;border-radius:16px;padding:12px;min-width:180px;max-width:240px;color:#fff;font:13px system-ui}.mp-hud .avatar{width:42px;height:46px}.mp-time{font:30px Georgia;color:#d1e6a0}.mp-overlay{position:fixed;inset:0;z-index:100;background:#0c241ee8;backdrop-filter:blur(10px);overflow:auto;display:flex;align-items:center;justify-content:center;padding:20px}.mp-overlay .card{width:min(820px,100%);margin:auto}.mp-overlay .avatar{width:35px;height:40px}.countdown{font:80px Georgia;text-align:center;color:#d1e6a0}.toast{position:fixed;top:45%;left:50%;transform:translateX(-50%);z-index:110;padding:15px 24px;border-radius:14px;background:#143c30;border:1px solid #e1b478;color:#ffddba}.mp-score-scroll{overflow:auto} @media(max-width:760px){.grid{grid-template-columns:1fr}.characters{grid-template-columns:repeat(2,1fr)}.players{grid-template-columns:repeat(2,1fr)}.wrap{padding:22px 16px}.card{padding:18px}.mp-hud{top:175px;left:10px;min-width:140px;max-width:170px;padding:8px;font-size:11px}.mp-time{font-size:24px}.mp-overlay td,.mp-overlay th{padding:8px 4px;font-size:11px}.hero-art .avatar{width:80px;height:100px}}

.mp-game header h1{font-size:30px;margin:8px 0}.mp-game #panel .row{flex-wrap:nowrap}.mp-game nav{z-index:25}.mp-game .mp-overlay h2{font-size:28px}@media(max-width:600px){.mp-game header h1{font-size:24px}}

[hidden]{display:none!important}.player>strong{display:block;margin-top:6px}

.mp-player-row{margin-top:7px;display:flex;gap:7px;align-items:center}.mp-player-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.mp-collision-note{font-size:10px;color:#cfdfa9;border-top:1px solid #ffffff20;padding-top:8px;margin-top:8px}.mp-game .mp-hud .golfer{animation:none}.mp-game .mp-hud{backdrop-filter:none}.mp-game #panel{backdrop-filter:none;background:#102b24f5}

.top{flex-wrap:wrap}.top #music-toggle{font-size:12px;padding:10px 12px;min-height:44px}

/* Cinematic portraits: one shared compressed atlas, lightweight transform animation. */
.avatar-portrait{display:inline-block;position:relative;isolation:isolate;overflow:hidden;border-radius:20px;background:#173b2d;vertical-align:middle;box-shadow:inset 0 0 0 1px #ffffff16;aspect-ratio:1;flex-shrink:0}
.avatar-paint{position:absolute;inset:0;background-image:url('/avatars-cinema-v1.webp');background-size:500% 200%;background-position:var(--portrait-x) var(--portrait-y);background-repeat:no-repeat;transform:scale(1.035);transform-origin:50% 76%;animation:portrait-breathe 6s ease-in-out infinite;animation-delay:var(--portrait-delay)}
.avatar-sheen{pointer-events:none;position:absolute;inset:0;background:linear-gradient(135deg,#ffffff0d,transparent 45%,#071d1619);box-shadow:inset 0 0 0 1px #ffffff1c;border-radius:inherit}
.characters{grid-template-columns:repeat(5,minmax(0,1fr));gap:14px}
.character{display:flex;flex-direction:column;align-items:center;min-width:0;padding:10px 10px 15px;border-radius:21px;border:1px solid #ffffff1b;background:linear-gradient(160deg,#31544055,#0b281f66);transition:transform .2s,border-color .2s,box-shadow .2s;overflow:hidden;text-align:center}
.character>.avatar{display:block;width:100%;max-width:none;height:auto;aspect-ratio:1;margin:0 0 14px;border-radius:15px;box-shadow:0 8px 18px #0003}
.character-name{display:block;white-space:nowrap;word-break:normal;overflow-wrap:normal;font-size:clamp(12px,1.05vw,14px);font-weight:650;letter-spacing:-.15px;line-height:1.35;width:100%;color:#f4eed9;margin:0}
.character .character-description{font-size:11px;line-height:1.55;margin:7px 0 0;color:#afc5b4;min-height:35px;max-width:100%}
.character.selected{border-color:#d2e6a0;box-shadow:0 0 0 1px #d2e6a077,0 12px 25px #0003;background:linear-gradient(160deg,#74925638,#153d2d)}
.character.selected::after{content:'✓';position:absolute;right:17px;top:17px;background:#d3e6a3;color:#173a26;border-radius:50%;width:25px;height:25px;font-size:16px;font-weight:800;display:grid;place-items:center;box-shadow:0 3px 12px #0003}
@media(hover:hover){.character:hover{transform:translateY(-5px);border-color:#d2e6a077;box-shadow:0 12px 30px #0004}.character:hover .avatar-paint{animation:portrait-greet 1.5s ease-in-out infinite;animation-delay:0s}}
.avatar-afro .avatar-paint{animation-name:portrait-disco;animation-duration:4s}.avatar-robot .avatar-paint{animation-name:portrait-robot;animation-duration:4.5s}.avatar-ninja .avatar-paint{animation-name:portrait-ninja;animation-duration:6.5s}.avatar-pirate .avatar-paint{animation-name:portrait-disco;animation-duration:7s}
@keyframes portrait-breathe{0%,100%{transform:scale(1.035) translateY(1px) rotate(-.35deg)}50%{transform:scale(1.055) translateY(-2px) rotate(.35deg)}}
@keyframes portrait-greet{0%,100%{transform:scale(1.045) rotate(-1deg)}50%{transform:scale(1.075) translateY(-2px) rotate(1.2deg)}}
@keyframes portrait-disco{0%,100%{transform:scale(1.045) rotate(-1deg)}50%{transform:scale(1.06) translateY(-2px) rotate(1deg)}}
@keyframes portrait-robot{0%,40%,100%{transform:scale(1.04) translateY(0)}45%,55%{transform:scale(1.05) translateY(-3px)}60%{transform:scale(1.04) translateY(1px)}}
@keyframes portrait-ninja{0%,65%,100%{transform:scale(1.04) translateY(0)}72%,86%{transform:scale(1.07) translateY(-1px) rotate(-1deg)}}
.player>.avatar-portrait{width:106px;height:106px;margin:0 auto 8px;display:block}.mp-score-scroll .avatar-portrait{width:35px;height:35px;margin-right:7px;border-radius:9px}.mp-score-scroll .avatar-paint,.mp-hud .avatar-paint{animation:none!important}.mp-hud .avatar-portrait{border-radius:9px}
.hero-art>.avatar-portrait{width:120px;height:120px}
@media(max-width:950px) and (min-width:761px){.characters{grid-template-columns:repeat(3,minmax(0,1fr))}.character-name{font-size:14px}}
@media(max-width:760px){.characters{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.character{padding:8px 8px 13px;border-radius:17px}.character>.avatar{margin-bottom:12px;border-radius:12px}.character-name{font-size:12px;letter-spacing:-.2px}.character .character-description{font-size:10px;line-height:1.5;min-height:32px}.character.selected::after{top:13px;right:13px;width:23px;height:23px;font-size:14px}.hero-art>.avatar-portrait{width:70px;height:70px}.player>.avatar-portrait{width:90px;height:90px}}
@media(prefers-reduced-motion:reduce){.avatar-paint{animation:none!important}.character{transition:none}.character:hover{transform:none}}

/* A second registered pose makes each partner point at the visitor. Only the
   interacted-with card animates; portraits in the match keep their idle art. */
.avatar-point{position:absolute;inset:0;pointer-events:none;background-image:url('/avatars-point-v1.webp');background-size:500% 200%;background-position:var(--portrait-x) var(--portrait-y);background-repeat:no-repeat;opacity:0;transform:scale(.98) translateY(5px);transform-origin:50% 75%;transition:opacity .22s ease,transform .42s cubic-bezier(.2,.8,.25,1);border-radius:inherit}
.character:is(:focus-visible,.greeting) .avatar-point{opacity:1;transform:scale(1.035)}
.character:is(:focus-visible,.greeting) .avatar-paint{animation-play-state:paused}
.character:focus-visible{outline:3px solid #edce80;outline-offset:4px}
.character.greeting .avatar-point{animation:partner-point 1.5s ease-out both}
@media(hover:hover) and (pointer:fine){.character:hover .avatar-point{opacity:1;transform:scale(1.035)}.character:hover .avatar-paint{animation-play-state:paused}.character:hover .avatar-point{animation:partner-point 1.5s ease-out both}}
@keyframes partner-point{0%{opacity:0;transform:scale(.98) translateY(5px)}22%{opacity:1;transform:scale(1.055) translateY(-2px)}40%{opacity:1;transform:scale(1.025)}58%{opacity:1;transform:scale(1.045) rotate(.5deg)}100%{opacity:1;transform:scale(1.035)}}
@media(prefers-reduced-motion:reduce){.avatar-point{transition:none!important;animation:none!important;transform:none!important}.character.greeting .avatar-point{opacity:1}}
