/* Panel de Kuka — el diseño del panel de Hijos de Ramón con la marca de Kuka:
   pared greige y crema, tinta, sala oscura y el azul cobalto de sus cuadros como único acento.
   Bodoni Moda en títulos, Jost en el texto y las mayúsculas, Sacramento para la firma. Tema claro/noche. */

/* ——— tokens ——— */
:root{
  --bg:232 225 215; --surface:250 247 242; --surface2:243 238 230;
  --ink:30 26 23; --inksoft:62 55 49; --mute:104 95 86; --line:30 26 23;
  --spine:21 17 14; --spineink:245 240 233; --accent:36 69 196; --green:58 104 82; --gold:184 137 58;
  --display:"Bodoni Moda",Didot,Georgia,serif; --texto:Jost,system-ui,sans-serif; --firma:Sacramento,cursive;
}
html.night{
  --bg:21 17 14; --surface:32 27 23; --surface2:40 34 29;
  --ink:240 233 221; --inksoft:214 205 191; --mute:166 154 138; --line:240 233 221;
  --spine:12 10 8; --spineink:245 240 233; --accent:74 106 236; --green:96 156 128; --gold:200 162 92;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:var(--texto);
  background:rgb(var(--bg)); color:rgb(var(--ink));
  -webkit-font-smoothing:antialiased; min-height:100vh;
  transition:background-color .5s ease,color .35s ease;
}
.serif{font-family:var(--display)}
.eyebrow{font-family:var(--texto);font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.2em;color:rgb(var(--mute))}
a{color:inherit;text-decoration:none}
button{font-family:inherit}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:rgb(var(--surface2))}
::-webkit-scrollbar-thumb{background:rgb(var(--mute) / .5);border-radius:20px}

