/* Full viewport photo practice. Quiet NEOES teal; the people are the artwork. */
.pv-game{box-sizing:border-box;min-height:100%;width:100%;max-width:480px;margin:auto;padding:12px 18px 16px;color:var(--ink,#173f43);background:var(--bg,#f5f9f6);display:flex;flex-direction:column;gap:12px}
.pv-game *{box-sizing:border-box}.pv-game button{font:inherit;color:inherit;cursor:pointer}.pv-game button:focus-visible{outline:3px solid #dba943;outline-offset:3px}.pv-game button:disabled{opacity:1;cursor:default}
.pv-header{display:grid;grid-template-columns:44px 1fr 44px;align-items:center;gap:10px;margin-bottom:4px}.pv-header>button{width:44px;height:44px;border:1px solid var(--line,#d4e0da);border-radius:50%;background:var(--card,#fff);font:32px Georgia,serif}.pv-header>button:last-child{font-size:22px}.pv-header small{display:block;font-size:10px;letter-spacing:1.5px;color:var(--ink-2,#577574)}.pv-header h1{font:25px Georgia,serif;margin:3px 0 0}
.pv-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:12px 0;border-block:1px solid var(--line,#d4e0da)}.pv-stats>span{text-align:center;font-size:11px;color:var(--ink-2,#577574)}.pv-stats b{display:block;font-size:24px;color:var(--ink,#173f43);font-variant-numeric:tabular-nums}.pv-stats i{font-size:13px;font-weight:400;font-style:normal}
.pv-instruction{font-size:13px;line-height:1.4;text-align:center;margin:0;color:var(--ink-2,#577574)}
.pv-memory{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;flex:0 0 auto}.pv-card{position:relative;aspect-ratio:.96;min-width:0;min-height:56px;border:1px solid #277e7c;border-radius:8px;padding:0;overflow:hidden;background:linear-gradient(145deg,#ffffff,#e5f0ed);display:flex;align-items:center;justify-content:center;flex-direction:column;box-shadow:0 2px 0 #082c3033;transition:border-color .16s,filter .16s}.pv-card-logo{width:75%;max-height:55%;object-fit:contain;filter:none;opacity:1}.pv-card-mark{font-size:9px;letter-spacing:1.8px;color:#1b716c;margin-top:6px}.pv-card.is-open{background:var(--card,#fff);border-color:var(--line,#d4e0da)}.pv-card.is-matched{border:2px solid #509e75;box-shadow:none}.pv-photo{position:relative;width:100%;height:100%;overflow:hidden;background:linear-gradient(140deg,#437a7a,#163f50);display:flex;align-items:center;justify-content:center;color:white;font-weight:700}.pv-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.pv-card .pv-photo{position:absolute;inset:0;height:100%}.pv-name{position:absolute;inset:auto 0 0;min-height:21px;padding:3px 2px;font-size:9px;line-height:1.12;display:flex;align-items:center;justify-content:center;text-align:center;overflow-wrap:anywhere;background:#ffffffd9;color:#173f43}.pv-check{position:absolute;top:3px;right:3px;border-radius:50%;background:#237b57;color:white;font-size:12px;width:18px;height:18px;display:grid;place-items:center}
.pv-board{position:relative;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;aspect-ratio:1;width:100%;padding:4px;border:1px solid var(--line,#d4e0da);border-radius:12px;background:#102f32;touch-action:none;user-select:none;overflow:hidden;margin:10px auto}.pv-tile{position:relative;aspect-ratio:1;min-width:0;border:0;border-radius:3px;padding:0;overflow:hidden;background:var(--card,#fff);touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.pv-tile.is-slidable{box-shadow:inset 0 0 0 3px #e4b857}.pv-tile.is-dragging{z-index:3;box-shadow:inset 0 0 0 3px #ffe69a,0 6px 16px #0006}.pv-fragment{position:absolute;width:400%;height:400%;pointer-events:none}.pv-fragment .pv-photo{height:100%;width:100%}.pv-fragment img{object-fit:cover;object-position:center}.pv-number{position:absolute;left:4px;top:4px;min-width:20px;border-radius:4px;padding:2px 4px;background:#102f32cf;color:#fff;font-size:11px;pointer-events:none}.pv-tile.is-placed .pv-number{background:#166b55e8}.pv-hide-numbers .pv-number{display:none}.pv-gap{display:grid;place-items:center;font-size:25px;color:#99bcb5;border:1px dashed #638d86;border-radius:3px}.pv-gap span{opacity:.7}.pv-no-photo .pv-number{inset:0;background:transparent;color:var(--ink,#173f43);font-size:26px;display:grid;place-items:center}
.pv-controls{display:flex;align-items:center;justify-content:space-between;gap:8px}.pv-controls>span{font-size:11px;color:var(--ink-2,#577574)}.pv-button{display:block;padding:12px 18px;min-height:44px;border:1px solid #267773;border-radius:9px;background:#1b716c;color:white!important;font-size:13px;font-weight:650;text-align:center}.pv-button.pv-muted{background:var(--card,#fff);color:var(--ink,#173f43)!important;border-color:var(--line,#d4e0da)}.pv-feedback{min-height:36px;font-size:12px;line-height:1.4;text-align:center;color:var(--ink-2,#577574)}.pv-next{min-height:44px;background:transparent;border:1px solid var(--line,#d4e0da);border-radius:8px}.pv-error{color:#a64435}
.pv-result{text-align:center;padding:16px 0}.pv-complete{font-size:11px;color:#378666;letter-spacing:1.5px}.pv-result h2{font:28px Georgia,serif;margin:12px 0}.pv-result p{font-size:13px;line-height:1.5;color:var(--ink-2,#577574)}.pv-result>p>b{font-size:24px;color:var(--ink,#173f43)}.pv-result>.pv-button{width:100%;margin:12px 0}.pv-team{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin:24px 0}.pv-team>div{min-width:0}.pv-team .pv-photo{aspect-ratio:1;border-radius:50%}.pv-team b{display:block;font-size:10px;line-height:1.2;margin:6px 0;overflow-wrap:anywhere}.pv-single{display:block;max-width:240px;margin:22px auto}.pv-single .pv-photo{border-radius:12px}.pv-single b{font-size:16px}
.pv-help{position:absolute;inset:0;z-index:8;padding:20px;background:var(--bg,#f5f9f6);display:flex;align-items:center;justify-content:center;overflow:auto}.pv-help>div{max-width:350px}.pv-help small{font-size:10px;letter-spacing:1.5px;color:var(--ink-2,#577574)}.pv-help h2{font:30px Georgia,serif}.pv-help p{font-size:15px;line-height:1.65;color:var(--ink-2,#577574)}.pv-help .pv-button{width:100%;margin-top:22px}
@media(min-height:850px){.pv-memory{gap:8px}.pv-card{aspect-ratio:.87}.pv-card .pv-photo{bottom:0;height:100%}.pv-name{min-height:23px;font-size:10px}.pv-board{margin-top:25px}}
@media(max-height:700px){.pv-game{gap:7px;padding-top:6px}.pv-header{margin-bottom:0}.pv-stats{padding:7px 0}.pv-memory{gap:5px}.pv-card{aspect-ratio:1.17}.pv-board{max-width:330px;margin:0 auto}.pv-feedback{min-height:26px}}
@media(prefers-reduced-motion:reduce){.pv-card{transition:none}}

.pv-tile.is-slidable::after{content:"";position:absolute;inset:0;z-index:2;border:3px solid #e4b857;border-radius:3px;pointer-events:none}.pv-tile.is-dragging::after{border-color:#ffe69a}
.pv-header{position:relative;top:auto;background:transparent;box-shadow:none;padding:0;color:var(--ink,#173f43)}
.pv-header h1,.pv-header>button{color:var(--ink,#173f43)}

/* Whole portraits retain their original crop inside every revealed card. */
.pv-card .pv-photo img{object-fit:contain;object-position:center}.pv-card .pv-photo{background:#dce8e4}

/* New eight-piece practice: picture first, with a recessed NEOES arcade stage. */
.pv-shuffle-v3{position:relative;isolation:isolate;overflow:hidden;background:radial-gradient(ellipse at 100% 4%,#347c7866,transparent 48%),linear-gradient(160deg,#eef5ee,#d5e6dd 58%,#c3dbd2);color:#133e42}
.pv-shuffle-v3::before{content:"";position:absolute;z-index:-1;inset:55% -15% -12%;background:url("./neoes-logo.png") center / 75% auto no-repeat;opacity:.07;pointer-events:none;filter:drop-shadow(0 2px 0 #fff)}
.pv-shuffle-v3 .pv-header h1{font:900 28px/1.04 var(--font,Arial,sans-serif);letter-spacing:-1px;color:#155c5b;text-shadow:0 2px 0 #ffffff9c}.pv-shuffle-v3 .pv-header small{color:#356f69;letter-spacing:2px}.pv-shuffle-v3 .pv-header>button{background:#f7fffbc7;border-color:#9abdb0;color:#155c5b}
.pv-shuffle-v3 .pv-stats{border-color:#99b7a9;padding:11px 0}.pv-shuffle-v3 .pv-stats b{color:#134d4d}.pv-shuffle-v3 .pv-stats>span{color:#416961}.pv-shuffle-v3 .pv-board{grid-template-columns:repeat(3,minmax(0,1fr));padding:7px;gap:5px;border-radius:15px;border:1px solid #447c70;background:linear-gradient(145deg,#21594f,#103c37);box-shadow:inset 0 2px 6px #082d36aa,0 12px 28px #22584724;margin:24px auto 10px}.pv-board-three .pv-fragment{width:300%;height:300%}.pv-shuffle-v3 .pv-gap{border-color:#7ca493;background:radial-gradient(ellipse at center,#3b726666,#102f3233);color:#accdb7}.pv-shuffle-v3 .pv-gap span{opacity:.5}.pv-shuffle-v3 .pv-feedback:empty{display:none}.pv-shuffle-v3 .pv-help{background:#edf5ee}.pv-shuffle-v3 .pv-help h2{font-weight:800;color:#155c5b}.pv-shuffle-v3 .pv-no-photo .pv-number{background:#ebf3eb}
@media(max-height:700px){.pv-shuffle-v3 .pv-board{margin:18px auto 0;max-width:330px}.pv-shuffle-v3 .pv-header h1{font-size:26px}}
html.dark .pv-shuffle-v3,[data-theme="dark"] .pv-shuffle-v3{background:radial-gradient(ellipse at 100% 4%,#347c7844,transparent 48%),linear-gradient(160deg,#163c3b,#0e292a);color:#e1f2e6}html.dark .pv-shuffle-v3 .pv-header h1,[data-theme="dark"] .pv-shuffle-v3 .pv-header h1{color:#d6eeda;text-shadow:0 2px 0 #071f29}html.dark .pv-shuffle-v3 .pv-stats b,[data-theme="dark"] .pv-shuffle-v3 .pv-stats b{color:#e1f2e6}html.dark .pv-shuffle-v3 .pv-header small,html.dark .pv-shuffle-v3 .pv-stats>span,[data-theme="dark"] .pv-shuffle-v3 .pv-header small,[data-theme="dark"] .pv-shuffle-v3 .pv-stats>span{color:#a3c7ba}

/* Face Match uses the stage height for portraits instead of a short square grid. */
.pv-match{position:relative;height:100%;min-height:100%;padding:8px 12px 10px;gap:8px}
.pv-match .pv-header{flex:0 0 44px;margin:0;gap:8px}.pv-match .pv-header>div{display:flex;align-items:center;justify-content:center;gap:8px;min-width:0}.pv-match .pv-header h1{font:700 23px/1.1 Georgia,serif;white-space:nowrap;margin:0}.pv-match-brand{width:42px;height:32px;object-fit:contain;filter:none;background:#f6faf6;border-radius:4px;flex:0 0 auto}
.pv-match .pv-stats{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 2px}.pv-match .pv-stats>span{display:flex;align-items:baseline;gap:4px;white-space:nowrap;font-size:11px}.pv-match .pv-stats b{display:inline;font-size:20px;line-height:1}.pv-match .pv-stats i{font-size:12px}
.pv-match .pv-memory{flex:1 1 0;min-height:0;grid-template-rows:repeat(var(--pv-rows,6),minmax(0,1fr));gap:6px}.pv-match .pv-card{aspect-ratio:auto;min-height:0}.pv-match .pv-card .pv-photo{background:#dce8e4}.pv-match .pv-name{min-height:22px;padding:9px 3px 3px;background:linear-gradient(transparent,#123431e6);color:#fff;font-size:10px;line-height:1.12;text-shadow:0 1px 3px #000;align-items:flex-end}.pv-match .pv-check{width:16px;height:16px;font-size:10px;top:3px;right:3px}
.pv-match .pv-feedback.pv-live-status{position:absolute;width:1px;height:1px;min-height:0;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;padding:0;margin:0}.pv-match .pv-feedback.pv-error{flex:0 0 auto;min-height:0;margin:0;font-size:12px}.pv-match .pv-next{flex:0 0 44px}.pv-match .pv-result{flex:0 0 auto}
@media(max-height:700px){.pv-match{padding-top:6px;gap:7px}.pv-match .pv-memory{gap:5px}.pv-match .pv-header h1{font-size:22px}.pv-match .pv-name{font-size:9px}}
html.dark .pv-match .pv-card .pv-photo{background:#123331}html.dark .pv-match .pv-feedback.pv-error{color:#ffad9d}

/* A frozen wide subject retains its whole photograph; staff remains square. */
.pv-board-variety{aspect-ratio:auto;grid-template-rows:none;grid-auto-rows:auto}.pv-board-variety .pv-tile,.pv-board-variety .pv-gap{aspect-ratio:var(--pv-picture-ratio,1)}.pv-board-variety .pv-fragment .pv-photo{background:#f5f8f3}.pv-board-variety .pv-fragment img{object-fit:contain}.pv-shuffle-v3 .pv-result .pv-single .pv-photo{aspect-ratio:var(--pv-picture-ratio,1)}

.pv-single[style] .pv-photo img{object-fit:contain}.pv-single[style] .pv-photo{background:#f5f8f3}.pv-subject-staff .pv-fragment img,.pv-single.pv-subject-staff .pv-photo img{object-fit:cover}

.pv-picture-ready{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:280px;text-align:center;gap:14px;padding:28px 16px}.pv-picture-ready>span{font-size:54px;color:#397f73}.pv-picture-ready h2{font:700 24px/1.2 Georgia,serif;margin:0;color:var(--ink,#173f43)}.pv-picture-ready p{max-width:290px;font-size:14px;line-height:1.5;color:var(--ink-2,#577574);margin:0}.pv-picture-ready .pv-button{min-width:170px}

/* Neon Optics: Marc's selected AI concept, implemented as live controls.
   One arcade palette in either directory theme. Photos and rule versions stay frozen. */
.pv-game.pv-shuffle-v3,html.dark .pv-game.pv-shuffle-v3,[data-theme="dark"] .pv-game.pv-shuffle-v3{
  --ink:#e9fbff;--ink-2:#b1d6e2;--card:#092b40;--line:#34768c;--bg:#062236;
  max-width:none;min-height:100%;padding:clamp(14px,3dvh,26px) 12px 22px;gap:12px;align-items:center;
  color:#e9fbff;background:#062236 url("./game-art/face-shuffle-neon-v1.png") center center / cover no-repeat;
  font-family:Arial,Helvetica,sans-serif;
}
.pv-game.pv-shuffle-v3::before{inset:0;background:linear-gradient(180deg,#02131b18,#02131b12 70%,#03132066);opacity:1;filter:none}
.pv-shuffle-v3>*{width:100%;max-width:460px;flex-shrink:0}
.pv-shuffle-v3 .pv-header{grid-template-columns:48px minmax(0,1fr) 48px;gap:8px;margin:0;align-items:center}
.pv-game.pv-shuffle-v3 .pv-header h1{color:#f0ffff;font:900 clamp(25px,7.2vw,34px)/1.12 Arial,Helvetica,sans-serif;letter-spacing:-1px;text-align:center;white-space:nowrap;margin:0;text-shadow:0 2px 0 #198aab,0 0 9px #3eeaff90,0 4px 8px #00111f}
.pv-game.pv-shuffle-v3 .pv-header>button{width:48px;height:48px;border:2px solid #53eaff;border-radius:50%;color:#edffff;background:radial-gradient(circle at 38% 20%,#1e768d,#0a334b 65%,#041d30);box-shadow:inset 0 2px 2px #b1faff8c,inset 0 -3px 2px #00121e,0 0 0 3px #0c3b50,0 0 10px #31dfff66;font:700 42px/1 Arial,sans-serif;text-shadow:0 0 6px #41eaff;transition:transform .12s,box-shadow .12s}
.pv-game.pv-shuffle-v3 .pv-header>button:last-child{font-size:27px}
.pv-shuffle-v3 button:active{transform:translateY(2px)}
.pv-shuffle-v3 .pv-optics-brand{display:flex;gap:12px;align-items:center;justify-content:center;max-width:260px;height:24px;margin:0 auto 2px}
.pv-optics-brand:before,.pv-optics-brand:after{content:"";height:2px;flex:1;background:linear-gradient(90deg,transparent,#68efff);box-shadow:0 0 5px #37d6fa}
.pv-optics-brand:after{transform:rotate(180deg)}.pv-optics-brand img{width:60px;height:26px;object-fit:contain;filter:drop-shadow(0 0 4px #85e8f766)}
.pv-game.pv-shuffle-v3 .pv-optics-stats{display:flex;align-items:center;justify-content:center;gap:0;border:1px solid #278caf;border-radius:12px;background:linear-gradient(135deg,#062436e6,#072b45f0);box-shadow:inset 0 1px 1px #94deff30,0 4px 12px #0003;padding:12px 5px;margin:6px 0 0;max-width:340px}
.pv-game.pv-shuffle-v3 .pv-optics-stats>span{display:flex;align-items:center;justify-content:center;gap:8px;color:#d4f6ff;flex:1;font-size:12px;font-weight:700;white-space:nowrap}
.pv-optics-stats>span+span{border-left:1px solid #34677f}.pv-game.pv-shuffle-v3 .pv-optics-stats b{display:inline;font:800 26px/1 Arial,sans-serif;color:#74f0ff;letter-spacing:.5px;font-variant-numeric:tabular-nums;text-shadow:0 0 7px #00cfff55}
.pv-optics-stats svg{width:23px;height:23px;fill:none;stroke:#85f7ff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 3px #3edcff)}
.pv-game.pv-shuffle-v3 .pv-board{width:min(100%,460px,calc(100dvh - 180px));max-width:460px;margin:18px auto 0;padding:6px;gap:5px;border:2px solid #5994a3;border-radius:15px;background:linear-gradient(145deg,#133e50,#021724 60%,#0b354a);box-shadow:inset 0 2px 2px #d1fdff80,inset 0 -3px 3px #000,0 0 0 2px #02232f,0 0 14px #31d9ed38,0 8px 26px #0008;overflow:visible}
.pv-shuffle-v3 .pv-tile{border-radius:7px;background:#082736;box-shadow:inset 0 0 0 1px #78c2d3;outline:1px solid #67b1c7;cursor:grab;-webkit-tap-highlight-color:transparent;will-change:transform}
.pv-shuffle-v3 .pv-tile:active{transform:none;cursor:grabbing}.pv-shuffle-v3 .pv-tile::after{content:"";position:absolute;inset:0;border:1px solid #addfe7a6;border-radius:7px;box-shadow:inset 0 2px 1px #ffffff66,inset 0 -2px 2px #02192688;pointer-events:none}
.pv-shuffle-v3 .pv-tile.is-slidable{outline-color:#67f2ff;box-shadow:0 0 6px #51e6ff88}.pv-shuffle-v3 .pv-tile.is-slidable::after{border:2px solid #82f4ff}
.pv-shuffle-v3 .pv-tile.is-dragging{cursor:grabbing;box-shadow:0 0 0 1px #affbff,0 3px 7px #0008,0 0 13px #39e9ff99}
.pv-shuffle-v3 .pv-tile.is-dragging::after{border-color:#e0ffff}
.pv-shuffle-v3 .pv-gap{border:1px solid #163f53;border-radius:7px;background:radial-gradient(ellipse at 65% 70%,#163a4b,#061824);box-shadow:inset 0 4px 12px #000b,inset 0 0 0 2px #011724,0 1px 0 #45829566}
.pv-gap img{width:76%;height:auto;max-height:70%;object-fit:contain;opacity:.25;filter:drop-shadow(0 1px 0 #c5faff55);pointer-events:none;user-select:none}
.pv-game.pv-shuffle-v3 .pv-feedback{max-width:420px;min-height:0;color:#e3faff;margin:0}.pv-shuffle-v3 .pv-feedback:not(:empty){background:#031d2dda;border-radius:10px;padding:8px 12px}.pv-shuffle-v3 .pv-feedback.pv-error{color:#ffcbbe}
.pv-game.pv-shuffle-v3 .pv-button{color:#eeffff!important;background:linear-gradient(#176079,#08354e);border:1px solid #77eeff;border-radius:14px;box-shadow:inset 0 2px 1px #bafaff80,inset 0 -3px 2px #021723,0 4px 0 #011b28,0 0 10px #3adeff44;font:800 17px/1.2 Arial,sans-serif;min-height:48px;padding:14px 24px;text-shadow:0 0 7px #48e6ff66;cursor:pointer}
.pv-shuffle-v3 .pv-picture-ready{width:min(100%,460px);min-height:270px;margin-top:10px;background:#031b2bb8;border:1px solid #2783a3;border-radius:20px;box-shadow:inset 0 0 28px #117ca22a}
.pv-shuffle-v3 .pv-picture-ready>span{font-size:78px;color:#82eeff;text-shadow:0 0 12px #13c6ef}.pv-shuffle-v3 .pv-picture-ready h2{font:800 22px Arial,sans-serif;color:#e1faff}.pv-shuffle-v3 .pv-picture-ready h2:empty{display:none}
.pv-game.pv-shuffle-v3 .pv-help{position:fixed;max-width:none;width:auto;inset:0;overflow:auto;background:#031b2df7;color:#e4fbff;padding:max(22px,env(safe-area-inset-top)) 24px max(22px,env(safe-area-inset-bottom));align-items:safe center}
.pv-shuffle-v3 .pv-help h2{color:#aaf7ff;font:900 30px Arial,sans-serif;text-shadow:0 0 10px #40e9ff55}.pv-shuffle-v3 .pv-help p{color:#c4e0eb;line-height:1.6;font-size:15px}.pv-shuffle-v3 .pv-help small{color:#75d5e9}
.pv-shuffle-v3 .pv-optics-result{padding:0}.pv-optics-result h2{font:900 34px/1.2 Arial,sans-serif;margin:8px 0 16px;color:#e7ffff;text-shadow:0 2px 0 #179db4,0 0 14px #36efff80}.pv-optics-result .pv-optics-stats{margin:0 auto!important}
.pv-shuffle-v3 .pv-optics-result .pv-single{max-width:min(280px,calc(100dvh - 350px));margin:20px auto 12px}.pv-optics-result .pv-single .pv-photo{border:2px solid #61d7e9;box-shadow:0 0 14px #40dfff44}.pv-optics-result .pv-single b{color:#e4fcff;text-shadow:0 2px 5px #00111b;margin:8px 0;font-size:14px}.pv-optics-result>.pv-button{max-width:270px;margin:14px auto}
@media(max-height:600px){.pv-game.pv-shuffle-v3{gap:8px;padding-top:8px}.pv-game.pv-shuffle-v3 .pv-board{margin-top:4px}.pv-shuffle-v3 .pv-optics-brand{display:none}.pv-shuffle-v3 .pv-picture-ready{min-height:180px}.pv-game.pv-shuffle-v3 .pv-optics-stats{padding:9px 5px}}
@media(prefers-reduced-motion:reduce){.pv-shuffle-v3 button{transition:none!important}}
.pv-shuffle-v3 .pv-end-round{width:auto;max-width:180px;min-height:44px;margin:0 auto;padding:10px 20px;border:1px solid #39758a;border-radius:12px;background:#062437b8;color:#c4e8f1;font:700 14px/1.2 Arial,sans-serif;cursor:pointer}
.pv-shuffle-v3 .pv-end-round:focus-visible{outline:3px solid #80f1ff;outline-offset:3px}
.pv-end-actions{display:flex;flex-direction:column;gap:14px;margin-top:24px}.pv-end-actions .pv-muted{box-shadow:none!important;border-color:#518698!important;background:#09283c!important;color:#bdd9e3!important}

/* Active-time practice: controls stay in the cabinet header. Older screens
   retain their geometry and wall-clock rules. The real board stays mounted but
   becomes inert and invisible while paused, including its accessible labels. */
.pv-game.pv-active{height:100%;min-height:100%;overflow:hidden;gap:8px}
.pv-game.pv-active .pv-header{display:grid;grid-template-columns:44px 104px 44px 44px;grid-template-rows:30px 44px;justify-content:center;gap:5px 8px;flex:0 0 82px;max-width:none;align-content:center}
.pv-game.pv-active .pv-header>div{grid-area:1 / 1 / 2 / 5;min-width:0}
.pv-game.pv-active .pv-header h1{font-size:27px;line-height:1.08}
.pv-game.pv-active .pv-header>button{width:44px;height:44px;grid-row:2;font-size:28px}
.pv-game.pv-active .pv-header>.pv-play{width:104px;border-radius:12px;font:700 15px/1 Arial,sans-serif;white-space:nowrap}
.pv-game.pv-active .pv-header>button:disabled{opacity:.55}
.pv-game.pv-active .pv-play-area{position:relative;display:flex;align-items:center;justify-content:center;flex:1 1 0;min-height:0;max-width:none;width:100%}
.pv-game.pv-active .pv-play-area.is-concealed{visibility:hidden;pointer-events:none}
.pv-game.pv-active .pv-pause-status{flex:0 0 18px;min-height:18px;font:700 11px/18px Arial,sans-serif;text-align:center;letter-spacing:.8px;color:var(--ink-2)}
.pv-game.pv-active .pv-load-status{flex:0 0 auto;text-align:center;font:13px/1.4 Arial,sans-serif;color:var(--ink-2)}
.pv-game.pv-active .pv-load-status .pv-button{margin:8px auto 0;padding:9px 14px;min-height:44px;font-size:14px}
.pv-game.pv-shuffle-v3.pv-active{padding:8px 12px max(60px,10dvh);container-type:size}
.pv-game.pv-shuffle-v3.pv-active .pv-optics-stats{min-height:44px;padding:8px 5px;margin:0}
.pv-game.pv-shuffle-v3.pv-active .pv-play-area{container-type:size;flex-shrink:1}
.pv-game.pv-shuffle-v3.pv-active .pv-board{width:min(100%,460px,calc((100cqh - 20px) * var(--pv-picture-ratio,1)));max-width:460px;margin:0 auto}
.pv-game.pv-shuffle-v3.pv-active .pv-feedback:not(:empty){padding:6px 10px;font-size:12px}
.pv-game.pv-shuffle-v3.pv-active .pv-subject-staff .pv-fragment img,.pv-game.pv-shuffle-v3.pv-active .pv-single.pv-subject-staff .pv-photo img{object-position:center top}
.pv-game.pv-shuffle-v3.pv-active .pv-optics-result{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.pv-game.pv-shuffle-v3.pv-active .pv-optics-result h2{font-size:28px;margin:4px 0 10px}
.pv-game.pv-shuffle-v3.pv-active .pv-optics-result .pv-single{flex:0 1 auto;min-height:0;width:min(240px,40cqh);max-width:min(240px,40cqh);margin:12px auto 0}
.pv-game.pv-shuffle-v3.pv-active .pv-optics-result>[data-action="replay"]{display:none}
@media(min-width:700px) and (hover:hover) and (pointer:fine){
  .gs-portal .pv-game.pv-shuffle-v3.pv-active{padding-top:8px;padding-bottom:max(60px,10cqh)}
  .gs-portal .pv-game.pv-shuffle-v3.pv-active .pv-header h1{font-size:27px}
  .gs-portal .pv-game.pv-shuffle-v3.pv-active .pv-board{width:min(100%,460px,calc((100cqh - 20px) * var(--pv-picture-ratio,1)))}
}

/* v6 Info fits short phones. Its opaque layer covers the live header; only
   unusually long errors need the bounded inner panel to scroll. Specificity
   keeps the later frozen wood stylesheet from restoring its larger spacing. */
.pv-game.pv-active .pv-help.pv-help-active{position:fixed;inset:0;z-index:1001;width:auto;max-width:none;padding:max(16px,env(safe-area-inset-top)) 16px max(16px,env(safe-area-inset-bottom));background:var(--bg,#062236);align-items:center;overflow:hidden}
.pv-game.pv-active .pv-help.pv-help-active>div{width:100%;max-width:350px;max-height:100%;overflow:auto;overscroll-behavior:contain;padding:16px;border:1px solid var(--line,#34768c);border-radius:14px;background:var(--card,#092b40);box-shadow:0 8px 28px #0006}
.pv-game.pv-active .pv-help.pv-help-active small{display:block;font-size:10px;line-height:1.2;margin:0}
.pv-game.pv-active .pv-help.pv-help-active h2{font-size:24px;line-height:1.15;margin:4px 0 10px}
.pv-game.pv-active .pv-help.pv-help-active p{font-size:14px;line-height:1.4;margin:0 0 8px}
.pv-game.pv-active .pv-help.pv-help-active .pv-button{min-height:44px;padding:10px 16px;margin:10px 0 0;font-size:16px;line-height:1.2}
.pv-game.pv-active .pv-help.pv-help-active .pv-error{margin:10px 0 0;padding:0;min-height:0}
.pv-game.pv-shuffle-v3.pv-active .pv-optics-result .pv-optics-stats{width:min(100%,320px);gap:16px;flex:0 0 auto}

/* Approved people cabinets apply only to the current active-time wrapper.
   Generated section cuts keep their proportions; gameplay owns square cells. */
.pv-game.pv-match.pv-active.pv-art-frame,.pv-game.pv-shuffle-v3.pv-active.pv-art-frame,
html.dark .pv-game.pv-shuffle-v3.pv-active.pv-art-frame,[data-theme="dark"] .pv-game.pv-shuffle-v3.pv-active.pv-art-frame{
  position:relative;width:100%;max-width:none;height:100%;min-height:0;margin:0;padding:0;gap:0;display:block;container-type:size;overflow:hidden;
  background:#071d27 url('./game-art/ocular-porcelain-v1-field.webp') center / 130px repeat;color:#f4ddb4;
  --ink:#f4ddb4;--ink-2:#e9d8b8;--card:#102a34;--bg:#071d27;--line:#b78d50;
}
.pv-game.pv-match.pv-active.pv-art-frame{background:#082c2d url('./game-art/double-walnut-v1-field.webp') center / 130px repeat;--bg:#082c2d;--card:#103335}
.pv-game.pv-active.pv-art-frame::before{display:none}
.pv-game.pv-active.pv-art-frame .pv-art-cabinet{position:relative;display:flex;flex-direction:column;width:min(100%,51.96cqh);height:100%;margin:auto;container-type:size;gap:0;overflow:hidden}
.pv-game.pv-match.pv-active.pv-art-frame .pv-art-cabinet{width:min(100%,50cqh)}
.pv-game.pv-active.pv-art-frame .pv-art-cabinet .pv-header{position:relative;display:block;width:100%;max-width:none;height:37.5423cqw;flex:0 0 37.5423cqw;margin:0;padding:0;z-index:3;background:url('./game-art/ocular-porcelain-v1-header.webp') center / 100% auto no-repeat;border:0;box-shadow:none}
.pv-game.pv-match.pv-active.pv-art-frame .pv-art-cabinet .pv-header{height:30.1015cqw;flex-basis:30.1015cqw;background-image:url('./game-art/double-walnut-v1-header.webp')}
.pv-game.pv-active.pv-art-frame .pv-art-cabinet .pv-header>button,.pv-game.pv-active.pv-art-frame .pv-art-footer>button{position:absolute;width:44px;height:44px;min-height:44px;padding:0;margin:0;border:0;border-radius:50%;background:transparent;color:transparent;box-shadow:none;transform:none;filter:none}
.pv-game.pv-active.pv-art-frame .pv-art-cabinet .pv-header>[data-action="back"]{left:calc(10.3% - 22px);top:calc(9.5cqw - 22px)}
.pv-game.pv-active.pv-art-frame .pv-art-cabinet .pv-header>[data-action="info"]{right:4px;top:calc(9.5cqw - 22px)}
.pv-game.pv-active.pv-art-frame .pv-art-cabinet .pv-header>.pv-play{right:50px;top:calc(9.5cqw - 22px);width:44px;font-size:0;border-radius:50%}
.pv-game.pv-active.pv-art-frame .pv-art-cabinet .pv-header>.pv-play img{position:absolute;width:9.1cqw;height:9.5cqw;max-width:none;left:calc(78.355cqw - 100cqw + 94px);top:calc(22px - 4.75cqw);object-fit:fill;pointer-events:none}
.pv-game.pv-active.pv-art-frame .pv-art-cabinet .pv-header>button:disabled{opacity:.6}
.pv-game.pv-active.pv-art-frame .pv-art-cabinet .pv-art-accessible{position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;overflow:hidden!important;clip-path:inset(50%);white-space:nowrap}
.pv-game.pv-active.pv-art-frame .pv-art-stats{position:absolute;top:20.294cqw;left:4.5%;width:91%;height:7.2cqw;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:center;pointer-events:none}
.pv-game.pv-match.pv-active.pv-art-frame .pv-art-stats{top:18.2cqw;height:6.2cqw}
.pv-game.pv-active.pv-art-frame .pv-art-stats>span{text-align:center;min-width:0}
.pv-game.pv-active.pv-art-frame .pv-art-stats b{font:700 clamp(17px,5cqw,23px)/1 Georgia,serif;color:#16333d;font-variant-numeric:tabular-nums}
.pv-game.pv-match.pv-active.pv-art-frame .pv-art-stats b{color:#ffe5ad;text-shadow:0 1px 2px #000}
.pv-game.pv-active.pv-art-frame .pv-art-cabinet .pv-play-area{position:relative;display:flex;flex:1 1 0;min-height:0;width:100%;max-width:none;container-type:size;padding:0 2.1cqw;align-items:center;justify-content:center;background:transparent}
.pv-game.pv-active.pv-art-frame .pv-art-cabinet .pv-play-area.is-concealed{visibility:hidden;pointer-events:none}
.pv-game.pv-match.pv-active.pv-art-frame .pv-art-cabinet .pv-play-area{background:url('./game-art/double-walnut-v1-body.webp') center top / 100% auto repeat-y}
.pv-game.pv-match.pv-active.pv-art-frame .pv-art-cabinet .pv-play-area::before{content:'';position:absolute;inset:0 4%;border:1px solid #986a2c;border-radius:12px;background:#0a3334 url('./game-art/double-walnut-v1-field.webp') center / 100px repeat;pointer-events:none}
.pv-game.pv-match.pv-active.pv-art-frame .pv-art-cabinet .pv-memory{position:relative;z-index:1}
.pv-game.pv-match.pv-active.pv-art-frame .pv-art-cabinet .pv-memory{--pv-art-gap:6px;--pv-art-cell:min(calc((100cqw - 6px - 3 * var(--pv-art-gap)) / 4),calc((100cqh - 8px - (var(--pv-rows,5) - 1) * var(--pv-art-gap)) / var(--pv-rows,5)));display:grid;flex:0 0 auto;padding:0;margin:auto;width:calc(4 * var(--pv-art-cell) + 3 * var(--pv-art-gap));height:calc(var(--pv-rows,5) * var(--pv-art-cell) + (var(--pv-rows,5) - 1) * var(--pv-art-gap));max-width:100%;gap:var(--pv-art-gap);grid-template-columns:repeat(4,var(--pv-art-cell));grid-template-rows:repeat(var(--pv-rows,5),var(--pv-art-cell))}
.pv-game.pv-match.pv-active.pv-art-frame .pv-art-cabinet .pv-card{aspect-ratio:1;min-height:0;width:100%;height:100%;padding:0;border:0;border-radius:7px;background:#0a3334 url('./game-art/double-walnut-v1-well.webp') center / 100% 100%;box-shadow:0 2px 3px #0008;overflow:hidden}
.pv-game.pv-match.pv-active.pv-art-frame .pv-art-cabinet .dv-wood-back{visibility:visible;inset:0;width:100%;height:100%;object-fit:fill;filter:none}
.pv-game.pv-match.pv-active.pv-art-frame .pv-art-cabinet .pv-card .pv-photo{position:absolute;inset:4%;width:92%;height:92%;border:0;border-radius:3px;background:#0a3334;box-shadow:none}
.pv-game.pv-match.pv-active.pv-art-frame .pv-art-cabinet .pv-card::after{content:'';position:absolute;inset:0;z-index:1;background:url('./game-art/double-walnut-v1-rim.webp') center / 100% 100%;pointer-events:none}
.pv-game.pv-match.pv-active.pv-art-frame .pv-art-cabinet .pv-card .pv-photo::after{display:none}
.pv-game.pv-match.pv-active.pv-art-frame .pv-art-cabinet .pv-name{inset:auto 5% 5%;padding:5px 2px 3px;font:700 9px/1.12 Arial,sans-serif;z-index:2}
.pv-game.pv-match.pv-active.pv-art-frame .pv-art-cabinet .pv-check{top:6%;right:6%;z-index:3}
.pv-game.pv-shuffle-v3.pv-active.pv-art-frame .pv-art-cabinet .pv-board{--pv-picture-ratio:1;width:min(100%,calc(100cqh - 4px));height:auto;aspect-ratio:1;max-width:none;flex:0 0 auto;margin:0;padding:2.4%;gap:1%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr));border:0;border-radius:14px;background:url('./game-art/ocular-porcelain-v1-board-square.webp') center / 100% 100%;box-shadow:none;overflow:hidden;touch-action:none}
.pv-game.pv-shuffle-v3.pv-active.pv-art-frame .pv-art-cabinet .pv-tile,.pv-game.pv-shuffle-v3.pv-active.pv-art-frame .pv-art-cabinet .pv-gap{aspect-ratio:1;min-height:0;border:0;border-radius:6px;background:#092538 url('./game-art/ocular-porcelain-v1-well.webp') center / 100% 100%;box-shadow:none;outline:0}
.pv-game.pv-shuffle-v3.pv-active.pv-art-frame .pv-art-cabinet .pv-tile::after{content:'';position:absolute;inset:0;z-index:2;border:0;border-radius:6px;background:url('./game-art/ocular-porcelain-v1-rim.webp') center / 100% 100%;pointer-events:none}
.pv-game.pv-shuffle-v3.pv-active.pv-art-frame .pv-art-cabinet .pv-tile.is-slidable::after{box-shadow:inset 0 0 0 2px #ffe2a0,0 0 8px #e4b85788}
.pv-game.pv-shuffle-v3.pv-active.pv-art-frame .pv-art-cabinet .pv-gap{background:transparent}
.pv-game.pv-shuffle-v3.pv-active.pv-art-frame .pv-art-cabinet .pv-board .pv-photo{background:#092538}
.pv-game.pv-shuffle-v3.pv-active.pv-art-frame .pv-art-cabinet .pv-board .pv-fragment .pv-photo img{object-fit:cover;object-position:center}
.pv-game.pv-active.pv-art-frame .pv-art-cabinet .pv-art-footer{position:relative;flex:0 0 53.3269cqw;width:100%;max-width:none;height:53.3269cqw;background:url('./game-art/ocular-porcelain-v1-footer.webp') center / 100% auto no-repeat}
.pv-game.pv-match.pv-active.pv-art-frame .pv-art-cabinet .pv-art-footer{flex-basis:30.4397cqw;height:30.4397cqw;background-image:url('./game-art/double-walnut-v1-footer.webp')}
.pv-game.pv-active.pv-art-frame .pv-art-footer>[data-action="sound"]{width:max(44px,18cqw);height:max(44px,18cqw);right:calc(15.7% - max(22px,9cqw));top:calc(28.7cqw - max(22px,9cqw))}
.pv-game.pv-match.pv-active.pv-art-frame .pv-art-footer>[data-action="sound"]{width:44px;height:44px;left:calc(9.5% - 22px);right:auto;top:calc(9cqw - 22px)}
.pv-game.pv-active.pv-art-frame .pv-art-footer>[data-action="sound"][aria-pressed="false"]::after{content:'';position:absolute;inset:34%;border-bottom:2px solid #f4ddb4;transform:rotate(-45deg);pointer-events:none}
.pv-game.pv-active.pv-art-frame .pv-art-cabinet>.game-entry-cover{inset:30.1cqw 0 30.44cqw;z-index:2}
.pv-game.pv-shuffle-v3.pv-active.pv-art-frame .pv-art-cabinet>.game-entry-cover{inset:37.54cqw 0 53.33cqw}
.pv-game.pv-active.pv-art-frame .pv-art-cabinet>.pv-pause-status,.pv-game.pv-active.pv-art-frame .pv-art-cabinet>.pv-load-status,.pv-game.pv-active.pv-art-frame .pv-art-cabinet>.pv-feedback:not(:empty){position:absolute;left:5%;right:5%;bottom:33cqw;z-index:3;width:auto;max-width:none;margin:0;padding:7px 10px;border-radius:8px;background:#09272cf2;color:#f4ddb4;text-align:center;min-height:0;font:13px/1.35 Arial,sans-serif}
.pv-game.pv-shuffle-v3.pv-active.pv-art-frame .pv-art-cabinet>.pv-pause-status,.pv-game.pv-shuffle-v3.pv-active.pv-art-frame .pv-art-cabinet>.pv-load-status,.pv-game.pv-shuffle-v3.pv-active.pv-art-frame .pv-art-cabinet>.pv-feedback:not(:empty){bottom:55cqw}
.pv-game.pv-active.pv-art-frame .pv-art-cabinet>.pv-feedback:empty{display:none}
.pv-game.pv-active.pv-art-frame .pv-art-cabinet>.pv-feedback.pv-live-status{position:absolute;width:1px;height:1px;padding:0;clip-path:inset(50%);overflow:hidden}
.pv-game.pv-active.pv-art-frame .pv-art-cabinet>.pv-next{position:absolute;left:20%;right:20%;bottom:43cqw;width:60%;z-index:4;flex:none;min-height:44px}
.pv-game.pv-active.pv-art-frame .pv-art-cabinet .pv-result{flex:1 1 0;min-height:0;width:100%;max-width:none;margin:0;padding:10px 20px;justify-content:center;overflow:hidden}
.pv-game.pv-active.pv-art-frame .pv-art-cabinet .pv-result .pv-stats{position:relative;width:100%;height:auto;min-height:40px;margin:0;padding:7px 5px}
.pv-game.pv-active.pv-art-frame .pv-art-cabinet .pv-result .pv-single{width:min(190px,35cqh);max-width:min(190px,35cqh);margin:8px auto 0}
.pv-game.pv-active.pv-art-frame .pv-art-cabinet .pv-result .pv-team{margin:10px 0 0}
@media(prefers-reduced-motion:reduce){.pv-art-frame button{transition:none!important}}
.pv-game.pv-active.pv-art-frame .pv-art-footer>[data-audio-mode="music"]::before{content:'♪';position:absolute;right:0;bottom:0;display:grid;place-items:center;width:14px;height:14px;border:1px solid #b99054;border-radius:50%;background:#102d35;color:#ffe3aa;font:11px/1 Georgia,serif;pointer-events:none}
/* Complete illustrated audio states replace the earlier glyph overlays. The
   sound target stays outside the central pause cover and remains operable. */
.pv-game.pv-active.pv-art-frame .pv-art-footer>[data-action="sound"]::before,
.pv-game.pv-active.pv-art-frame .pv-art-footer>[data-action="sound"]::after{display:none}
.pv-game.pv-active.pv-art-frame .pv-art-footer>[data-action="sound"] img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}
.pv-game.pv-active.pv-art-frame .pv-paused-cover{position:absolute;inset:30.1cqw 0 30.44cqw;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;pointer-events:none}
.pv-game.pv-shuffle-v3.pv-active.pv-art-frame .pv-paused-cover{inset:37.54cqw 0 53.33cqw}
.pv-game.pv-active.pv-art-frame .pv-paused-resume{display:block;width:min(220px,75cqw,52cqh);height:auto;min-height:44px;margin:0;padding:0;border:0;background:transparent;box-shadow:none;cursor:default;pointer-events:none}
.pv-game.pv-active.pv-art-frame .pv-paused-resume img{display:block;width:100%;height:auto;max-height:48cqh;object-fit:contain;pointer-events:none}
.pv-game.pv-active.pv-art-frame .pv-paused-actions{display:flex;gap:28px;justify-content:center;pointer-events:none}
.pv-game.pv-active.pv-art-frame .pv-paused-actions>button{width:52px;height:52px;min-height:44px;padding:0;border:0;border-radius:50%;background:transparent;box-shadow:none;pointer-events:auto}
.pv-game.pv-active.pv-art-frame .pv-paused-actions img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}
.pv-game.pv-active.pv-art-frame .pv-doctor-photo{background:#164350 url('./game-art/ocular-porcelain-v1-field.webp') center / cover}
.pv-game.pv-match.pv-active.pv-art-frame .pv-art-cabinet .pv-card.is-open .pv-doctor-photo img{object-fit:contain;object-position:center;transform:none}
.pv-game.pv-match.pv-active.pv-art-frame .pv-art-cabinet .pv-card:has(.pv-doctor-photo) .pv-name{font-size:8px;line-height:1.12;padding:3px 1px;white-space:normal;overflow:visible;overflow-wrap:anywhere}
.pv-game.pv-shuffle-v3.pv-active.pv-art-frame .pv-art-cabinet .pv-board .pv-fragment .pv-doctor-photo img{object-fit:contain;object-position:center}
