@font-face{font-family:'Instrument Serif';src:url('assets/instrument-serif.ttf') format('truetype');font-display:swap;font-style:normal;font-weight:400}
:root{font-family:'Instrument Serif',serif;color:#625772;background:#cbc4df;font-synthesis:none;font-weight:400}
*{box-sizing:border-box}body{margin:0;min-height:100svh;background:url('assets/jelly-gem-background.png') center top/cover fixed no-repeat}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,canvas:focus-visible{outline:1px solid #75678c;outline-offset:4px}
.app{width:min(100%,1000px);height:100svh;min-height:640px;margin:auto;position:relative;padding:clamp(150px,24svh,240px) 24px 24px;display:grid;grid-template-columns:1fr minmax(0,440px) 1fr;grid-template-rows:minmax(0,1fr) 78px;column-gap:28px}
.score-panel{align-self:start;justify-self:end;margin-top:60px;text-align:center;font-size:20px}.score-panel output{display:block;font-size:46px;line-height:1.2;font-variant-numeric:lining-nums tabular-nums}
.board-wrap{grid-column:2;grid-row:1;position:relative;min-height:0;display:flex;align-items:center;justify-content:center}#board{display:block;width:100%;height:100%;object-fit:contain;touch-action:none;cursor:crosshair}#loadMessage{position:absolute;top:40%;width:100%;text-align:center;font-size:20px}
.progress{grid-column:2;grid-row:2;align-self:end}.progress-top{display:flex;justify-content:space-between;font-size:17px;padding:0 3px}.stages{display:flex;gap:3px;align-items:center;margin-top:8px}.stage{flex:1;min-width:0;text-align:center}.stage canvas{display:block;width:100%;height:36px;object-fit:contain}.stage.locked canvas{opacity:.28;filter:grayscale(.6)}.stage.latest canvas{filter:drop-shadow(0 0 4px #fff)}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}dialog{border:1px solid #ffffff80;background:#ece6f5ed;color:#625772;padding:24px;width:min(88vw,400px);text-align:center}dialog::backdrop{background:#beb3d15c;backdrop-filter:blur(6px)}dialog h1{font-size:34px;font-weight:400;margin:8px 0}dialog p{font-size:20px}dialog canvas{max-width:100%;height:220px;object-fit:contain}dialog canvas[hidden]{display:none}dialog button{border:1px solid #9d8dac;background:transparent;font-size:22px;padding:8px 28px}
@media(max-width:700px){body{background-size:auto max(100svh,640px)}.app{width:100%;padding:clamp(150px,24svh,215px) 12px 16px;grid-template-columns:minmax(0,1fr);grid-template-rows:54px minmax(0,1fr) 76px;gap:0;max-width:480px}.score-panel{grid-column:1;grid-row:1;justify-self:center;align-self:center;margin:0;display:flex;gap:12px;align-items:baseline;font-size:20px}.score-panel output{font-size:30px}.board-wrap{grid-column:1;grid-row:2}.progress{grid-column:1;grid-row:3;width:100%;max-width:420px;justify-self:center}.progress-top{font-size:16px}.stages{gap:0}.stage canvas{height:33px}}
@media(max-width:700px){body::before{content:'';position:fixed;z-index:0;pointer-events:none;inset:0 0 auto;height:36svh;min-height:230px;background:#cbc4df url('assets/jelly-gem-background.png') center top/280vw auto no-repeat;mask-image:linear-gradient(#000 78%,transparent)}.app{z-index:1}}
#board,#board:focus,#board:focus-visible{outline:none!important;border:0;box-shadow:none;-webkit-tap-highlight-color:transparent}
#guide{z-index:2;position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none}#popHint{position:absolute;top:0;left:0;right:0;text-align:center;font-size:20px;color:#625772;pointer-events:none}.score-meta{display:block;font-size:16px;margin-top:6px}.score-panel #sound{display:block;margin:10px auto 0;border:0;background:transparent;font-size:16px;padding:6px}dialog .secondary{display:block;border:0;margin:12px auto 0;font-size:20px}dialog small{display:block;margin-top:8px;line-height:1.4;font-size:15px}dialog button:disabled{opacity:.45;cursor:default}#saveStatus{position:fixed;bottom:4px;left:0;width:100%;text-align:center;font-size:15px}.score-panel{position:relative}@media(max-width:700px){.score-panel{flex-wrap:wrap;gap:0 10px;max-width:250px}.score-meta{margin:0;font-size:15px}.score-panel #sound{margin:0;padding:3px 6px;font-size:15px}.app{grid-template-rows:66px minmax(0,1fr) 76px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
[hidden]{display:none!important}

.discovery-label{display:inline-flex;align-items:center;gap:3px}.save-info{position:relative;display:inline-flex;align-items:center}.save-info button{display:grid;place-items:center;width:28px;height:28px;padding:0;border:0;background:transparent}.save-info button>span{display:grid;place-items:center;width:15px;height:15px;border:1px solid #62577280;border-radius:50%;font-size:12px;line-height:1;color:#625772}.save-info-text{position:absolute;bottom:100%;left:-90px;z-index:6;width:min(280px,calc(100vw - 36px));padding:15px 17px;background:#eee8f6fa;border:1px solid #ffffffb3;box-shadow:0 4px 20px #62577214;font-size:16px;font-weight:400;line-height:1.4;text-align:left}.save-info-text strong{display:block;font-size:19px;font-weight:400;margin-bottom:6px}.progress-top{align-items:center}

/* Opt-in comparison mockup only; no ad network, tracking or changes to normal play. */
body.banner-preview{--banner-space:122px;--banner-safe:env(safe-area-inset-bottom,0px)}
.banner-preview .app{height:calc(100svh - var(--banner-space) - var(--banner-safe));min-height:520px}
.banner-preview-slot{position:relative;z-index:1;height:calc(var(--banner-space) + var(--banner-safe));padding:7px 12px calc(8px + var(--banner-safe));background:#cdc6de;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border-top:1px solid #ffffff35}
.banner-preview-label{font-size:11px;line-height:13px;color:#625772}
.sample-banner{width:min(728px,100%);height:90px;flex-shrink:0;background:#fff;color:#272e3b;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 24px;font-family:Arial,sans-serif;border:1px solid #dedee4}
.sample-advertiser{display:block;font-size:10px;letter-spacing:1px;color:#717786;margin-bottom:5px}.sample-message{display:block;font-size:21px;font-weight:600}.sample-cta{flex-shrink:0;padding:12px 20px;background:#315dc7;color:white;font-size:13px;border-radius:3px}
.banner-preview #saveStatus{bottom:calc(var(--banner-space) + var(--banner-safe))}
@media(max-width:700px){body.banner-preview{--banner-space:82px}.banner-preview .app{min-height:558px}.sample-banner{width:min(320px,100%);height:50px;padding:7px 10px;gap:8px}.sample-advertiser{font-size:7px;letter-spacing:.7px;margin-bottom:3px}.sample-message{font-size:13px}.sample-cta{font-size:10px;padding:8px 10px}}
