/* ==========================================================
   BookEasy · Hoja de estilos
   Paleta tomada de la presentación: carbón + amarillo
   ========================================================== */
:root{
  --ink:#1E2228; --ink-2:#2A3038; --ink-3:#3A424C;
  --yellow:#F2B705; --yellow-d:#D9A300; --yellow-soft:#FBE9A6; --yellow-bg:#FFF8DC;
  --bg:#F0F1F3; --card:#fff; --line:#D5D8DB; --line-2:#E3E5E8;
  --text:#1E2228; --muted:#5B6470; --faint:#8A929C;
  --green:#2E9E5B; --green-bg:#E3F4EA;
  --red:#D64545;   --red-bg:#FBE6E6;
  --blue:#2F7BC4;  --blue-bg:#E2EEF9;
  --teal:#13908C;  --teal-bg:#DEF3F2;
  --amber:#B7820A; --amber-bg:#FFF1C2;
  --gray:#5B6470;  --gray-bg:#E9EBEE;
  --r:14px; --r-sm:10px;
  --shadow:0 1px 2px rgba(30,34,40,.06),0 4px 14px rgba(30,34,40,.05);
  --shadow-lg:0 12px 40px rgba(30,34,40,.18);
  --font:"Segoe UI","Inter","Helvetica Neue",Roboto,Arial,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{font-family:var(--font);background:var(--bg);color:var(--text);font-size:14.5px;line-height:1.5;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;border:0;background:none}
h1,h2,h3,h4{line-height:1.25;letter-spacing:-.01em}
.ic{width:20px;height:20px;flex:none}
.muted{color:var(--muted)} .faint{color:var(--faint)} .mono{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.92em}
.right{text-align:right} .center{text-align:center}
.hide{display:none!important}

/* ---------- Layout de la app ---------- */
.app{display:grid;grid-template-columns:256px 1fr;min-height:100vh}
.sidebar{background:var(--ink);color:#C9CED4;display:flex;flex-direction:column;padding:22px 16px;position:sticky;top:0;height:100vh;overflow-y:auto}
.brand{display:flex;align-items:center;gap:10px;padding:2px 8px 18px}
.brand-mark{width:36px;height:36px;border-radius:10px;background:var(--yellow);color:var(--ink);display:grid;place-items:center}
.brand-name{font-size:21px;font-weight:600;color:#fff;letter-spacing:-.02em}
.brand-name b{color:var(--yellow);font-weight:700}
.side-bodega{background:var(--ink-2);border-radius:12px;padding:12px 14px;margin-bottom:10px}
.side-bodega small{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#8A929C}
.side-bodega strong{color:#fff;font-weight:600;font-size:14px}
.nav{flex:1}
.nav-group{font-size:11px;text-transform:uppercase;letter-spacing:.09em;color:#6E7782;margin:18px 10px 6px}
.nav-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:10px;color:#C9CED4;font-weight:500;transition:.15s;margin-bottom:2px}
.nav-item:hover{background:var(--ink-2);color:#fff}
.nav-item.active{background:var(--yellow);color:var(--ink);font-weight:600}
.side-foot{border-top:1px solid var(--ink-3);padding-top:12px;margin-top:14px}
.side-user{display:flex;align-items:center;gap:10px;padding:6px 8px 10px}
.side-user strong{display:block;color:#fff;font-size:13.5px;font-weight:600}
.side-user small{color:#8A929C;font-size:12px}
.avatar{width:36px;height:36px;border-radius:50%;background:var(--yellow-soft);color:var(--ink);display:grid;place-items:center;font-weight:700;font-size:13px;flex:none}

.main{min-width:0;display:flex;flex-direction:column}
.topbar{display:flex;align-items:center;gap:16px;padding:18px 32px;background:rgba(240,241,243,.9);backdrop-filter:blur(8px);position:sticky;top:0;z-index:20;border-bottom:1px solid var(--line-2)}
.topbar-title h1{font-size:23px;font-weight:700}
.topbar-title p{color:var(--muted);font-size:13.5px;margin-top:1px}
.topbar-right{margin-left:auto;display:flex;align-items:center;gap:12px}
.today{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);padding:8px 14px;border-radius:999px;font-size:13px;color:var(--muted)}
.today .ic{width:16px;height:16px}
.icon-btn{width:40px;height:40px;border-radius:50%;background:#fff;border:1px solid var(--line);display:grid;place-items:center;position:relative;color:var(--ink)}
.icon-btn:hover{border-color:var(--ink)}
.icon-btn .dot{position:absolute;top:9px;right:10px;width:8px;height:8px;border-radius:50%;background:var(--yellow);border:2px solid #fff}
.menu-btn{display:none}
.content{padding:26px 32px 40px;flex:1}
.foot{padding:16px 32px 24px;color:var(--faint);font-size:12.5px;text-align:center}
.scrim{display:none}

/* ---------- Componentes ---------- */
.card{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);padding:22px}
.card-flat{background:#fff;border:1px solid var(--line-2);border-radius:var(--r);padding:20px}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.card-head h2,.card-head h3{font-size:16.5px;font-weight:700;display:flex;align-items:center;gap:10px}
.card-head h2::before,.card-head h3::before{content:"";width:12px;height:12px;border-radius:50%;background:var(--yellow);flex:none}
.card-head p{color:var(--muted);font-size:13px}
.grid{display:grid;gap:20px}
.g2{grid-template-columns:repeat(2,1fr)} .g3{grid-template-columns:repeat(3,1fr)} .g4{grid-template-columns:repeat(4,1fr)}
.g-main{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}
.mt{margin-top:20px}.mt-s{margin-top:12px}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 18px;border-radius:10px;font-weight:600;font-size:14px;transition:.15s;white-space:nowrap;border:1px solid transparent}
.btn .ic{width:18px;height:18px}
.btn-primary{background:var(--yellow);color:var(--ink)}
.btn-primary:hover{background:var(--yellow-d)}
.btn-dark{background:var(--ink);color:#fff}
.btn-dark:hover{background:var(--ink-3)}
.btn-ghost{background:#fff;border-color:var(--line);color:var(--ink)}
.btn-ghost:hover{border-color:var(--ink)}
.btn-danger{background:var(--red-bg);color:var(--red)}
.btn-danger:hover{background:#f6d3d3}
.btn-sm{padding:7px 12px;font-size:13px;border-radius:8px}
.btn-lg{padding:14px 22px;font-size:15.5px;border-radius:12px}
.btn-block{width:100%}

.badge{display:inline-flex;align-items:center;gap:7px;padding:4px 11px;border-radius:999px;font-size:12.5px;font-weight:600;white-space:nowrap}
.badge i{width:7px;height:7px;border-radius:50%;background:currentColor}
.b-gray{background:var(--gray-bg);color:var(--gray)} .b-amber{background:var(--amber-bg);color:var(--amber)}
.b-blue{background:var(--blue-bg);color:var(--blue)} .b-teal{background:var(--teal-bg);color:var(--teal)}
.b-green{background:var(--green-bg);color:var(--green)} .b-red{background:var(--red-bg);color:var(--red)}
.pill{display:inline-block;padding:3px 10px;border-radius:999px;background:var(--gray-bg);color:var(--muted);font-size:12px;font-weight:600}
.pill-y{background:var(--yellow-soft);color:#6a4d00}
.pill-dark{background:var(--ink);color:var(--yellow)}

/* KPI */
.kpi{display:flex;gap:14px;align-items:flex-start}
.kpi .ico{width:46px;height:46px;border-radius:12px;background:var(--yellow-bg);color:var(--amber);display:grid;place-items:center;flex:none}
.kpi .ico.dark{background:var(--ink);color:var(--yellow)}
.kpi .ico.red{background:var(--red-bg);color:var(--red)}
.kpi .ico.green{background:var(--green-bg);color:var(--green)}
.kpi small{color:var(--muted);font-size:13px;display:block}
.kpi strong{font-size:28px;font-weight:700;letter-spacing:-.02em;line-height:1.15;display:block}
.kpi em{font-style:normal;font-size:12.5px;color:var(--faint)}

/* Tablas */
.table-wrap{overflow-x:auto;margin:0 -6px}
table{width:100%;border-collapse:collapse;min-width:640px}
th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--faint);font-weight:600;padding:10px 12px;border-bottom:1px solid var(--line)}
td{padding:13px 12px;border-bottom:1px solid var(--line-2);vertical-align:middle}
tbody tr:hover{background:#FAFAFB}
tbody tr:last-child td{border-bottom:0}
td strong{font-weight:600}
td small{display:block;color:var(--faint);font-size:12.5px}
tr.row-alert td{background:#FFF6F6}

/* Formularios */
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}
.field label{font-size:13px;font-weight:600;color:var(--ink-3)}
.field .hint{font-size:12.5px;color:var(--faint)}
.input,.select,textarea{width:100%;padding:11px 14px;background:#fff;border:1px solid var(--line);border-radius:10px;outline:0;transition:.15s}
.input:focus,.select:focus,textarea:focus{border-color:var(--yellow);box-shadow:0 0 0 4px rgba(242,183,5,.22)}
.input-icon{position:relative}
.input-icon .ic{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--faint);width:18px;height:18px}
.input-icon .input{padding-left:42px}
textarea{resize:vertical;min-height:90px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.row3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.toolbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:18px}
.toolbar .grow{flex:1;min-width:200px}
.seg{display:inline-flex;background:#fff;border:1px solid var(--line);border-radius:10px;padding:3px}
.seg button{padding:7px 14px;border-radius:8px;font-weight:600;font-size:13.5px;color:var(--muted)}
.seg button.on{background:var(--ink);color:#fff}
.switch{position:relative;width:44px;height:25px;flex:none}
.switch input{opacity:0;width:0;height:0}
.switch span{position:absolute;inset:0;background:var(--line);border-radius:99px;transition:.2s;cursor:pointer}
.switch span::after{content:"";position:absolute;width:19px;height:19px;border-radius:50%;background:#fff;left:3px;top:3px;transition:.2s;box-shadow:0 1px 3px rgba(0,0,0,.25)}
.switch input:checked+span{background:var(--yellow)}
.switch input:checked+span::after{transform:translateX(19px)}
.setting{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 0;border-bottom:1px solid var(--line-2)}
.setting:last-child{border-bottom:0}
.setting strong{display:block;font-weight:600}.setting small{color:var(--muted)}

/* Barras de progreso */
.bar{height:8px;background:var(--line-2);border-radius:99px;overflow:hidden}
.bar i{display:block;height:100%;background:var(--yellow);border-radius:99px}
.bar.warn i{background:#E98A15}.bar.danger i{background:var(--red)}.bar.ok i{background:var(--green)}

/* Gráfica de barras CSS */
.chart{display:flex;align-items:flex-end;gap:14px;height:190px;padding-top:10px;border-bottom:1px solid var(--line)}
.chart .col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;gap:6px}
.chart .col b{font-size:12px;color:var(--muted);font-weight:600}
.chart .col span{width:100%;max-width:46px;background:var(--yellow);border-radius:8px 8px 0 0;min-height:4px}
.chart .col.hot span{background:var(--ink)}
.chart-x{display:flex;gap:14px;margin-top:8px}
.chart-x span{flex:1;text-align:center;font-size:12.5px;color:var(--faint)}
.limit-note{display:flex;align-items:center;gap:8px;margin-top:14px;font-size:12.5px;color:var(--muted)}
.limit-note i{width:18px;height:0;border-top:2px dashed var(--red)}

/* Listas */
.list-item{display:flex;align-items:center;gap:14px;padding:12px 0;border-bottom:1px solid var(--line-2)}
.list-item:last-child{border-bottom:0}
.list-item .grow{flex:1;min-width:0}
.list-item strong{font-weight:600}
.list-item small{display:block;color:var(--muted);font-size:12.5px}
.truck-ico{width:42px;height:42px;border-radius:11px;background:var(--yellow-bg);color:var(--amber);display:grid;place-items:center;flex:none}

/* Alertas */
.alert{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border-radius:12px;background:var(--yellow-bg);border:1px solid var(--yellow-soft);margin-bottom:18px}
.alert .ic{color:var(--amber);margin-top:1px}
.alert.red{background:var(--red-bg);border-color:#f1c3c3}.alert.red .ic{color:var(--red)}
.alert.dark{background:var(--ink);border-color:var(--ink);color:#fff}.alert.dark .ic{color:var(--yellow)}
.alert strong{display:block}.alert small{color:inherit;opacity:.8}

/* Modal */
.modal{position:fixed;inset:0;background:rgba(30,34,40,.55);display:none;align-items:center;justify-content:center;padding:20px;z-index:100}
.modal.open{display:flex;animation:fade .18s}
.modal-box{background:#fff;border-radius:18px;width:100%;max-width:520px;max-height:92vh;overflow:auto;box-shadow:var(--shadow-lg);animation:pop .22s}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--line-2)}
.modal-head h3{font-size:18px}
.modal-body{padding:22px 24px}
.modal-foot{padding:16px 24px;border-top:1px solid var(--line-2);display:flex;justify-content:flex-end;gap:10px;background:#FAFAFB;border-radius:0 0 18px 18px}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes pop{from{transform:translateY(12px) scale(.98);opacity:0}to{transform:none;opacity:1}}

/* Toast */
.toast-wrap{position:fixed;right:20px;bottom:20px;display:flex;flex-direction:column;gap:10px;z-index:200}
.toast{background:var(--ink);color:#fff;padding:13px 18px;border-radius:12px;box-shadow:var(--shadow-lg);display:flex;align-items:center;gap:10px;animation:pop .25s;font-weight:500;max-width:360px}
.toast .ic{color:var(--yellow)}

/* Timeline */
.timeline{position:relative;padding-left:6px}
.tl-item{position:relative;display:flex;gap:16px;padding-bottom:22px}
.tl-item:last-child{padding-bottom:0}
.tl-item::before{content:"";position:absolute;left:13px;top:28px;bottom:-2px;width:2px;background:var(--line)}
.tl-item:last-child::before{display:none}
.tl-dot{width:28px;height:28px;border-radius:50%;border:2px solid var(--line);background:#fff;display:grid;place-items:center;flex:none;z-index:1;color:#fff}
.tl-dot .ic{width:14px;height:14px}
.tl-item.done .tl-dot{background:var(--green);border-color:var(--green)}
.tl-item.done::before{background:var(--green)}
.tl-item.now .tl-dot{background:var(--yellow);border-color:var(--yellow);color:var(--ink);box-shadow:0 0 0 6px rgba(242,183,5,.25)}
.tl-body strong{display:block;font-weight:600}
.tl-body small{color:var(--muted)}
.tl-item:not(.done):not(.now) .tl-body strong{color:var(--faint)}

/* Calendario */
.cal{display:grid;overflow-x:auto;border:1px solid var(--line-2);border-radius:var(--r);background:#fff}
.cal-inner{display:grid;grid-template-columns:64px repeat(3,minmax(190px,1fr));min-width:760px}
.cal-h{padding:12px;font-weight:700;text-align:center;border-bottom:1px solid var(--line);background:#FAFAFB;position:sticky;top:0}
.cal-h small{display:block;color:var(--faint);font-weight:500;font-size:12px}
.cal-times div{height:64px;font-size:12px;color:var(--faint);text-align:right;padding:0 10px;transform:translateY(-8px)}
.cal-col{position:relative;border-left:1px solid var(--line-2);background:
   repeating-linear-gradient(to bottom,transparent 0,transparent 63px,var(--line-2) 63px,var(--line-2) 64px)}
.cal-ev{position:absolute;left:6px;right:6px;border-radius:9px;padding:6px 10px;font-size:12.5px;border-left:4px solid;overflow:hidden;cursor:pointer;transition:.15s}
.cal-ev:hover{transform:translateY(-1px);box-shadow:var(--shadow)}
.cal-ev strong{display:block;font-weight:700;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-ev span{color:inherit;opacity:.85;white-space:nowrap}
.ev-gray{background:var(--gray-bg);border-color:var(--gray);color:#3a414a}
.ev-amber{background:var(--amber-bg);border-color:var(--yellow);color:#6a4d00}
.ev-blue{background:var(--blue-bg);border-color:var(--blue);color:#1d4f80}
.ev-teal{background:var(--teal-bg);border-color:var(--teal);color:#0b5c59}
.ev-green{background:var(--green-bg);border-color:var(--green);color:#1d6a3d}
.ev-red{background:var(--red-bg);border-color:var(--red);color:#8f2b2b}
.now-line{position:absolute;left:0;right:0;border-top:2px solid var(--red);z-index:3}
.now-line::before{content:"";position:absolute;left:-5px;top:-6px;width:9px;height:9px;border-radius:50%;background:var(--red)}
.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12.5px;color:var(--muted)}
.legend span{display:inline-flex;align-items:center;gap:6px}
.legend i{width:10px;height:10px;border-radius:3px}

/* Plan */
.plan{position:relative;display:flex;flex-direction:column}
.plan.current{border:2px solid var(--yellow)}
.plan .tag{position:absolute;top:-12px;left:20px}
.plan h3{font-size:19px}
.price{font-size:32px;font-weight:700;letter-spacing:-.02em;margin:10px 0 2px}
.price small{font-size:14px;color:var(--muted);font-weight:500}
.plan ul{list-style:none;margin:16px 0 22px;flex:1}
.plan li{display:flex;gap:10px;padding:6px 0;color:var(--ink-3)}
.plan li .ic{color:var(--green);width:18px;height:18px;margin-top:2px}

/* ---------- Operario ---------- */
.dock-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.dock{background:#fff;border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column;border-top:6px solid var(--line)}
.dock.s-operando{border-top-color:var(--teal)} .dock.s-en_muelle{border-top-color:var(--blue)}
.dock.s-llego{border-top-color:var(--yellow)} .dock.s-libre{border-top-color:var(--green)}
.dock-head{display:flex;justify-content:space-between;align-items:center;padding:16px 20px 0}
.dock-head h3{font-size:18px}
.dock-body{padding:14px 20px 18px;flex:1;display:flex;flex-direction:column}
.plate{display:inline-block;background:var(--yellow);color:var(--ink);font-weight:800;letter-spacing:.1em;border:2px solid var(--ink);border-radius:8px;padding:2px 12px;font-size:20px;font-family:ui-monospace,Menlo,Consolas,monospace}
.dock-meta{margin:10px 0 14px;color:var(--muted);font-size:13.5px}
.dock-meta b{color:var(--ink)}
.timer-box{background:var(--ink);color:#fff;border-radius:12px;padding:12px 16px;display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.timer-box small{color:#9AA2AC;font-size:12px;display:block}
.timer-box .timer{font-size:24px;font-weight:700;letter-spacing:.02em;color:var(--yellow);font-variant-numeric:tabular-nums}
.timer-box.warn .timer{color:#FF9B4A}.timer-box.danger .timer{color:#FF6B6B}
.dock-actions{display:grid;gap:8px;margin-top:auto}
.dock-free{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:var(--muted);padding:26px 0;gap:8px}
.dock-free .ic{width:38px;height:38px;color:var(--green)}
.queue-card{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--line-2);border-radius:12px;margin-bottom:10px;background:#fff}
.queue-card .grow{flex:1;min-width:0}
.queue-card .t{font-variant-numeric:tabular-nums;font-weight:700;font-size:15px}

/* ---------- Conductor ---------- */
.driver-body{background:var(--ink);min-height:100vh;display:flex;justify-content:center;padding:20px 14px 40px}
.driver{width:100%;max-width:460px}
.driver-top{display:flex;align-items:center;justify-content:space-between;color:#fff;padding:6px 4px 18px}
.driver-top .brand{padding:0}
.driver-hero{background:var(--yellow);color:var(--ink);border-radius:22px;padding:22px;position:relative;overflow:hidden}
.driver-hero small{font-weight:600;opacity:.75;text-transform:uppercase;letter-spacing:.08em;font-size:11.5px}
.driver-hero .big{font-size:46px;font-weight:800;letter-spacing:-.03em;line-height:1.05;margin:4px 0}
.driver-hero .plate{background:#fff}
.driver-hero .pos{margin-top:16px;background:rgba(30,34,40,.1);border-radius:14px;padding:12px 14px;display:flex;justify-content:space-between;align-items:center}
.driver-hero .pos b{font-size:18px}
.dcard{background:#fff;border-radius:20px;padding:20px;margin-top:14px}
.dcard h3{font-size:16px;margin-bottom:14px;display:flex;align-items:center;gap:10px}
.dcard h3::before{content:"";width:11px;height:11px;border-radius:50%;background:var(--yellow)}
.info-row{display:flex;gap:12px;align-items:flex-start;padding:9px 0}
.info-row .ic{color:var(--amber);margin-top:2px}
.info-row small{display:block;color:var(--muted);font-size:12.5px}
.info-row strong{font-weight:600}
.driver-foot{color:#8A929C;text-align:center;font-size:12px;margin-top:20px}

/* ---------- Login ---------- */
.login{display:grid;grid-template-columns:1.05fr 1fr;min-height:100vh}
.login-art{background:var(--ink);color:#fff;padding:44px 52px;display:flex;flex-direction:column;position:relative;overflow:hidden}
.login-art .brand-name{font-size:26px}
.login-art h2{font-size:38px;font-weight:700;letter-spacing:-.03em;line-height:1.12;margin:auto 0 12px;max-width:470px}
.login-art h2 span{color:var(--yellow)}
.login-art p.lead{color:#B6BCC4;max-width:440px;font-size:16px}
.art-scene{margin:34px 0 10px;max-width:520px;position:relative}
.art-scene svg{width:100%;height:auto;display:block}
.limit-chip{position:absolute;right:-6px;bottom:-14px;background:var(--yellow);color:var(--ink);border-radius:14px;padding:14px 20px;text-align:center;box-shadow:var(--shadow-lg)}
.limit-chip b{display:block;font-size:38px;line-height:1;font-weight:800}
.limit-chip small{font-size:11.5px;font-weight:600;opacity:.8}
.login-feats{display:flex;gap:22px;flex-wrap:wrap;margin-top:34px;color:#9AA2AC;font-size:13px}
.login-feats span{display:inline-flex;gap:8px;align-items:center}
.login-feats .ic{color:var(--yellow);width:16px;height:16px}
.login-form-side{display:flex;align-items:center;justify-content:center;padding:40px 28px;background:var(--bg)}
.login-card{width:100%;max-width:440px}
.login-card h1{font-size:28px;font-weight:700;margin-bottom:6px}
.login-card .sub{color:var(--muted);margin-bottom:24px}
.tabs{display:flex;background:#E3E5E8;border-radius:12px;padding:4px;margin-bottom:22px}
.tabs button{flex:1;padding:10px;border-radius:9px;font-weight:600;color:var(--muted);display:flex;align-items:center;justify-content:center;gap:8px}
.tabs button.on{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.tabs .ic{width:17px;height:17px}
.role-pick{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}
.role-pick label{border:1.5px solid var(--line);border-radius:12px;padding:12px 14px;cursor:pointer;display:flex;gap:10px;align-items:center;background:#fff;font-weight:600}
.role-pick input{accent-color:var(--yellow-d)}
.role-pick label:has(input:checked){border-color:var(--yellow);background:var(--yellow-bg)}
.login-row{display:flex;justify-content:space-between;align-items:center;margin:2px 0 20px;font-size:13.5px}
.login-row a{color:var(--amber);font-weight:600}
.check{display:flex;align-items:center;gap:8px;color:var(--muted)}
.check input{accent-color:var(--yellow-d);width:16px;height:16px}
.sep{text-align:center;color:var(--faint);font-size:13px;margin:20px 0;position:relative}
.sep::before{content:"";position:absolute;left:0;right:0;top:50%;border-top:1px solid var(--line)}
.sep span{background:var(--bg);padding:0 12px;position:relative}
.demo-box{margin-top:18px;background:#fff;border:1px dashed var(--line);border-radius:12px;padding:12px 14px;font-size:12.5px;color:var(--muted)}
.demo-box b{color:var(--ink)}
.login-legal{text-align:center;color:var(--faint);font-size:12.5px;margin-top:26px}

/* ---------- Responsive ---------- */
@media (max-width:1180px){
  .g4{grid-template-columns:repeat(2,1fr)}
  .dock-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .g-main{grid-template-columns:1fr}
}
@media (max-width:980px){
  .app{grid-template-columns:1fr}
  .sidebar{position:fixed;left:0;top:0;width:272px;z-index:60;transform:translateX(-100%);transition:.25s}
  .sidebar.open{transform:none}
  .scrim.open{display:block;position:fixed;inset:0;background:rgba(30,34,40,.5);z-index:50}
  .menu-btn{display:grid}
  .today{display:none}
  .topbar,.content,.foot{padding-left:18px;padding-right:18px}
  .login{grid-template-columns:1fr}
  .login-art{display:none}
  .g3{grid-template-columns:1fr 1fr}
}
@media (max-width:640px){
  .g2,.g3,.g4,.row2,.row3,.dock-grid{grid-template-columns:1fr}
  .topbar-title h1{font-size:19px}
  .content{padding-top:18px}
  .btn-lg{width:100%}
}
@media print{.sidebar,.topbar,.foot,.btn,.toolbar{display:none!important}.app{display:block}.card{box-shadow:none;border:1px solid #ccc}}
/* ==========================================================================
   MEJORAS FRONTEND BOOKEASY - TOASTS Y BADGES DE ESTADO
   ========================================================================== */

/* Animación y diseño para alertas flotantes (Toasts) */
.contenedor-toast {
  position: fixed;
  top: 1.25rem;
  right: 1.25rem;
  z-index: 9999;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  max-width: 380px;
  width: 100%;
}

.toast {
  background: #ffffff;
  border-radius: 10px;
  padding: 1rem 1.25rem;
  box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
  display: flex;
  align-items: center;
  gap: 0.75rem;
  border-left: 5px solid #3b82f6;
  animation: deslizarEntrada 0.35s cubic-bezier(0.16, 1, 0.3, 1);
  font-size: 0.9rem;
  color: #1e293b;
}

.toast.toast-success {
  border-left-color: #10b981;
}

.toast.toast-error {
  border-left-color: #ef4444;
}

.toast.toast-warning {
  border-left-color: #f59e0b;
}

@keyframes deslizarEntrada {
  from {
    opacity: 0;
    transform: translateX(100px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

/* Colores de badges de estado en tablas */
.badge-esperando {
  background-color: #fef3c7;
  color: #b45309;
}

.badge-en_curso {
  background-color: #e0f2fe;
  color: #0369a1;
}

.badge-completado {
  background-color: #dcfce7;
  color: #15803d;
}

.badge-cancelado {
  background-color: #fee2e2;
  color: #b91c1c;
}