/* grano de tela, como en la web */
body::before{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.045;mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='150' height='150'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.86' numOctaves='2'/%3E%3C/filter%3E%3Crect width='150' height='150' filter='url(%23n)'/%3E%3C/svg%3E")}
html.night body::before{mix-blend-mode:overlay;opacity:.06}

/* ——— animaciones ——— */
@keyframes fadeUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes pulse{0%{transform:scale(1);opacity:.5}100%{transform:scale(2.6);opacity:0}}
.fade{animation:fadeUp .5s cubic-bezier(.22,1,.36,1) both}
.lst>*{animation:fadeUp .5s cubic-bezier(.22,1,.36,1) both}
.lst>*:nth-child(2){animation-delay:.05s}.lst>*:nth-child(3){animation-delay:.1s}
.lst>*:nth-child(4){animation-delay:.15s}.lst>*:nth-child(5){animation-delay:.2s}.lst>*:nth-child(6){animation-delay:.25s}

/* ——— iconos ——— */
.ico{display:inline-flex;align-items:center;justify-content:center}
.ico svg{width:20px;height:20px;display:block}
.ico.sm svg{width:16px;height:16px}

/* ——— layout ——— */
.shell{display:flex;min-height:100vh;position:relative;z-index:1}
.sidebar{
  width:256px;flex-shrink:0;min-height:100vh;position:sticky;top:0;
  background:linear-gradient(168deg,#221c17 0%,#15110E 55%,#0d0a08 100%);
  color:rgb(var(--spineink) / .72);display:flex;flex-direction:column;
  border-right:1px solid rgba(0,0,0,.3);
}
.sidebar .brand{display:flex;align-items:center;gap:12px;padding:20px}
.sidebar .logo{width:44px;height:44px;border-radius:12px;background:rgba(0,0,0,.4);
  display:flex;align-items:center;justify-content:center;font-family:var(--display);
  font-size:24px;color:rgb(var(--spineink));box-shadow:inset 0 0 0 1px rgba(255,255,255,.1)}
.sidebar .brand h1{margin:0;font-family:var(--firma);font-weight:400;font-size:34px;line-height:.9;color:rgb(var(--spineink))}
.sidebar .brand p{margin:2px 0 0;font-size:9px;text-transform:uppercase;letter-spacing:.26em;color:rgb(var(--spineink) / .55)}
.nav{padding:8px 12px;display:flex;flex-direction:column;gap:2px;flex:1}
.nav-item{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:12px;
  background:none;border:0;width:100%;text-align:left;cursor:pointer;color:rgb(var(--spineink) / .72);
  font-size:15px;font-weight:500;transition:background .2s,color .2s;position:relative}
.nav-item:hover{background:rgba(245,240,233,.07);color:rgb(var(--spineink))}
.nav-item.active{background:rgba(245,240,233,.11);color:rgb(var(--spineink))}
.nav-item.active::before{content:"";position:absolute;left:-12px;top:9px;bottom:9px;width:3px;border-radius:3px;background:#6E8CFF}
.user-card{margin:12px;border-radius:14px;background:rgba(0,0,0,.28);padding:12px;display:flex;align-items:center;gap:12px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.05)}
.user-card .av{width:36px;height:36px;border-radius:50%;background:#2445C4;color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--display);font-size:17px}
.user-card b{color:rgb(var(--spineink));font-size:13px;display:block}
.user-card span{color:rgb(var(--spineink) / .55);font-size:11px}
.nav-back{position:fixed;inset:0;z-index:55;background:rgba(0,0,0,.4);display:none}

.main{flex:1;min-width:0;display:flex;flex-direction:column}
.appbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:12px;
  padding:12px 24px;border-bottom:1px solid rgb(var(--line) / .1);
  background:rgb(var(--bg) / .9);backdrop-filter:blur(10px)}
.appbar h2{margin:0;font-family:var(--display);font-weight:500;font-size:26px;color:rgb(var(--ink))}
.live{display:inline-flex;align-items:center;gap:8px;background:rgb(var(--green) / .12);color:rgb(var(--green));
  padding:4px 12px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}
.live .dot{position:relative;width:8px;height:8px;border-radius:50%;background:rgb(var(--green))}
.live .dot::before{content:"";position:absolute;inset:0;border-radius:50%;background:rgb(var(--green));animation:pulse 1.9s ease-out infinite}
.live.busy{background:rgb(var(--mute) / .14);color:rgb(var(--inksoft))}
.live.busy .dot,.live.busy .dot::before{background:rgb(var(--mute))}
.live.err{background:rgb(var(--accent) / .12);color:rgb(var(--accent))}
.live.err .dot,.live.err .dot::before{background:rgb(var(--accent))}
.field-hint{margin:6px 0 0;font-size:12.5px;line-height:1.45;color:rgb(var(--mute))}
.appbar .spacer{margin-left:auto}
.appbar .actions{display:flex;align-items:center;gap:8px}

.content{padding:24px 28px 60px;max-width:1280px;width:100%;margin:0 auto}
.section-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}

/* ——— botones ——— */
.btn{display:inline-flex;align-items:center;gap:8px;border-radius:999px;border:1px solid rgb(var(--line) / .16);
  background:rgb(var(--surface));color:rgb(var(--inksoft));padding:9px 16px;font-size:14px;font-weight:500;
  cursor:pointer;transition:transform .12s ease,filter .2s,background .2s,box-shadow .2s;min-height:40px}
.btn:hover{background:rgb(var(--surface2))}
.btn:active{transform:scale(.96)}
.btn:disabled{opacity:.55;cursor:default}
.btn-accent{background:rgb(var(--accent));color:#fff;border-color:transparent;box-shadow:0 12px 28px -12px rgb(var(--accent) / .7)}
.btn-accent:hover{filter:brightness(1.07);background:rgb(var(--accent))}
.btn-lg{padding:14px 26px;font-size:15px;font-weight:600;border-radius:16px}
.btn-sm{padding:7px 13px;font-size:13px;min-height:36px}
.btn-danger{color:rgb(var(--accent));border-color:rgb(var(--accent) / .3)}
.btn-icon{padding:9px;border-radius:999px;min-width:40px;justify-content:center}

/* ——— cards ——— */
.card{background:rgb(var(--surface));border:1px solid rgb(var(--line) / .12);border-radius:22px;
  box-shadow:0 22px 48px -30px rgba(40,28,18,.5);transition:transform .3s cubic-bezier(.22,1,.36,1),box-shadow .3s}
.card.hover:hover{transform:translateY(-4px);box-shadow:0 28px 52px -28px rgba(40,28,18,.5)}
.grid{display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}

/* mini card de registro (grid) */
.item{overflow:hidden;cursor:pointer;display:flex;flex-direction:column;text-align:left;padding:0;font:inherit;color:inherit}
.item .cover{aspect-ratio:4/3;background:rgb(var(--surface2));position:relative;overflow:hidden}
.item .cover img{width:100%;height:100%;object-fit:cover;transition:transform .8s cubic-bezier(.22,1,.36,1)}
/* un cuadro no se recorta: se muestra entero, como colgado */
.item.obra .cover img{object-fit:contain;padding:16px;filter:drop-shadow(0 10px 14px rgba(30,26,23,.28))}
.item.hover:hover .cover img{transform:scale(1.05)}
.item .cover .noimg{position:absolute;inset:0;display:flex;flex-direction:column;gap:6px;align-items:center;justify-content:center;color:rgb(var(--mute) / .7);font-size:12px}
.item .cover .sello{position:absolute;left:12px;top:12px}
.item .body{padding:16px 18px}
.item .body h3{margin:0;font-family:var(--display);font-weight:500;font-size:21px;line-height:1.1;color:rgb(var(--ink))}
.item .body .sub{margin:4px 0 0;font-size:13px;color:rgb(var(--mute))}
.item .body .foot{margin-top:0;margin-bottom:8px;display:flex;align-items:center;justify-content:space-between;gap:8px}

/* stat cards (inicio) */
.stats{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));margin-top:22px}
.stat{padding:20px;border-radius:18px;background:rgb(var(--surface));border:1px solid rgb(var(--line) / .12);text-align:left;cursor:pointer;font:inherit;color:inherit}
.stat .top{display:flex;align-items:center;justify-content:space-between}
.stat .badge{width:40px;height:40px;border-radius:12px;background:rgb(var(--accent) / .1);color:rgb(var(--accent));display:flex;align-items:center;justify-content:center}
.stat .n{margin:14px 0 0;font-family:var(--display);font-size:40px;line-height:1;color:rgb(var(--ink))}
.stat .lbl{margin:4px 0 0;font-size:13px;color:rgb(var(--mute))}

