/* Minesweeper Patterns trainer. Tokens come from ../css/site.css (ink, paper, accents, Plus Jakarta Sans / JetBrains Mono).
   Look: a field notebook. Unopened squares are raised periwinkle tiles, opened squares are cream paper, ink outlines
   and hard offset shadows match the rest of the site's frame. */
.mp-app{--mp-tile:oklch(80% 0.1 262);--mp-tile-hi:oklch(88% 0.07 262);--mp-tile-lo:oklch(68% 0.14 262);--mp-paper:oklch(97% 0.03 95);
  --mp-good:oklch(70% 0.19 150);--mp-bad:oklch(62% 0.24 25);--mp-n1:oklch(50% 0.22 258);--mp-n2:oklch(52% 0.17 150);--mp-n3:oklch(55% 0.24 25);
  --mp-n4:oklch(42% 0.22 295);--mp-n5:oklch(42% 0.17 40);--mp-n6:oklch(50% 0.12 200);--mp-n7:var(--color-ink);--mp-n8:oklch(45% 0.02 300);
  position:relative;display:block;min-height:420px}
.mp-app *{box-sizing:border-box}
.mp-app button{font-family:var(--font-display);cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.mp-app button:focus-visible,.mp-app a:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}
.mp-screen{animation:mp-in .28s ease-out both}
@keyframes mp-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* ----- home ----- */
.mp-lede{margin:0 0 14px;font-size:var(--text-sm);line-height:1.5;color:var(--color-ink-2)}
.mp-modes-grid{display:grid;gap:10px;margin-bottom:12px}
.mp-mode{position:relative;display:grid;gap:2px;text-align:left;padding:14px 16px;min-height:72px;border:3px solid var(--color-ink);border-radius:14px;color:var(--color-ink);
  box-shadow:0 5px 0 var(--color-ink);transition:transform .08s,box-shadow .08s}
.mp-mode:active{transform:translateY(4px);box-shadow:0 1px 0 var(--color-ink)}
.mp-mode.m-learn{background:var(--color-mint)}.mp-mode.m-drill{background:var(--color-coral-band)}.mp-mode.m-daily{background:var(--color-accent)}
.mp-mode__t{font:800 1.35rem/1 var(--font-display);letter-spacing:-.02em}
.mp-mode__s{font:500 var(--text-sm)/1.2 var(--font-label)}
.mp-mode__tag{position:absolute;right:12px;top:12px;font:700 10px/1 var(--font-label);letter-spacing:.1em;background:var(--color-ink);color:var(--color-accent);padding:5px 7px;border-radius:99px}
.mp-lib-btn{display:flex;justify-content:space-between;align-items:center;width:100%;min-height:52px;padding:0 16px;margin-bottom:14px;background:var(--mp-paper);border:3px solid var(--color-ink);border-radius:12px;
  font:700 1rem/1 var(--font-display);color:var(--color-ink);box-shadow:0 4px 0 var(--color-ink)}
.mp-lib-btn:active{transform:translateY(3px);box-shadow:0 1px 0 var(--color-ink)}
.mp-lib-btn__n{font:600 var(--text-xs)/1 var(--font-label);color:var(--color-muted)}
.mp-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}
.mp-stat{display:grid;gap:2px;text-align:center;padding:10px 4px;border:2px dashed var(--color-rule);border-radius:10px}
.mp-stat b{font:800 1.35rem/1 var(--font-label)}.mp-stat span{font:500 10px/1.1 var(--font-label);letter-spacing:.06em;text-transform:uppercase;color:var(--color-muted)}
.mp-links{display:flex;flex-wrap:wrap;gap:8px 16px}
.mp-link{font:700 var(--text-sm)/1 var(--font-display);color:var(--color-ink);text-underline-offset:3px;min-height:44px;display:inline-flex;align-items:center}

