/* Palette daily (web). The whole page is always black — the painting only colors the tiles
   (set from JS), regardless of prefers-color-scheme. System fonts only → no font swap shift. */
:root{
  --g-bg:#000; --g-panel:#141414; --g-empty:#1f1f1f; --g-ink:#ece8e0;
  --bg:#000; --ink:#ece8e0; --ink2:#a39da8; --line:rgba(255,255,255,.14); --card:#141414;
  --serif:Georgia,"Times New Roman",serif;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue","Apple SD Gothic Neo","Hiragino Sans","Noto Sans KR","Noto Sans JP",Arial,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{background:var(--bg);color:var(--ink);font-family:var(--sans);line-height:1.5;
  -webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overflow-x:hidden}
a{color:inherit}
button{font:inherit;color:inherit;border:0;background:none;cursor:pointer;-webkit-tap-highlight-color:transparent}

/* ── stage: the first screen ── */
.stage{
  --bs:min(92vw, 56vh, 480px);
  --gap:max(3px, calc(var(--bs) * .011));
  --cell:calc((var(--bs) - 5 * var(--gap)) / 4);
  min-height:100vh; min-height:100dvh;
  display:flex; flex-direction:column; align-items:center;
  padding:max(6px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(14px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));
  background:var(--g-bg); color:var(--g-ink);
  transition:background-color .5s ease, color .5s ease;
}
@supports (height:100dvh){ .stage{--bs:min(92vw, 56dvh, 480px)} }
.stage.done{--bs:min(92vw, 30vh, 300px)}
@supports (height:100dvh){ .stage.done{--bs:min(92vw, 30dvh, 300px)} }

.top{width:100%;max-width:480px;height:40px;display:flex;align-items:center;justify-content:space-between;gap:8px}
.brand{display:flex;align-items:center;gap:8px;font-weight:750;font-size:15px;letter-spacing:.2px;text-decoration:none;flex:1 1 0;white-space:nowrap}
.brand img{width:24px;height:24px;border-radius:6px;box-shadow:0 0 0 1px rgba(255,255,255,.14)}
.daylabel{font-size:12.5px;font-variant-numeric:tabular-nums;opacity:.75;white-space:nowrap}
.badge{margin-left:auto;display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:99px;
  font-size:12px;font-weight:600;white-space:nowrap;text-decoration:none;opacity:.9;
  box-shadow:inset 0 0 0 1px color-mix(in srgb, currentColor 40%, transparent)}
.badge:hover{opacity:1}
.badge svg{width:11px;height:13px;fill:currentColor;flex:none}
.top-end{flex:1 1 0;display:flex}

.head{width:var(--bs);text-align:center;margin:6px 0 4px;min-height:64px}
.kicker{font-size:10.5px;font-weight:650;letter-spacing:.14em;text-transform:uppercase;opacity:.7}
.pname{font-family:var(--serif);font-weight:700;font-size:clamp(19px,5.4vw,24px);line-height:1.2;margin-top:3px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pname a{color:inherit;text-decoration:none}
.pname a:hover,.pname a:focus-visible{text-decoration:underline;text-underline-offset:3px}
.pname .ext{font-size:.62em;opacity:.65;vertical-align:super;margin-left:1px}
.pmeta{font-size:12.5px;opacity:.75;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.scorebar,.r-row{width:var(--bs);display:flex;justify-content:space-between;align-items:center;margin:4px 0 8px}
.stat{display:flex;align-items:center;gap:8px;font-size:12px;letter-spacing:.06em;text-transform:uppercase}
.stat .lbl{opacity:.7}
.stat b{font-size:20px;letter-spacing:0;font-variant-numeric:tabular-nums;min-width:3ch}
.swatch{display:inline-block;width:26px;height:26px;border-radius:7px;background:var(--g-empty);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.12)}
.stage.done .scorebar{display:none}

/* ── board ── */
.board{position:relative;width:var(--bs);height:var(--bs);flex:none;border-radius:14px;padding:var(--gap);
  background:var(--g-panel);touch-action:none;-webkit-user-select:none;user-select:none;outline:none;
  transition:background-color .5s ease}
.board:focus-visible{box-shadow:0 0 0 2px var(--g-ink)}
.cells{display:grid;grid-template-columns:repeat(4,var(--cell));grid-auto-rows:var(--cell);gap:var(--gap)}
.cells i{border-radius:calc(var(--cell) * .12);background:var(--g-empty);transition:background-color .5s ease}
.tiles{position:absolute;left:var(--gap);top:var(--gap)}
.tile{position:absolute;left:0;top:0;width:var(--cell);height:var(--cell);
  transform:translate(calc(var(--c) * (var(--cell) + var(--gap))), calc(var(--r) * (var(--cell) + var(--gap))));
  transition:transform 90ms ease-out;will-change:transform}
.tile i{position:absolute;inset:0;border-radius:calc(var(--cell) * .12);
  background:linear-gradient(135deg, var(--t1), var(--t2));box-shadow:inset 0 0 0 .5px rgba(255,255,255,.08)}
.tile.new i{animation:appear 120ms ease-in both}
.tile.pop i{animation:pop 140ms ease-out}
@keyframes appear{from{opacity:0;transform:scale(.8)}to{opacity:1;transform:none}}
@keyframes pop{50%{transform:scale(1.07)}}
.board.ended .tiles{filter:saturate(1)}

.overlay{position:absolute;inset:0;border-radius:14px;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:10px;padding:16px;text-align:center;background:rgba(0,0,0,.55);color:#fff;
  -webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:fade .3s ease both}
.overlay[hidden]{display:none}
.overlay p{font-family:var(--serif);font-size:20px;font-weight:700;margin-bottom:4px}
@keyframes fade{from{opacity:0}}

.hint{max-width:var(--bs);text-align:center;font-size:12.5px;opacity:.7;margin-top:12px;min-height:19px}
.stage.done .hint{display:none}

/* ── buttons ── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 20px;
  border-radius:12px;font-size:15px;font-weight:650;text-decoration:none;transition:transform .12s, opacity .2s}
.btn:active{transform:scale(.98)}
.btn.primary{background:var(--g-ink);color:var(--g-bg)}
.btn.ghost{border:1px solid currentColor}
.overlay .btn.primary{background:#fff;color:#111;min-width:190px}
.overlay .btn.ghost{color:#fff;min-width:190px}
.btn svg{width:15px;height:18px;fill:currentColor;flex:none}

/* ── result (day finished) ── */
.result{width:min(92vw, 400px);display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:8px}
.result[hidden]{display:none}
.result .r-row{width:100%;margin:2px 0 0}
.result .share{width:100%}
.toast{font-size:12.5px;min-height:18px;opacity:.85;text-align:center}
.r-app{width:100%;border-radius:14px;padding:10px 12px;text-align:center;
  background:color-mix(in srgb, var(--g-ink) 9%, transparent);
  box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--g-ink) 14%, transparent)}
