/* ============================================================
   semble.fun — shared stylesheet
   Direction: Arcade (light/dark pair)
   Dark background is locked to #091D42 — the logo's own plate
   colour — so the wordmark floats free of its badge.
   ============================================================ */

:root{
  /* brand — sampled from semblelogo2.svg */
  --navy:#091D42; --deep:#0141A9; --blue:#0F49B8; --brite:#3085E8; --cyan:#31C2F4;
  --ember:#BE3205;
  /* warm ramp — #BE3205 is from the logo, the other two are extrapolated */
  --sun:#FFC53D; --tang:#F27A1A;

  /* mode tokens — light defaults */
  --bg:#FFFFFF; --bg2:#F7F9FC; --card:#FFFFFF; --cardln:#091D42;
  --tx:#0E1726; --tx2:#5A6B84; --navtx:#5A6B84; --rule:#E4E9F0;
  --footbg:#091D42; --foottx:rgba(255,255,255,.6); --footlink:#FFFFFF; --footln:transparent;
  --code:#EDF1F6;

  --wrap:1120px;
  --r:10px;
}
[data-mode="dark"]{
  --bg:#091D42; --bg2:#071634; --card:#10294F; --cardln:#1E3D6E;
  --tx:#FFFFFF; --tx2:rgba(255,255,255,.55); --navtx:rgba(255,255,255,.5); --rule:#1E3D6E;
  --footbg:transparent; --foottx:rgba(255,255,255,.45); --footlink:#FFFFFF; --footln:#1E3D6E;
  --code:#0E2A55;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; background:var(--bg); color:var(--tx);
  font-family:Inter,system-ui,-apple-system,sans-serif;
  -webkit-font-smoothing:antialiased;
  transition:background .2s,color .2s;
}
img{max-width:100%;display:block}
a{color:var(--blue)}
[data-mode="dark"] a{color:var(--cyan)}
h1,h2,h3{font-family:Nunito,Inter,system-ui,sans-serif;letter-spacing:-.02em}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 20px}
.skip{position:absolute;left:-9999px}
.skip:focus{left:12px;top:12px;background:var(--sun);color:var(--navy);padding:9px 15px;border-radius:7px;z-index:99;font-weight:700}

/* ---------------- nav ---------------- */
.nav{display:flex;align-items:center;gap:22px;padding:13px 0}
.nav .brand{flex:none}
.nav .brand img{width:118px}
.nav a.lk{font:600 13.5px Inter;color:var(--navtx);text-decoration:none}
.nav a.lk:hover{color:var(--blue)}
[data-mode="dark"] .nav a.lk:hover{color:var(--sun)}
.nav .sp{margin-left:auto}

