:root{
  --cream:#f4eee1; --cream2:#efe7d6; --card:#fbf7ee; --card2:#f7f1e4;
  --ink:#332f28; --ink2:#544e44; --muted:#988f7e; --faint:#bcb09a;
  --line:#e3d9c6; --line2:#d8ccb4;
  --accent:#9a7b4f; --accent-soft:#ece2cf;
  --owner:#b15a2b; --done:#8a9277; --danger:#b15a2b;
  --team:#2f6f8f; --team-soft:#d8e7ee;
  --shadow:0 8px 26px rgba(80,66,40,.10);
}
*{box-sizing:border-box}
html,body{margin:0}
body{ font-family:"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
      color:var(--ink); background:var(--cream); min-height:100vh; }
.title-serif{ font-family:Georgia,"Times New Roman",serif; }
a{ color:var(--accent); text-decoration:none; }
.hidden{ display:none !important; }

/* ---------- botones ---------- */
.btn{ font-size:14px; font-weight:600; cursor:pointer; color:var(--cream);
      background:var(--accent); border:0; border-radius:9px; padding:9px 15px;
      transition:filter .15s, transform .1s; }
.btn:hover{ filter:brightness(1.06); }
.btn:active{ transform:translateY(1px); }
.btn:disabled{ background:var(--line2); color:var(--muted); cursor:default; filter:none; }
.btn.ghost{ background:transparent; color:var(--ink2); border:1px solid var(--line2); }
.btn.danger{ background:var(--danger); }
.btn.big{ font-size:clamp(16px,1.6vw,20px); letter-spacing:.08em; text-transform:uppercase;
          padding:14px 18px; border-radius:13px; box-shadow:var(--shadow); }

/* ---------- navegación superior ---------- */
#nav{ position:sticky; top:0; z-index:20; display:flex; align-items:center; gap:18px;
      padding:10px 22px; background:linear-gradient(180deg,var(--card),var(--cream));
      border-bottom:1px solid var(--line); }
.nav-brand{ font-family:Georgia,serif; font-weight:600; font-size:18px; color:var(--ink); }
.nav-tabs{ display:flex; gap:4px; }
.nav-tabs a{ padding:7px 13px; border-radius:9px; color:var(--ink2); font-size:14px;
             font-weight:600; letter-spacing:.02em; }
.nav-tabs a:hover{ background:var(--accent-soft); }
.nav-tabs a.active{ background:var(--accent); color:var(--cream); }
.nav-right{ margin-left:auto; display:flex; align-items:center; gap:12px; }
.nav-who{ font-size:13px; color:var(--muted); max-width:200px; overflow:hidden;
          text-overflow:ellipsis; white-space:nowrap; }
.nav-btn{ font-size:13px; font-weight:600; cursor:pointer; color:var(--cream);
          background:var(--accent); border:0; border-radius:8px; padding:7px 12px; }
.nav-btn:hover{ filter:brightness(1.06); }
.nav-gear{ font-size:20px; line-height:1; color:var(--ink2); padding:4px 8px;
           border-radius:9px; }
.nav-gear:hover{ background:var(--accent-soft); }
.nav-gear.active{ background:var(--accent); color:var(--cream); }

/* ---------- modal de login ---------- */
.modal{ position:fixed; inset:0; z-index:50; display:flex; align-items:center;
        justify-content:center; background:rgba(50,42,28,.34); }
.modal-card{ background:var(--card); border:1px solid var(--line); border-radius:16px;
             padding:22px; width:min(360px,92vw); box-shadow:var(--shadow);
             display:flex; flex-direction:column; gap:11px; }
.modal-card h3{ margin:0 0 4px; font-size:18px; }
.modal-card .sep{ text-align:center; color:var(--faint); font-size:12px;
                  letter-spacing:.2em; text-transform:uppercase; }
.modal-card form{ display:flex; flex-direction:column; gap:8px; }
.modal-card input{ font:inherit; padding:10px 12px; border:1px solid var(--line2);
                   border-radius:9px; background:var(--cream); }
