@font-face{font-family:"Pixelify Sans";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/pixelify-sans-latin-500-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Pixelify Sans";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/pixelify-sans-latin-ext-500-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Pixelify Sans";font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/pixelify-sans-latin-700-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Pixelify Sans";font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/pixelify-sans-latin-ext-700-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Figtree";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/figtree-latin-400-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Figtree";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/figtree-latin-ext-400-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Figtree";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/figtree-latin-500-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Figtree";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/figtree-latin-ext-500-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Figtree";font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/figtree-latin-600-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Figtree";font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/figtree-latin-ext-600-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Figtree";font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/figtree-latin-700-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Figtree";font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/figtree-latin-ext-700-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/jetbrains-mono-latin-500-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/jetbrains-mono-latin-ext-500-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}

/* Layout: ficha de personaje móvil; cabecera con avatar, nivel y barra XP; contenido por pestañas; barra inferior fija */
:root{
  --bg:#EDF0F5; --surface:#FFFFFF; --surface-2:#E3E8F0; --line:#CDD5E1;
  --fg:#18202E; --muted:#5B6678; --xp:#C98A0B; --xp-soft:#F6E7C4; --ok:#2E8B57; --danger:#C2412D;
  --a-fuerza:#D1493F; --a-cultura:#B5651D; --a-inteligencia:#3A6FD8; --a-ambicion:#7A5AC8; --a-talento:#C2408A; --a-carisma:#D88A12; --a-espiritu:#1F9A8A;
  --f-display:"Pixelify Sans", "PingFang SC", "Noto Sans SC", "Microsoft YaHei", "Courier New", monospace;
  --f-body:"Figtree", system-ui, -apple-system, "Segoe UI", "PingFang SC", "Noto Sans SC", "Microsoft YaHei", sans-serif;
  --f-num:"JetBrains Mono", ui-monospace, Menlo, monospace;
  --r:12px;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#10141C; --surface:#181E29; --surface-2:#222A38; --line:#2E3849;
  --fg:#E7ECF4; --muted:#93A0B5; --xp:#F2B43A; --xp-soft:#3A2F17; --ok:#4CC488; --danger:#F06A55;
  --a-fuerza:#F06A60; --a-cultura:#E0954A; --a-inteligencia:#6E9BF5; --a-ambicion:#A98BEF; --a-talento:#EC6FB4; --a-carisma:#F2B23E; --a-espiritu:#45C9B6;
  color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#10141C; --surface:#181E29; --surface-2:#222A38; --line:#2E3849;
  --fg:#E7ECF4; --muted:#93A0B5; --xp:#F2B43A; --xp-soft:#3A2F17; --ok:#4CC488; --danger:#F06A55;
  --a-fuerza:#F06A60; --a-cultura:#E0954A; --a-inteligencia:#6E9BF5; --a-ambicion:#A98BEF; --a-talento:#EC6FB4; --a-carisma:#F2B23E; --a-espiritu:#45C9B6;
  color-scheme:dark}
*{box-sizing:border-box}
html,body{height:100%}
body{background:var(--bg);color:var(--fg);font-family:var(--f-body);font-size:15px;line-height:1.45}
.wrap{max-width:560px;margin:0 auto;padding:0 16px}
.page{padding-bottom:110px}
h1,h2,h3{margin:0;text-wrap:balance}
button{font:inherit;color:inherit;cursor:pointer}
button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--xp);outline-offset:2px}
input,select{font:inherit;color:var(--fg);background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 12px;width:100%;min-width:0}
label{font-size:13px;color:var(--muted);display:grid;gap:4px}
.num{font-family:var(--f-num);font-variant-numeric:tabular-nums}

