/* Fogón · base visual compartida: tokens, tipografías, reset y componentes. */
@import url('./fonts/fonts.css');

:root{
  /* Colores de marca */
  --ink:#1B1433;--cream:#FFF3E4;--night:#14102A;--tomato:#FF5A36;--sun:#FFC531;--hotpink:#FF3D8B;--blue:#2453E0;--green:#17946A;--lime:#CBF25A;--pink:#FFA3B5;--cyan:#5EE0F0;--white:#FFFFFF;
  --muted:#6B6380;--muted-2:#4A4260;--silence:#0F2A2A;--silence-tint:#9FE3C8;
  /* Texto de color sobre fondos claros: variantes oscurecidas para contraste ≥ 4.5:1 */
  --tomato-text:#C2350F;--hotpink-text:#C21F63;--green-text:#0E7553;
  /* Neutros de apoyo */
  --track:#F1E6D6;--line-soft:#EADCC8;--on-dark-muted:#D9D3EA;--glass:rgba(20,16,42,.72);
  /* Tipografías */
  --font-display:'Bricolage Grotesque',system-ui,sans-serif;--font-hand:'Caveat Brush',cursive;--font-body:'Nunito',system-ui,sans-serif;
  /* Radios: pills, tarjetas y esquina firma */
  --r-pill:99px;--r-card:32px;--r-card-lg:36px;--r-corner:120px;
  /* Sombras */
  --shadow-hard:0 6px 0 var(--ink);--shadow-sticker:0 10px 30px rgba(27,20,51,.15);
  /* Foco y movimiento */
  --focus:var(--ink);--lift:0 -2px;--t-fast:150ms ease;
  font-family:var(--font-body);color:var(--ink);background:var(--cream);color-scheme:light;
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
}

/* Reset */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;font-family:var(--font-body);font-weight:600;line-height:1.5;background:var(--cream);color:var(--ink)}
img,svg,video,canvas{display:block;max-width:100%}
button,input,select,textarea{font:inherit;color:inherit}
h1,h2,h3,h4{font-family:var(--font-display);font-weight:800;letter-spacing:-.04em;line-height:.95;margin:0}
p{margin:0}
a{color:inherit;text-underline-offset:4px}
[hidden]{display:none!important}

/* Tipografía utilitaria */
.display{font-family:var(--font-display);font-weight:800;letter-spacing:-.05em;line-height:.9}
.hand{font-family:var(--font-hand);font-weight:400;letter-spacing:0;line-height:1;display:inline-block;transform:rotate(-2deg);transform-origin:left}
.eyebrow,.label-caps{font-family:var(--font-body);font-size:13px;font-weight:900;letter-spacing:.1em;text-transform:uppercase}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}

/* Foco visible: tinta en claro, lima sobre fondos oscuros (cada superficie oscura redefine --focus) */
:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
:focus:not(:focus-visible){outline:none}

/* Botones */
button,.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:12px 22px;border:3px solid var(--ink);border-radius:var(--r-pill);background:var(--white);color:var(--ink);font-family:var(--font-body);font-weight:900;font-size:17px;line-height:1.1;text-decoration:none;cursor:pointer;transition:translate var(--t-fast),transform var(--t-fast),box-shadow var(--t-fast),background var(--t-fast)}
button:hover:not(:disabled),.button:hover{translate:var(--lift)}
button:disabled{opacity:.45;cursor:not-allowed}
.primary{background:var(--tomato);color:var(--ink);border-color:var(--tomato);box-shadow:var(--shadow-hard)}
.primary:hover:not(:disabled){box-shadow:0 8px 0 var(--ink)}
.quiet{background:transparent}
.dark{background:var(--ink);color:var(--white);border-color:var(--ink)}
.lime{background:var(--lime);color:var(--ink);border-color:var(--lime)}

/* Chips */
.chip{display:inline-flex;align-items:center;gap:6px;border-radius:var(--r-pill);padding:8px 16px;font-weight:900;font-size:14px;letter-spacing:.06em;text-transform:uppercase;line-height:1.1}

