/* Two Tone Arcade palette (matches site.css / Inkblock). All text >= 16px (QA). All targets >= 48px. */
:root{--bg:#FAF9F6;--bg-alt:#F0EFEA;--ink:#111111;--muted:#4A4A4A;--line:#D9D6CC;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --mono:ui-monospace,"SF Mono",Menlo,Monaco,Consolas,"Liberation Mono",monospace;
  --adh:0px;--gap:4px;--pad:max(0px,min(8px,calc((100vw - 330px) / 3)));
  --bs:min(calc(100vw - 12px),calc(100vh - 196px - var(--adh)),520px);color-scheme:light;
  --sk-f:url(assets/app/skins/tiles/2x/skin_01_ink_square_filled.png);--sk-e:url(assets/app/skins/tiles/2x/skin_01_ink_square_empty.png);
  --bd:url(assets/app/skins/boards/light/2x/board_01_plain_paper.png)}
html.dark{--bg:#121212;--bg-alt:#1C1C1C;--ink:#F2F2F2;--muted:#BDBDBD;--line:#3A3A3A;color-scheme:dark;
  --bd:url(assets/app/skins/boards/dark/2x/board_01_plain_paper.png)}
@media (max-width:340px){:root{--gap:3px}}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:16px}
body{overflow-x:hidden}
button{font:inherit;color:inherit}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
[hidden]{display:none!important}
#app{max-width:560px;margin:0 auto;min-height:100%;display:flex;flex-direction:column;padding:0 6px calc(env(safe-area-inset-bottom) + var(--adh))}
ul{list-style:none;margin:0;padding:0}

/* masks: Art & Audio pieces are white on transparent, tinted with the ink color */
.ico{display:inline-block;width:24px;height:24px;flex:0 0 24px;background:currentColor;-webkit-mask:var(--i) center/contain no-repeat;mask:var(--i) center/contain no-repeat}