/* Cabecera */
.hero{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;background:var(--bg);padding-block:12px;border-bottom:1px solid var(--line)}
.hero .wrap{display:grid;gap:8px}
.hero-row{display:flex;align-items:center;gap:12px}
.mini{position:relative;flex:none;width:52px;height:52px}
.mini svg{width:52px;height:52px;display:block}
.mini b{position:absolute;right:-4px;bottom:-4px;min-width:22px;height:22px;padding:0 5px;border-radius:7px;background:var(--fg);color:var(--bg);font-family:var(--f-display);font-size:13px;display:grid;place-items:center;border:2px solid var(--bg)}
.hero-name{min-width:0;flex:1}
.hero-name h1{font-family:var(--f-display);font-size:20px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hero-name p{margin:0;font-size:13px;color:var(--muted)}
.sync{flex:none;font-size:11px;padding:4px 8px;border-radius:999px;background:var(--surface-2);color:var(--muted);display:flex;align-items:center;gap:6px;white-space:nowrap}
.sync i{width:7px;height:7px;border-radius:50%;background:var(--muted)}
.sync.ok i{background:var(--ok)} .sync.wait i{background:var(--xp)} .sync.off i{background:var(--danger)}
.bar{height:10px;border-radius:3px;background:var(--surface-2);overflow:hidden}
.bar>span{display:block;height:100%;background:var(--xp);transition:width .4s ease}
.xp-line{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:var(--muted)}

/* Secciones */
main{display:grid;gap:22px;padding-top:16px}
.sec{display:grid;gap:10px}
.sec-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.sec-head h2{font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:700}
.link{background:none;border:0;color:var(--xp);font-weight:600;font-size:14px;padding:4px 0;white-space:nowrap}
.empty{padding:16px;border:1px dashed var(--line);border-radius:var(--r);color:var(--muted);font-size:14px}
.hint{font-size:12px;color:var(--muted);margin:0}
.locked{font-size:12px;color:var(--muted)}

/* Filas */
.list{display:grid;gap:8px}
.item{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:12px}
.item.done .t{color:var(--muted);text-decoration:line-through}
.check{width:30px;height:30px;border-radius:8px;border:2px solid var(--cat,var(--line));background:transparent;display:grid;place-items:center;padding:0}
.item.done .check{background:var(--cat)}
.check svg{width:16px;height:16px;stroke:var(--surface);stroke-width:3;fill:none;opacity:0}
.item.done .check svg{opacity:1}
.t{font-weight:600;min-width:0;overflow-wrap:anywhere}
.meta{display:flex;flex-wrap:wrap;gap:4px 10px;font-size:12px;color:var(--muted);margin-top:2px}
.tag{display:inline-flex;align-items:center;gap:5px}
.tag::before{content:"";width:8px;height:8px;border-radius:2px;background:var(--cat)}
.xp-chip{font-family:var(--f-num);font-size:12px;color:var(--xp);font-weight:500;white-space:nowrap}
.more{background:none;border:0;color:var(--muted);padding:4px 6px;font-size:18px;line-height:1}

/* Reto del día y Sorpréndeme */
.daily{border:2px solid var(--xp);background:var(--xp-soft);border-radius:14px;padding:14px;display:grid;gap:10px}
.daily .eyebrow{font-size:11px;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:var(--xp)}
.daily p{margin:0;font-size:17px;font-weight:700}
.daily.done{opacity:.75}
.surprise{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--surface);border:1px dashed var(--xp);border-radius:var(--r);padding:12px 14px}
.surprise b{font-family:var(--f-display);font-size:16px}
.surprise span{font-size:13px;color:var(--muted)}
.dice{font-family:var(--f-display);font-size:28px;line-height:1;color:var(--xp)}
.pick{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--cat);border-radius:var(--r);padding:14px;display:grid;gap:8px}
.pick p{margin:0;font-size:17px;font-weight:700}

/* Retos */
.cat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.cat-btn{text-align:left;background:var(--surface);border:1px solid var(--line);border-top:4px solid var(--cat);border-radius:var(--r);padding:10px;display:grid;gap:4px;min-width:0}
.cat-btn[aria-pressed="true"]{outline:2px solid var(--cat);outline-offset:-1px}
.cat-btn b{font-size:14px;line-height:1.2}
.cat-btn small{font-size:11px;color:var(--muted)}
.cat-btn.lock{opacity:.5;border-top-color:var(--line)}
.quest{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--cat);border-radius:var(--r);padding:12px;display:grid;gap:8px}
.quest.off{opacity:.55}
.quest-top{display:flex;justify-content:space-between;gap:10px;align-items:center;flex-wrap:wrap}
.quest p{margin:0;font-weight:600}
.btns{display:flex;gap:6px;flex-wrap:wrap}
.tier{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.time{font-size:11px;color:var(--muted);border:1px solid var(--line);border-radius:6px;padding:1px 6px;white-space:nowrap}
.coll{display:grid;gap:6px}
.coll-item{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:8px 10px}
.coll-item .check{width:24px;height:24px;border-radius:6px}
.coll-item.done .check{background:var(--cat)} .coll-item.done .check svg{opacity:1}
.coll-item small{display:block;font-size:12px;color:var(--muted)}

.btn{border:0;border-radius:10px;padding:10px 14px;font-weight:700;background:var(--fg);color:var(--bg)}
.btn.ghost{background:var(--surface-2);color:var(--fg)}
.btn.gold{background:var(--xp);color:#1A1405}
.btn.small{padding:7px 12px;font-size:13px}
.btn.danger{background:var(--danger);color:#fff}
.btn:disabled{opacity:.45;cursor:not-allowed}
.chips{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px}
.chip{flex:none;border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:6px 12px;font-size:13px}
.chip[aria-pressed="true"]{background:var(--fg);color:var(--bg);border-color:var(--fg)}

/* Metas */
.goal{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:12px;display:grid;gap:8px}
.goal .bar>span{background:var(--cat)}
.goal-top{display:flex;justify-content:space-between;gap:10px}

/* Personaje */
.card-hero{display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px}
.card-hero svg{width:96px;height:96px;display:block}
.card-hero h2{font-family:var(--f-display);font-size:24px}
.card-hero p{margin:0;color:var(--muted);font-size:13px}
.stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:10px 12px;display:grid;gap:6px;min-width:0}
.stat-top{display:flex;justify-content:space-between;align-items:baseline;gap:6px}
.stat-top span{font-weight:700;font-size:14px}
.stat-top b{font-family:var(--f-display);font-size:18px;color:var(--cat)}
.stat .bar{height:6px}.stat .bar>span{background:var(--cat)}
.stat small{font-size:11px;color:var(--muted)}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px}
.radar{display:block;width:100%;max-width:360px;margin:0 auto}
.radar text{font-family:var(--f-body);font-size:11px;fill:var(--muted)}
.days{display:grid;grid-template-columns:repeat(30,minmax(0,1fr));gap:3px;align-items:end;height:90px}
.days span{background:var(--xp);border-radius:2px 2px 0 0;min-height:2px}
.days span.zero{background:var(--surface-2)}
.days-axis{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-top:6px}
.kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:10px;text-align:center}
.kpi b{display:block;font-family:var(--f-display);font-size:22px}
.kpi small{font-size:11px;color:var(--muted)}
.catrows{display:grid;gap:6px}
.catrow{display:grid;grid-template-columns:minmax(0,1fr) 90px auto;gap:10px;align-items:center;font-size:13px}
.catrow .bar{height:6px}.catrow .bar>span{background:var(--cat)}

