:root{
  --bg:#f6f3ee; --card:#fff; --ink:#1f2a27; --muted:#6b7773;
  --accent:#2f5d50; --accent-ink:#fff; --line:#e3ded5; --err:#a8322d; --ok:#2f6b3a;
}
@media (prefers-color-scheme: dark){
  :root{--bg:#161b19; --card:#1f2623; --ink:#e9efec; --muted:#9aa8a3; --accent:#7fb8a4; --accent-ink:#10231c; --line:#2d3733; --err:#e57b74; --ok:#7fc58b;}
}
*{box-sizing:border-box}
body{margin:0;font:16px/1.55 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--ink)}
.top{display:flex;justify-content:space-between;align-items:center;padding:14px 20px;border-bottom:1px solid var(--line);background:var(--card)}
.brand{font-weight:700;font-size:1.2rem;color:var(--accent);text-decoration:none;letter-spacing:.02em}
.top nav{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.top a{color:var(--ink);text-decoration:none}
.top a:hover{color:var(--accent)}
main{max-width:760px;margin:32px auto;padding:0 16px}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:24px;margin-bottom:20px}
h1{margin:0 0 8px;font-size:1.6rem} h2{margin:0 0 12px;font-size:1.2rem}
p.muted{color:var(--muted);margin-top:0}
label{display:block;font-weight:600;margin:14px 0 4px}
input,select{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--ink);font:inherit}
input:focus,select:focus{outline:2px solid var(--accent);outline-offset:1px}
button,.btn{display:inline-block;margin-top:18px;padding:10px 18px;border:0;border-radius:8px;background:var(--accent);color:var(--accent-ink);font:inherit;font-weight:600;cursor:pointer;text-decoration:none}
button.link{margin:0;padding:0;background:none;color:var(--ink);font-weight:400}
button.link:hover{color:var(--accent)}
button.small{margin:0;padding:6px 10px;font-size:.85rem}
form.inline{display:inline;margin:0}
.msg{padding:10px 14px;border-radius:8px;margin-bottom:14px}
.msg.err{background:color-mix(in srgb,var(--err) 14%,transparent);color:var(--err)}
.msg.ok{background:color-mix(in srgb,var(--ok) 14%,transparent);color:var(--ok)}
table{width:100%;border-collapse:collapse}
th,td{text-align:left;padding:8px 6px;border-bottom:1px solid var(--line);font-size:.95rem}
.tag{display:inline-block;padding:2px 8px;border-radius:99px;background:var(--line);font-size:.8rem}
.narrow{max-width:420px;margin:48px auto}
.hero{text-align:center;padding:56px 0 24px}
.hero h1{font-size:2.4rem;color:var(--accent)}

/* --- Secciones --- */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px}
.tile{display:block;color:var(--ink);text-decoration:none;margin:0;transition:border-color .15s,transform .15s}
.tile:hover{border-color:var(--accent);transform:translateY(-2px)}
.tile h2{margin:4px 0}
.tile-icon{font-size:1.6rem;color:var(--accent);letter-spacing:.1em}
.small{font-size:.85rem}
code{background:var(--line);padding:1px 5px;border-radius:4px}
.btn.small{margin:0;padding:6px 12px;font-size:.85rem}
.btn.secondary{background:var(--line);color:var(--ink);margin-left:8px}
button.danger{color:var(--err)}
textarea{width:100%;padding:12px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--ink);font:15px/1.5 ui-monospace,Menlo,Consolas,monospace;resize:vertical}

/* Documentos */
.doc-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.doc-body h2{margin:20px 0 8px;font-size:1.15rem;color:var(--accent)}
.doc-body p{margin:0 0 10px}