/* top bar */
.bar{display:flex;align-items:center;gap:6px;height:52px;flex:0 0 52px}
.bar-title{flex:1;margin:0;font:900 1.15rem/1 var(--mono);letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.on-menu .bar-title{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.on-menu .bar{justify-content:flex-end}
.bar-right{display:flex;gap:6px;margin-left:auto}
.btn{min-height:48px;min-width:48px;padding:0 14px;border:2px solid var(--ink);border-radius:8px;background:var(--bg);color:var(--ink);
  font-weight:700;font-size:1rem;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;touch-action:manipulation;text-decoration:none}
.btn:hover{background:var(--bg-alt)}
.btn:active{transform:translate(1px,1px)}
.btn:disabled{opacity:.45;cursor:default}
.btn.primary{background:var(--ink);color:var(--bg)}
.btn.ghost{border-color:transparent;padding:0 8px}
.btn.icon{padding:0;width:48px}
.btn svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.btn .spk{fill:currentColor}
#muteBtn .x{display:none}
#muteBtn[aria-pressed="true"] .x{display:inline}
#muteBtn[aria-pressed="true"] .wave{display:none}
#themeBtn .half{fill:currentColor;stroke:none}
:focus{outline:none}
:focus-visible{outline:3px solid var(--ink);outline-offset:3px;box-shadow:0 0 0 3px var(--bg)}
.btn.tool{flex-direction:column;gap:2px;min-height:60px;padding:4px 6px;font-size:1rem}
.btn.wide{width:100%;min-height:52px;font-size:1.1rem}

/* title */
.screen{flex:1;display:flex;flex-direction:column}
.hero{display:flex;flex-direction:column;align-items:center;padding:4px 0 2px}
.wordmark{display:flex;gap:4px;justify-content:center;perspective:400px;max-width:100%}
.wordmark img{max-width:min(320px,90vw);height:auto}
.wordmark.wm-art{position:relative;display:block;width:min(240px,72vw);aspect-ratio:var(--wm-ar);margin:4px auto 2px}
.wm-art span{position:absolute;inset:0;-webkit-mask:var(--wm-face) center/100% 100% no-repeat;mask:var(--wm-face) center/100% 100% no-repeat;background:var(--ink)}
.wm-art .wm-side{-webkit-mask-image:var(--wm-side);mask-image:var(--wm-side);background:#8A8A8A}
html.dark .wm-art .wm-side{background:#9A9A9A}
.hero-tiles i.flip{animation:flip 150ms ease-in-out both}
html.rm .hero-tiles i.flip{animation:none}
.wm{--s:min(40px,calc((100vw - 40px) / var(--len)));width:var(--s);height:var(--s);position:relative;display:inline-flex;align-items:center;justify-content:center;
  font:900 calc(var(--s) * .58)/1 var(--mono);min-height:16px}
.wm::before{content:"";position:absolute;inset:0;background:var(--ink);-webkit-mask:var(--sk-e) center/100% 100% no-repeat;mask:var(--sk-e) center/100% 100% no-repeat}
.wm.k::before{-webkit-mask-image:var(--sk-f);mask-image:var(--sk-f)}
.wm b{position:relative;color:var(--ink);font-size:max(16px,calc(var(--s) * .58))}
.wm.k b{color:var(--bg)}
.wm.flip{animation:flip 150ms ease-in-out both}
.tagline{margin:8px 0 4px;font:700 1rem var(--mono)}
.menu-list{display:flex;flex-direction:column;gap:10px;margin:8px 0}
.btn.big{min-height:56px;justify-content:space-between;font-size:1.15rem;box-shadow:3px 3px 0 var(--ink)}
.btn.big.primary{box-shadow:3px 3px 0 var(--muted)}
.mlabel{display:inline-flex;align-items:center;gap:8px}
.msub{font:600 1rem var(--mono);color:var(--muted);display:inline-flex;align-items:center;gap:4px}
.primary .msub{color:var(--bg)}
.flame{width:18px;height:18px;fill:currentColor}
.icon-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:6px 0 0}
.foot{margin-top:auto;padding:10px 0;font-size:1rem;color:var(--muted);text-align:center}
.lead{margin:6px 0;font-size:1rem;line-height:1.4}

/* level select: numbered tiles drawn in the current tile skin (empty shape) */
.star-total{margin:4px 0;font:700 1rem var(--mono);display:flex;align-items:center;gap:6px}
.level-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;padding:4px 0 16px}
.lv{position:relative;min-height:60px;flex-direction:column;gap:2px;padding:4px 0;font-family:var(--mono);border-color:transparent;background:transparent}
.lv::before{content:"";position:absolute;inset:2px;background:var(--ink);opacity:.9;-webkit-mask:var(--sk-e) center/100% 100% no-repeat;mask:var(--sk-e) center/100% 100% no-repeat;pointer-events:none}
.lv .lv-n{position:relative;font-size:1.05rem}
.lv-stars{position:relative;display:flex;gap:1px}
.lv.cur::after{content:"";position:absolute;left:20%;right:20%;bottom:-4px;height:3px;background:var(--ink)}
.lv:disabled{opacity:.55}
.lv .ico{width:20px;height:20px;flex-basis:20px}
.lv-size{grid-column:1/-1;font:700 1.05rem var(--mono);margin:8px 0 0}

/* stars (Art & Audio icons, tinted) */
.star{display:inline-block;width:12px;height:12px;background:currentColor;
  -webkit-mask:url(assets/star_empty_24@2x.png) center/contain no-repeat;mask:url(assets/star_empty_24@2x.png) center/contain no-repeat}
.star.on{-webkit-mask-image:url(assets/star_filled_24@2x.png);mask-image:url(assets/star_filled_24@2x.png)}
.star-total .star{width:20px;height:20px}
.win-stars .star{width:40px;height:40px;-webkit-mask-image:url(assets/star_empty_40@2x.png);mask-image:url(assets/star_empty_40@2x.png)}
.win-stars .star.on{-webkit-mask-image:url(assets/star_filled_40@2x.png);mask-image:url(assets/star_filled_40@2x.png)}

/* game */
.game{align-items:center;flex:0 0 auto}
.status{width:var(--bs);display:flex;justify-content:space-between;align-items:center;height:40px;font:600 1rem var(--mono)}
.mode-label{display:inline-flex;align-items:center;gap:6px}
.counts b{font-weight:900}
.board-wrap{position:relative;width:var(--bs);height:var(--bs);padding:var(--pad);border-radius:10px;background:var(--bg) var(--bd) repeat;background-size:128px 128px;
  --tile-ink:var(--ink);--tile-paper:var(--bg)}
.board-wrap.darkb{--tile-ink:#F2F2F2;--tile-paper:#121212;background-color:#121212}
.board{display:grid;gap:var(--gap);width:100%;height:100%;grid-template-columns:repeat(var(--n),1fr);grid-template-rows:repeat(var(--n),1fr);perspective:600px}
.tile{position:relative;border:0;padding:0;margin:0;background:transparent;cursor:pointer;min-width:48px;min-height:48px;touch-action:manipulation}
.tile:focus-visible{outline:none;box-shadow:none;z-index:2}
.face{position:absolute;inset:0;transform-style:preserve-3d}
.face i{position:absolute;inset:0;background:var(--tile-ink)}
.face .e{-webkit-mask:var(--sk-e) center/100% 100% no-repeat;mask:var(--sk-e) center/100% 100% no-repeat}
.face .f{-webkit-mask:var(--sk-f) center/100% 100% no-repeat;mask:var(--sk-f) center/100% 100% no-repeat;opacity:0}
.tile.ink .face .f{opacity:1}
.tile.ink .face .e{opacity:0}
.tile.flip .face{animation:flip 150ms ease-in-out both}
@keyframes flip{0%{transform:rotateY(0)}50%{transform:rotateY(90deg)}100%{transform:rotateY(0)}}
.hint{position:absolute;inset:0;background:var(--tile-ink);opacity:0;pointer-events:none;
  -webkit-mask:url(assets/flip_cell_hint@2x.png) center/140% 140% no-repeat;mask:url(assets/flip_cell_hint@2x.png) center/140% 140% no-repeat;overflow:hidden}
.tile.ink .hint{background:var(--tile-paper)}
.tile.hinted .hint{opacity:1;animation:glow 1.4s ease-in-out infinite alternate}
@keyframes glow{from{opacity:1}to{opacity:.55}}
.focus{position:absolute;inset:-5px;background:var(--tile-ink);opacity:0;pointer-events:none;
  -webkit-mask:url(assets/flip_cell_focus@2x.png) center/100% 100% no-repeat;mask:url(assets/flip_cell_focus@2x.png) center/100% 100% no-repeat}
.kbd .tile:focus .focus{opacity:1}
.controls{width:var(--bs);display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;padding:8px 0 6px}

/* win (panel over the board only; no full-screen flash) */
.win{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--bg) 72%,transparent);animation:fadein 200ms ease-out both;z-index:3}
.win-card{background:var(--bg);color:var(--ink);border:2px solid var(--ink);border-radius:10px;box-shadow:4px 4px 0 var(--ink);padding:12px 14px;text-align:center;width:min(94%,320px);max-height:100%;overflow:auto}
.win-card h2{margin:0 0 4px;font:900 1.4rem var(--mono)}
.win-stars{display:flex;justify-content:center;gap:6px;color:var(--ink)}
.win-sub{margin:4px 0 0;font:700 1rem var(--mono)}
.win-text{margin:6px 0 8px;font:600 1rem var(--mono)}
.win-btns{display:flex;gap:6px;justify-content:center;margin-top:8px}
.win-btns .btn{flex:1;padding:0 6px}
.share-msg{min-height:0;margin:4px 0 0;font-size:1rem;color:var(--muted)}
.share-msg:empty{display:none}
.new-skin{margin-top:8px;border-top:2px solid var(--line);padding-top:8px}
.new-skin-text{margin:0;font:700 1rem var(--mono)}
@keyframes fadein{from{opacity:0}to{opacity:1}}

/* skins */
.skin-preview{align-self:center;display:grid;grid-template-columns:repeat(3,48px);gap:4px;padding:8px;border-radius:10px;
  background:var(--bg) var(--pbd,var(--bd)) repeat;background-size:128px 128px;perspective:400px;--tile-ink:var(--ink)}
.skin-preview.darkb{--tile-ink:#F2F2F2;background-color:#121212}
.skin-preview .pv{position:relative;width:48px;height:48px}
.pv i{position:absolute;inset:0;background:var(--tile-ink);-webkit-mask:var(--pe,var(--sk-e)) center/100% 100% no-repeat;mask:var(--pe,var(--sk-e)) center/100% 100% no-repeat}
.pv.k i{-webkit-mask-image:var(--pf,var(--sk-f));mask-image:var(--pf,var(--sk-f))}
.pv.flip{animation:flip 150ms ease-in-out both}
.tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0 6px}
.tab[aria-selected="true"]{background:var(--ink);color:var(--bg)}
.skin-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding-bottom:12px}
.skin{border:2px solid var(--line);border-radius:10px;padding:6px;display:flex;flex-direction:column;gap:6px}
.skin.sel{border-color:var(--ink);box-shadow:3px 3px 0 var(--ink)}
.skin-pick{width:100%;min-height:72px;flex-direction:column;gap:4px;border:0;padding:4px;background:transparent}
.skin-pick:hover{background:var(--bg-alt)}
.sw2{display:flex;gap:6px;position:relative}
.sw2 i{display:block;width:44px;height:44px;background:var(--ink);-webkit-mask:var(--m) center/100% 100% no-repeat;mask:var(--m) center/100% 100% no-repeat}
.sw2.board{width:96px;height:44px;border-radius:6px;border:2px solid var(--line);background:var(--b) repeat;background-size:64px 64px}
.skin.locked .sw2{opacity:.5}
.lockmark{position:absolute;right:-6px;top:-6px;width:24px;height:24px;border-radius:50%;background:var(--bg);display:flex;align-items:center;justify-content:center;border:2px solid var(--ink)}
.lockmark .ico{width:16px;height:16px;flex-basis:16px}
.skin-name{font-weight:700;font-size:1rem}
.skin-state{font-size:1rem;color:var(--muted);font-weight:600}
.skin-goal{margin:0;font-size:1rem;color:var(--muted);text-align:center}
.watch{width:100%;font-size:1rem;padding:4px 6px;line-height:1.15;text-align:left}
.watch .ico{width:22px;height:22px;flex-basis:22px}
.skin-msg{min-height:0;margin:6px 0;font:600 1rem var(--sans);text-align:center}
.skin-msg:empty{display:none}