.r-app p{font-size:12.5px;line-height:1.35;margin-bottom:8px;opacity:.9}
.r-app .btn{width:100%;min-height:40px;background:var(--g-ink);color:var(--g-bg);font-size:14px}
.r-next{font-size:12.5px;opacity:.8}
.r-next b{font-variant-numeric:tabular-nums;margin-left:4px}

/* ── today's painting card (result) ── */
.p-card{width:100%;border-radius:14px;overflow:hidden;text-align:left;padding-bottom:12px;
  background:color-mix(in srgb, var(--g-ink) 6%, transparent);
  box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--g-ink) 14%, transparent)}
.p-card[hidden]{display:none}
.p-media{position:relative;width:100%;aspect-ratio:4/3;background:var(--g-empty);overflow:hidden}
.p-media[hidden]{display:none}
.p-media img{width:100%;height:100%;object-fit:cover;display:block}
.p-media img[hidden]{display:none}
.p-swatches{position:absolute;inset:0;display:flex}
.p-swatches[hidden]{display:none}
.p-swatches i{flex:1}
.p-credit{font-size:10.5px;opacity:.6;padding:4px 12px 0;text-align:right}
.p-credit[hidden]{display:none}
.p-copyNote{font-size:12px;opacity:.75;padding:8px 12px 0}
.p-copyNote[hidden]{display:none}
.p-card h3{font-family:var(--serif);font-size:17px;font-weight:700;padding:10px 12px 0;line-height:1.25}
.p-meta2{font-size:12px;opacity:.75;padding:2px 12px 0}
.p-flavor{font-size:12.5px;opacity:.85;font-style:italic;padding:6px 12px 0}
.p-flavor[hidden]{display:none}
.p-cta{display:flex;flex-wrap:wrap;gap:8px;padding:10px 12px 0}
.p-cta .btn{min-height:34px;padding:6px 12px;font-size:12.5px;flex:1 1 auto;justify-content:center}

/* ── static info (crawlable) ── */
.info{max-width:720px;margin:0 auto;padding:40px 20px 24px}
.info section+section{margin-top:36px}
.info h2{font-family:var(--serif);font-size:24px;margin-bottom:12px}
.how{padding-left:22px;color:var(--ink2)}
.how li{margin:6px 0}
.faq details{border-top:1px solid var(--line);padding:12px 0}
.faq details:last-child{border-bottom:1px solid var(--line)}
.faq summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:12px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-size:20px;line-height:1;color:var(--ink2)}
.faq details[open] summary::after{content:"–"}
.faq h3{font-size:16px;font-weight:650}
.faq p{color:var(--ink2);margin-top:8px}
.more{list-style:none}
.more li{margin:8px 0}
.more a{text-decoration:underline;text-underline-offset:3px}
.foot{max-width:720px;margin:0 auto;padding:24px 20px calc(32px + env(safe-area-inset-bottom));display:flex;
  flex-wrap:wrap;justify-content:space-between;gap:12px;font-size:13px;color:var(--ink2);border-top:1px solid var(--line)}
.foot a{text-decoration:none}
.foot nav{display:flex;flex-wrap:wrap;gap:14px}

@media (max-width:350px){.daylabel{display:none}}
@media (prefers-reduced-motion:reduce){
  .tile,.stage,.board,.cells i{transition:none}
  .tile.new i,.tile.pop i,.overlay{animation:none}
}
