/* CaHB Studio · estilos de la app interna */
@font-face{font-family:"Montserrat";src:url(fonts/Montserrat-400.ttf);font-weight:400}
@font-face{font-family:"Montserrat";src:url(fonts/Montserrat-500.ttf);font-weight:500}
@font-face{font-family:"Montserrat";src:url(fonts/Montserrat-600.ttf);font-weight:600 700}
@font-face{font-family:"Cormorant";src:url(fonts/CormorantGaramond-500.ttf);font-weight:500}
:root{
  --navy:#0B1B3A; --blue:#1F5FD1; --blue-soft:#e8f0fe; --bg:#f4f6fa; --paper:#fff; --ink:#0f172a; --muted:#5b6475;
  --line:#e2e6ee; --ok:#1f7a55; --ok-soft:#e3f2ea; --chg:#b4501c; --chg-soft:#fbeadf; --warn:#8a6100; --warn-soft:#fff6dc;
  --red:#c62828; --dot:#7a3fe0; --radius:12px;
  --sans:"Montserrat",ui-sans-serif,system-ui,sans-serif;
  color-scheme:light;
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font:14px/1.55 var(--sans)}
a{color:var(--blue);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3{margin:0;line-height:1.2}
h1{font-size:1.55rem;font-weight:600}
h2{font-size:1.1rem;font-weight:600}
h3{font-size:.95rem;font-weight:600}
.muted{color:var(--muted)}
.small{font-size:.82rem}

/* Estructura */
.app{display:grid;grid-template-columns:240px minmax(0,1fr);min-height:100vh}
.side{background:var(--navy);color:#cfd8ea;padding:20px 14px;display:flex;flex-direction:column;gap:18px;position:sticky;top:0;height:100vh;overflow:auto}
.side .brand{display:flex;align-items:center;gap:10px;padding:4px 8px}
.side .brand img{height:38px;filter:brightness(0) invert(1)}
.side .brand span{font-weight:600;color:#fff;letter-spacing:.14em;font-size:.72rem}
.side nav{display:flex;flex-direction:column;gap:2px}
.side nav a{color:#cfd8ea;padding:9px 10px;border-radius:8px;display:flex;justify-content:space-between;align-items:center;gap:8px}
.side nav a:hover,.side nav a.on{background:rgba(255,255,255,.08);color:#fff;text-decoration:none}
.side .lbl{font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:#7f8db0;padding:0 10px}
.side .foot{margin-top:auto;font-size:.8rem;padding:0 10px;display:flex;flex-direction:column;gap:4px}
.side .foot a{color:#cfd8ea}
.badge{background:#e2483d;color:#fff;font-size:.7rem;font-weight:600;padding:2px 7px;border-radius:999px}
.main{padding:28px 32px 80px;min-width:0}
.top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:22px}
.top .crumbs{font-size:.8rem;color:var(--muted);margin-bottom:4px}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:22px;overflow-x:auto}
.tabs a{padding:10px 14px;color:var(--muted);font-weight:500;border-bottom:2px solid transparent;white-space:nowrap}
.tabs a.on{color:var(--ink);border-color:var(--blue)}
.tabs a:hover{text-decoration:none;color:var(--ink)}

/* Componentes */
.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:20px}
.grid{display:grid;gap:16px}
.g2{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}
.g3{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.between{justify-content:space-between}
.stack{display:flex;flex-direction:column;gap:12px}
.btn{display:inline-flex;align-items:center;gap:6px;font:600 .84rem/1 var(--sans);padding:10px 14px;border-radius:8px;border:1px solid var(--line);background:var(--paper);color:var(--ink);cursor:pointer;white-space:nowrap}
.btn:hover{border-color:#b8c2d6;text-decoration:none}
.btn.pri{background:var(--blue);border-color:var(--blue);color:#fff}
.btn.pri:hover{background:#1a52b8}
.btn.ok{background:var(--ok);border-color:var(--ok);color:#fff}
.btn.chg{background:var(--chg);border-color:var(--chg);color:#fff}
.btn.danger{color:var(--red)}
.btn.sm{padding:7px 10px;font-size:.78rem}
.btn:disabled{opacity:.5;cursor:default}
.btn:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid rgba(31,95,209,.35);outline-offset:1px}
.chip{display:inline-flex;align-items:center;gap:5px;font:600 .72rem/1 var(--sans);padding:6px 10px;border-radius:999px;background:#eef1f6;color:var(--muted);white-space:nowrap}
.chip.ok{background:var(--ok-soft);color:var(--ok)}
.chip.chg{background:var(--chg-soft);color:var(--chg)}
.chip.warn{background:var(--warn-soft);color:var(--warn)}
.chip.blue{background:var(--blue-soft);color:var(--blue)}
.chip.dark{background:var(--navy);color:#fff}
label{display:flex;flex-direction:column;gap:5px;font-weight:500;font-size:.82rem;color:var(--muted)}
input[type=text],input[type=email],input[type=password],input[type=number],input[type=time],input[type=date],select,textarea{
  font:14px/1.4 var(--sans);color:var(--ink);padding:9px 11px;border:1px solid var(--line);border-radius:8px;background:#fff;width:100%}
textarea{resize:vertical;min-height:80px}
input[type=color]{width:46px;height:36px;border:1px solid var(--line);border-radius:8px;padding:2px;background:#fff}
.check{flex-direction:row;align-items:center;gap:8px;color:var(--ink);font-weight:500}
.alert{padding:12px 14px;border-radius:10px;font-size:.88rem}
.alert.warn{background:var(--warn-soft);color:#5a4100;border:1px solid #f0dfaf}
.alert.ok{background:var(--ok-soft);color:var(--ok)}
.alert.err{background:#fdecea;color:var(--red)}
.alert ul{margin:6px 0 0;padding-left:1.2em}
table.t{width:100%;border-collapse:collapse}
table.t th{text-align:left;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:600;padding:8px 10px;border-bottom:1px solid var(--line)}
table.t td{padding:10px;border-bottom:1px solid var(--line);vertical-align:top}
.empty{text-align:center;color:var(--muted);padding:40px 20px}

/* Panel de clientes */
.ccard{display:flex;flex-direction:column;gap:14px}
.ccard .logo{height:54px;display:flex;align-items:center}
.ccard .logo img{max-height:54px;max-width:180px;object-fit:contain}
.ccard .logo b{font-size:1.15rem}
.mrow{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;background:#f7f9fc;border-radius:10px}
.bar{height:6px;border-radius:99px;background:#e7ebf2;overflow:hidden;display:flex}
.bar i{display:block;height:100%}
.bar .a{background:var(--ok)} .bar .c{background:var(--chg)}
.feed{display:flex;flex-direction:column}
.feed div{padding:9px 0;border-bottom:1px solid var(--line);font-size:.85rem}
.feed div:last-child{border:0}

/* Calendario */
.cal{overflow-x:auto}
.cal table{width:100%;min-width:620px;border-collapse:separate;border-spacing:6px;table-layout:fixed}
.cal th{background:var(--navy);color:#fff;border-radius:999px;font:600 .72rem/1 var(--sans);padding:8px 0;letter-spacing:.08em}
.cal td{vertical-align:top;background:#f7f9fc;border-radius:10px;height:86px;padding:8px;font-size:.78rem}
.cal td.vacio{background:transparent}
.cal td.bloq{background:#fbf3ea}
.cal td.drop{outline:2px dashed var(--blue)}
.cal .n{font-weight:600;font-size:.95rem}
.cal .ef .n,.cal td.ef .n{color:var(--red)}
.cal .efn{color:var(--red);font-size:.66rem;line-height:1.2;margin-top:2px}
.cal .pz{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px}
.cal .pz a{display:inline-flex;align-items:center;gap:4px;font:600 .68rem/1 var(--sans);padding:4px 6px;border-radius:6px;background:var(--dot);color:#fff;cursor:grab}
.cal .pz a.h{background:#fff;color:var(--dot);border:1.5px solid var(--dot)}
.cal .pz a.st-aprobada{box-shadow:0 0 0 2px var(--ok)}
.cal .pz a.st-cambios{box-shadow:0 0 0 2px var(--chg)}
.cal .pz a.x{background:#e2483d}
.cal .add{opacity:0;font-size:.7rem;color:var(--blue);cursor:pointer;border:0;background:none;padding:0;margin-top:4px}
.cal td:hover .add{opacity:1}

/* Editor de piezas */
.pieza{display:grid;grid-template-columns:300px minmax(0,1fr);gap:24px;scroll-margin-top:20px}
.pieza .img{position:relative}
.pieza .img img{width:100%;border-radius:10px;display:block;background:#e7ebf2}
.pieza .img .cargando{position:absolute;inset:0;background:rgba(255,255,255,.7);display:none;align-items:center;justify-content:center;border-radius:10px;font-weight:600}
.pieza.busy .img .cargando{display:flex}
.pieza .head{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.pieza .fields{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.pieza .fields .w2{grid-column:span 2}
.pieza .fields .w4{grid-column:1/-1}
.pieza textarea.copy{min-height:220px;font-size:.9rem}
.pieza .revs{border-top:1px solid var(--line);padding-top:12px;display:flex;flex-direction:column;gap:8px}
.rev{border-left:3px solid var(--line);padding:4px 0 4px 10px;font-size:.85rem}
.rev.aprobada{border-color:var(--ok)} .rev.cambios{border-color:var(--chg)} .rev.resuelto{border-color:var(--blue)}
.fotos-pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px;max-height:60vh;overflow:auto}
.fotos-pick button{padding:0;border:2px solid transparent;border-radius:8px;overflow:hidden;cursor:pointer;background:none;position:relative}
.fotos-pick button.sel{border-color:var(--blue)}
.fotos-pick img{width:100%;height:110px;object-fit:cover;display:block}
.fotos-pick span{position:absolute;left:0;right:0;bottom:0;background:rgba(0,0,0,.55);color:#fff;font-size:.62rem;padding:3px 5px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
dialog{border:0;border-radius:14px;padding:22px;max-width:min(860px,94vw);width:100%;box-shadow:0 20px 60px rgba(0,0,0,.25)}
dialog::backdrop{background:rgba(11,27,58,.45)}
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--navy);color:#fff;padding:12px 18px;border-radius:10px;font-weight:500;z-index:50;opacity:0;transition:opacity .2s;pointer-events:none}
.toast.on{opacity:1}

/* Biblioteca de fotos */
.fotos{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px}
.foto{background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden;display:flex;flex-direction:column}
.foto img{width:100%;height:160px;object-fit:cover;display:block;cursor:crosshair}
.foto .b{padding:10px;display:flex;flex-direction:column;gap:6px}
.foto.off{opacity:.5}

/* Login */
.auth{min-height:100vh;display:grid;place-items:center;background:linear-gradient(160deg,#0B1B3A,#13306b);padding:16px}
.auth .card{width:min(400px,100%);display:flex;flex-direction:column;gap:14px;padding:30px}
.auth img{height:56px;align-self:center}

@media (max-width:900px){
  .app{grid-template-columns:1fr}
  .side{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;padding:12px 16px;gap:10px}
  .side nav{flex-direction:row;flex-wrap:wrap}
  .side .lbl,.side .clist{display:none}
  .side .foot{margin:0;flex-direction:row;gap:12px}
  .main{padding:20px 16px 60px}
  .pieza{grid-template-columns:1fr}
  .pieza .fields{grid-template-columns:1fr 1fr}
}
@media print{.side,.no-print{display:none!important}.app{display:block}.main{padding:0}}