#lmGoogle{ background:#fff; color:var(--ink); border:1px solid var(--line2); }
.modal-err{ color:var(--danger); font-size:13px; }

/* ---------- avisos / banners ---------- */
.banner{ margin:18px 22px; padding:16px 20px; border:1px solid var(--line);
         background:var(--card); border-radius:13px; color:var(--ink2);
         box-shadow:var(--shadow); }
.banner b{ color:var(--accent); }
.gate{ max-width:520px; margin:60px auto; text-align:center; color:var(--ink2); }
.gate h2{ font-family:Georgia,serif; color:var(--ink); }

#status{ position:fixed; right:18px; bottom:18px; z-index:60; padding:10px 16px;
         border-radius:10px; font-size:14px; box-shadow:var(--shadow);
         background:var(--done); color:#fff; }
#status.err{ background:var(--danger); }

/* ---------- barra de búsqueda (home) ---------- */
.filters{ display:flex; flex-wrap:wrap; align-items:center; gap:10px;
          padding:12px 22px; }
.filters label{ font-size:12px; letter-spacing:.16em; text-transform:uppercase;
                color:var(--muted); }
.filters select, .filters input{ font:inherit; padding:8px 11px; border:1px solid var(--line2);
          border-radius:9px; background:var(--card); color:var(--ink); }
.filters input{ min-width:220px; }

/* ---------- matriz de lanchas (home + sorteo) ---------- */
.right{ padding:8px 22px 40px; }
.matrix{ display:grid; grid-template-columns:168px repeat(4,1fr); gap:7px;
         align-content:start; }
@media (max-width:1100px){ .matrix{ grid-template-columns:138px repeat(4,1fr); } }
.head{ font-size:12px; letter-spacing:.18em; text-transform:uppercase;
       color:var(--muted); padding:6px 8px 8px; align-self:end; }
.head.day{ text-align:center; font-weight:600; color:var(--ink2); }
.blabel{ display:flex; flex-direction:column; justify-content:center; padding:8px 6px;
         border-radius:11px; background:var(--card2); border:1px solid var(--line); }
.blabel .bn{ font-family:Georgia,serif; font-size:13px; color:var(--muted); }
.blabel .bnm{ font-size:14px; font-weight:600; line-height:1.1; }
.blabel .meta{ display:flex; align-items:center; gap:6px; margin-top:3px; }
.cb{ font-size:10px; font-weight:700; letter-spacing:.08em; color:var(--muted);
     border:1px solid var(--line2); border-radius:999px; padding:1px 7px; }