/* guía rápida (inicio) */
.guide{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));margin-top:22px}
.guide-step{display:flex;gap:14px;align-items:flex-start;padding:20px;border-radius:18px;background:rgb(var(--surface));border:1px solid rgb(var(--line) / .12)}
.guide-step .gnum{flex-shrink:0;width:34px;height:34px;border-radius:50%;background:rgb(var(--accent) / .12);color:rgb(var(--accent));display:flex;align-items:center;justify-content:center;font-family:var(--display);font-size:18px}
.guide-step b{font-size:15px;color:rgb(var(--ink))}
.guide-step p{margin:3px 0 0;font-size:13.5px;color:rgb(var(--mute));line-height:1.45}
.nota{margin-top:22px;padding:22px 24px}
.nota h3{margin:4px 0 8px;font-family:var(--display);font-weight:500;font-size:22px}
.nota p{margin:0 0 6px;font-size:14px;line-height:1.55;color:rgb(var(--inksoft))}

/* hero oscuro (inicio) */
.hero-spine{position:relative;overflow:hidden;border-radius:26px;padding:30px;color:rgb(var(--spineink));
  background:linear-gradient(168deg,#221c17 0%,#15110E 55%,#0d0a08 100%);box-shadow:inset 0 0 0 1px rgba(0,0,0,.2)}
.hero-spine .glow{position:absolute;right:-40px;top:-40px;width:200px;height:200px;border-radius:50%;background:rgba(36,69,196,.38);filter:blur(44px)}
.hero-spine .eyebrow{color:rgb(var(--spineink) / .62)}
.hero-spine h3{margin:8px 0 0;font-family:var(--firma);font-weight:400;font-size:64px;line-height:.9}
.hero-spine p{margin:10px 0 0;max-width:32rem;color:rgb(var(--spineink) / .76);line-height:1.5}

/* fila publicar */
.publish-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:20px;padding:26px 28px;margin-top:22px}
.publish-row h3{margin:6px 0 0;font-family:var(--display);font-weight:500;font-size:28px;line-height:1.05;color:rgb(var(--ink))}
.publish-row .sub{margin:6px 0 0;font-size:13.5px;color:rgb(var(--mute))}

/* ——— formularios ——— */
.field{margin-bottom:16px}
.field > label{display:block;margin-bottom:6px;font-size:11.5px;font-weight:500;text-transform:uppercase;letter-spacing:.12em;color:rgb(var(--mute))}
.field input,.field textarea,.field select{
  width:100%;border-radius:12px;border:1px solid rgb(var(--line) / .15);background:rgb(var(--surface2));
  color:rgb(var(--ink));padding:11px 14px;font-size:16px;font-family:inherit;outline:none;transition:border .2s,box-shadow .2s}
.field input:focus,.field textarea:focus,.field select:focus{border-color:rgb(var(--accent));box-shadow:0 0 0 3px rgb(var(--accent) / .18)}
.field textarea{min-height:96px;resize:vertical;line-height:1.5}
.field label.switch{display:flex;align-items:center;gap:10px;margin:0;cursor:pointer;text-transform:none;letter-spacing:0;font-size:15px;color:rgb(var(--ink))}
.field label.switch input{width:20px;height:20px;flex:0 0 auto;padding:0;accent-color:rgb(var(--accent))}
.form-grid{display:grid;gap:0 14px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.money{display:flex;gap:8px}
.money select{width:96px;flex:0 0 auto}

/* pills / estado */
.pill{display:inline-flex;align-items:center;gap:6px;padding:4px 11px;border-radius:999px;font-size:11px;font-weight:600;
  text-transform:uppercase;letter-spacing:.08em;
  background:rgb(var(--surface2));color:rgb(var(--mute));border:1px solid rgb(var(--line) / .1)}
.pill.on{background:rgb(var(--green) / .14);color:rgb(var(--green));border-color:transparent}
.pill.vendida{background:rgb(var(--ink));color:rgb(var(--surface));border-color:transparent}
.pill.alerta{background:rgb(var(--accent) / .12);color:rgb(var(--accent));border-color:transparent}

/* ——— modal ——— */
.modal{position:fixed;inset:0;z-index:110;display:flex;align-items:center;justify-content:center;padding:16px}
.modal-bg{position:absolute;inset:0;background:rgba(0,0,0,.5);backdrop-filter:blur(4px)}
.modal-panel{position:relative;width:100%;max-width:580px;max-height:92vh;max-height:92dvh;overflow:hidden;
  display:flex;flex-direction:column;border-radius:26px;
  background:rgb(var(--surface));color:rgb(var(--ink));box-shadow:0 40px 80px -20px rgba(0,0,0,.5);
  border:1px solid rgb(var(--line) / .12);animation:fadeUp .35s cubic-bezier(.22,1,.36,1) both}
.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:22px 24px 6px;flex:0 0 auto}
.modal-head h3{margin:0;font-family:var(--display);font-weight:500;font-size:26px;color:rgb(var(--ink))}
.modal-body{padding:12px 24px 24px;flex:1 1 auto;overflow-y:auto;overscroll-behavior:contain}
.modal-foot{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;
  padding:16px 24px;background:rgb(var(--surface));border-top:1px solid rgb(var(--line) / .1)}

/* foto */
.uploader{display:flex;align-items:center;gap:14px;padding:14px;border-radius:16px;border:1px dashed rgb(var(--line) / .22);background:rgb(var(--surface2));margin-bottom:16px}
.uploader.invalid{border-color:rgb(var(--accent));box-shadow:0 0 0 3px rgb(var(--accent) / .14)}
.uploader .prev{width:84px;height:84px;border-radius:12px;object-fit:contain;background:rgb(var(--bg));flex:0 0 auto}
.uploader .prev.cubre{object-fit:cover}
.uploader .t{margin:0;font-weight:600;font-size:15px}
.uploader .h{margin:2px 0 0;font-size:12.5px;line-height:1.4;color:rgb(var(--mute))}
.uploader .err{margin:4px 0 0;font-size:12.5px;color:rgb(var(--accent))}
.casa-box{padding:14px;border-radius:16px;border:1px solid rgb(var(--line) / .12);background:rgb(var(--surface2) / .6);margin-bottom:16px}
.casa-box .uploader{margin:12px 0 0;background:rgb(var(--surface))}
.casa-box .field{margin:12px 0 0}

/* textos */
.grupo-t{margin:26px 0 12px;font-family:var(--display);font-weight:500;font-size:22px;color:rgb(var(--ink))}
.grupo-t:first-of-type{margin-top:6px}
.texto-card{padding:20px 22px}
.texto-card .acciones{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;margin-top:4px}

/* ——— overlay publicando ——— */
.pub-overlay{position:fixed;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.45);backdrop-filter:blur(4px)}
.pub-box{display:flex;flex-direction:column;align-items:center;gap:16px;background:rgb(var(--surface));padding:36px 44px;border-radius:26px;text-align:center;box-shadow:0 40px 80px -20px rgba(0,0,0,.5)}
.spinner{width:48px;height:48px;border-radius:50%;border:3px solid rgb(var(--line) / .2);border-top-color:rgb(var(--accent));animation:spin .8s linear infinite}
.pub-box h3{margin:0;font-family:var(--display);font-weight:500;font-size:24px;color:rgb(var(--ink))}