/* Controles segmentados (sincronizados con un <select> por ui.mjs) */
.segmented{display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:8px}
.segmented button{flex-direction:column;gap:2px;border-radius:22px;padding:14px 6px;min-height:0;font-size:13px;font-weight:800}
.segmented button strong{font-family:var(--font-display);font-weight:800;font-size:34px;letter-spacing:-.04em;line-height:1}
.segmented button[aria-checked=true]{background:var(--ink);color:var(--white)}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chips button{min-height:44px;padding:9px 16px;font-size:15px;border:0;background:rgba(255,255,255,.6)}
.chips button[aria-checked=true]{background:var(--ink);color:var(--white)}
select.synced{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}

/* Deslizadores: pista 16px, relleno de color, pulgar 32px */
input[type=range]{--accent:var(--tomato);--fill:50%;-webkit-appearance:none;appearance:none;width:100%;height:32px;background:transparent;cursor:pointer;margin:0}
input[type=range]::-webkit-slider-runnable-track{height:16px;border-radius:var(--r-pill);background:linear-gradient(90deg,var(--accent) 0 var(--fill),var(--track) var(--fill) 100%)}
input[type=range]::-moz-range-track{height:16px;border-radius:var(--r-pill);background:var(--track)}
input[type=range]::-moz-range-progress{height:16px;border-radius:var(--r-pill);background:var(--accent)}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:32px;height:32px;margin-top:-8px;border-radius:50%;background:var(--white);border:4px solid var(--accent)}
input[type=range]::-moz-range-thumb{width:24px;height:24px;border-radius:50%;background:var(--white);border:4px solid var(--accent)}
input[type=range]:disabled{opacity:.45;cursor:not-allowed}