/* settings */
.set-list{display:flex;flex-direction:column;gap:8px;padding-bottom:16px}
.btn.row{width:100%;justify-content:space-between;min-height:52px;text-align:left}
.btn.danger{border-style:dashed}
.sw{width:44px;height:26px;border:2px solid var(--ink);border-radius:13px;position:relative;flex:0 0 44px}
.sw::after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;border:2px solid var(--ink);background:var(--bg);box-sizing:border-box}
[aria-checked="true"] .sw{background:var(--ink)}
[aria-checked="true"] .sw::after{left:20px;background:var(--bg);border-color:var(--bg)}
.row-label{font-weight:700;margin:6px 0 4px}
.seg{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.seg [aria-checked="true"]{background:var(--ink);color:var(--bg)}
.howto{font-size:1rem;line-height:1.45;padding:4px 2px}
.howto p{margin:6px 0}
.keys{color:var(--muted)}
.confirm{border:2px solid var(--ink);border-radius:10px;padding:10px;margin-top:6px}
.confirm-q{margin:0;font-weight:700}

/* stats */
.stat-list{display:grid;grid-template-columns:1fr auto;gap:0;margin:8px 0}
.stat-list dt,.stat-list dd{margin:0;padding:12px 4px;border-bottom:2px solid var(--line);font-size:1.05rem}
.stat-list dd{font:900 1.1rem var(--mono);text-align:right}

/* reduced motion (system setting OR Settings > Reduce motion): no flips or pulses; tiles crossfade in 100ms */
html.rm .tile.flip .face,html.rm .wm.flip,html.rm .pv.flip{animation:none}
html.rm .face i{transition:opacity 100ms linear}
html.rm .tile.hinted .hint{animation:none}
html.rm .win{animation:none}
html.rm .btn:active{transform:none}
.badge-daily{display:inline-block;width:54px;height:18px;background:var(--ink);
  -webkit-mask:url(assets/badge_daily@2x.png) center/contain no-repeat;mask:url(assets/badge_daily@2x.png) center/contain no-repeat}
/* layout per Art v1.4 mocks: centred title stack, borderless tool rows */
.hero-tiles{display:grid;grid-template-columns:repeat(3,36px);gap:6px;margin:6px 0 2px}
.hero-tiles i{width:36px;height:36px;background:var(--ink);-webkit-mask:var(--sk-e) center/100% 100% no-repeat;mask:var(--sk-e) center/100% 100% no-repeat}
.hero-tiles i.k{-webkit-mask-image:var(--sk-f);mask-image:var(--sk-f)}
@media (max-height:600px){.hero-tiles{display:none}}
#menu .menu-list,#freepick .menu-list{width:min(100%,300px);align-self:center}
.btn.big{flex-direction:column;justify-content:center;gap:0;padding:4px 14px;min-height:54px}
.btn.big .mlabel{font-size:1.15rem}
.icon-row{width:min(100%,300px);align-self:center}
.icon-row .btn.tool,.controls .btn.tool{border-color:transparent;background:transparent}
.icon-row .btn.tool:hover,.controls .btn.tool:hover{background:var(--bg-alt)}
.wm{border-radius:0}
