/* 2.9: interactive adventures and editable wallet packages */
.jf .arcade-poster{position:relative;width:100%;height:220px;overflow:hidden;background:linear-gradient(150deg,#347889,#143345)}
.jf .arcade-poster .arcade-canvas{display:block;width:100%;height:100%;transition:filter .2s}
.jf .arcade-card .game-art{height:220px!important;position:relative}.jf .arcade-card .game-art .game-tag{top:14px;left:14px;font-size:10px;background:#102d43e8;border-color:#9cd7e347}
.jf .arcade-card .badge-3d{font-size:9px;bottom:12px;top:auto;right:12px;background:#122636e8}.jf .arcade-card .game-info{padding:22px}.jf .arcade-card .game-info h3{line-height:1.35;min-height:44px;font-size:18px;color:#173747;margin:0 0 10px}
.jf .arcade-card .game-info p{min-height:70px;font-size:13px;line-height:1.65;color:#465d68}.jf .arcade-card .actions{flex-wrap:wrap;gap:8px}.jf .arcade-card:hover .arcade-poster .arcade-canvas{filter:saturate(1.12) brightness(1.04)}
.jf .arcade-layout{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(290px,.9fr);gap:22px;align-items:start}.jf .arcade-stage-wrap{background:#112d3d;border:1px solid #36556a;box-shadow:0 16px 46px #16364726;border-radius:22px;position:relative}
.jf .arcade-stage-wrap .play-scene{height:clamp(340px,38vw,530px);min-height:0;position:relative;overflow:hidden;background:#143c4a}.jf .arcade-scene .arcade-canvas{display:block;width:100%;height:100%;touch-action:none}
.jf .arcade-stage-wrap .arena-overlay{top:14px;bottom:auto;left:auto;right:14px;z-index:4;padding:0;color:#fff2d2}.jf .arcade-stage-wrap .arena-overlay>span:first-child{display:none}.jf .arcade-stage-wrap #game-time{padding:8px 12px;border:1px solid #fff3;border-radius:10px;background:#142638cf;font-size:12px;font-variant-numeric:tabular-nums}
.jf .arcade-hud{position:absolute;left:14px;top:14px;right:84px;display:flex;gap:7px;flex-wrap:wrap;pointer-events:none}.jf .arcade-hud>span{font-size:12px;color:#edfaff;background:#0d293fdf;backdrop-filter:blur(8px);padding:8px 10px;border:1px solid #b5e7e54a;border-radius:10px}.jf .arcade-hud b{font-weight:500;color:#b4d4da;margin-right:5px}.jf .arcade-hud .arcade-completed{color:#b7f0bd;border-color:#b7f0bd8a}.jf .arcade-hud .arcade-wait{color:#f9df9a}
.jf .arcade-controls{padding:15px;background:linear-gradient(135deg,#163649,#0e283e);color:#cbdde8;border-top:1px solid #aad3dd24}.jf .arcade-instructions{font-size:12px;line-height:1.5;color:#c3dbe3;margin:0 0 11px}.jf .arcade-input-row{display:flex;align-items:center;gap:10px}.jf .arcade-controls button{cursor:pointer;min-height:40px;min-width:40px;border-radius:10px;border:1px solid #7da8b650;background:#244659;color:#edf7f4;font-size:18px;font-weight:650;padding:7px 12px;flex-shrink:0;box-shadow:inset 0 1px #ffffff19}.jf .arcade-controls button:hover{background:#355f73}.jf .arcade-controls button:focus-visible{outline:3px solid #edce85;outline-offset:3px}.jf .arcade-controls button:disabled{cursor:default;opacity:.48}.jf .arcade-directions{display:flex;gap:5px}
.jf .arcade-selection{min-width:0;flex:1;font-size:12px;color:#cddfe6}.jf .arcade-selection>b{display:block;color:#f5d498;font-size:11px;margin-bottom:3px}.jf .arcade-selection>span{display:block;max-height:47px;overflow:auto;overflow-wrap:anywhere;line-height:1.4}.jf .arcade-controls .arcade-confirm{background:linear-gradient(120deg,#dab263,#f0d798);color:#17343e;border-color:#f7ddab;font-size:12px;padding:11px 16px;min-width:92px}.jf .arcade-controls .arcade-confirm:hover{background:#ffe3a5}
.jf .arcade-bids,.jf .arcade-lifelines{margin-top:13px;display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:12px;color:#c1d8df}.jf .arcade-bids button,.jf .arcade-lifelines button{font-size:12px;min-height:33px;padding:7px 12px}.jf .arcade-bids button[aria-pressed=true]{background:#d1af64;color:#143347}.jf .arcade-bids small{font-size:11px;color:#b8c8ca}.jf .arcade-lifelines>span{margin-left:auto;color:#f4dbae}.jf .arcade-setup-help{background:#e8f4f3;color:#235567;border-radius:12px;padding:13px;font-size:13px;line-height:1.6}
.jf .arcade-layout .player-panel{padding:22px;border:1px solid #d2e5e5;border-radius:20px;box-shadow:0 12px 30px #1b42510f;background:#fff}.jf .arcade-layout .player-heading h2{font-size:17px}.jf .arcade-layout .game-question{font-size:18px;line-height:1.6;color:#173443;overflow-wrap:anywhere}.jf .arcade-layout .answer-options{gap:10px}.jf .arcade-layout .answer-btn{border:1px solid #ccdce1;background:#f7fbfb;color:#163746;border-radius:12px;min-height:57px;padding:10px;line-height:1.5;align-items:center;box-shadow:none;overflow-wrap:anywhere}.jf .arcade-layout .answer-btn b{font-weight:550;white-space:normal;min-width:0;font-size:14px}.jf .arcade-layout .answer-btn>span{background:#e1efed;color:#196366;font-size:12px;flex-shrink:0}.jf .arcade-layout .answer-btn:hover{background:#eef6f5;border-color:#43a09a}.jf .arcade-layout .answer-btn:disabled{opacity:.56}.jf .arcade-layout .answer-eliminated{opacity:.28!important}.jf .answer-eliminated b{text-decoration:line-through}.jf .arcade-layout .feedback{font-size:12px;line-height:1.55}.jf .arcade-layout .finish-score{color:#267574}
.jf .pricing-intro{text-align:center;position:relative;margin:10px auto 47px;max-width:760px}.jf .pricing-intro h1{font-size:clamp(34px,4vw,48px);margin:10px 0;color:#193a48;letter-spacing:-1px}.jf .pricing-intro>p{font-size:16px;color:#526b77;line-height:1.65}.jf .pricing-intro .price-rule{display:inline-block;margin:12px 7px 0;background:#e2efef;color:#225e69;border-radius:30px;padding:10px 15px;font-size:12px;border:1px solid #c8dddd}.jf .pricing-intro>a{margin-top:12px}
.jf .pricing-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin:0 auto;max-width:1130px;align-items:stretch}.jf .price-card{--tier:#35a997;position:relative;display:flex;flex-direction:column;padding:28px 24px 22px;background:linear-gradient(155deg,#fff,#f7fbfd);border:1.5px solid color-mix(in srgb,var(--tier),#fff 58%);border-radius:22px;box-shadow:0 12px 40px #183d5310}.jf .price-standard{--tier:#7858e6}.jf .price-vip{--tier:#bd51d5;box-shadow:0 16px 45px #a64ddb19}.jf .price-badge{position:absolute;top:-14px;left:50%;transform:translateX(-50%);border-radius:18px;padding:7px 17px;background:var(--tier);color:#fff;font-size:11px;font-weight:700;white-space:nowrap;box-shadow:0 5px 16px color-mix(in srgb,var(--tier),transparent 72%)}
.jf .price-heading{display:flex;align-items:center;gap:12px;margin-bottom:23px}.jf .price-heading h2{font-size:17px;line-height:1.4;color:#243a4d;margin:0}.jf .price-symbol{display:grid;place-items:center;width:42px;height:42px;border-radius:14px;background:color-mix(in srgb,var(--tier),#fff 88%);color:var(--tier);font-size:25px;flex-shrink:0}.jf .price-amount{padding:20px 18px;background:#f5f8fd;border:1px solid #e0e8f3;border-radius:15px}.jf .price-amount>strong{display:block;font-size:clamp(25px,2.6vw,34px);color:#1b2e45;letter-spacing:-.9px;white-space:nowrap}.jf .price-amount small{font-size:20px;font-weight:650}.jf .price-amount>span{display:block;font-size:13px;color:#5c6f83;margin-top:9px}.jf .price-count{margin:20px 0 0;font-size:12px;color:#79633e}.jf .price-count b{font-size:17px;color:#bb8126;margin-right:3px}.jf .price-count small{display:block;color:#677e86;font-size:11px;margin-top:7px}
.jf .price-card ul{list-style:none;padding:0;margin:22px 0 25px;flex:1}.jf .price-card li{display:flex;gap:9px;font-size:13px;line-height:1.55;color:#4d6472;margin-bottom:13px}.jf .price-card li span{display:grid;place-items:center;flex-shrink:0;border:1px solid #53b899;color:#3a9c85;width:18px;height:18px;border-radius:50%;font-size:11px;margin-top:2px}.jf .price-card .price-buy.btn{width:100%;justify-content:center;border-radius:13px;background:linear-gradient(110deg,#7254df,#a655d9)!important;color:white;box-shadow:0 6px 18px #805be02d;font-size:13px;gap:18px;padding:14px 18px;white-space:normal}.jf .price-card .price-buy span{margin-left:auto}.jf .price-card .price-manager{display:block;text-align:center;border:1px solid #a2dece;border-radius:12px;color:#247867;background:#e3f5ef;padding:11px;margin-top:9px;text-decoration:none;font-size:12px}.jf .price-buy:focus-visible,.jf .price-manager:focus-visible{outline:3px solid #9b60df;outline-offset:4px}.jf .pricing-note{max-width:760px;text-align:center;margin:28px auto 18px;color:#526b74;font-size:13px;line-height:1.75}.jf .pricing-wallet{text-align:center;margin-top:20px}
@media(min-width:1650px){.jf .games-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:1160px){.jf .arcade-layout{grid-template-columns:1fr}.jf .arcade-layout .players{width:100%}.jf .arcade-stage-wrap .play-scene{height:450px}.jf .arcade-layout .answer-options{grid-template-columns:repeat(2,minmax(0,1fr))}.jf .pricing-grid{gap:16px}.jf .price-card{padding:27px 17px 19px}.jf .price-heading{gap:8px}.jf .price-heading h2{font-size:15px}}
@media(max-width:780px){.jf .pricing-grid{grid-template-columns:1fr;max-width:480px;gap:30px}.jf .pricing-intro{margin-bottom:36px}.jf .price-card{padding:28px 24px 22px}.jf .price-amount>strong{font-size:34px}.jf .arcade-card .game-info{padding:18px}.jf .arcade-card .game-info h3{font-size:16px}.jf .arcade-poster,.jf .arcade-card .game-art{height:200px!important}.jf .arcade-stage-wrap .play-scene{height:320px}.jf .arcade-layout{gap:15px}.jf .arcade-controls{padding:12px}.jf .arcade-instructions{font-size:11px}.jf .arcade-input-row{flex-wrap:wrap;gap:8px}.jf .arcade-selection{flex:1;min-width:95px}.jf .arcade-controls .arcade-confirm{padding:9px 12px;min-width:83px;flex:1}.jf .arcade-hud{left:8px;top:9px;gap:5px;right:70px}.jf .arcade-hud>span{font-size:10px;padding:7px}.jf .arcade-stage-wrap .arena-overlay{right:8px;top:9px}.jf .arcade-stage-wrap #game-time{font-size:10px;padding:7px 8px}.jf .arcade-layout .player-panel{padding:18px}.jf .arcade-layout .game-question{font-size:17px}.jf .arcade-layout .answer-options{grid-template-columns:1fr}.jf .arcade-layout .answer-btn b{font-size:14px}}
@media(prefers-reduced-motion:reduce){.jf .arcade-card .arcade-canvas{transition:none}.jf .arcade-card:hover{transform:none}}
/* 2.10: every game renders in real-time 3D */
.jf .arcade-poster .arcade-canvas{object-fit:cover;transition:transform .5s cubic-bezier(.2,.7,.2,1),filter .2s}.jf .arcade-card:hover .arcade-poster .arcade-canvas{transform:scale(1.06)}
.jf .arcade-poster:after{content:'';position:absolute;inset:0;background:linear-gradient(transparent 58%,#071f35a6);pointer-events:none}
.jf .arcade-card .badge-3d{background:linear-gradient(120deg,#1f8f9c,#7858e6);color:#fff;border-color:#ffffff40;letter-spacing:.4px}
.jf .play-scene>.arcade-webgl{position:absolute;inset:0;display:block;width:100%;height:100%;touch-action:none}
.jf .arcade-scene.arcade-paused:after{content:attr(data-pause-label);position:absolute;inset:0;z-index:3;display:grid;place-items:center;background:#06223599;backdrop-filter:blur(3px);color:#f7f4e5;font-size:38px;font-weight:700;letter-spacing:1px;pointer-events:none}
@media(prefers-reduced-motion:reduce){.jf .arcade-poster .arcade-canvas{transition:none}.jf .arcade-card:hover .arcade-poster .arcade-canvas{transform:none}}
.jf .play-scene{position:relative}
/* 2.11: guided 3D lessons in the lab */
.jf .real-model-viewer{position:relative}.jf .real-model-viewer>.arcade-webgl{position:absolute;inset:0;display:block;width:100%;height:100%;touch-action:none;cursor:grab}.jf .real-model-viewer>.arcade-webgl:active{cursor:grabbing}
/* 2.11: classroom tools */
.jf .timer-presets{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0 12px}.jf .timer-presets button{cursor:pointer;min-width:44px;padding:8px 10px;border-radius:999px;border:1px solid #bcd8d8;background:#eef7f6;color:#1d5f66;font-weight:650;font-size:13px}.jf .timer-presets button:hover{background:#247b83;color:#fff}
.jf .timer-orbit .timer-progress{transition:stroke .6s,stroke-dashoffset .3s linear}.jf .timer-orbit[data-phase=mid] .timer-progress{stroke:#e8a93a}.jf .timer-orbit[data-phase=end] .timer-progress{stroke:#e0524d}.jf .timer-orbit[data-phase=end] .timer-display{color:#c8413c}
.jf .timer-orbit.last-ten{animation:jf-timer-pulse 1s ease-in-out infinite}@keyframes jf-timer-pulse{50%{transform:scale(1.06)}}
.jf .timer-panel{position:relative;overflow:hidden}.jf .timer-panel:fullscreen{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2vh;background:radial-gradient(circle at 50% 40%,#17425a,#0a1f2e);color:#fff;border-radius:0;padding:4vh}.jf .timer-panel:fullscreen h2{color:#dff3f1;font-size:4vh}.jf .timer-panel:fullscreen .feature-icon,.jf .timer-panel:fullscreen label{display:none}.jf .timer-panel:fullscreen .timer-orbit{width:min(62vh,80vw);height:min(62vh,80vw)}.jf .timer-panel:fullscreen .timer-display{font-size:min(17vh,20vw);color:#fff}.jf .timer-panel:fullscreen .timer-orbit circle:first-child{stroke:#ffffff22}
.jf .class-pro-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;margin-top:24px}.jf .class-tool{position:relative;overflow:hidden;display:flex;flex-direction:column;gap:14px}.jf .class-tool header h2{margin:8px 0 4px}.jf .class-tool header p{margin:0;font-size:13px;line-height:1.55;color:#56707a}
.jf .class-chip{display:inline-grid;place-items:center;min-width:38px;height:26px;padding:0 9px;border-radius:999px;background:linear-gradient(120deg,#1f8f9c,#7858e6);color:#fff;font-size:11px;font-weight:800;letter-spacing:.5px}.jf .class-chip.gold{background:linear-gradient(120deg,#d99a2b,#f0c45c);color:#3a2a08}.jf .class-chip.teal{background:linear-gradient(120deg,#1f8f9c,#35c9d6)}
.jf .class-stage{position:relative;height:clamp(300px,34vw,440px);border-radius:18px;overflow:hidden;background:radial-gradient(circle at 50% 30%,#34206a,#0b0a1f);box-shadow:inset 0 0 0 1px #ffffff14}.jf .class-stage>.arcade-webgl{position:absolute;inset:0;display:block;width:100%;height:100%}.jf .class-stage-flat{display:grid;place-items:center;color:#cfd6f5;font-size:13px;height:120px}
.jf .class-result{min-height:64px;display:grid;place-items:center;text-align:center;border-radius:14px;background:#f1f6f7;color:#56707a;font-size:14px;padding:10px}.jf .class-result.win{background:linear-gradient(120deg,#fff3d1,#ffe2ec);color:#3a2a3a;animation:jf-pop .5s cubic-bezier(.2,1.6,.4,1)}.jf .class-result small{display:block;font-size:10px;letter-spacing:2px;color:#b8791c;font-weight:800}.jf .class-result strong{display:block;font-size:clamp(24px,3vw,38px);line-height:1.2;color:#173747}@keyframes jf-pop{0%{transform:scale(.7);opacity:0}}
.jf .class-check,.jf .class-inline{display:flex;align-items:center;gap:8px;font-size:13px;color:#3f5a66}.jf .class-inline select,.jf .class-inline input[type=number]{width:74px;padding:8px;border-radius:10px;border:1px solid #c9dcde}.jf .class-inline.wide{justify-content:space-between}.jf .class-inline.wide input{flex:1;max-width:260px}.jf .class-count{margin-left:auto;font-size:13px;color:#56707a}.jf .class-count b{color:#c8413c;font-size:18px}
.jf .score-rows{display:grid;gap:10px}.jf .score-row{--c:hsl(var(--hue) 62% 46%);display:grid;grid-template-columns:22px minmax(80px,1fr) minmax(60px,1.4fr) 54px auto;gap:10px;align-items:center;padding:10px 12px;border-radius:14px;background:#f5f9f9;border:1px solid #dcebeb;transition:transform .2s,box-shadow .2s}.jf .score-row.lead{background:linear-gradient(120deg,#fff7de,#f5f9f9);border-color:#f0c45c;box-shadow:0 6px 18px #f0c45c33}.jf .score-row.bump{animation:jf-pop .35s cubic-bezier(.2,1.6,.4,1)}
.jf .score-crown{color:transparent;font-size:18px}.jf .score-row.lead .score-crown{color:#d99a2b}.jf .score-name{min-width:0;border:0;background:transparent;font-weight:700;font-size:15px;color:#173747;padding:6px;border-radius:8px}.jf .score-name:focus{outline:2px solid #35c9d6;background:#fff}
.jf .score-bar{height:14px;border-radius:999px;background:#e2eeee;overflow:hidden}.jf .score-bar i{display:block;height:100%;width:var(--fill);border-radius:999px;background:linear-gradient(90deg,var(--c),hsl(var(--hue) 80% 62%));transition:width .5s cubic-bezier(.2,.9,.3,1)}.jf .score-row output{font-size:24px;font-weight:800;color:var(--c);text-align:right;font-variant-numeric:tabular-nums}
.jf .score-buttons{display:flex;gap:5px}.jf .score-buttons button{cursor:pointer;min-width:38px;height:36px;border-radius:10px;border:1px solid #c9dcde;background:#fff;color:#1d5f66;font-weight:700;font-size:13px}.jf .score-buttons button:hover{background:var(--c);color:#fff;border-color:var(--c)}.jf .score-buttons .score-drop{min-width:30px;color:#a55}
.jf .noise-meter{--noise:0;position:relative;height:190px;border-radius:18px;background:linear-gradient(180deg,#0f2b3d,#16465a);display:grid;place-items:center;overflow:hidden;transition:background .4s}.jf .noise-meter[data-level=mid]{background:linear-gradient(180deg,#3d3210,#6b5518)}.jf .noise-meter[data-level=loud]{background:linear-gradient(180deg,#4a1418,#8a2630)}
.jf .noise-bars{position:absolute;inset:auto 0 0 0;height:100%;display:flex;align-items:flex-end;gap:3px;padding:0 10px;opacity:.55}.jf .noise-bars i{flex:1;height:6%;border-radius:6px 6px 0 0;background:linear-gradient(180deg,#7ff3e2,#35c9d6);transition:height .08s linear}.jf .noise-meter[data-level=mid] .noise-bars i{background:linear-gradient(180deg,#ffe08a,#f2b84b)}.jf .noise-meter[data-level=loud] .noise-bars i{background:linear-gradient(180deg,#ffb0b0,#ef6f7c)}
.jf .noise-face{position:relative;font-size:74px;line-height:1;color:#fff;transform:scale(calc(1 + var(--noise)*.5));transition:transform .1s}.jf .noise-meter b{position:absolute;left:0;right:0;bottom:14px;text-align:center;color:#fff;font-size:15px;letter-spacing:.4px;text-shadow:0 2px 8px #0008}
.jf .noise-alert{animation:jf-noise-alert .7s ease-out}@keyframes jf-noise-alert{0%,40%{box-shadow:0 0 0 6px #ef6f7c,0 0 60px #ef6f7c99}100%{box-shadow:0 0 0 0 #ef6f7c00}}
@media(max-width:900px){.jf .class-pro-grid{grid-template-columns:1fr}.jf .score-row{grid-template-columns:22px 1fr 54px;grid-template-areas:"c n o" "b b b" "k k k"}.jf .score-crown{grid-area:c}.jf .score-name{grid-area:n}.jf .score-row output{grid-area:o}.jf .score-bar{grid-area:b}.jf .score-buttons{grid-area:k}}
@media(prefers-reduced-motion:reduce){.jf .timer-orbit.last-ten,.jf .class-result.win,.jf .score-row.bump,.jf .noise-alert{animation:none}.jf .noise-face{transform:none}}
