/* udico game — landing page. Brand palette mirrors the game (cream "pop & matte"). */
/* Subset Noto Sans CJK (only the glyphs this page shows) so CJK text renders on ANY device,
   not just ones with a system CJK font. Latin uses the system stack; CJK falls through to this. */
@font-face{ font-family:"SiteCJK"; font-style:normal; font-weight:400; font-display:swap;
  src:url("assets/fonts/site.woff2") format("woff2"); }
@font-face{ font-family:"SiteCJK"; font-style:normal; font-weight:700; font-display:swap;
  src:url("assets/fonts/site-bold.woff2") format("woff2"); }
:root{
  --bg:#efe6d0; --panel:#fffdf6; --ink:#3a322b; --muted:#7d7058;
  --accent:#17b3a0; --accent-d:#0e6b60; --accent2:#ef8a3c; --danger:#e2536b;
  --radius:20px; --shadow:0 6px 20px rgba(58,50,43,.14);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; color:var(--ink); background:var(--bg) url("assets/background.png") repeat;
  font-family:system-ui,-apple-system,"Segoe UI",Roboto,"SiteCJK","Hiragino Sans","Noto Sans CJK JP","Noto Sans",sans-serif;
  line-height:1.6;
}
img{max-width:100%}
a{color:var(--accent-d)}

/* header — the language chip stays pinned top-right at the TITLE's height. NEVER wrap (a long
   tagline in some languages used to push the chip onto its own row) and top-align both items so a
   1- vs 2-line tagline can't shift the chip down; the brand shrinks and its tagline wraps instead. */
header.site{
  display:flex; align-items:flex-start; justify-content:space-between; flex-wrap:nowrap; gap:12px;
  max-width:1040px; margin:0 auto; padding:18px 22px;
}
.brand{min-width:0}
.brand a{font-weight:800; font-size:1.7rem; text-decoration:none; color:var(--accent-d); letter-spacing:.5px; line-height:1.2; display:inline-block}
.brand a b{color:var(--accent2); font-weight:800}
.brand-sub{display:block; font-size:.82rem; color:var(--muted); margin-top:2px}
.langpick{flex:0 0 auto}   /* fixed size, never shrinks/wraps — aligns with the title line */
/* Language picker: a current-language chip (flag + endonym) that opens a FLOATING dropdown of
   flag+name rows, like the in-game picker. The menu is absolutely positioned (never shifts the
   page) and hidden via opacity/visibility so it can fade in. */
.langpick{position:relative; font-size:.92rem}
.langpick-current{
  display:inline-flex; align-items:center; gap:9px; font:inherit; cursor:pointer;
  background:var(--panel); color:var(--ink);
  border:1.5px solid rgba(23,179,160,.4); border-radius:999px;
  padding:7px 15px; box-shadow:0 2px 8px rgba(58,50,43,.08);
  transition:border-color .15s, box-shadow .15s;
}
.langpick-current:hover{border-color:var(--accent); box-shadow:0 3px 12px rgba(23,179,160,.18)}
.langpick-current[aria-expanded="true"]{border-color:var(--accent)}
.langpick-current .flag{height:19px; width:auto; display:block; border-radius:3px; box-shadow:0 0 0 1px rgba(0,0,0,.1)}
.langpick-current .name{font-weight:600}
.langpick-current .caret{color:var(--accent-d); font-size:.58rem; margin-left:1px; transition:transform .18s}
.langpick-current[aria-expanded="true"] .caret{transform:rotate(180deg)}

