/* Shared header, tool switcher and footer for every page, the tools included. */
:root{--sb-paper:#faf7ef;--sb-card:#fffdf8;--sb-ink:#243e36;--sb-green:#245447;--sb-orange:#a84625;--sb-muted:#5b6b61;--sb-line:#dddccf;
  --sb-sans:system-ui,-apple-system,sans-serif;--sb-serif:Georgia,serif;--sb-round:Fredoka,system-ui,sans-serif}
/* Fredoka and Georgia have no kana or Hangul, so Japanese and Korean use system fonts. */
:root:lang(ja){--sb-sans:"Hiragino Sans","Hiragino Kaku Gothic ProN","Noto Sans JP","Yu Gothic UI","Yu Gothic",Meiryo,sans-serif;--sb-serif:"Hiragino Mincho ProN","Yu Mincho","Noto Serif JP",serif;--sb-round:Fredoka,"Hiragino Maru Gothic ProN","Hiragino Sans","Noto Sans JP","Yu Gothic UI",Meiryo,sans-serif}
:root:lang(ko){--sb-sans:"Apple SD Gothic Neo","Noto Sans KR","Malgun Gothic",sans-serif;--sb-serif:"Apple SD Gothic Neo","Noto Sans KR","Malgun Gothic",sans-serif;--sb-round:Fredoka,"Apple SD Gothic Neo","Noto Sans KR","Malgun Gothic",sans-serif}