/* Interruptor 72×40 para casillas marcadas como .switch */
input[type=checkbox].switch{-webkit-appearance:none;appearance:none;position:relative;flex:none;width:72px;height:40px;margin:0;border-radius:var(--r-pill);background:#D8CCBB;cursor:pointer;transition:background .2s}
input[type=checkbox].switch::after{content:'';position:absolute;top:4px;left:4px;width:32px;height:32px;border-radius:50%;background:var(--white);transition:left .2s}
input[type=checkbox].switch:checked{background:var(--green)}
input[type=checkbox].switch:checked::after{left:36px}
input[type=checkbox]:not(.switch){accent-color:var(--ink);width:20px;height:20px}

/* Selects nativos con forma de pill */
select{min-height:48px;border:3px solid var(--ink);border-radius:var(--r-pill);background:var(--white);color:var(--ink);padding:10px 16px;font-weight:800;max-width:100%}

/* Fotos: hueco reservado hasta tener imágenes reales */
.photo{position:relative;overflow:hidden;background:rgba(255,255,255,.18)}
.photo img{width:100%;height:100%;object-fit:cover;color:transparent}
.photo img[src*="batuta"]{object-fit:contain;padding:6px}


/* Cintas decorativas */
.ribbon{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible;fill:none;stroke-linecap:round}
.r-sun{stroke:var(--sun)}.r-hotpink{stroke:var(--hotpink)}.r-blue{stroke:var(--blue)}.r-lime{stroke:var(--lime)}.r-tomato{stroke:var(--tomato)}

/* Pegatinas y tarjetas */
.sticker{background:var(--white);border-radius:20px;box-shadow:var(--shadow-sticker)}
.card{background:var(--white);border-radius:var(--r-card);padding:28px}

/* Cambio de idioma (lo inserta i18n.mjs) */
.language-switch{min-height:44px;min-width:48px;padding:8px 12px;font-size:15px;background:transparent;border-color:currentColor;color:inherit}

/* Superficies oscuras: el foco pasa a lima */
.on-dark{--focus:var(--lime);color:var(--white)}

/* ———————————————————————————————————————————————
   Shell de aplicación (movimiento.html y objetos.html):
   escena nocturna a la izquierda, panel crema a la derecha.
   ——————————————————————————————————————————————— */
body:has(.workspace){background:var(--night)}
body:has(.workspace)>header{--focus:var(--lime);display:flex;align-items:center;flex-wrap:wrap;gap:12px 20px;padding:18px 32px;background:var(--night);color:var(--white)}
body:has(.workspace)>header a{color:var(--white);font-weight:800;text-decoration:none}
body:has(.workspace)>header button{min-height:44px;padding:9px 18px;font-size:15px;background:transparent;color:var(--white);border:2px solid rgba(255,255,255,.35)}
.brand{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-display);font-weight:800;font-size:28px;letter-spacing:-.04em;margin-right:auto}
.logo{display:grid;grid-template-columns:12px 12px;gap:3px;flex:none}
.logo i{width:12px;height:12px;border-radius:50%;background:var(--tomato)}
.logo i:nth-child(2){background:var(--sun)}.logo i:nth-child(3){background:var(--blue)}.logo i:nth-child(4){background:var(--hotpink)}
.mark{color:var(--sun);font-size:26px}
body:has(.workspace)>main{display:grid;grid-template-columns:minmax(0,1fr) 380px;max-width:1600px;margin:auto;background:var(--night)}
.workspace{--focus:var(--lime);padding:28px;min-width:0;color:var(--white)}
.toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px}
.workspace .eyebrow{color:var(--sun)}
.workspace .quiet,.on-dark .quiet,.workspace .controls button:not(.primary):not(.lime){background:transparent;color:var(--white);border-color:rgba(255,255,255,.55)}
.workspace h1{font-size:40px;margin-top:6px}
.badge{display:inline-flex;align-items:center;gap:8px;white-space:nowrap;border-radius:var(--r-pill);padding:10px 18px;font-weight:800;font-size:15px;background:var(--glass);color:var(--white)}
.badge::before{content:'';width:10px;height:10px;border-radius:50%;background:var(--hotpink)}
#stage{position:relative;aspect-ratio:16/10;overflow:hidden;background:var(--night);border:3px solid rgba(255,255,255,.12);border-radius:var(--r-card);container-type:size}
#stage video,#stage canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
#stage canvas{touch-action:none;cursor:crosshair}
#empty{position:absolute;inset:0;z-index:4;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center;padding:24px;background:var(--night);overflow:hidden}
#empty .orb{font-size:56px;line-height:1;color:var(--sun)}
#empty h2{font-size:clamp(34px,5.4cqw,72px);letter-spacing:-.05em;color:var(--white);position:relative}
#empty p{max-width:520px;font-size:18px;line-height:1.5;color:var(--on-dark-muted);position:relative}
#empty button{position:relative}
#stageHint{position:absolute;left:16px;bottom:16px;right:16px;z-index:6;background:var(--glass);color:var(--white);padding:12px 18px;border-radius:20px;font-weight:800;pointer-events:none}
.controls{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}
.notice{display:flex;gap:10px;align-items:flex-start;font-size:15px;line-height:1.5;margin:18px 0;color:var(--on-dark-muted)}
.pulse{width:8px;height:8px;background:var(--lime);border-radius:50%;flex:none;margin-top:7px}
#error{background:#FFE1DA;color:var(--ink);border:3px solid var(--tomato);border-radius:20px;padding:14px 18px;font-size:15px;line-height:1.5}
.settings{display:flex;flex-wrap:wrap;gap:20px;align-items:center;padding:20px 0}
.settings label{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-weight:800}
details{margin-top:20px;font-size:15px;line-height:1.6}
summary{cursor:pointer;font-weight:800;min-height:44px;display:flex;align-items:center}
body:has(.workspace) aside{padding:32px 28px;background:var(--cream);color:var(--ink);min-width:0}
.asideTitle{display:flex;justify-content:space-between;align-items:center;gap:12px}
.asideTitle h2{font-size:30px}
.asideTitle h2 span{display:inline-block;vertical-align:middle;font-family:var(--font-body);font-size:15px;font-weight:900;letter-spacing:0;background:var(--ink);color:var(--white);padding:3px 10px;border-radius:var(--r-pill);margin-left:6px}
.last{margin-top:24px;background:var(--ink);color:var(--white);border-radius:28px 28px 28px 80px;padding:22px 24px}
.last .eyebrow{color:var(--sun)}
.last strong{display:block;font-family:var(--font-display);font-weight:800;font-size:28px;letter-spacing:-.03em;line-height:1.1;margin-top:6px}
.privacy{font-size:13px;font-weight:700;color:var(--muted);line-height:1.6;margin-top:24px}