/* ----- sub-screen header, path, library ----- */
.mp-head{display:flex;align-items:flex-start;gap:10px;margin-bottom:12px}
.mp-back{flex:none;min-height:44px;padding:0 12px;border:2px solid var(--color-ink);border-radius:10px;background:var(--mp-paper);font:700 var(--text-sm)/1 var(--font-display);color:var(--color-ink)}
.mp-head__t h2{margin:0;font:800 1.25rem/1.15 var(--font-display);letter-spacing:-.02em}
.mp-head__t p{margin:2px 0 0;font-size:var(--text-xs);color:var(--color-muted)}
.mp-path{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.mp-step{display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:10px;width:100%;min-height:52px;padding:0 12px;border:2px solid var(--color-ink);border-radius:12px;background:var(--mp-paper);text-align:left;color:var(--color-ink)}
.mp-step__n{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--color-ink);color:var(--color-paper-2);font:700 var(--text-sm)/1 var(--font-label)}
.mp-step.is-done .mp-step__n{background:var(--mp-good);color:var(--color-ink)}
.mp-step.is-next{background:var(--color-accent);box-shadow:0 4px 0 var(--color-ink)}
.mp-step__name{font:700 1rem/1.1 var(--font-display)}.mp-step__d{font:500 10px/1 var(--font-label);letter-spacing:.1em;color:var(--color-muted)}
.mp-group{margin:16px 0 8px;font:700 11px/1 var(--font-label);letter-spacing:.12em;text-transform:uppercase;color:var(--color-ink)}
.mp-lib{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.mp-card{display:grid;gap:6px;justify-items:center;padding:10px 6px 10px;border:2px solid var(--color-ink);border-radius:12px;background:var(--mp-paper);color:var(--color-ink);min-height:44px}
.mp-card:active{transform:translateY(2px)}
.mp-card__name{font:700 var(--text-sm)/1.1 var(--font-display);text-align:center}
.mp-badge{font:700 10px/1 var(--font-label);letter-spacing:.08em;text-transform:uppercase;padding:4px 8px;border-radius:99px;border:1.5px solid var(--color-ink)}
.mp-badge.is-mastered{background:var(--mp-good)}.mp-badge.is-learning{background:var(--color-accent)}.mp-badge.is-new{background:var(--color-paper-2);color:var(--color-muted);border-color:var(--color-rule)}

/* ----- mini diagrams ----- */
.dg{--dg-s:20px;display:grid;grid-template-columns:repeat(var(--cols),var(--dg-s));gap:2px;padding:4px;background:var(--color-paper-3);border-radius:8px}
.dg-c{width:var(--dg-s);height:var(--dg-s);display:grid;place-items:center;border-radius:4px;font:800 calc(var(--dg-s)*.58)/1 var(--font-label)}
.dg-c.is-hid{background:var(--mp-tile);box-shadow:inset 0 -2px 0 var(--mp-tile-lo)}
.dg-c.is-open{background:var(--mp-paper)}
.dg-c.is-focus{outline:2px solid var(--color-ink);outline-offset:-2px;background:var(--color-accent)}
.dg-c.is-mine,.dg-c.is-flag{color:var(--mp-bad)}.dg-c svg{width:78%;height:78%}
.dg-c.is-safe::after{content:"";width:34%;height:34%;border-radius:50%;background:var(--mp-good);border:1.5px solid var(--color-ink)}
.dg-c[data-n="1"]{color:var(--mp-n1)}.dg-c[data-n="2"]{color:var(--mp-n2)}.dg-c[data-n="3"]{color:var(--mp-n3)}.dg-c[data-n="4"]{color:var(--mp-n4)}
.mp-lesson__dg{display:flex;justify-content:center;margin:4px 0 14px}.mp-lesson__dg .dg{--dg-s:36px;padding:8px;gap:3px}
.mp-lesson__line{margin:0 0 10px;font-size:var(--text-md);line-height:1.5}
.mp-lesson__line--2{color:var(--color-ink-2);font-size:var(--text-sm)}
.mp-lesson__row{display:flex;justify-content:space-between;align-items:center;margin:4px 0 12px}

/* ----- buttons ----- */
.mp-go{display:block;width:100%;min-height:52px;padding:0 18px;border:3px solid var(--color-ink);border-radius:12px;background:var(--color-accent-2);color:#fff;font:800 1.05rem/1 var(--font-display);box-shadow:0 4px 0 var(--color-ink);transition:transform .08s,box-shadow .08s}
.mp-go:active{transform:translateY(3px);box-shadow:0 1px 0 var(--color-ink)}
.mp-ghost{min-height:44px;padding:0 14px;border:2px solid var(--color-ink);border-radius:10px;background:var(--mp-paper);color:var(--color-ink);font:700 var(--text-sm)/1 var(--font-display)}

/* ----- play ----- */
.mp-play{position:relative}
.mp-hud{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;gap:6px 10px;align-items:center;margin-bottom:8px}
.mp-hud .mp-back{grid-row:1}
.mp-hud__lives{justify-self:end}
.mp-hud__meter{grid-column:1 / -1;font:600 var(--text-xs)/1 var(--font-label);color:var(--color-ink-2);letter-spacing:.04em;font-variant-numeric:tabular-nums}
.mp-hearts{display:flex;gap:4px}.mp-heart{width:26px;height:26px;color:var(--mp-bad);transition:transform .25s,color .25s,opacity .25s}.mp-heart svg{width:100%;height:100%;display:block;filter:drop-shadow(0 2px 0 var(--color-ink))}
.mp-heart.is-lost{color:var(--color-rule);transform:scale(.8);opacity:.7}
.mp-chiprow{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px}
.mp-chip{font:800 var(--text-sm)/1 var(--font-display);padding:7px 12px;border-radius:99px;background:var(--color-ink);color:var(--color-accent)}
.mp-left{font:700 var(--text-xs)/1 var(--font-label);letter-spacing:.06em;text-transform:uppercase}
.mp-board-wrap{display:flex;justify-content:center}
.mp-board{--gap:3px;display:grid;grid-template-columns:repeat(var(--cols),1fr);gap:var(--gap);container-type:inline-size;
  width:min(100%,calc(var(--cols) / var(--rows) * 56vh));touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.mp-cell{--fs:calc(100cqw / var(--cols) * .5);position:relative;aspect-ratio:1;display:grid;place-items:center;padding:0;border-radius:8px;border:2px solid var(--color-ink);font:800 var(--fs,1.2rem)/1 var(--font-label);color:var(--color-ink);min-width:0}
.mp-cell.is-hid,.mp-cell.is-flag{background:linear-gradient(180deg,var(--mp-tile-hi),var(--mp-tile));box-shadow:0 3px 0 var(--color-ink);transition:transform .06s,box-shadow .06s}
.mp-cell.is-hid:active{transform:translateY(2px);box-shadow:0 1px 0 var(--color-ink)}
.mp-cell.is-flag{background:linear-gradient(180deg,oklch(90% 0.08 25),oklch(80% 0.12 25))}
.mp-cell.is-open,.mp-cell.is-dug{background:var(--mp-paper);border-color:var(--color-rule);border-width:1.5px;cursor:default;opacity:1}
.mp-cell.is-dug{background:oklch(95% 0.06 150)}
.mp-cell.is-pre{background:linear-gradient(180deg,oklch(92% 0.04 25),oklch(84% 0.08 25));border-style:dashed;cursor:default}
.mp-cell:disabled{opacity:1;color:inherit}
.mp-cell[data-n="1"]{color:var(--mp-n1)}.mp-cell[data-n="2"]{color:var(--mp-n2)}.mp-cell[data-n="3"]{color:var(--mp-n3)}.mp-cell[data-n="4"]{color:var(--mp-n4)}
.mp-cell[data-n="5"]{color:var(--mp-n5)}.mp-cell[data-n="6"]{color:var(--mp-n6)}.mp-cell[data-n="7"]{color:var(--mp-n7)}.mp-cell[data-n="8"]{color:var(--mp-n8)}
.mp-flag{width:62%;height:62%;color:var(--mp-bad);pointer-events:none}
.mp-cell.pop{animation:mp-pop .3s cubic-bezier(.3,1.6,.5,1)}
@keyframes mp-pop{0%{transform:scale(.7)}100%{transform:scale(1)}}
.mp-cell.shake{animation:mp-shake .38s}
@keyframes mp-shake{20%{transform:translateX(-5px)}40%{transform:translateX(5px)}60%{transform:translateX(-3px)}80%{transform:translateX(3px)}}
.mp-cell.is-penalty{background:oklch(90% 0.09 25)}
.mp-cell.is-key{outline:3px solid var(--color-accent-2);outline-offset:1px;z-index:2;animation:mp-pulse 1.1s ease-in-out infinite}
.mp-cell.is-seen{outline:2.5px dashed var(--mp-bad);outline-offset:-1px}
.mp-cell.is-target{outline:3px solid var(--mp-bad);outline-offset:1px;z-index:2}
.mp-cell.is-hint{outline:3px dotted var(--color-accent-2);outline-offset:1px;animation:mp-pulse 1.4s ease-in-out infinite}
@keyframes mp-pulse{50%{outline-offset:3px}}
.mp-cell.is-ghost-mine::after{content:"";position:absolute;inset:18%;border:2.5px dashed var(--mp-bad);border-radius:50%}
.mp-cell.is-ghost-safe::after{content:"";position:absolute;inset:34%;border-radius:50%;background:var(--mp-good);border:2px solid var(--color-ink)}
.mp-modes{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:14px 0 4px}
.mp-mode-btn{display:flex;align-items:center;justify-content:center;gap:8px;min-height:50px;border:3px solid var(--color-ink);border-radius:12px;background:var(--mp-paper);color:var(--color-ink);font:800 .95rem/1 var(--font-display)}
.mp-mode-btn[aria-pressed="true"]{background:var(--color-ink);color:var(--color-accent);box-shadow:inset 0 3px 0 rgba(255,255,255,.18)}
.mp-ico{width:18px;height:18px;border:2.5px solid currentColor;border-radius:5px;flex:none}
.mp-ico--flag{border:0;border-left:3px solid currentColor;border-radius:0;height:20px;width:14px;position:relative}
.mp-ico--flag::after{content:"";position:absolute;left:0;top:0;border-left:11px solid currentColor;border-top:6px solid transparent;border-bottom:6px solid transparent}
.mp-tip{margin:2px 0 8px;text-align:center;font:500 10.5px/1.2 var(--font-label);color:var(--color-muted)}
.mp-note{min-height:84px;padding:10px 12px;border-left:5px solid var(--color-accent-2);background:var(--color-paper-2);border-radius:0 10px 10px 0;font-size:var(--text-sm);line-height:1.45}
.mp-note p{margin:0 0 6px}.mp-note p:last-child{margin:0}
.mp-ok{font-weight:700;color:var(--mp-n2)}
.mp-bad__h{font-weight:800;color:var(--mp-bad)}
.mp-bad__why{padding-top:6px;border-top:1px dashed var(--color-rule);color:var(--color-ink-2)}

/* ----- result card ----- */
.mp-result{display:grid;gap:8px;padding:2px 0}
.mp-result h3{margin:0;font:800 1.2rem/1.15 var(--font-display);letter-spacing:-.02em}
.mp-result.is-lose h3{color:var(--mp-bad)}
.mp-result__sub{margin:0;font-size:var(--text-sm);color:var(--color-ink-2)}
.mp-result__stats{display:flex;gap:8px}.mp-result__stats>div{flex:1;display:grid;gap:2px;text-align:center;padding:8px 2px;border:2px solid var(--color-ink);border-radius:10px;background:var(--mp-paper)}
.mp-result__stats b{font:800 1.25rem/1 var(--font-label)}.mp-result__stats span{font:500 10px/1 var(--font-label);letter-spacing:.06em;text-transform:uppercase;color:var(--color-muted)}
.mp-result__line{margin:0;font-size:var(--text-sm);line-height:1.45}
.mp-heartback{font-weight:800;color:var(--mp-bad)}
.mp-result__cap{margin:0;min-height:1em;font:500 10.5px/1.2 var(--font-label);color:var(--color-muted)}
.mp-result__btns{display:flex;flex-wrap:wrap;gap:8px}.mp-result__btns .mp-go{flex:1 1 100%}.mp-result__btns .mp-ghost{flex:1}
.mp-result--quick h3{font-size:1.05rem}

/* ----- coin toast ----- */
.mp-toasts{position:absolute;left:0;right:0;top:48px;display:grid;justify-items:center;pointer-events:none;z-index:5}
.mp-coin{display:flex;align-items:center;gap:8px;padding:9px 14px;border:3px solid var(--color-ink);border-radius:99px;background:var(--color-accent);font:800 .95rem/1 var(--font-display);box-shadow:0 4px 0 var(--color-ink);animation:mp-coin 2.4s ease-out both}
.mp-coin__disc{width:18px;height:18px;border-radius:50%;background:var(--color-accent-deep);border:2.5px solid var(--color-ink);animation:mp-spin 1s linear 2}
@keyframes mp-coin{0%{opacity:0;transform:translateY(16px) scale(.8)}12%{opacity:1;transform:none}80%{opacity:1}100%{opacity:0;transform:translateY(-22px)}}
@keyframes mp-spin{50%{transform:scaleX(.2)}}

@media (prefers-reduced-motion:reduce){.mp-screen,.mp-cell,.mp-coin,.mp-coin__disc{animation:none!important}.mp-cell.is-key,.mp-cell.is-hint{animation:none!important}}

/* ----- SEO article under the game ----- */
.mp-article{max-width:720px;margin:28px auto 8px;padding:0 var(--page-gutter,16px);color:var(--color-ink);font-family:var(--font-body)}
.mp-article h2{font:800 var(--text-xl)/1.15 var(--font-display);letter-spacing:-.02em;margin:26px 0 10px}
.mp-article h3{font:800 var(--text-lg)/1.2 var(--font-display);margin:20px 0 6px}
.mp-article p,.mp-article li{font-size:var(--text-md);line-height:1.6}
.mp-article ul,.mp-article ol{padding-left:1.2rem}
.mp-article a{color:var(--color-accent-2);text-underline-offset:3px}
.mp-article .mp-faq{border-top:2px solid var(--color-rule);padding:12px 0}
.mp-article .mp-faq summary{cursor:pointer;font:700 var(--text-md)/1.35 var(--font-display);min-height:44px;display:flex;align-items:center}
.mp-article .mp-faq p{margin:6px 0 0}