/* Editor de avatar */
.av-editor{display:grid;gap:14px}
.av-preview{display:grid;place-items:center;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px}
.av-preview svg{width:150px;height:150px}
.opt-group{display:grid;gap:6px}
.opt-group>span{font-size:12px;color:var(--muted);font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.opts{display:flex;flex-wrap:wrap;gap:6px}
.opt{border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:6px 10px;font-size:13px;position:relative}
.opt[aria-pressed="true"]{border-color:var(--fg);box-shadow:inset 0 0 0 1px var(--fg);font-weight:700}
.opt.sw{width:34px;height:34px;padding:0;border-radius:50%}
.opt:disabled{opacity:.4;cursor:not-allowed}
.opt .lk{font-size:10px;color:var(--muted);margin-left:4px}

/* Nav inferior */
nav.tabs{position:fixed;left:0;right:0;bottom:0;z-index:10;background:var(--surface);border-top:1px solid var(--line);padding:6px 8px calc(6px + env(safe-area-inset-bottom,0px));display:grid;grid-template-columns:repeat(5,1fr)}
nav.tabs button{background:none;border:0;display:grid;justify-items:center;gap:2px;padding:6px 0;font-size:11px;color:var(--muted);border-radius:8px}
nav.tabs button svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
nav.tabs button[aria-selected="true"]{color:var(--fg);font-weight:700}
nav.tabs button[aria-selected="true"] svg{stroke:var(--xp)}

/* Hoja */
.sheet-bg{position:fixed;inset:0;background:rgb(0 0 0 / .45);z-index:20;display:grid;align-items:end}
.sheet{background:var(--bg);border-radius:16px 16px 0 0;padding:18px 16px calc(18px + env(safe-area-inset-bottom,0px));max-width:560px;width:100%;margin:0 auto;display:grid;gap:12px;max-height:90vh;overflow:auto}
.sheet h3{font-family:var(--f-display);font-size:20px}
.row2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.sheet-actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}

.toast{position:fixed;left:50%;bottom:calc(86px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:30;background:var(--fg);color:var(--bg);padding:10px 16px;border-radius:10px;font-weight:600;font-size:14px;max-width:calc(100% - 32px);text-align:center}
.lvlup{font-family:var(--f-display);color:var(--xp)}

.welcome{padding-block:32px 120px;display:grid;gap:18px;max-width:460px;margin:0 auto}
.welcome h1{font-family:var(--f-display);font-size:34px;line-height:1.05}
.welcome p{margin:0;color:var(--muted)}
.check-row{display:flex;gap:10px;align-items:center;font-size:14px;color:var(--fg)}
.check-row input{width:18px;height:18px}
@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}

/* Añadidos de la versión independiente */
html{-webkit-text-size-adjust:100%}
body{margin:0;min-height:100%}
:root{padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
[hidden]{display:none!important}
img{max-width:100%}
.welcome .chips{flex-wrap:wrap}
.auth{display:grid;gap:12px}
.auth .err{color:var(--danger);font-size:13px;margin:0}
.auth .ok{color:var(--ok);font-size:13px;margin:0}
.linkbtn{background:none;border:0;padding:4px 0;color:var(--xp);font-weight:600;font-size:14px;text-align:left}
.legal{font-size:12px;color:var(--muted)}
.legal a{color:var(--muted)}
.stars{display:flex;gap:4px}
.stars button{background:none;border:0;font-size:26px;line-height:1;color:var(--line);padding:2px}
.stars button[aria-pressed="true"]{color:var(--xp)}
textarea{font:inherit;color:var(--fg);background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 12px;width:100%;min-height:110px;resize:vertical}
.news li{margin-bottom:6px}
.foot{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12px;color:var(--muted)}
.foot a{color:var(--muted)}