/* Fotos */
details.card summary{cursor:pointer}
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
.gallery figure{margin:0;background:var(--card);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.gallery img{display:block;width:100%;aspect-ratio:1;object-fit:cover;background:var(--line)}
.gallery figcaption{padding:8px 10px;display:flex;flex-direction:column;gap:2px}

/* Juegos */
.game{text-align:center}
.controls{display:flex;justify-content:center;gap:20px;flex-wrap:wrap;margin:8px 0}
.radio{display:flex;align-items:center;gap:6px;font-weight:400;margin:0}
.radio input{width:auto}
.estado{font-weight:600;min-height:1.5em;margin:12px 0}
.ttt{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;width:min(300px,100%);margin:0 auto}
.ttt .cell{margin:0;aspect-ratio:1;font-size:2.6rem;line-height:1;background:var(--bg);color:var(--ink);border:2px solid var(--line);border-radius:10px;padding:0}
.ttt .cell:not(:disabled):hover{border-color:var(--accent)}
.ttt .cell.x{color:var(--accent)} .ttt .cell.o{color:#c0613f}
.ttt .cell:disabled{cursor:default}
.ttt .cell.win,.c4 .hole.win{box-shadow:0 0 0 3px var(--ok) inset}
.c4{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;width:min(420px,100%);margin:0 auto;padding:10px;background:#2b4f9e;border-radius:12px}
.c4.busy{pointer-events:none}
.c4 .hole{margin:0;padding:0;aspect-ratio:1;border-radius:50%;background:var(--bg);border:0}
.c4 .hole:not(:disabled):hover{outline:2px solid #fff}
.c4 .hole:disabled{cursor:default}
.hole.p1,.dot.p1{background:#d9423a} .hole.p2,.dot.p2{background:#f2c230}
.dot{display:inline-block;width:.9em;height:.9em;border-radius:50%;vertical-align:-1px}

/* --- Responsive --- */
html{-webkit-text-size-adjust:100%}
img{max-width:100%}
.top{position:sticky;top:0;z-index:10;gap:12px}
.menu-btn{display:none}
.table-wrap{overflow-x:auto}

@media (max-width:760px){
  body{font-size:16px}
  main{margin:20px auto}
  .card{padding:18px}
  h1{font-size:1.4rem}
  .hero{padding:32px 0 16px}
  .hero h1{font-size:2rem}
  .narrow{margin:24px auto}

  /* Menú hamburguesa */
  .top{flex-wrap:wrap;padding:10px 16px}
  .menu-btn{display:flex;flex-direction:column;justify-content:center;gap:5px;width:44px;height:44px;margin:0;padding:10px;background:none;border:1px solid var(--line);border-radius:8px}
  .menu-btn span{display:block;height:2px;background:var(--ink);border-radius:2px;transition:transform .2s,opacity .2s}
  .menu-open .menu-btn span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  .menu-open .menu-btn span:nth-child(2){opacity:0}
  .menu-open .menu-btn span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
  .top:has(.menu-btn) nav{display:none;width:100%;flex-direction:column;align-items:stretch;gap:0;padding-top:6px}
  .menu-open .top nav{display:flex}
  .top nav a,.top nav button.link{display:block;width:100%;text-align:left;padding:12px 4px;border-top:1px solid var(--line);font-size:1.05rem}

  /* Botones y campos cómodos para el dedo */
  input,select,textarea{font-size:16px}
  button,.btn{min-height:44px}
  form > button[type=submit]{width:100%}
  .btn.secondary{display:block;margin:10px 0 0;text-align:center}

  /* Rejillas */
  .grid{grid-template-columns:1fr 1fr;gap:12px}
  .tile h2{font-size:1.05rem}
  .gallery{grid-template-columns:repeat(2,1fr);gap:8px}

  /* Tabla de usuarios como tarjetas */
  table.users thead,table.users tr:first-child{display:none}
  table.users,table.users tbody,table.users tr,table.users td{display:block;width:100%}
  table.users tr{border:1px solid var(--line);border-radius:10px;padding:8px 12px;margin-bottom:10px}
  table.users td{border:0;padding:4px 0;display:flex;justify-content:space-between;gap:12px}
  table.users td[data-label]::before{content:attr(data-label);color:var(--muted);font-size:.85rem}
  table.users td:last-child{justify-content:flex-end;padding-top:8px}

  /* Juegos */
  .controls{gap:10px 18px}
  .ttt{width:min(320px,100%)}
}
@media (max-width:380px){
  .grid{grid-template-columns:1fr}
}
.c4,.ttt{grid-template-columns:repeat(var(--cols),minmax(0,1fr))}
.c4{--cols:7} .ttt{--cols:3}
.c4 .hole,.ttt .cell{min-height:0;min-width:0}
.btn{display:inline-flex;align-items:center;justify-content:center}
.grid{grid-template-columns:repeat(auto-fill,minmax(155px,1fr))}
@media (max-width:760px){.grid{grid-template-columns:1fr 1fr}}
@media (max-width:380px){.grid{grid-template-columns:1fr}}
