/* V9.6.2 — Air Hockey World Tour */
.airhockey-page{min-height:100dvh;overflow:hidden;background:radial-gradient(circle at 50% -15%,#1879cb 0,#082f66 34%,#04162f 78%)}
.air-top{height:64px}.air-top .brand .two{font-size:39px}.air-top .brand .blocks{font-size:23px}.air-top .brand small{top:39px}.air-shell{width:min(1500px,98vw);margin:auto}.air-game{height:calc(100dvh - 68px);min-height:430px;display:flex;flex-direction:column}.air-hud{display:grid;grid-template-columns:minmax(245px,.7fr) minmax(430px,1.3fr);gap:12px;align-items:end;padding:2px 3px 7px}.air-title>span{font:1000 8px Arial Black;letter-spacing:.13em;color:#71e9ff}.air-title h1{margin:1px 0;font:1000 clamp(18px,2.05vw,31px)/.95 Arial Black;text-shadow:0 3px 0 #07152f}.air-title h1 strong{color:#ffd43b}.air-scorebar{display:grid;grid-template-columns:1fr 1.18fr 1fr;gap:7px}.air-player,.air-centre{min-height:48px;padding:5px 8px;border:2px solid #2d83c7;border-radius:12px;background:linear-gradient(#0d3f78,#082756);box-shadow:0 4px 0 rgba(0,0,0,.27);text-align:center}.air-player small,.air-centre small{display:block;font:1000 7px Arial Black;color:#8ddfff;letter-spacing:.08em}.air-player b{display:block;font:1000 24px/.9 Arial Black;color:#fff}.air-player em,.air-centre em{display:block;font:900 7px Arial;font-style:normal;color:#91c9ef}.air-player.p1{border-color:#5de8ff;box-shadow:0 0 14px rgba(93,232,255,.22),0 4px 0 rgba(0,0,0,.27)}.air-player.p2{border-color:#ff9b45;box-shadow:0 0 14px rgba(255,155,69,.18),0 4px 0 rgba(0,0,0,.27)}.air-centre{border-color:#ffd43b;background:linear-gradient(#15506f,#0a3768)}.air-centre b{display:block;font:1000 10px Arial Black;color:#ffe761;margin:2px 0}.air-stage{position:relative;flex:1;min-height:0;border:3px solid #2d84c8;border-radius:22px;overflow:hidden;background:#04142d;box-shadow:0 16px 36px rgba(0,0,0,.38);isolation:isolate}.air-stage canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;user-select:none}.air-callout{position:absolute;left:50%;top:7px;transform:translateX(-50%);z-index:12;padding:7px 13px;border:2px solid #07152f;border-radius:999px;background:rgba(255,212,59,.96);color:#07152f;font:1000 9px Arial Black;letter-spacing:.05em;box-shadow:0 4px 0 rgba(0,0,0,.28);pointer-events:none;white-space:nowrap}.air-callout.goal{background:#8dff75;box-shadow:0 0 22px rgba(125,255,105,.7),0 4px 0 rgba(0,0,0,.28)}.air-callout.save{background:#72eaff}.air-callout.post{background:#ff9c58}.air-controls{position:absolute;left:7px;bottom:6px;z-index:14;display:flex;gap:4px;flex-wrap:wrap;max-width:70%}.air-small{padding:6px 8px;border:2px solid #07152f;border-radius:9px;background:linear-gradient(#70e7ff,#258dcc);color:#07152f;font:1000 8px Arial Black;box-shadow:0 3px 0 #073e6b}.air-small:active{transform:translateY(2px);box-shadow:0 1px 0 #073e6b}.air-setup,.air-result{position:absolute;inset:0;z-index:40;display:none;place-items:center;background:rgba(3,13,29,.86);backdrop-filter:blur(6px);padding:10px}.air-setup.show,.air-result.show{display:grid}.air-setup-card,.air-result-card{width:min(720px,97%);max-height:96%;overflow:auto;text-align:center;border:4px solid #ffd43b;border-radius:24px;background:linear-gradient(155deg,#125970,#0a3b64 58%,#071d46);padding:14px 18px;box-shadow:0 22px 60px rgba(0,0,0,.52)}.air-setup-card>small,.air-result-card>small{font:1000 8px Arial Black;color:#75e8ff;letter-spacing:.14em}.air-setup-card h2,.air-result-card h2{margin:2px 0 6px;font:1000 clamp(28px,5vw,45px)/.83 Arial Black;color:#fff;text-shadow:0 3px 0 #07152f}.air-setup-card h2 strong{color:#ffd43b}.air-setup-card p,.air-result-card p{margin:7px auto;color:#d6eeff;font-size:11px;font-weight:800}.air-logo{position:relative;width:86px;height:66px;margin:0 auto 5px;border:4px solid #07152f;border-radius:22px;background:linear-gradient(90deg,#073d70 0 49%,#0e5f85 49% 51%,#073d70 51%);box-shadow:0 6px 0 rgba(0,0,0,.28),inset 0 0 20px rgba(93,232,255,.3)}.air-logo:before,.air-logo:after{content:"";position:absolute;left:31px;width:24px;height:8px;border:3px solid #07152f;background:#fff}.air-logo:before{top:-4px;border-radius:0 0 10px 10px;border-top:0}.air-logo:after{bottom:-4px;border-radius:10px 10px 0 0;border-bottom:0}.air-logo i,.air-logo b{position:absolute;top:22px;width:23px;height:23px;border:3px solid #07152f;border-radius:50%}.air-logo i{left:8px;background:#5de8ff}.air-logo b{right:8px;background:#ff9545}.air-logo span{position:absolute;left:38px;top:25px;width:10px;height:10px;border:2px solid #07152f;border-radius:50%;background:#fff}.air-mode{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:9px 0}.air-mode button,.air-result-actions button{border:3px solid #07152f;border-radius:12px;background:linear-gradient(#ffe04c,#ff9d28);color:#07152f;font:1000 13px Arial Black;padding:9px;box-shadow:0 4px 0 #8e4512}.air-mode button small{display:block;font-size:7px}.air-difficulty{margin:8px 0;padding:7px;border:2px solid #2f79b5;border-radius:13px;background:#061d45}.air-difficulty>b{display:block;font:1000 8px Arial Black;color:#8fe8ff;letter-spacing:.09em}.air-difficulty>div{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:5px 0}.air-difficulty button{border:2px solid #07152f;border-radius:8px;background:linear-gradient(#67dfff,#278dc9);color:#07152f;font:1000 9px Arial Black;padding:6px 4px;box-shadow:0 3px 0 #073e6b}.air-difficulty button.active{background:linear-gradient(#ffe55c,#ff9e2b);box-shadow:0 0 14px rgba(255,212,59,.48),0 3px 0 #8e4512}.air-difficulty small{display:block;color:#a8d6f4;font:800 7px Arial}.air-worlds{padding:7px;border-radius:13px;background:#061d45;border:2px solid #2e70ad}.air-world-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.air-world-heading b{font:1000 8px Arial Black;color:#8fe8ff}.air-world-heading span{font:1000 8px Arial Black;color:#ffd43b}.air-world-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:5px}.air-world-btn{position:relative;min-height:48px;padding:5px 2px;border:2px solid #07152f;border-radius:9px;background:var(--wc,#1c65a0);color:#fff;box-shadow:0 3px 0 rgba(0,0,0,.27);font:1000 6.5px Arial Black;line-height:1.05;text-shadow:0 1px 2px #07152f}.air-world-btn:first-child{grid-column:span 2;background:linear-gradient(135deg,#5de8ff,#8d68ff,#ff6ab5,#ffd43b);color:#07152f;text-shadow:none}.air-world-btn.active{outline:3px solid #ffd43b;box-shadow:0 0 16px rgba(255,212,59,.6),0 3px 0 rgba(0,0,0,.27)}.air-world-btn span{display:block;font-size:15px;margin-bottom:2px}.air-how{display:flex;justify-content:center;gap:6px;flex-wrap:wrap;margin-top:7px}.air-how span{padding:5px 7px;border-radius:999px;border:1px solid #3c80b9;background:#0b3268;font:1000 7px Arial Black;color:#e8f7ff}.air-note{font-size:8px!important;color:#9edcff!important}.air-trophy{font-size:48px}.air-result-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin:12px 0}.air-result-stats div{padding:9px 5px;border:2px solid #377db7;border-radius:12px;background:#09275a}.air-result-stats small{display:block;font:1000 7px Arial Black;color:#8bcff9}.air-result-stats b{display:block;font:1000 15px Arial Black;color:#fff}.air-result-actions{display:flex;gap:7px;justify-content:center;flex-wrap:wrap}.air-result-actions button.secondary{background:linear-gradient(#65e7ff,#278fd0);box-shadow:0 4px 0 #0b548d}.air-parent{display:none}

/* Games hub card */
.game-card.airhockey{grid-column:span 2;min-height:330px;border-color:#5de8ff;background:radial-gradient(circle at 82% 42%,rgba(93,232,255,.22),transparent 30%),linear-gradient(145deg,#123f7d,#071c49)}.air-card-copy{width:56%;position:relative;z-index:2}.air-card-copy h2{color:#ffd43b}.air-card-art{position:absolute;right:3%;top:8%;width:39%;height:80%;border:3px solid #07152f;border-radius:22px;overflow:hidden;background:linear-gradient(#092f64,#0d5e87);box-shadow:0 9px 0 rgba(0,0,0,.28);transform:rotate(-1.4deg)}.air-card-art:before{content:"";position:absolute;left:50%;top:0;bottom:0;width:4px;transform:translateX(-50%);background:#71e9ff;box-shadow:0 0 10px #71e9ff}.air-card-art:after{content:"";position:absolute;left:50%;top:50%;width:72px;height:72px;transform:translate(-50%,-50%);border:4px solid rgba(255,255,255,.58);border-radius:50%}.air-card-puck{position:absolute;left:48%;top:46%;width:34px;height:34px;border:4px solid #07152f;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff,#a8dfff 42%,#25669b);z-index:3}.air-card-mallet{position:absolute;width:66px;height:66px;border:5px solid #07152f;border-radius:50%;z-index:2}.air-card-mallet.one{left:12%;bottom:12%;background:radial-gradient(circle at 35% 28%,#caffff,#5de8ff 45%,#197db9)}.air-card-mallet.two{right:12%;top:12%;background:radial-gradient(circle at 35% 28%,#ffe1b8,#ff9948 45%,#c44d26)}
@media(max-width:900px){.air-hud{grid-template-columns:1fr}.air-title{display:none}.game-card.airhockey{grid-column:span 1}.air-card-copy{width:100%}.air-card-art{opacity:.44;width:56%}.air-world-grid{grid-template-columns:repeat(4,1fr)}}
@media(max-width:620px){.airhockey-page .game-top{height:54px}.air-game{height:calc(100dvh - 56px)}.air-top .brand .two{font-size:32px}.air-top .brand .blocks{font-size:18px}.air-top .brand small{top:32px;font-size:6px}.air-top .nav-links a{padding:6px 8px;font-size:8px}.air-hud{padding-bottom:3px}.air-player,.air-centre{min-height:38px;padding:3px}.air-player b{font-size:18px}.air-player small,.air-player em,.air-centre small,.air-centre em{font-size:5.5px}.air-centre b{font-size:7px}.air-callout{top:4px;font-size:6.5px;padding:5px 7px}.air-controls{bottom:3px;left:3px;max-width:86%}.air-small{padding:4px 5px;font-size:5.5px}.air-setup-card,.air-result-card{padding:8px}.air-setup-card h2{font-size:27px}.air-setup-card p{font-size:8px}.air-world-grid{grid-template-columns:repeat(3,1fr)}.air-result-stats{grid-template-columns:repeat(2,1fr)}}
@media(max-height:560px) and (orientation:landscape){.airhockey-page .game-top{height:46px}.air-game{height:calc(100dvh - 46px)}.air-top .nav-links{display:none}.air-hud{position:absolute;z-index:15;left:50%;top:2px;transform:translateX(-50%);width:min(620px,64vw);padding:0;pointer-events:none}.air-scorebar{gap:3px}.air-player,.air-centre{min-height:31px;padding:2px 4px;background:rgba(5,31,71,.9)}.air-player b{font-size:14px}.air-player small,.air-player em,.air-centre small,.air-centre em{font-size:4.5px}.air-centre b{font-size:6px;margin:0}.air-stage{height:100%}.air-callout{left:6px;top:4px;transform:none}.air-controls{max-width:40%}.air-setup-card{width:min(720px,96%);max-height:94vh;padding:6px 10px}.air-logo{width:61px;height:45px;margin-bottom:1px}.air-logo i,.air-logo b{width:17px;height:17px;top:13px}.air-logo i{left:5px}.air-logo b{right:5px}.air-logo span{left:26px;top:16px}.air-logo:before,.air-logo:after{left:21px;width:19px}.air-setup-card h2{font-size:23px}.air-setup-card>p{font-size:7px;margin:2px}.air-mode{margin:3px 0}.air-mode button{padding:4px;font-size:8px}.air-difficulty{margin:3px 0;padding:3px}.air-difficulty small{display:none}.air-difficulty>div{margin:2px 0}.air-difficulty button{padding:3px;font-size:6px}.air-worlds{padding:3px}.air-world-grid{grid-template-columns:repeat(6,1fr);gap:3px}.air-world-btn{min-height:31px;font-size:5px;padding:2px}.air-world-btn span{font-size:10px}.air-how{margin-top:3px}.air-how span{font-size:5px;padding:3px 5px}.air-note{display:none}}

/* V9.6.2 — TRUE PORTRAIT AIR HOCKEY
   The rink remains portrait in every device orientation. */
.airhockey-page{overflow:hidden}
.air-shell{width:min(720px,98vw);height:calc(100dvh - 68px);margin:0 auto}
.air-game{height:100%;min-height:0;align-items:center}
.air-hud{width:100%;grid-template-columns:1fr;padding:2px 3px 6px}
.air-title{display:none}
.air-scorebar{width:100%}
.air-stage{
  flex:0 1 auto;
  width:min(100%,calc((100dvh - 132px) * .7));
  max-width:700px;
  aspect-ratio:7/10;
  height:auto;
  max-height:calc(100dvh - 132px);
  margin:0 auto;
}
.air-stage canvas{width:100%;height:100%}
.air-controls{max-width:92%;justify-content:center;left:50%;transform:translateX(-50%);width:max-content}
.air-setup-card,.air-result-card{width:min(620px,96%)}
.air-world-grid{grid-template-columns:repeat(3,1fr)}

@media(max-width:620px){
 .air-shell{height:calc(100dvh - 56px);width:100vw;padding:0 3px}
 .air-game{height:100%}
 .air-stage{width:min(calc(100vw - 6px),calc((100dvh - 101px) * .7));max-height:calc(100dvh - 101px);border-radius:18px}
 .air-scorebar{gap:4px}
 .air-controls{width:96%;max-width:96%;gap:3px}
 .air-small{flex:1 1 auto}
 .air-setup-card,.air-result-card{max-height:97%;overflow:auto}
}

/* Even while the device is landscape, preserve a tall rink instead of changing the game geometry. */
@media(orientation:landscape){
 .airhockey-page .game-top{height:46px}
 .air-shell{height:calc(100dvh - 46px);width:100vw}
 .air-game{height:100%;display:grid;grid-template-columns:minmax(220px,1fr) auto minmax(0,1fr);grid-template-rows:1fr;gap:8px;align-items:center}
 .air-hud{position:static;left:auto;top:auto;transform:none;pointer-events:auto;grid-column:1;grid-row:1;width:min(300px,30vw);align-self:start;margin:8px 0 0 8px;padding:0;z-index:15}
 .air-scorebar{grid-template-columns:1fr;gap:4px}
 .air-player,.air-centre{min-height:35px}
 .air-stage{grid-column:2;grid-row:1;width:min(calc(100dvh * .655),50vw);height:calc(100dvh - 50px);max-height:calc(100dvh - 50px);aspect-ratio:7/10;margin:0 auto}
 .air-callout{left:50%;top:5px;transform:translateX(-50%)}
 .air-controls{left:50%;bottom:4px;transform:translateX(-50%);width:94%;max-width:94%}
 .air-setup-card{width:min(620px,95%);max-height:94%;padding:8px 10px}
 .air-result-card{width:min(520px,95%)}
 .air-world-grid{grid-template-columns:repeat(4,1fr)}
}

/* V9.8 — LIVE ONLINE FRIEND MATCH */
.air-mode{grid-template-columns:repeat(3,1fr)}
.air-mode .online-mode{background:linear-gradient(135deg,#66f4ff,#6f7cff 48%,#ff64bf);color:#06162f;box-shadow:0 4px 0 #35267f,0 0 18px rgba(103,240,255,.22)}
.online-note{color:#c8eaff!important}
.air-online{position:absolute;inset:0;z-index:46;display:none;place-items:center;background:rgba(3,13,29,.9);backdrop-filter:blur(8px);padding:10px}
.air-online.show{display:grid}
.air-online-card{position:relative;width:min(590px,97%);max-height:96%;overflow:auto;text-align:center;border:4px solid #67efff;border-radius:24px;background:radial-gradient(circle at 50% -10%,rgba(121,107,255,.44),transparent 36%),linear-gradient(155deg,#114f75,#0a3463 58%,#071a42);padding:15px 18px;box-shadow:0 24px 70px rgba(0,0,0,.58),0 0 30px rgba(90,224,255,.18)}
.air-online-card>small{font:1000 8px Arial Black;color:#8af2ff;letter-spacing:.15em}.air-online-card h2{margin:2px 0 7px;font:1000 clamp(28px,5vw,43px)/.88 Arial Black;color:#fff;text-shadow:0 3px 0 #06152e}.air-online-card h2 strong{color:#ffd43b}.air-online-card>p{margin:7px auto;color:#d8efff;font:800 10px/1.35 Arial;max-width:500px}.online-globe{font-size:39px;filter:drop-shadow(0 0 14px rgba(96,234,255,.5))}.air-online-close{position:absolute;right:10px;top:9px;width:34px;height:34px;border:2px solid #07152f;border-radius:50%;background:#ff6b78;color:#07152f;font:1000 22px/1 Arial;box-shadow:0 3px 0 #7a2536}
.online-status{display:flex;align-items:center;justify-content:center;gap:7px;width:max-content;max-width:100%;margin:9px auto;padding:6px 11px;border:2px solid #2e77b0;border-radius:999px;background:#061d45;color:#bfeeff;font:1000 8px Arial Black;letter-spacing:.05em}.online-status i{width:9px;height:9px;border-radius:50%;background:#ffd43b;box-shadow:0 0 10px currentColor}.online-status.connected i{background:#6cff8a}.online-status.error i{background:#ff6375}.online-status.waiting i{background:#68ddff;animation:onlinePulse 1s infinite alternate}@keyframes onlinePulse{to{opacity:.35;transform:scale(.72)}}
.online-entry{display:block}.online-create,.online-actions button{width:100%;border:3px solid #07152f;border-radius:13px;background:linear-gradient(#ffe45e,#ff9e2b);color:#07152f;padding:10px 12px;font:1000 12px Arial Black;box-shadow:0 4px 0 #8c4412}.online-create small{display:block;font-size:6.5px;margin-top:2px}.online-or{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:9px;margin:10px 0;color:#8bcff4;font:1000 7px Arial Black}.online-or span{height:1px;background:#2d6fa4}.online-join{display:block;text-align:left;padding:9px;border:2px solid #2c77b5;border-radius:13px;background:#061d45}.online-join>span{display:block;margin-bottom:5px;color:#8cecff;font:1000 7px Arial Black;letter-spacing:.08em}.online-join>div{display:grid;grid-template-columns:1fr auto;gap:6px}.online-join input{min-width:0;padding:10px 11px;border:3px solid #07152f;border-radius:10px;background:#fff;color:#07152f;text-transform:uppercase;text-align:center;font:1000 16px Arial Black;letter-spacing:.14em;outline:none}.online-join input:focus{box-shadow:0 0 0 3px #6deaff}.online-join button{padding:8px 15px;border:3px solid #07152f;border-radius:10px;background:linear-gradient(#65e9ff,#2a91d0);color:#07152f;font:1000 10px Arial Black;box-shadow:0 3px 0 #07578e}
.online-lobby{display:none}.online-lobby.show{display:block}.online-code{width:max-content;margin:4px auto 5px;padding:8px 14px;border:3px dashed #67eaff;border-radius:13px;background:#061b42;color:#ffd43b;font:1000 clamp(25px,6vw,39px)/1 Arial Black;letter-spacing:.15em;text-shadow:0 2px 0 #07152f}.online-lobby>small{font:1000 7px Arial Black;color:#8bdfff}.online-lobby>p{margin:6px 0;color:#d6efff;font:800 9px Arial}.online-players{display:grid;grid-template-columns:1fr auto 1fr;gap:7px;align-items:center;margin:10px 0}.online-players>div:not(.vs){padding:10px 6px;border:2px solid #2b75ad;border-radius:12px;background:#082554}.online-players i{display:block;width:18px;height:18px;margin:0 auto 4px;border:3px solid #07152f;border-radius:50%;background:#829bb4}.online-players .you i{background:#5de8ff}.online-players .friend.connected i{background:#ff9948;box-shadow:0 0 14px rgba(255,153,72,.6)}.online-players b,.online-players span{display:block}.online-players b{font:1000 9px Arial Black;color:#fff}.online-players span{margin-top:3px;font:1000 6px Arial Black;color:#9ed7f6}.online-players .ready span{color:#73ff8b}.online-players .vs{font:1000 13px Arial Black;color:#ffd43b}.online-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px}.online-actions button.secondary{background:linear-gradient(#68e8ff,#288fcf);box-shadow:0 4px 0 #07578e}.online-actions button.ready{background:linear-gradient(#83ff8f,#42c96b);box-shadow:0 4px 0 #237b40}.online-safe{font-size:7px!important;color:#96cbed!important}.online-error{display:none;margin-top:9px;padding:7px 9px;border:2px solid #ff6b79;border-radius:10px;background:rgba(93,13,34,.72);color:#ffdce0;font:900 8px Arial}.online-error.show{display:block}
.air-result-actions .online-waiting{opacity:.75;pointer-events:none}

@media(max-width:620px){.air-mode{grid-template-columns:1fr}.air-online-card{padding:10px}.online-players{gap:4px}.online-actions{grid-template-columns:1fr}.online-code{font-size:30px}}
@media(max-height:560px) and (orientation:landscape){.air-mode{grid-template-columns:repeat(3,1fr)}.air-online-card{max-height:94vh;padding:7px 10px}.online-globe{font-size:26px}.air-online-card h2{font-size:24px}.air-online-card>p{font-size:7px}.online-code{font-size:25px}.online-players{margin:5px 0}.online-players>div:not(.vs){padding:5px}.online-safe{display:none}}