.langpick-menu{
  position:absolute; right:0; top:calc(100% + 9px); z-index:100;
  margin:0; padding:7px; list-style:none; min-width:212px;
  background:var(--panel); border:1px solid rgba(23,179,160,.28);
  border-radius:16px; box-shadow:0 14px 36px rgba(58,50,43,.22);
  max-height:min(72vh,460px); overflow-y:auto; overscroll-behavior:contain;
  opacity:0; visibility:hidden; transform:translateY(-8px) scale(.97); transform-origin:top right;
  transition:opacity .16s ease, transform .16s ease, visibility .16s;
}
.langpick-menu.open{opacity:1; visibility:visible; transform:none}
.langpick-menu li{
  list-style:none; display:flex; align-items:center; gap:11px; white-space:nowrap;
  padding:8px 12px; border-radius:11px; cursor:pointer; color:var(--ink); transition:background .12s;
}
.langpick-menu li:hover{background:rgba(23,179,160,.12)}
.langpick-menu li[aria-selected="true"]{background:var(--accent); color:#fff; font-weight:600}
.langpick-menu li .flag{height:23px; width:auto; display:block; border-radius:3px; box-shadow:0 0 0 1px rgba(0,0,0,.1)}
.langpick-menu::-webkit-scrollbar{width:8px}
.langpick-menu::-webkit-scrollbar-thumb{background:rgba(23,179,160,.35); border-radius:8px}

main{max-width:1040px; margin:0 auto; padding:8px 22px 40px}

/* hero */
.hero{
  display:flex; gap:34px; align-items:center; flex-wrap:wrap;
  background:var(--panel); border:3px solid var(--accent); border-radius:var(--radius);
  box-shadow:var(--shadow); padding:30px 32px; margin-top:8px;
}
.hero-text{flex:1 1 320px; min-width:280px}
.game-title{height:auto; width:min(420px,80%); display:block}
.tagline{font-size:1.12rem; color:var(--muted); margin:14px 0 22px}
.platforms{display:flex; flex-wrap:wrap; gap:10px}
.plat{
  display:flex; flex-direction:column; gap:1px; text-decoration:none; min-width:118px;
  padding:10px 16px; border-radius:14px; border:2px solid transparent;
}
.plat-name{font-weight:700; font-size:1rem}
.plat-act{font-size:.82rem}
.plat.play{background:var(--accent); color:#fff; box-shadow:var(--shadow)}
.plat.play .plat-act{color:#eafffb}
.plat.play:hover{background:var(--accent-d)}
.plat.soon{background:#f3ecdc; color:var(--muted); border-color:rgba(125,112,88,.25); cursor:default}
.hero-shot{flex:0 0 auto; margin:0 auto}
.hero-shot img{
  width:clamp(220px,42vw,300px); height:auto; border-radius:22px;
  box-shadow:var(--shadow); border:1px solid rgba(58,50,43,.08);
}

/* cards */
.card{
  background:var(--panel); border:3px solid var(--accent); border-radius:var(--radius);
  box-shadow:var(--shadow); padding:26px 30px; margin-top:24px;
}
.card h2{margin:0 0 6px; color:var(--accent-d); font-size:1.45rem}
.card .lead{margin:0 0 18px; color:var(--muted)}
.card .rps{font-weight:700; color:var(--accent-d); margin:18px 0 6px}
.card .fine{color:var(--muted); font-size:.95rem; margin:4px 0 0}

/* rules: three moves */
.moves{display:flex; gap:14px; flex-wrap:wrap}
.move{
  flex:1 1 150px; min-width:150px; background:var(--bg); border-radius:16px; padding:16px;
  display:flex; flex-direction:column; align-items:center; text-align:center; gap:4px;
}
.move .glyph{font-size:2rem; line-height:1; font-weight:800; width:52px; height:52px;
  display:flex; align-items:center; justify-content:center; border-radius:50%; color:#fff; margin-bottom:4px}
.move .glyph.up{background:var(--accent)}
.move .glyph.hold{background:var(--muted); font-size:1.1rem}
.move .glyph.down{background:var(--accent2)}
.move b{font-size:1.05rem}
.move span{font-size:.9rem; color:var(--muted)}

/* items */
.itemlist{display:flex; gap:14px; flex-wrap:wrap}
.item{
  flex:1 1 180px; min-width:180px; background:var(--bg); border-radius:16px; padding:16px;
  display:flex; flex-direction:column; align-items:center; text-align:center; gap:4px;
}
.item img{width:56px; height:56px; image-rendering:auto}
.item b{font-size:1.05rem}
.item span{font-size:.9rem; color:var(--muted)}

footer.site-foot{text-align:center; color:var(--muted); padding:26px; font-size:.9rem}

@media (max-width:680px){
  .hero{padding:24px 20px; gap:22px}
  .card{padding:22px 18px}
  .hero-shot{order:-1}
  .hero-shot img{width:min(240px,70%)}
}