/* ——— toasts ——— */
.toasts{position:fixed;right:18px;bottom:18px;z-index:130;display:flex;flex-direction:column;gap:10px;max-width:360px}
.toast{display:flex;align-items:center;gap:12px;background:rgb(var(--surface));border-radius:14px;padding:13px 16px;min-width:240px;
  box-shadow:0 22px 48px -18px rgba(40,28,18,.5);border:1px solid rgb(var(--line) / .12);font-size:14px;line-height:1.4;color:rgb(var(--ink));
  animation:fadeUp .4s cubic-bezier(.22,1,.36,1) both}
.toast .bar{width:4px;align-self:stretch;border-radius:4px;background:rgb(var(--green));flex:0 0 auto}
.toast.err .bar{background:rgb(var(--accent))}

/* ——— login ——— */
.login{position:fixed;inset:0;z-index:100;display:grid;grid-template-columns:1fr 1fr;background:rgb(var(--bg))}
.login .pane{display:flex;align-items:center;justify-content:center;padding:32px;position:relative;overflow:auto}
.login form{width:100%;max-width:360px;animation:fadeUp .6s ease both}
.login .logo{width:64px;height:64px;border-radius:18px;background:rgb(var(--spine));color:rgb(var(--spineink));display:flex;align-items:center;justify-content:center;font-family:var(--display);font-size:32px;margin:0 auto 14px}
.login h1{margin:0;text-align:center;font-family:var(--firma);font-weight:400;font-size:76px;line-height:.9;color:rgb(var(--ink))}
.login .kick{margin:8px 0 26px;text-align:center}
.login .err{color:rgb(var(--accent));font-size:13.5px;margin:10px 0 0;text-align:center;line-height:1.4}
.login .hint{margin:18px 0 0;text-align:center;font-size:12.5px;color:rgb(var(--mute))}
.login .art{background-size:cover;background-position:center;position:relative}
.login .art::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(21,17,14,.1),rgba(21,17,14,.62))}
.login .art .cap{position:absolute;left:28px;right:28px;bottom:28px;color:#fff;z-index:1}
.login .art .cap .eyebrow{color:rgba(255,255,255,.82)}
.login .art .cap .t{font-family:var(--display);font-style:italic;font-size:30px;line-height:1.05;margin-top:6px}
.center-load{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;color:rgb(var(--mute))}

/* ——— responsive ——— */
/* Va ANTES del @media: escrita después, pisaba el display del celular y el menú no aparecía. */
.burger{display:none}
@media (max-width:860px){
  .sidebar{position:fixed;z-index:60;transform:translateX(-100%);transition:transform .3s;height:100vh;height:100dvh}
  .sidebar.open{transform:none}
  .sidebar.open + .nav-back{display:block}
  .login{grid-template-columns:1fr}
  .login .art{display:none}
  .content{padding:16px}
  .appbar{padding:12px 16px}
  .burger{display:inline-flex}
  /* El encabezado no entra en una línea: título + estado arriba, acciones abajo. */
  .appbar{flex-wrap:wrap;row-gap:10px}
  .appbar .spacer{display:none}
  .appbar .actions{width:100%;justify-content:flex-end}
  .toasts{left:16px;right:16px;max-width:none}
  .modal{padding:0;align-items:flex-end}
  .modal-panel{max-width:none;border-radius:22px 22px 0 0;max-height:94vh;max-height:94dvh}
  .modal-head,.modal-body,.modal-foot{padding-left:18px;padding-right:18px}
  .modal-foot{padding-bottom:calc(16px + env(safe-area-inset-bottom,0px))}
}
@media (max-width:520px){
  /* «Ver la web» queda solo con el ícono. */
  .appbar .actions a.btn-sm .txt{display:none}
  .appbar h2{font-size:22px}
  .grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
  .item .body{padding:12px}
  .item .body h3{font-size:17px}
  .item .body .foot{flex-wrap:wrap;gap:4px}
  .hero-spine h3{font-size:54px}
}

@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* Campo obligatorio sin completar. Usa el acento de marca. */
.field.invalid select,.field.invalid input,.field.invalid textarea{border-color:rgb(var(--accent));box-shadow:0 0 0 3px rgb(var(--accent) / .14)}
.field .field-error{margin:6px 0 0;font-size:12.5px;color:rgb(var(--accent));text-transform:none;letter-spacing:0}