.site-header{max-width:1240px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:24px 40px;border-bottom:1px solid var(--sb-line);font-family:var(--sb-sans);color:var(--sb-ink)}
.site-header a{color:inherit;text-decoration:none}
.brand{display:flex;align-items:center;gap:12px;font-family:Fredoka,system-ui,sans-serif;font-size:23px;line-height:1;font-weight:400;letter-spacing:-.5px;color:var(--sb-ink);text-decoration:none}
.brand b{font-weight:600}
.brand-mark{position:relative;background:var(--sb-green);color:var(--sb-paper);border-radius:13px;padding:7px 15px 11px;font-size:37px;font-family:Georgia,serif;font-style:italic}
.brand-mark span{color:#efbb60;position:absolute;font-size:20px;right:-7px;top:-3px}
.site-header nav{flex:1;display:flex;justify-content:center;gap:8px;font-size:15px;font-weight:550}
.site-header nav a{padding:10px 14px;border-radius:100px;transition:background .2s}
.site-header nav a:hover{background:#efeadb}
.site-header nav a[aria-current]{background:#e6ece2;color:var(--sb-green)}
.nav-play{padding:11px 20px;border:1px solid #b6c0b3;border-radius:100px;font-size:15px;font-weight:600;white-space:nowrap;transition:background .2s,border-color .2s}
.nav-play:hover{background:var(--sb-green);border-color:var(--sb-green);color:#fff}
.nav-play span{margin-left:14px}
.site-header a:focus-visible,.site-footer a:focus-visible,.tool-switch a:focus-visible,.lang-menu summary:focus-visible{outline:3px solid var(--sb-orange);outline-offset:3px}

/* Language menu: a details element, so it opens without JavaScript. */
.lang-menu{position:relative}
.lang-menu summary{display:flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;border-radius:100px;font-size:15px;font-weight:550;cursor:pointer;list-style:none;white-space:nowrap;transition:background .2s}
.lang-menu summary::-webkit-details-marker{display:none}
.lang-menu summary::after{content:"";width:6px;height:6px;margin:0 2px 0 2px;border-right:1.5px solid;border-bottom:1.5px solid;transform:translateY(-2px) rotate(45deg)}
.lang-menu[open] summary::after{transform:translateY(2px) rotate(-135deg)}
.lang-menu summary:hover,.lang-menu[open] summary{background:#efeadb}
.globe{flex:none;width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.4}
.lang-menu ul{position:absolute;right:0;top:calc(100% + 6px);z-index:40;min-width:184px;margin:0;padding:6px;list-style:none;background:var(--sb-card);border:1px solid var(--sb-line);border-radius:14px;box-shadow:0 18px 40px -20px rgba(36,62,54,.5)}
.lang-menu li a{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:44px;padding:0 12px;border-radius:9px;font-size:16px}
.lang-menu li a:hover{background:#efeadb}
.lang-menu li a[aria-current]{font-weight:600}
.lang-menu li a[aria-current]::after{content:"✓";color:var(--sb-green)}
.lang-menu li a:focus-visible{outline-offset:-3px}

/* The tool header is shorter, so the game starts higher on the screen. */
.site-header.compact{padding:14px 24px}
.site-header.compact .brand{font-size:19px}
.site-header.compact .brand-mark{font-size:29px;padding:5px 12px 8px;border-radius:11px}
.site-header.compact .brand-mark span{font-size:16px}

.tool-switch{display:flex;justify-content:center;gap:10px;max-width:640px;margin:20px auto 0;padding:0 16px;font-family:var(--sb-round)}
.tool-switch a{flex:1 1 0;max-width:260px;display:flex;align-items:center;gap:10px;padding:7px 14px 7px 7px;border:1px solid var(--sb-line);border-radius:100px;background:var(--sb-card);color:var(--sb-ink);text-decoration:none;font-size:16px;font-weight:600;line-height:1.15;transition:border-color .2s,background .2s}
.tool-switch a:hover{border-color:#b6c0b3}
.tool-switch a[aria-current]{background:var(--sb-green);border-color:var(--sb-green);color:#fff}
.ts-icon{flex:none;display:grid;place-items:center;width:38px;height:38px;border-radius:50%;font-size:15px;font-weight:700;letter-spacing:-.5px;color:var(--sb-ink)}
.ts-letters{background:#f7d377}
.ts-numbers{background:#f4e3cd}

.site-footer{width:min(1160px,100% - 80px);margin:0 auto;padding:36px 0 32px;border-top:1px solid var(--sb-line);display:grid;grid-template-columns:1fr 1fr;gap:18px 20px;font-family:var(--sb-sans);color:var(--sb-ink);line-height:1.6}
.site-footer a{color:inherit;text-decoration:none}
.site-footer .brand{font-size:24px}
.spark{color:var(--sb-orange)}
.site-footer p{margin:0;font-size:14px;text-align:right;color:var(--sb-muted)}
.site-footer>div{display:flex;flex-wrap:wrap;gap:4px 8px;margin-left:-10px;font-size:14px}
.site-footer>div a{padding:6px 10px;border-radius:8px}
.site-footer>div a:hover{background:#efeadb}
.lang-list{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:4px 8px;font-size:14px}
.lang-list a{padding:6px 10px;border-radius:8px}
.lang-list a:hover{background:#efeadb}
.lang-list a[aria-current]{background:#e6ece2;color:var(--sb-green);font-weight:600}
.site-footer small{grid-column:1/-1;text-align:right;font-size:13px;color:var(--sb-muted)}

@media(max-width:900px){
  .site-header{padding:20px 25px}
  .site-footer{width:calc(100% - 50px)}
}
@media(max-width:620px){
  /* The links move to their own row instead of disappearing. */
  /* Row one: brand and play. Row two: the links and the language menu. */
  .site-header,.site-header.compact{flex-wrap:wrap;gap:0 12px;padding:16px 20px 10px}
  .site-header::after{content:"";order:2;flex-basis:100%}
  .nav-play{order:1}
  .brand{font-size:19px}
  .brand-mark{font-size:31px}
  .site-header nav{order:3;justify-content:flex-start;gap:4px;margin:10px 0 0 -12px;font-size:15px}
  .lang-menu{order:4;margin-top:10px}
  .lang-menu summary{padding:0 10px}
  .site-header nav a{padding:9px 12px}
  .nav-play{font-size:14px;padding:9px 14px}
  .nav-play span{margin-left:8px}
  .tool-switch{gap:8px;margin-top:14px;padding:0 12px}
  .tool-switch a{gap:8px;padding:6px 10px 6px 6px;font-size:15px}
  .ts-icon{width:34px;height:34px;font-size:13px}
  .site-footer{grid-template-columns:1fr;width:calc(100% - 44px);gap:14px}
  .site-footer p,.site-footer small{text-align:left}
  .lang-list{justify-content:flex-start;margin-left:-10px}
}
@media(max-width:480px){
  /* The globe alone names the menu on narrow screens. Its label says the language. */
  .lang-menu summary span{display:none}
  .site-header nav a{padding:9px 10px}
}
@media(prefers-reduced-motion:reduce){.site-header *,.site-footer *,.tool-switch *{transition:none!important}}