.blabel.cls-C{ background:#f1e7d4; }
.old{ font-size:10px; color:var(--owner); letter-spacing:.06em; opacity:.8; }
.cell{ background:var(--card); border:1px solid var(--line); border-radius:11px;
       padding:6px 7px; display:flex; flex-direction:column; gap:5px; min-height:104px;
       transition:border-color .2s, box-shadow .2s; }
.cell.flash{ border-color:var(--accent); box-shadow:0 0 0 2px var(--accent-soft); }
.seat{ display:flex; flex-direction:column; gap:1px; min-height:30px; border-radius:7px;
       padding:1px 3px; }
.seat .nm{ font-size:clamp(13px,1.05vw,15px); line-height:1.1; color:var(--ink);
           white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.seat .tm{ font-size:10px; line-height:1.05; color:var(--muted);
           white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.seat.empty .nm{ color:var(--faint); }
.seat.empty .nm::before{ content:"\00B7"; }
.seat.spin .nm{ color:var(--accent); }
.seat.spin .tm{ color:var(--faint); }
.seat.owner .nm{ color:var(--owner); font-weight:600; }
.seat.owner .tm{ color:var(--owner); opacity:.7; }
.seat.pop{ animation:pop .42s ease; }
@keyframes pop{ 0%{ transform:translateX(-4px); opacity:.4; } 100%{ transform:translateX(0); opacity:1; } }
.seat.current-place{ box-shadow:inset 0 0 0 2px var(--accent); }
.seat.current-place.owner{ box-shadow:inset 0 0 0 2px var(--owner); }
.seat.team-hl{ background:var(--team-soft); }
.seat.team-hl .nm{ color:var(--team); font-weight:700; }
.seat.team-hl .tm{ color:var(--team); }
.seat.angler-hl{ box-shadow:inset 0 0 0 2px var(--team); background:var(--team-soft); }
.matrix.searching .cell .seat:not(.team-hl):not(.angler-hl){ opacity:.32; }

/* ---------- panel de sorteo (página /sorteo/) ---------- */
.stage{ display:grid; grid-template-columns:360px 1fr; height:calc(100vh - 53px); }
@media (max-width:1100px){ .stage{ grid-template-columns:300px 1fr; } }
.left{ border-right:1px solid var(--line); background:var(--cream2);
       display:flex; flex-direction:column; min-height:0; }
.stage .right{ overflow:auto; }
.panel-h{ padding:14px 20px 8px; font-size:12px; letter-spacing:.26em;
          text-transform:uppercase; color:var(--muted); }
.current{ margin:6px 18px 10px; background:var(--card); border:1px solid var(--line);
          border-radius:16px; padding:18px; box-shadow:var(--shadow); min-height:128px;
          display:flex; flex-direction:column; justify-content:center; }
.current.active{ border-color:var(--accent); }
.cur-count{ font-size:12px; letter-spacing:.2em; text-transform:uppercase;
            color:var(--muted); margin-bottom:8px; }
.cur-row{ display:flex; align-items:center; gap:14px; }
.cur-num{ font-family:Georgia,serif; font-size:30px; font-weight:600; color:var(--accent); min-width:54px; }
.cur-num.owner{ color:var(--owner); }
.cur-name{ font-size:clamp(20px,2vw,26px); font-weight:600; line-height:1.05; }
.cur-name.owner{ color:var(--owner); }
.cur-team{ font-size:13px; color:var(--muted); margin-top:5px; }
.cur-empty{ color:var(--faint); font-size:16px; }
.left .btn.big{ margin:2px 18px 14px; }
.btn.big.next{ background:var(--ink); }
.btn.big.finish{ background:var(--done); }
.queue-h{ padding:6px 20px 4px; font-size:11px; letter-spacing:.24em; text-transform:uppercase;
          color:var(--muted); border-top:1px solid var(--line); }
.queue{ overflow-y:auto; padding:6px 12px 18px; flex:1; min-height:0; }
.q-item{ display:flex; align-items:center; gap:10px; padding:7px 10px; border-radius:9px;
         border:1px solid transparent; margin-bottom:2px; }
.q-item .q-pos{ font-size:12px; color:var(--faint); min-width:22px; text-align:right; }
.q-item .q-name{ font-size:14px; color:var(--ink2); flex:1; white-space:nowrap;
                 overflow:hidden; text-overflow:ellipsis; }
.q-item .q-team{ font-size:11px; color:var(--faint); }
.q-item.q-owner .q-name{ color:var(--owner); font-weight:600; }
.q-item.current{ background:var(--card); border-color:var(--accent); }
.q-item.current .q-name{ color:var(--ink); font-weight:600; }
.q-item.done{ opacity:.5; }
.q-item.done .q-pos::after{ content:" \2713"; color:var(--done); }

/* ---------- tabla de scores ---------- */
main.scores{ padding:18px 22px 60px; }
section.team{ margin-bottom:26px; }
section.team h2{ font-size:16px; font-weight:600; margin:0 0 8px; display:flex;
                 align-items:center; gap:10px; }
.tid{ font-family:Georgia,serif; font-size:12px; font-weight:700; color:var(--cream);
      background:var(--team); border-radius:999px; padding:2px 9px; }
h2 .tt{ margin-left:auto; font-size:13px; color:var(--muted); }
h2 .tt b{ color:var(--ink); }
table.scoretbl{ width:100%; border-collapse:collapse; background:var(--card);
                border:1px solid var(--line); border-radius:12px; overflow:hidden; }
table.scoretbl th, table.scoretbl td{ padding:7px 10px; text-align:right; font-size:14px;
                border-bottom:1px solid var(--line); }
table.scoretbl th{ background:var(--card2); color:var(--muted); font-weight:600;
                font-size:12px; letter-spacing:.06em; text-transform:uppercase; }
table.scoretbl th.pname, table.scoretbl td.pname{ text-align:left; }
table.scoretbl tr:last-child td{ border-bottom:0; }
td.pname{ color:var(--ink); white-space:nowrap; }
td.tot{ font-weight:700; color:var(--ink); }
input.w{ width:92px; border:1px solid transparent; background:transparent; font:inherit;
         color:var(--ink); text-align:right; border-radius:7px; padding:5px 7px; }
input.w:not(:disabled){ border-color:var(--line2); background:var(--cream); }
input.w:not(:disabled):focus{ border-color:var(--accent); outline:none; box-shadow:0 0 0 2px var(--accent-soft); }
input.w:disabled{ color:var(--ink); -webkit-text-fill-color:var(--ink); opacity:1; cursor:default; }

/* ---------- panel de configuración ---------- */
main.settings{ padding:18px 22px 60px; max-width:820px; }
main.settings h2{ font-size:17px; margin:22px 0 10px; }
.userrow{ display:flex; align-items:center; gap:12px; padding:11px 14px; background:var(--card);
          border:1px solid var(--line); border-radius:12px; margin-bottom:8px; }
.userrow .ue{ flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.userrow .badge{ font-size:11px; font-weight:700; letter-spacing:.06em; text-transform:uppercase;
                 padding:3px 9px; border-radius:999px; }
.badge.admin{ background:var(--owner); color:#fff; }
.badge.editor{ background:var(--team); color:#fff; }
.badge.none{ background:var(--line2); color:var(--ink2); }
.userrow select{ font:inherit; padding:7px 9px; border:1px solid var(--line2);
                 border-radius:8px; background:var(--cream); }
.danger-zone{ margin-top:26px; padding:16px 18px; border:1px dashed var(--danger);
              border-radius:13px; background:#faf0e9; }

/* contenedor con scroll horizontal para tablas anchas (móvil) */
.tw{ overflow-x:auto; -webkit-overflow-scrolling:touch; }

/* ---------- ajustes para celular ---------- */
@media (max-width:600px){
  #nav{ gap:10px; padding:10px 14px; }
  .nav-brand{ font-size:16px; }
  .nav-tabs a{ padding:6px 9px; font-size:13px; }
  .nav-who{ display:none; }
  .filters{ padding:12px 14px; }
  .filters input{ min-width:0; flex:1; }
  .right{ padding:8px 12px 40px; }
  main.scores, main.settings{ padding:14px 12px 50px; }
  .viewsw{ padding:12px 12px 4px; gap:5px; }
  .viewsw button{ font-size:13px; padding:7px 10px; }
  .daysw{ padding:2px 12px 8px; }
  table.scoretbl th, table.scoretbl td{ padding:6px 6px; font-size:13px; }
  td.pname{ font-size:13px; white-space:normal; }
  td.daycell{ min-width:116px; }
  input.w{ width:72px; }
  .rank th, .rank td{ padding:7px 8px; font-size:13px; }
  /* franja de pescador (Inicio): apilar nombre arriba y barcos en 2 columnas */
  .angler-strip{ grid-template-columns:repeat(2,1fr); }
  .angler-strip .as-name{ grid-column:1 / -1; }
}

/* ---------- sorteo: panel grande de los 4 barcos del pescador ---------- */
.bigboats{ margin:6px 0 16px; }
.bb-title{ font-size:clamp(19px,2.3vw,28px); font-weight:700; margin-bottom:12px; line-height:1.1; }
.bb-title .num{ color:var(--accent); font-family:Georgia,serif; }
.bb-title.owner .num, .bb-title.owner{ color:var(--owner); }
.bb-title .tm{ color:var(--muted); font-weight:600; font-size:.7em; }
.bb-cards{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }
@media(max-width:1100px){ .bb-cards{ grid-template-columns:repeat(2,1fr); } }
.bb-card{ background:var(--card); border:1px solid var(--line); border-radius:14px;
          padding:15px; box-shadow:var(--shadow); }
.bb-card.cls-C{ background:#f1e7d4; }
.bb-card .bb-day{ font-size:12px; letter-spacing:.2em; text-transform:uppercase; color:var(--muted); }
.bb-card .bb-bn{ font-family:Georgia,serif; font-size:13px; color:var(--accent); margin-top:8px; }
.bb-card .bb-bname{ font-size:clamp(17px,1.7vw,23px); font-weight:700; line-height:1.12; }
.alllist-h{ font-size:13px; letter-spacing:.18em; text-transform:uppercase; color:var(--muted);
            margin:16px 0 8px; border-top:1px solid var(--line); padding-top:14px; }

/* ---------- scores: switcher de vistas + rankings ---------- */
.viewsw{ display:flex; flex-wrap:wrap; gap:6px; padding:14px 22px 4px; }
.viewsw button{ font:inherit; font-size:14px; font-weight:600; cursor:pointer; color:var(--ink2);
  background:var(--card); border:1px solid var(--line2); border-radius:9px; padding:8px 14px; }
.viewsw button.active{ background:var(--accent); color:var(--cream); border-color:var(--accent); }
.rank{ width:100%; border-collapse:collapse; background:var(--card); border:1px solid var(--line);
       border-radius:12px; overflow:hidden; }
.rank th,.rank td{ padding:9px 12px; border-bottom:1px solid var(--line); font-size:14px; text-align:left; }
.rank th{ background:var(--card2); color:var(--muted); font-size:12px; letter-spacing:.06em; text-transform:uppercase; }
.rank td.r{ text-align:right; font-variant-numeric:tabular-nums; }
.rank tr:last-child td{ border-bottom:0; }
.rank .pos{ font-family:Georgia,serif; font-weight:700; color:var(--accent); width:42px; }
.rank .pts{ font-weight:700; color:var(--ink); }
.rank tr.top1{ background:#faf3e6; }
.rank tr.top1 .pos{ color:var(--owner); }

/* captura: chips de pesca por celda */
td.daycell{ text-align:left; min-width:160px; }
.catchcell{ display:flex; flex-wrap:wrap; gap:4px; align-items:center; }
.catch{ display:inline-flex; align-items:center; gap:2px; background:var(--cream);
        border:1px solid var(--line2); border-radius:999px; padding:1px 3px 1px 8px; font-size:13px; }
.catch input[type=time]{ font:inherit; border:0; background:transparent; width:78px; padding:2px; color:var(--ink); }
.catch .del{ border:0; background:transparent; color:var(--danger); cursor:pointer; font-size:15px; line-height:1; padding:0 4px; }
.addcatch{ border:1px dashed var(--line2); background:transparent; color:var(--accent); cursor:pointer;
           border-radius:999px; padding:3px 10px; font-size:13px; font-weight:600; }
.addcatch:hover{ background:var(--accent-soft); }
.cell-pts{ font-size:11px; color:var(--muted); margin-left:2px; }

/* ---------- página de impresión ---------- */
.printbar{ padding:14px 22px; display:flex; gap:12px; align-items:center; }
.sheet{ padding:24px 30px; }
.sheet .ang-big{ font-size:34px; font-weight:800; margin:0 0 2px; line-height:1.05; }
.sheet .ang-big .num{ color:var(--accent); font-family:Georgia,serif; }
.sheet .ang-team{ color:var(--muted); font-size:16px; margin-bottom:16px; }
.sheet .pboats{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:20px; }
.sheet .pboat{ border:1px solid var(--line); border-radius:12px; padding:14px; }
.sheet .pboat .d{ font-size:12px; letter-spacing:.2em; text-transform:uppercase; color:var(--muted); }
.sheet .pboat .bb{ font-family:Georgia,serif; font-size:13px; color:var(--accent); margin-top:6px; }
.sheet .pboat .bn{ font-size:20px; font-weight:700; line-height:1.1; }
.sheet .alltitle{ font-size:13px; letter-spacing:.16em; text-transform:uppercase; color:var(--muted); margin:8px 0 6px; }
.sheet table.full{ width:100%; border-collapse:collapse; font-size:11px; }
.sheet table.full th,.sheet table.full td{ border:1px solid var(--line); padding:3px 6px; text-align:left; vertical-align:top; }
.sheet table.full th{ background:var(--card2); }
@media screen{ .sheet{ max-width:900px; margin:0 auto 26px; background:#fff; border:1px solid var(--line);
               border-radius:12px; box-shadow:var(--shadow); } }
@page{ size: letter; margin: 0.35in; }
@media print{
  #nav, .printbar{ display:none !important; }
  body{ background:#fff; }
  .sheet{ page-break-after:always; break-after:page; padding:0; margin:0;
          border:0; box-shadow:none; }
  .sheet:last-child{ page-break-after:auto; break-after:auto; }
  .sheet .ang-big{ font-size:36px; margin-bottom:4px; }
  .sheet .ang-team{ font-size:17px; margin-bottom:22px; }
  .sheet .pboats{ gap:14px; margin-bottom:28px; }
  .sheet .pboat{ padding:17px; }
  .sheet .pboat .d{ font-size:14px; }
  .sheet .pboat .bb{ font-size:16px; margin-top:8px; }
  .sheet .pboat .bn{ font-size:24px; }
  .sheet .alltitle{ font-size:16px; margin:14px 0 10px; }
  .sheet table.full{ font-size:9px; line-height:1.4; table-layout:fixed; }
  .sheet table.full th, .sheet table.full td{ padding:4px 7px; }
}

/* ---------- Inicio: franja del pescador buscado (barco por día) ---------- */
.angler-strip{ display:grid; grid-template-columns:168px repeat(4,1fr); gap:7px; margin:0 0 12px; }
@media (max-width:1100px){ .angler-strip{ grid-template-columns:138px repeat(4,1fr); } }
.angler-strip .as-name{ display:flex; align-items:center; flex-wrap:wrap; font-weight:700; font-size:15px; }
.angler-strip .as-name .num{ color:var(--accent); font-family:Georgia,serif; margin-right:6px; }
.angler-strip .as-boat{ background:var(--team-soft); border:1px solid var(--team); border-radius:11px; padding:8px 11px; }
.angler-strip .as-boat .d{ font-size:10px; letter-spacing:.16em; text-transform:uppercase; color:var(--team); }
.angler-strip .as-boat .b{ font-family:Georgia,serif; font-size:12px; color:var(--team); }
.angler-strip .as-boat .bn{ font-size:16px; font-weight:700; line-height:1.1; color:var(--ink); }

/* ---------- Scores: selector de día + distinción de día en captura ---------- */
.daysw{ display:flex; flex-wrap:wrap; gap:6px; padding:2px 22px 8px; align-items:center; }
.daysw .lbl{ font-size:12px; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); margin-right:4px; }
.daysw button{ font:inherit; font-size:13px; font-weight:600; cursor:pointer; color:var(--ink2);
  background:var(--card); border:1px solid var(--line2); border-radius:8px; padding:6px 12px; }
.daysw button.active{ background:var(--team); color:#fff; border-color:var(--team); }
table.scoretbl th.dayhead{ color:var(--team); border-left:2px solid var(--line2); }
table.scoretbl td.daycell{ border-left:2px solid var(--line2); background:#fbf8f0; }