/* Laboratorio de objetos (objetos.html) */
#catalogCount{font-size:13px;color:var(--muted)}
#listHint{color:var(--muted-2);font-size:15px;line-height:1.5;margin-bottom:22px}
.object{background:var(--white);border:3px solid var(--object-color);border-radius:24px;padding:14px;margin:10px 0;transition:background var(--t-fast)}
.object.hit{background:#EAF9C8}
.objHead{display:flex;gap:10px;align-items:center;margin-bottom:10px}
.objHead input{width:100%;min-width:0;border:0;background:transparent;color:var(--ink);font-size:17px;font-weight:800;padding:4px}
.objHead button{padding:2px 10px;min-height:36px;border:0;font-size:20px}
.object select{width:100%;font-size:14px}
.objActions{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}
.objActions button{padding:7px 12px;min-height:40px;font-size:14px}
.objActions .cal{flex:1}
.objMeta{font-size:13px;color:var(--muted);margin:8px 0 0}
.chairSetup{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:16px}
.chairSetup label{display:flex;gap:8px;align-items:center}
.chairSetup span,.sessionHint{font-size:13px;color:var(--on-dark-muted);line-height:1.5}
dialog{background:var(--cream);color:var(--ink);border:0;border-radius:var(--r-card);max-width:520px;padding:28px}
dialog::backdrop{background:rgba(20,16,42,.7)}
dialog p{line-height:1.6}
dialog input{display:block;width:100%;padding:12px;margin-top:8px;border-radius:16px;background:var(--white);border:3px solid var(--ink)}
#aiError{color:var(--tomato-text)}

/* Proyección: foco total en la escena */
body.projecting main{display:block;max-width:none}
body.projecting aside,body.projecting .settings,body.projecting details,body.projecting .toolbar,body.projecting .chairSetup,body.projecting .sessionHint{display:none}
body.projecting .workspace{padding:12px}
body.projecting #stage{height:calc(100dvh - 190px);aspect-ratio:auto}
body.projecting .controls{justify-content:center}
body.projecting .notice{justify-content:center;margin:10px}
header #fullscreen{margin-left:0}
header #projection{margin-left:auto}

@media(max-width:1000px){
  body:has(.workspace)>main{grid-template-columns:minmax(0,1fr) 320px}
  .workspace{padding:20px}
  .workspace h1{font-size:32px}
}
@media(max-width:760px){
  body:has(.workspace)>header{padding:12px 16px;gap:10px}
  .brand{font-size:22px}
  body:has(.workspace)>main{display:block}
  .workspace{padding:16px}
  #stage{aspect-ratio:4/3;border-radius:24px}
  .controls button{flex:1}
  body:has(.workspace) aside{padding:24px 16px}
  #objects{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px}
  .object{margin:0}
}
@media(max-width:500px){
  header #projection{margin-left:0}
  body.projecting #stage{height:calc(100dvh - 240px)}
}

/* Movimiento reducido: sin desplazamientos ni escalas */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{transition-duration:0s!important;animation:none!important;scroll-behavior:auto!important}
  button:hover:not(:disabled),.button:hover,a:hover{translate:none!important}
}

/* Indicador visible de que un bloque se despliega (display:flex oculta el marcador nativo). */
summary::-webkit-details-marker{display:none}
summary::after{content:'+';margin-left:auto;padding-left:16px;font-family:var(--font-display);font-size:1.4em;line-height:1;font-weight:800}
details[open]>summary::after{content:'−'}