/* theme switch */
.tsw{display:inline-flex;align-items:center;background:rgba(9,29,66,.07);border:0;border-radius:999px;padding:3px;gap:2px;cursor:pointer}
[data-mode="dark"] .tsw{background:rgba(255,255,255,.1)}
.tsw i{width:25px;height:25px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12.5px;font-style:normal;transition:.18s;color:var(--tx2)}
:root:not([data-mode="dark"]) .tsw i.s{background:var(--sun);color:var(--navy)}
[data-mode="dark"] .tsw i.m{background:rgba(255,255,255,.18);color:#fff}

/* ---------------- home marquee ---------------- */
.marquee{text-align:center;padding:14px 0 26px}
.marquee .logo{width:200px;margin:0 auto 16px}
.marquee h1{margin:0 0 6px;font-size:clamp(20px,3.4vw,25px);font-weight:900;color:var(--tx)}
.marquee p{margin:0;color:var(--tx2);font-size:14px;font-weight:500}
.marquee nav{display:flex;justify-content:center;align-items:center;gap:24px;position:relative;margin-bottom:18px}
.marquee nav a{font:600 13px Inter;color:var(--navtx);text-decoration:none}
.marquee nav .tsw{position:absolute;right:0;top:50%;transform:translateY(-50%)}

/* ---------------- daily bar ---------------- */
.daily{border-radius:9px;padding:11px 16px;display:flex;align-items:center;gap:11px;flex-wrap:wrap;
       background:var(--sun);border:1.5px solid var(--sun);text-decoration:none;margin-bottom:20px}
.daily b{font:800 13px Inter;color:var(--navy)}
.daily span{font-size:12px;color:rgba(9,29,66,.72);font-weight:500}
.daily em{margin-left:auto;background:var(--navy);color:#fff;font:700 11.5px Inter;padding:6px 13px;border-radius:6px;font-style:normal}
[data-mode="dark"] .daily{background:rgba(255,197,61,.1)}
[data-mode="dark"] .daily b{color:var(--sun)}
[data-mode="dark"] .daily span{color:rgba(255,255,255,.5)}
[data-mode="dark"] .daily em{background:var(--sun);color:var(--navy)}

/* ---------------- game grid ---------------- */
.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:34px}
@media(max-width:900px){.grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:640px){.grid{grid-template-columns:repeat(2,1fr);gap:11px}}
.tile{border-radius:var(--r);overflow:hidden;background:var(--card);border:2px solid var(--cardln);
      text-decoration:none;color:inherit;display:block;transition:transform .14s,box-shadow .14s,border-color .14s}
.tile:hover,.tile:focus-visible{transform:translate(-2px,-2px);box-shadow:4px 4px 0 var(--sun);border-color:var(--sun);outline:none}
.tile .th{aspect-ratio:4/3;display:flex;align-items:center;justify-content:center;font:900 30px Nunito;color:#fff;letter-spacing:-.04em}
@media(max-width:640px){.tile .th{font-size:24px}}
.tile h3{margin:0;padding:10px 12px 3px;font-size:14.5px;font-weight:800;color:var(--tx)}
.tile p{margin:0;padding:0 12px 12px;font-size:12px;color:var(--tx2);line-height:1.45}

/* ---------------- footer ---------------- */
.foot{background:var(--footbg);border-top:1px solid var(--footln);color:var(--foottx);margin-top:auto}
.foot .in{max-width:var(--wrap);margin:0 auto;padding:26px 20px 30px}
.foot h4{margin:0 0 9px;font:700 10.5px Inter;letter-spacing:.1em;text-transform:uppercase;color:var(--foottx);font-family:Inter}
.foot .cols{display:grid;grid-template-columns:2fr 1fr 1fr;gap:26px}
@media(max-width:700px){.foot .cols{grid-template-columns:1fr 1fr;gap:22px}}
.foot a{color:var(--footlink);text-decoration:none;font-size:12.5px;line-height:2}
.foot a:hover{color:var(--sun)}
.foot .games{display:flex;flex-wrap:wrap;gap:0 16px}
.foot .soc{display:flex;gap:9px;margin-top:4px}
.foot .soc a{width:36px;height:36px;border-radius:8px;background:rgba(255,255,255,.1);
             display:flex;align-items:center;justify-content:center;color:var(--footlink);
             transition:background .14s,color .14s,transform .14s}
.foot .soc a svg{width:16px;height:16px;fill:currentColor;display:block}
.foot .soc a:hover,.foot .soc a:focus-visible{background:var(--sun);color:var(--navy);transform:translateY(-1px);outline:none}
.foot .base{margin-top:22px;padding-top:16px;border-top:1px solid rgba(255,255,255,.13);font-size:11.5px}

/* ---------------- game page ---------------- */
.gamewrap{padding-top:4px}
.board{background:var(--bg2);border:2px solid var(--cardln);border-radius:var(--r);overflow:hidden;margin-bottom:16px}
.board .canvas{aspect-ratio:4/3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:11px;
               color:#fff;background:linear-gradient(150deg,#0F49B8,#0141A9)}
@media(max-width:640px){.board .canvas{aspect-ratio:1/1}}
.board .canvas .ph{font:700 12px 'JetBrains Mono',monospace;letter-spacing:.1em;text-transform:uppercase;opacity:.65}
.board .canvas .go{background:var(--sun);color:var(--navy);border:0;padding:12px 26px;border-radius:9px;font:800 15px Nunito;cursor:pointer}
.gmeta{display:grid;grid-template-columns:1fr 300px;gap:26px;align-items:start}
@media(max-width:860px){.gmeta{grid-template-columns:1fr;gap:20px}}
.gmeta h1{margin:0 0 8px;font-size:29px;font-weight:900;color:var(--tx)}
.gmeta .lede{margin:0 0 16px;font-size:15px;line-height:1.65;color:var(--tx2)}
.maker{margin:0 0 16px;font:600 12.5px Inter;color:var(--tx2);opacity:.85}
.tagrow{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:16px}
.tg{font:600 11px Inter;padding:4px 10px;border-radius:6px;background:var(--bg2);color:var(--tx2);border:1px solid var(--rule)}
.madeby{margin:0;font-size:13px;color:var(--tx2)}
.madeby b{color:var(--brite);font-weight:700}

.share{border:2px solid var(--cardln);border-radius:var(--r);padding:16px 18px;background:var(--card)}
.share h3{margin:0 0 4px;font-size:15.5px;font-weight:800;color:var(--tx)}
.share p{margin:0 0 12px;font-size:12.5px;color:var(--tx2);line-height:1.5}
.share pre{margin:0 0 12px;background:var(--bg2);border:1px solid var(--rule);border-radius:8px;padding:12px;
           font:400 13px/1.5 'JetBrains Mono',monospace;color:var(--tx);white-space:pre-wrap}
.btn{display:inline-block;width:100%;text-align:center;border:0;background:var(--sun);color:var(--navy);
     padding:12px;border-radius:9px;font:800 14px Nunito;cursor:pointer;text-decoration:none}
.btn:hover{filter:brightness(1.05)}
.btn.alt{background:transparent;border:2px solid var(--cardln);color:var(--tx)}

/* how to play / faq */
.htp{margin:30px 0 0;border-top:1px solid var(--rule);padding-top:24px}
.htp h2{margin:0 0 14px;font-size:21px;font-weight:900;color:var(--tx)}
.qa{border-bottom:1px solid var(--rule)}
.qa summary{list-style:none;cursor:pointer;padding:13px 0;font:700 14.5px Inter;color:var(--tx);display:flex;align-items:center;gap:10px}
.qa summary::-webkit-details-marker{display:none}
.qa summary::before{content:"+";color:var(--blue);font-weight:800;font-size:16px;width:14px}
[data-mode="dark"] .qa summary::before{color:var(--sun)}
.qa[open] summary::before{content:"–"}
.qa p{margin:0 0 15px;padding-left:24px;font-size:14px;line-height:1.65;color:var(--tx2);max-width:70ch}

.more{margin-top:34px;border-top:1px solid var(--rule);padding-top:24px}
.more h2{margin:0 0 14px;font-size:19px;font-weight:900;color:var(--tx)}

/* ---------------- blog ---------------- */
.page{padding:22px 0 44px}
.page h1{margin:0 0 8px;font-size:32px;font-weight:900;color:var(--tx)}
.page .lede{margin:0 0 30px;font-size:16px;color:var(--tx2);line-height:1.6;max-width:64ch}
.postlist{border-top:1px solid var(--rule)}
.postlist a.row{display:block;padding:20px 0;border-bottom:1px solid var(--rule);text-decoration:none;color:inherit;transition:.13s}
.postlist a.row:hover{padding-left:7px}
.postlist a.row:hover h2{color:var(--blue)}
[data-mode="dark"] .postlist a.row:hover h2{color:var(--sun)}
.postlist .date{font:500 11.5px 'JetBrains Mono',monospace;color:var(--tx2);letter-spacing:.04em}
.postlist h2{margin:5px 0 5px;font-size:19px;font-weight:800;color:var(--tx);transition:.13s}
.postlist p{margin:0;font-size:14px;color:var(--tx2);line-height:1.6;max-width:70ch}

.article{max-width:660px;margin:0 auto}
.article .date{font:500 12px 'JetBrains Mono',monospace;color:var(--tx2);letter-spacing:.04em}
.article h1{margin:8px 0 18px;font-size:clamp(26px,4vw,34px);font-weight:900;line-height:1.15;color:var(--tx)}
.article p{font-size:16px;line-height:1.75;color:var(--tx);margin:0 0 18px}
.article h2{font-size:20px;font-weight:800;margin:32px 0 12px;color:var(--tx)}
.article ul{padding-left:20px;margin:0 0 18px}
.article li{font-size:16px;line-height:1.75;margin-bottom:7px;color:var(--tx)}
.article .pull{border-left:4px solid var(--sun);padding:4px 0 4px 18px;margin:24px 0;font-size:17px;font-weight:600;line-height:1.6;color:var(--tx)}
.article code{background:var(--code);padding:2px 6px;border-radius:5px;font:500 14px 'JetBrains Mono',monospace}
.playcta{border:2px solid var(--cardln);border-radius:var(--r);padding:18px;margin:30px 0;display:flex;align-items:center;gap:16px;flex-wrap:wrap;background:var(--card)}
.playcta .th{width:58px;height:58px;border-radius:9px;flex:none;display:flex;align-items:center;justify-content:center;font:900 20px Nunito;color:#fff}
.playcta h3{margin:0 0 3px;font-size:16px;font-weight:800;color:var(--tx)}
.playcta p{margin:0;font-size:13px;color:var(--tx2)}
.playcta .btn{width:auto;margin-left:auto;padding:11px 22px}
@media(max-width:560px){.playcta .btn{margin-left:0;width:100%}}

/* ---------------- about ---------------- */
.about{max-width:600px}
.about p{font-size:16.5px;line-height:1.75;color:var(--tx);margin:0 0 18px}
.about h2{margin:34px 0 12px;font-size:19px;font-weight:800;color:var(--tx)}
.about .links{display:flex;gap:10px;flex-wrap:wrap;margin-top:26px}
.about .links a{border:2px solid var(--cardln);border-radius:9px;padding:10px 18px;text-decoration:none;
                color:var(--tx);font:700 13.5px Inter;transition:.14s}
.about .links a:hover{border-color:var(--sun);box-shadow:3px 3px 0 var(--sun);transform:translate(-1px,-1px)}

body{display:flex;flex-direction:column;min-height:100vh}
main{flex:1}

/* ---------------- feature card ----------------
   With one game in the catalogue a four-up tile grid reads as three
   missing games. The single game gets a full-width card instead, which
   is what a site with one game would have built in the first place. */
.feature{display:grid;grid-template-columns:200px 1fr;gap:0;
  border-radius:var(--r);overflow:hidden;background:var(--card);
  border:2px solid var(--cardln);text-decoration:none;margin-bottom:34px;
  transition:transform .12s,box-shadow .12s,border-color .12s}
.feature:hover,.feature:focus-visible{transform:translate(-2px,-2px);
  box-shadow:4px 4px 0 var(--sun);border-color:var(--sun);outline:none}
.feature .th{background:#0F49B8;display:flex;align-items:center;justify-content:center;
  font:900 62px Nunito;color:#fff;letter-spacing:-.04em;min-height:170px}
.feature .body{padding:20px 22px}
.feature h3{margin:0 0 6px;font:800 21px Inter;color:var(--tx)}
.feature p{margin:0 0 12px;font-size:14px;line-height:1.6;color:var(--tx2);max-width:56ch}
.feature .tagrow{display:flex;flex-wrap:wrap;gap:7px}
.feature .tg{font:600 11px Inter;letter-spacing:.02em;color:var(--tx2);
  border:1px solid var(--rule);border-radius:99px;padding:3px 9px}
@media(max-width:640px){
  .feature{grid-template-columns:1fr}
  .feature .th{min-height:120px;font-size:46px}
  .feature .body{padding:16px 17px}
}
