:root{
  --c-bg: #f5f7fb;
  --c-text: #16181d;
  --c-header: #0f172a;
  --c-header-text: #ffffff;
  --c-accent: #2563eb;
  --c-border: #e5e7eb;
}

*{box-sizing:border-box}
html,body{height:100%}
body{margin:0; background:var(--c-bg); color:var(--c-text); font-family:system-ui, Roboto, Arial; line-height:1.45}
.container{max-width:1100px; margin:0 auto; padding:0 16px}

/* Header */
.app-header{background:var(--c-header); color:var(--c-header-text)}
.app-header a{color:var(--c-header-text); text-decoration:none}
.app-header .nav{display:flex; align-items:center; gap:16px; padding:12px 0}
.brand{font-weight:700}
.menu{display:flex; gap:12px; flex-wrap:wrap}
.menu-item{padding:6px 8px; border-radius:6px}
.menu-item.is-active{background:rgba(255,255,255,.14)}
.dd{position:relative}
.dd > summary{cursor:pointer; padding:6px 8px; border-radius:6px; list-style:none}
.dd[open] > summary{background:rgba(255,255,255,.14)}
.dd-menu{position:absolute; top:100%; left:0; min-width:220px; background:#fff; color:#111; border:1px solid var(--c-border); border-radius:8px; box-shadow:0 8px 24px rgba(0,0,0,.12); padding:8px; z-index:30}
.dd-menu a{display:block; padding:8px 10px; color:#111}
.dd-menu a:hover{background:#f7f7f7}
.dd .right{left:auto; right:0}

.session-bar{margin-left:auto; display:flex; align-items:center; gap:12px}
.mini-form{display:flex; align-items:center; gap:8px}
.mini-form select, .mini-form input[type="month"]{height:32px; border:1px solid var(--c-border); border-radius:6px; padding:0 8px; background:#fff; color:#111}
.mini-form button{height:32px; padding:0 10px; border:0; border-radius:6px; background:var(--c-accent); color:#fff; font-weight:600; cursor:pointer}

main.container{padding:18px 16px}
.breadcrumbs{font-size:.9rem; color:#6b7280; margin:4px 0 12px}
.breadcrumbs .current{color:#111; font-weight:600}

.flash{padding:10px 12px; border-radius:8px; margin:8px 0}
.flash-ok{background:#ecfdf5; color:#065f46; border:1px solid #a7f3d0}
.flash-error{background:#fef2f2; color:#991b1b; border:1px solid #fecaca}
.flash-warn{background:#fffbeb; color:#92400e; border:1px solid #fde68a}

.app-footer{border-top:1px solid var(--c-border); color:#6b7280; font-size:.9rem; padding:18px 0}

/* Botones y tablas mínimos */
.btn, button[type="submit"]{
  display:inline-block; padding:8px 12px; border-radius:8px; border:0; cursor:pointer;
  background:var(--c-accent); color:#fff; font-weight:600; text-decoration:none
}
.btn:hover{opacity:.95}
.link{color:var(--c-accent); text-decoration:none}
.link:hover{text-decoration:underline}

.table{width:100%; border-collapse:collapse; background:#fff; border:1px solid var(--c-border); border-radius:10px; overflow:hidden}
.table th, .table td{padding:10px 12px; border-bottom:1px solid var(--c-border)}
.table thead th{background:#f8fafc; font-weight:600}
.table .right{text-align:right}

.form{display:grid; gap:12px; max-width:640px}
.form label{display:grid; gap:6px}
.form input, .form select{
  height:36px; padding:0 10px; border:1px solid var(--c-border); border-radius:8px; background:#fff; color:#111
}
/* === Hoja estilo Excel para asientos === */
.sheet {
  width: 100%;
  border:1px solid var(--c-border);
  border-radius: 10px;
  overflow: hidden;
  background:#fff;
}
.sheet table {
  width:100%;
  border-collapse:separate;
  border-spacing:0;
  font-variant-numeric: tabular-nums;
}
.sheet thead th{
  position: sticky; top:0;
  background:#f8fafc;
  border-bottom:1px solid var(--c-border);
  padding:8px 10px; text-align:left; font-weight:600;
}
.sheet tbody td{
  border-bottom:1px solid var(--c-border);
  border-right:1px dashed var(--c-border);
  padding:0;
}
.sheet tbody td:last-child{ border-right:0 }
.sheet tfoot td{
  background:#f8fafc;
  border-top:1px solid var(--c-border);
  font-weight:700;
  padding:8px 10px;
}
.cell, .cell-num {
  width:100%; height:36px;
  border:0; outline:0; background:transparent;
  padding:0 10px; font: inherit; color: inherit;
}
.cell-num { text-align:right; }
.cell:focus, .cell-num:focus{
  box-shadow: inset 0 0 0 2px var(--c-accent);
  background: #fff;
}
.sheet .toolbar{
  display:flex; gap:8px; align-items:center;
  padding:8px 10px; border-bottom:1px solid var(--c-border);
  background:#fff;
}
.sheet .toolbar button{
  height:32px; padding:0 10px; border:1px solid var(--c-border);
  background:#fff; border-radius:8px; cursor:pointer;
}
.sheet .toolbar button:hover{ background:#f8fafc }
.sheet .right{ text-align:right }
.sheet .muted{ color:#6b7280 }

.grid-2 {
  display:grid;
  grid-template-columns: 1.2fr .8fr;
  gap:16px;
}
.grid-form {
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap:12px;
}