/* DA-RC XMAS CONTEST FRONTEND V1.4.7.4 SNOWY PINES HEADER */
*{box-sizing:border-box}
body{margin:0;font-family:Arial,Helvetica,sans-serif;background:#0b1220;color:#eaf1ff}
header.hero{padding:28px 5vw 20px;background:linear-gradient(135deg,#101b32,#163d32);border-bottom:1px solid #2b3b52}
.eyebrow{font-size:12px;letter-spacing:2px;color:#9fc5ff}
h1{margin:7px 0 8px;font-size:clamp(30px,6vw,58px)}
header p{color:#c7d5e8;margin:0 0 20px}
nav{display:flex;gap:8px;flex-wrap:wrap}
.nav-btn,button{border:0;border-radius:10px;padding:11px 16px;font-weight:700;cursor:pointer;background:#e9f2ff;color:#0b1220}
.nav-btn.active,button:not(.secondary){background:#f2c94c}
.secondary{background:#20304a;color:#fff;border:1px solid #42536c}
.container{max-width:1180px;margin:auto;padding:24px 18px 60px}
.view{display:none}.view.active{display:block}
.card{background:#131d2d;border:1px solid #263851;border-radius:16px;padding:20px;margin-bottom:18px;box-shadow:0 12px 35px rgba(0,0,0,.18)}
.narrow{max-width:650px}
.grid{display:grid;gap:16px}
.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:760px){
  .grid.two,.grid.three{grid-template-columns:1fr}
  nav{overflow:auto;flex-wrap:nowrap;padding-bottom:6px}
  .nav-btn{white-space:nowrap}
}
label{display:block;margin:10px 0 6px;color:#b7c9df;font-size:13px}
input,select{width:100%;padding:12px;border-radius:9px;border:1px solid #40516a;background:#0c1524;color:white;font-size:16px}
input[type="checkbox"]{width:auto;margin-right:8px}
button{margin-top:12px}
button.mini{padding:7px 11px;margin:0;font-size:12px;border-radius:8px}
.hidden{display:none!important}
.message{margin-top:12px;color:#d9e7f7}
.success{color:#8ee09e}.error{color:#ff8d8d}
.badge{display:inline-block;background:#183b2c;border:1px solid #2c6a4d;padding:9px 12px;border-radius:999px;margin-bottom:12px}
.qso-total{display:inline-block;background:#2d260f;border:1px solid #8e7422;color:#f2c94c;padding:6px 10px;border-radius:999px;margin:0 0 10px;font-size:13px;font-weight:700}
.table-wrap{overflow:auto}
table{width:100%;border-collapse:collapse;min-width:720px}
th,td{padding:11px;border-bottom:1px solid #2c3c52;text-align:left;vertical-align:middle}
th{color:#9fc5ff;font-size:12px;text-transform:uppercase}
.section-head{display:flex;justify-content:space-between;align-items:center;gap:10px}
.small{font-size:13px;color:#aebfd3}
.callout{background:#0c1728;border-left:4px solid #f2c94c;padding:14px;margin-top:12px}
hr{border:0;border-top:1px solid #2a394e;margin:24px 0}
footer{text-align:center;color:#8799b0;padding:25px}
a{color:#8ec5ff}
.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:18px}
.stat{background:#0c1728;border:1px solid #2a3b54;border-radius:14px;padding:16px;text-align:center}
.stat span{display:block;font-size:30px;font-weight:800;color:#f2c94c}
.stat small{display:block;margin-top:4px;color:#aebfd3}
.check-row{display:flex;align-items:center;gap:20px;flex-wrap:wrap;padding-top:20px}
.check-row label{display:flex;align-items:center;margin:0}
@media(max-width:760px){.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}


/* Contest Rules modal */
.rules-modal{position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.72);display:flex;align-items:center;justify-content:center;padding:20px}
.rules-modal-card{position:relative;width:min(560px,100%);background:#131d2d;border:1px solid #42536c;border-radius:18px;padding:26px;box-shadow:0 24px 70px rgba(0,0,0,.45);text-align:center}
.rules-modal-card h2{margin:0 0 6px}
.rules-close{position:absolute;right:12px;top:8px;background:transparent!important;color:#fff!important;font-size:30px;padding:4px 10px;margin:0}
.rules-language-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:22px 0}
.rules-language-grid a{display:block;padding:14px 12px;border-radius:10px;background:#e9f2ff;color:#0b1220;text-decoration:none;font-weight:700}
.rules-language-grid a:hover{background:#f2c94c}
.contest-site-link{display:inline-block;margin-top:4px}
@media(max-width:520px){.rules-language-grid{grid-template-columns:1fr}}

/* Admin test reset */
.danger-zone{border-color:#7f2d2d;background:#201417}
button.danger{background:#c83b3b!important;color:#fff!important;border:1px solid #ff7777}
button.danger:hover{filter:brightness(1.08)}


/* ===== eQSL Management V1.3.6 ===== */
.eqsl-admin-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px}
.eqsl-preview-frame{
  min-height:220px;border:1px dashed #40516a;border-radius:14px;
  background:#0c1524;display:flex;align-items:center;justify-content:center;
  overflow:hidden;padding:12px
}
.eqsl-preview-frame img{display:none;max-width:100%;max-height:340px;border-radius:10px}
.eqsl-template-thumb{width:120px;max-height:80px;object-fit:cover;border-radius:8px;border:1px solid #40516a}
.eqsl-result-card{margin-top:14px}
.eqsl-canvas-wrap{margin-top:12px;overflow:auto}
.eqsl-canvas-wrap canvas{max-width:100%;height:auto;border-radius:10px;border:1px solid #40516a}
.eqsl-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
button:disabled{opacity:.55;cursor:not-allowed}

.admin-password-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}


/* ===== Header Christmas Contest Logo V1.3.7.2 ===== */
.hero-top{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:28px;
}
.hero-copy{
  flex:1 1 auto;
  min-width:0;
}
.hero-logo-wrap{
  flex:0 0 auto;
  display:flex;
  align-items:flex-start;
  justify-content:flex-end;
}
.hero-logo{
  width:clamp(130px,16vw,220px);
  height:auto;
  display:block;
  object-fit:contain;
  filter:drop-shadow(0 10px 24px rgba(0,0,0,.25));
}
@media(max-width:760px){
  .hero-top{
    align-items:center;
    gap:14px;
  }
  .hero-logo{
    width:clamp(92px,24vw,130px);
  }
}
@media(max-width:520px){
  .hero-top{
    align-items:flex-start;
  }
  .hero-logo{
    width:88px;
  }
}


/* ===== QSO Log Tools V1.3.8 ===== */
.qso-row-actions{display:flex;align-items:center;gap:6px;white-space:nowrap}
.qso-icon-btn{
  width:34px;height:34px;padding:0;margin:0;border-radius:8px;
  display:inline-flex;align-items:center;justify-content:center;
  font-size:18px;font-weight:800;line-height:1
}
.qso-edit-btn{background:#f2c94c;color:#0b1220}
.qso-delete-btn{background:#c83b45;color:#fff}
.qso-delete-btn:hover{filter:brightness(1.08)}
.qso-edit-card{
  margin-top:18px;padding:18px;border:1px solid #40516a;border-radius:14px;
  background:#0c1728
}
.qso-edit-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px}


/* ===== Offline PWA V1.3.9.5 ===== */
.global-network-status{
  position:fixed;right:14px;bottom:14px;z-index:1500;
  padding:7px 11px;border-radius:999px;font-size:12px;font-weight:800;
  border:1px solid transparent;box-shadow:0 8px 22px rgba(0,0,0,.28)
}
.global-network-status.online{background:#183b2c;color:#9ff0ad;border-color:#2c6a4d}
.global-network-status.offline{background:#4a171b;color:#ffd0d0;border-color:#a84249}
.global-network-status.syncing{background:#493d13;color:#ffe98d;border-color:#9a7f25}
.offline-panel{
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  flex-wrap:wrap;margin:4px 0 22px;padding:13px 14px;border-radius:13px;
  background:#0c1728;border:1px solid #334a68
}
.offline-summary{display:flex;align-items:center;gap:9px;flex-wrap:wrap;min-width:240px}
.connection-badge{
  display:inline-flex;align-items:center;padding:6px 9px;border-radius:999px;
  font-size:11px;font-weight:900;letter-spacing:.6px
}
.connection-badge.online{background:#183b2c;color:#9ff0ad;border:1px solid #2c6a4d}
.connection-badge.offline{background:#4a171b;color:#ffd0d0;border:1px solid #a84249}
.connection-badge.syncing{background:#493d13;color:#ffe98d;border:1px solid #9a7f25}
.offline-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.offline-actions button{margin:0}
.offline-message{flex-basis:100%;margin:0;min-height:0}
.sync-status{display:inline-flex;align-items:center;padding:4px 7px;border-radius:999px;font-size:11px;font-weight:800;white-space:nowrap}
.sync-status.synced{background:#183b2c;color:#9ff0ad}
.sync-status.pending,.sync-status.syncing{background:#493d13;color:#ffe98d}
.sync-status.error{background:#4a171b;color:#ffd0d0}
.sync-error-detail{max-width:240px;margin-top:5px;color:#ffaaaa;font-size:11px;line-height:1.3}
tr.local-qso-row{background:rgba(242,201,76,.045)}
@media(max-width:760px){
  .global-network-status{right:8px;bottom:8px}
  .offline-panel{align-items:flex-start}
  .offline-summary,.offline-actions{width:100%}
}

/* ===== Activator live statistics + bundled world map V1.3.9.3 ===== */
.activator-statistics{
  margin:0 0 24px;padding:18px;border-radius:16px;
  background:linear-gradient(145deg,#101d31,#102820);
  border:1px solid #36516c;box-shadow:0 14px 34px rgba(0,0,0,.2)
}
.dashboard-head-actions,.stats-window-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.dashboard-head-actions button,.stats-window-actions button{margin:0}
body.statistics-modal-open{overflow:hidden}
.statistics-modal{
  position:fixed;inset:0;z-index:2200;display:flex;align-items:flex-start;
  justify-content:center;padding:22px;background:rgba(2,7,15,.88);
  overflow:auto;overscroll-behavior:contain;backdrop-filter:blur(5px)
}
.statistics-modal-card{
  width:min(1180px,100%);margin:auto 0;box-shadow:0 28px 90px rgba(0,0,0,.58)
}
.statistics-close-btn{border-color:#a84249;color:#ffd0d0;background:#4a171b}
.activator-statistics h3,.activator-statistics h4{margin:0}
.stats-section-head p,.stats-map-heading p{margin:5px 0 0}
.contest-stats-grid{
  display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;
  margin:17px 0
}
.contest-stat{
  min-width:0;padding:13px 8px;text-align:center;border-radius:13px;
  background:#0b1626;border:1px solid #2f4662
}
.contest-stat span{display:block;color:#8fd7ff;font-size:clamp(24px,4vw,36px);font-weight:900;line-height:1}
.contest-stat small{display:block;margin-top:7px;color:#b9c9dc;font-weight:700;text-transform:uppercase;letter-spacing:.5px}
.contest-stat.points{border-color:#8e7422;background:#28220f}
.contest-stat.points span{color:#f2c94c}
.world-map-panel{padding:14px;border-radius:14px;background:#091321;border:1px solid #2e435e}
.stats-map-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}
.points-rule{display:inline-flex;padding:6px 9px;border-radius:999px;background:#2d260f;border:1px solid #8e7422;color:#f2c94c;font-size:11px;font-weight:800;white-space:nowrap}
.world-map-scroll{overflow:auto;border-radius:12px;background:radial-gradient(circle at 50% 45%,#132d45,#08111e 70%);border:1px solid #223b56}
.world-contact-map{display:block;width:100%;min-width:700px;height:auto;aspect-ratio:960/500}
.world-map-sphere{fill:#0b1d30;stroke:#55718f;stroke-width:1.1}
.world-map-graticule{fill:none;stroke:#48627d;stroke-width:.45;stroke-opacity:.42}
.world-map-country{fill:#27384c;stroke:#8093a8;stroke-width:.38;vector-effect:non-scaling-stroke;transition:filter .15s,opacity .15s}
.world-map-country.contacted{stroke:#f5f8ff;stroke-width:.7;filter:drop-shadow(0 0 2px rgba(255,255,255,.32))}
.world-map-country:hover{filter:brightness(1.35);stroke:#fff;stroke-width:1.1}
.world-map-legend{display:flex;gap:7px;flex-wrap:wrap;margin-top:11px}
.map-legend-chip,.stats-chip{display:inline-flex;align-items:center;gap:7px;padding:6px 9px;border-radius:999px;background:#142238;border:1px solid #334d6c;color:#dce8f6;font-size:12px}
.map-legend-dot{width:10px;height:10px;border-radius:50%;box-shadow:0 0 0 1px rgba(255,255,255,.35)}
.map-legend-chip.inactive{opacity:.38;filter:saturate(.2)}
.world-map-status{margin-top:9px}
.stats-breakdown-grid{display:grid;grid-template-columns:minmax(0,.75fr) minmax(0,1.25fr);gap:12px;margin-top:13px}
.stats-breakdown-card{padding:13px;border-radius:13px;background:#0b1626;border:1px solid #2f4662;min-width:0}
.stats-chip-list{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px;max-height:155px;overflow:auto}
.stats-chip strong{color:#f2c94c}
@media(max-width:850px){
  .contest-stats-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .stats-breakdown-grid{grid-template-columns:1fr}
}
@media(max-width:520px){
  .statistics-modal{padding:8px}
  .activator-statistics{padding:13px}
  .contest-stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .contest-stat.points{grid-column:1/-1}
  .stats-map-heading{display:block}
  .points-rule{margin-top:9px}
}

/* ===== Public ONAIR status V1.3.9.6 ===== */
.onair-badge{
  display:inline-flex;align-items:center;gap:7px;
  padding:5px 10px;border-radius:999px;
  background:rgba(35,150,75,.16);border:1px solid #3fd56f;
  color:#8dffad;font-size:12px;font-weight:900;letter-spacing:.8px;
  white-space:nowrap;box-shadow:0 0 13px rgba(63,213,111,.18)
}
.onair-dot{
  width:8px;height:8px;border-radius:50%;background:#54ef83;
  box-shadow:0 0 0 0 rgba(84,239,131,.7);
  animation:onairPulse 1.6s infinite
}
.offair-label{color:#6f8299;font-weight:700}
@keyframes onairPulse{
  0%{box-shadow:0 0 0 0 rgba(84,239,131,.7)}
  70%{box-shadow:0 0 0 7px rgba(84,239,131,0)}
  100%{box-shadow:0 0 0 0 rgba(84,239,131,0)}
}


/* ===== Live QSO workspace V1.3.9.8 ===== */
.qso-workspace-card{padding:18px;border-radius:16px;background:linear-gradient(145deg,#101d31,#0c1728);border:1px solid #36516c;margin-bottom:4px}
.qso-workspace-head{align-items:flex-start;margin-bottom:12px}
.qso-workspace-head p{margin:6px 0 0}
.qso-seq-badge{display:inline-flex;align-items:center;padding:7px 11px;border-radius:999px;background:#173c67;border:1px solid #4f8fd0;color:#9fd2ff;font-size:12px;font-weight:900;white-space:nowrap}
.qso-workspace-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(320px,.95fr);gap:14px;align-items:start}
.qso-entry-panel,.qso-recent-panel{min-width:0;background:#0b1626;border:1px solid #2f4662;border-radius:14px;padding:14px}
.qso-toolbar-grid{display:grid;grid-template-columns:100px 1.25fr 1fr 1fr repeat(4,minmax(100px,.65fr));gap:10px;align-items:end}
.qso-seq-panel{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;min-height:74px;padding:12px;border-radius:12px;background:#10253e;border:1px solid #3e6fa3}
.qso-seq-label{font-size:12px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:#9fc5ff}
.qso-seq-panel strong{display:block;margin-top:4px;color:#7fd6ff;font-size:34px;line-height:1;font-weight:900}
.qso-input-field label{margin-top:0}
.readonly-field input{background:#101a2a;color:#bcd0e6;font-weight:700}
.qso-preview-banner{margin-top:14px;padding:14px 16px;border-radius:12px;border:1px solid #35516c;background:#0c1d30;color:#dce8f6;line-height:1.4;min-height:78px}
.qso-preview-banner strong{display:block;font-size:17px;margin-bottom:4px}
.qso-preview-banner .preview-sub{display:block;font-size:14px;color:#b8cbe2}
.qso-preview-banner.neutral{border-color:#3c5875;background:#0c1d30}
.qso-preview-banner.loading{border-color:#577595;background:#102338;color:#d9ebff}
.qso-preview-banner.standard{border-color:#8e7422;background:#2d260f;color:#ffe38f}
.qso-preview-banner.multiplier{border-color:#3fd56f;background:rgba(25,74,40,.66);color:#bffcc8;box-shadow:0 0 20px rgba(63,213,111,.08)}
.qso-preview-banner.warning{border-color:#d95b5b;background:#34161b;color:#ffd6d6}
.qso-action-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:12px}
.qso-action-row button{margin:0}
.compact-section-head{margin-bottom:10px}
.compact-section-head h4{margin:0}
.recent-compact-wrap{max-height:392px;overflow:auto;border-radius:12px;border:1px solid #283d58;background:#08111e}
.recent-compact-table{width:100%;border-collapse:collapse;min-width:0}
.recent-compact-table th,.recent-compact-table td{padding:9px 10px;border-bottom:1px solid #22354d;font-size:13px}
.recent-compact-table th{position:sticky;top:0;background:#0f2034;color:#9fc5ff;z-index:1}
.recent-compact-table td strong{color:#f3f8ff}
.recent-compact-empty{padding:18px;color:#aebfd3}
.recent-status-dot{display:inline-flex;align-items:center;justify-content:center;padding:3px 7px;border-radius:999px;font-size:10px;font-weight:900;letter-spacing:.45px}
.recent-status-dot.synced{background:#183b2c;color:#9ff0ad}
.recent-status-dot.pending,.recent-status-dot.syncing{background:#493d13;color:#ffe98d}
.recent-status-dot.error{background:#4a171b;color:#ffd0d0}
@media(max-width:1180px){
  .qso-toolbar-grid{grid-template-columns:92px 1.15fr 1fr 1fr repeat(4,minmax(88px,.62fr))}
}
@media(max-width:980px){
  .qso-workspace-grid{grid-template-columns:1fr}
  .qso-toolbar-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .qso-seq-panel{grid-column:1/-1;min-height:auto;align-items:center;text-align:center}
}
@media(max-width:580px){
  .qso-toolbar-grid{grid-template-columns:1fr}
  .qso-preview-banner strong{font-size:16px}
  .qso-seq-badge{width:100%;justify-content:center}
}


/* ===== Live QSO console V1.4.0 ===== */
.qso-console-layout{padding:16px;background:linear-gradient(180deg,#101d31,#0b1525);border-color:#416482}
.qso-console-layout .qso-workspace-head{margin-bottom:10px}
.qso-live-strip{
  display:grid;
  grid-template-columns:82px minmax(165px,1.35fr) minmax(150px,1.1fr) 120px 96px 118px 104px 122px;
  gap:8px;align-items:end;padding:12px;border:1px solid #385b7a;border-radius:12px;
  background:#0c1728;box-shadow:inset 0 0 0 1px rgba(255,255,255,.02)
}
.qso-live-strip .qso-input-field{min-width:0}
.qso-live-strip .qso-input-field label{margin:0 0 5px;font-size:11px;font-weight:800;letter-spacing:.35px;color:#c1d6ed;white-space:nowrap}
.qso-live-strip input,.qso-live-strip select{height:43px;padding:9px 10px;border-radius:7px;font-size:15px}
.qso-live-strip #qsoCallsign{background:#e6f79f;color:#07111f;border-color:#b6d85b;font-weight:900;text-transform:uppercase;box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}
.qso-live-strip #qsoName{background:#d9f0f2;color:#07111f;border-color:#75b5bf;font-weight:700}
.qso-live-strip .readonly-field input{background:#132239;color:#dcecff;border-color:#375675;text-align:center;font-weight:800}
.qso-seq-panel{min-height:65px;padding:9px 8px;border-radius:9px;background:#10253e;border:1px solid #3e6fa3;align-items:center;text-align:center}
.qso-seq-panel strong{font-size:31px;color:#52c7ff}
.qso-seq-label{font-size:11px}
.qso-strip-actions{display:grid;gap:5px;align-self:end}
.qso-strip-actions button{margin:0;height:30px;padding:5px 8px;border-radius:7px;font-size:11px;white-space:nowrap}
.qso-strip-actions .qso-add-btn{height:43px;background:#20aee8;color:#062035;border:1px solid #6bd2ff;font-weight:900}
.qso-strip-actions .qso-reset-btn{height:27px}
.qso-preview-banner{margin-top:10px;min-height:0;padding:11px 14px;border-radius:8px;text-align:center;font-weight:800}
.qso-preview-banner strong{font-size:17px;line-height:1.2;margin:0}
.qso-preview-banner .preview-sub{margin-top:7px;font-size:13px;font-weight:800}
.qso-preview-banner.multiplier{
  padding:0;background:#dfff00!important;border:1px solid #eeff63!important;color:#17210a!important;
  box-shadow:0 0 18px rgba(223,255,0,.18);overflow:hidden
}
.qso-preview-banner.multiplier strong{display:block;padding:10px 14px;color:#17210a;font-size:18px}
.qso-preview-banner.multiplier .preview-sub{display:block;margin:0;padding:9px 14px;background:#17314c;color:#f2f7ff;border-top:1px solid #78a0c2}
.qso-preview-banner.standard{background:#102a43;border-color:#3f6f98;color:#d7ecff}
.qso-preview-banner.warning{background:#47191f;border-color:#d95b5b;color:#ffd6d6}
.qso-preview-banner.loading{background:#15283e;border-color:#577595;color:#d9ebff}
.qso-live-message{min-height:19px;margin-top:8px}
.qso-recent-monitor{margin-top:10px;padding:10px;border:1px solid #38516e;border-radius:12px;background:#0a1423}
.qso-recent-monitor .compact-section-head{margin-bottom:7px}
.qso-recent-monitor h4{margin:0;color:#ddecff}
.recent-compact-wrap{max-height:335px;border-radius:8px;border-color:#314963}
.recent-compact-table{table-layout:fixed}
.recent-compact-table th,.recent-compact-table td{padding:7px 8px;font-size:12px;line-height:1.15}
.recent-compact-table th{background:#16324d;font-size:10px;letter-spacing:.5px}
.recent-compact-table th:nth-child(1),.recent-compact-table td:nth-child(1){width:52px;text-align:center;font-weight:900;color:#52c7ff}
.recent-compact-table th:nth-child(2),.recent-compact-table td:nth-child(2){width:145px}
.recent-compact-table th:nth-child(3),.recent-compact-table td:nth-child(3){width:130px}
.recent-compact-table th:nth-child(4),.recent-compact-table td:nth-child(4){width:120px}
.recent-compact-table th:nth-child(5),.recent-compact-table td:nth-child(5){width:88px;text-align:center}
.recent-compact-table th:nth-child(6),.recent-compact-table td:nth-child(6){width:92px;text-align:center}
.recent-compact-table th:nth-child(7),.recent-compact-table td:nth-child(7){width:86px;text-align:center}
.recent-compact-table th:nth-child(8),.recent-compact-table td:nth-child(8){width:82px;text-align:center}
.recent-compact-table th:nth-child(9),.recent-compact-table td:nth-child(9){width:74px;text-align:center}
.recent-compact-table tr:hover td{background:rgba(82,199,255,.055)}
.compact-qso-actions{display:flex;justify-content:center;gap:4px}
.compact-qso-actions button{width:27px;height:25px;padding:0;margin:0;border-radius:6px;font-size:13px}
.compact-qso-actions .compact-edit{background:#159fdb;color:#062033;border:1px solid #56c8f5}
.compact-qso-actions .compact-delete{background:#b92f3a;color:#fff;border:1px solid #eb6670}
@media(max-width:1180px){
  .qso-live-strip{grid-template-columns:72px minmax(150px,1.4fr) minmax(130px,1.05fr) 105px 86px 108px 96px 110px;gap:6px}
  .qso-live-strip input,.qso-live-strip select{font-size:14px;padding:8px}
}
@media(max-width:980px){
  .qso-live-strip{grid-template-columns:repeat(4,minmax(0,1fr))}
  .qso-seq-panel{grid-row:span 2}
  .qso-strip-actions{grid-column:span 2;grid-template-columns:1fr auto;align-items:end}
  .qso-strip-actions .qso-reset-btn{height:43px}
}
@media(max-width:680px){
  .qso-live-strip{grid-template-columns:repeat(2,minmax(0,1fr))}
  .qso-seq-panel{grid-column:1/-1;grid-row:auto}
  .qso-strip-actions{grid-column:1/-1}
  .recent-compact-wrap{overflow:auto}
  .recent-compact-table{min-width:820px}
}


/* ===== QSO page cleanup + popups V1.4.0 ===== */
.qso-recent-primary{margin-top:12px;padding:12px 12px 10px}
.qso-recent-primary .dashboard-head-actions{justify-content:flex-end}
.qso-recent-primary .qso-total{margin-top:8px}
.qso-recent-primary .recent-compact-wrap{max-height:58vh}
.utility-modal-card{width:min(760px,100%)}
.utility-modal-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.utility-modal-actions button{margin:0}
.utility-modal-grid{margin-top:10px}
@media(max-width:680px){
  .qso-recent-primary .dashboard-head-actions{justify-content:flex-start}
  .country-flag-display{height:auto;min-height:43px}
}

/* ===== Clean QSO entry V1.4.1 ===== */
.qso-console-layout .qso-live-strip{align-items:end}


/* ===== Recent QSO expanded area V1.4.2 ===== */
.qso-recent-primary .recent-compact-wrap{
  height:min(82vh, 760px);
  min-height:640px;
  max-height:none;
  overflow:auto;
}
@media(max-width:1100px){
  .qso-recent-primary .recent-compact-wrap{
    height:min(74vh, 680px);
    min-height:520px;
  }
}
@media(max-width:680px){
  .qso-recent-primary .recent-compact-wrap{
    height:min(68vh, 560px);
    min-height:380px;
  }
}


/* ===== Current points box V1.4.3 ===== */
.qso-head-metrics{display:flex;align-items:stretch;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.qso-score-panel{
  min-width:168px;padding:9px 14px;border-radius:14px;
  background:linear-gradient(180deg,#123662,#0d2340);
  border:1px solid #4a8cd4;box-shadow:0 0 0 1px rgba(255,255,255,.03) inset;
  display:flex;flex-direction:column;align-items:center;justify-content:center
}
.qso-score-label{font-size:12px;font-weight:900;letter-spacing:.5px;text-transform:uppercase;color:#b9dbff}
.qso-score-panel strong{font-size:34px;line-height:1.05;color:#dfff66;margin:4px 0 3px;font-weight:900}
.qso-score-hint{font-size:11px;color:#d8ebff;text-align:center;white-space:nowrap}
@media(max-width:680px){
  .qso-head-metrics{width:100%;justify-content:stretch}
  .qso-score-panel{flex:1;min-width:0}
  .qso-score-hint{white-space:normal}
}


/* ===== Worked map highlights V1.4.6 ===== */
.world-map-country.contacted{
  fill:#27d95b!important;
  stroke:#dfffe7!important;
  stroke-width:.8!important;
  filter:drop-shadow(0 0 3px rgba(39,217,91,.55));
}
.world-map-continent-worked{
  fill:none;
  stroke:#ff5a50;
  stroke-width:1.05;
  stroke-opacity:.9;
  stroke-linejoin:round;
  stroke-linecap:round;
  vector-effect:non-scaling-stroke;
  pointer-events:none;
  filter:none;
}
.map-legend-square{width:12px;height:12px;border-radius:3px;background:#27d95b;border:1px solid #dfffe7;box-shadow:0 0 5px rgba(39,217,91,.45)}
.map-legend-outline{width:16px;height:11px;border-radius:5px;border:1px solid #ff5a50;background:transparent;box-shadow:none}
.worked-country-key,.worked-continent-key{opacity:1!important}
.active-continent-list{color:#ffd7d3;border-color:#a84540;background:#2b1718}


/* ===== Christmas snowy pines header V1.4.7.4 ===== */
header.hero{
  position:relative;
  overflow:hidden;
  isolation:isolate;
  background:
    radial-gradient(circle at 82% 12%,rgba(242,201,76,.11),transparent 26%),
    radial-gradient(circle at 16% 100%,rgba(115,205,183,.10),transparent 30%),
    linear-gradient(135deg,#101b32,#163d32);
}
header.hero::before,
header.hero::after{
  content:"";
  position:absolute;
  bottom:-8px;
  width:clamp(290px,34vw,520px);
  height:clamp(145px,18vw,255px);
  background:url("snowy-pines.svg") center bottom/contain no-repeat;
  pointer-events:none;
  z-index:0;
  opacity:.56;
  filter:saturate(.92) drop-shadow(0 12px 18px rgba(0,0,0,.18));
}
header.hero::before{
  left:-120px;
}
header.hero::after{
  right:clamp(170px,18vw,330px);
  transform:scaleX(-1) scale(.82);
  transform-origin:bottom right;
  opacity:.40;
}
.hero-top,
header.hero nav{
  position:relative;
  z-index:2;
}
.hero-copy{
  text-shadow:0 2px 12px rgba(0,0,0,.30);
}
@media(max-width:900px){
  header.hero::before{left:-155px;opacity:.43}
  header.hero::after{right:90px;opacity:.26;transform:scaleX(-1) scale(.68)}
}
@media(max-width:620px){
  header.hero::before{
    width:330px;height:165px;left:-175px;opacity:.32;
  }
  header.hero::after{
    display:none;
  }
}

/* Language popup */
.language-modal-card{max-width:560px}
.language-choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:18px}
.lang-choice-btn{margin:0!important;min-height:48px;justify-content:center;display:flex;align-items:center;text-align:center}
.lang-choice-btn.active{background:#f2c94c!important;color:#0b1220!important;border:1px solid #f7dea1}
@media(max-width:520px){.language-choice-grid{grid-template-columns:1fr}}

.language-confirm-btn{margin-top:18px!important;width:100%;min-height:48px;background:#f2c94c!important;color:#0b1220!important;font-weight:800}


/* Russia DX split — Division 50 / 302 */
.russia-dx-part{pointer-events:auto}
.russia-dx-boundary{fill:none;stroke:#ffe66d;stroke-width:1.15;stroke-dasharray:4 2;stroke-linecap:round;vector-effect:non-scaling-stroke;pointer-events:none;filter:drop-shadow(0 0 2px rgba(255,230,109,.65))}

/* V1.4.8.4 - Division flag beside QSO number */
.qso-flag-panel{min-height:65px;padding:7px 6px;border-radius:9px;background:#10253e;border:1px solid #3e6fa3;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;overflow:hidden}
.qso-flag-label{font-size:10px;font-weight:900;letter-spacing:.35px;color:#c1d6ed}
.qso-flag-panel strong{font-size:30px;line-height:1.05;margin:2px 0}
.qso-flag-panel small{font-size:9px;font-weight:800;color:#8fb4d7;white-space:nowrap}
.qso-live-strip{grid-template-columns:82px 72px minmax(165px,1.35fr) minmax(150px,1.1fr) 120px 96px 118px 104px 122px}
@media(max-width:1180px){.qso-live-strip{grid-template-columns:72px 64px minmax(150px,1.4fr) minmax(130px,1.05fr) 105px 86px 108px 96px 110px}}
@media(max-width:900px){.qso-live-strip{grid-template-columns:repeat(4,minmax(0,1fr))}.qso-seq-panel,.qso-flag-panel{grid-row:span 2}}
@media(max-width:620px){.qso-live-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.qso-seq-panel,.qso-flag-panel{grid-row:auto}}

/* V1.4.8.5 - Google Sheets DIVISION CellImage flag */
.qso-division-flag-img{
  display:block;
  width:48px;
  height:32px;
  object-fit:cover;
  border-radius:3px;
  margin:0 auto;
  box-shadow:0 0 0 1px rgba(255,255,255,.25);
}

/* V1.4.8.8 — flag between No. and Callsign in Recent QSOs */
.recent-qso-flag-head,.recent-qso-flag-cell{
  width:54px; min-width:54px; max-width:54px; text-align:center;
}
.recent-qso-flag-img{
  width:30px; height:20px; object-fit:contain; vertical-align:middle; border-radius:2px;
}
.recent-qso-flag-emoji{font-size:23px; line-height:1; vertical-align:middle;}
.recent-qso-flag-empty{opacity:.45;}

/* V1.4.8.9 — fallback for temporary/unavailable Google Sheets CellImage URLs */
.qso-division-flag-fallback{font-size:30px;line-height:1;vertical-align:middle;}
.recent-qso-flag-fallback{vertical-align:middle;}

/* V1.4.9.8 local language flags */
.language-flag-img{width:28px;height:18px;object-fit:cover;border-radius:2px;box-shadow:0 0 0 1px rgba(0,0,0,.18);flex:0 0 auto}
.lang-choice-btn{gap:9px}
.rules-language-grid a{display:flex;align-items:center;justify-content:center;gap:9px}

/* V1.4.9.12 - Logging mode + Hunter ranking details */
.livelog-badge,.paperlog-badge{display:inline-block;padding:4px 8px;border-radius:999px;font-size:.78rem;font-weight:800;white-space:nowrap}
.livelog-badge{background:#dff7e7;color:#146c2e;border:1px solid #91d6a5}
.paperlog-badge{background:#fff0d8;color:#8a4b00;border:1px solid #efbf72}
.hunter-detail-link{background:#ffd84a;border:2px solid #1d2b53;border-radius:999px;padding:3px 9px;color:#102044;font:inherit;font-weight:900;text-decoration:none;cursor:pointer;line-height:1.15}
.hunter-detail-link:hover,.hunter-detail-link:focus-visible{background:#ffe77f;color:#07142f;outline:2px solid #fff;outline-offset:2px}
.hunter-ranking-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.hunter-ranking-search{min-width:220px;max-width:320px;padding:9px 12px;border-radius:9px;border:1px solid rgba(255,255,255,.35);background:rgba(255,255,255,.96);color:#102044;font-weight:700}
.hunter-ranking-search::placeholder{color:#5a6478}
@media(max-width:760px){.hunter-ranking-actions{width:100%;justify-content:flex-start}.hunter-ranking-search{min-width:0;flex:1 1 180px}}
.hunter-details-card{max-width:920px}
.hunter-details-summary{font-size:1.1rem;margin:0 0 14px}
.hunter-detail-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.hunter-detail-grid section{background:rgba(127,127,127,.08);border-radius:12px;padding:12px}
.hunter-detail-grid h3{margin-top:0}
.hunter-detail-grid ul{margin:0;padding-left:20px;max-height:320px;overflow:auto}
.joker-detail-badge{font-size:.7rem;font-weight:800;padding:2px 5px;border-radius:999px;background:#ffe7a8;color:#6b4500}
.paperlog-note{margin-top:16px;padding:10px 12px;border-radius:10px;background:#fff0d8;color:#6d4300}
@media(max-width:760px){.hunter-detail-grid{grid-template-columns:1fr}}

/* V1.4.9.22 — wider Callsign field after QSO flag panel removal */
@media(min-width:1181px){
  .qso-live-strip{grid-template-columns:82px minmax(260px,2.15fr) minmax(165px,1.15fr) 120px 96px 118px 104px 122px}
}
@media(min-width:981px) and (max-width:1180px){
  .qso-live-strip{grid-template-columns:72px minmax(230px,2fr) minmax(140px,1fr) 105px 86px 108px 96px 110px;gap:6px}
}

/* V1.4.9.23 — balanced QSO row: Callsign medium width, actions kept inside panel */
@media(min-width:1181px){
  .qso-live-strip{grid-template-columns:82px minmax(210px,1.65fr) minmax(150px,1.05fr) 112px 90px 112px 100px 108px;gap:8px}
  .qso-strip-actions{min-width:0;width:100%}
  .qso-strip-actions button{width:100%;box-sizing:border-box}
}
@media(min-width:981px) and (max-width:1180px){
  .qso-live-strip{grid-template-columns:72px minmax(190px,1.55fr) minmax(135px,1fr) 100px 82px 102px 92px 100px;gap:6px}
  .qso-strip-actions{min-width:0;width:100%}
  .qso-strip-actions button{width:100%;box-sizing:border-box}
}

/* Certificate Management V1.0 */
.cert-buttons{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:12px 0}.cert-overlay{position:fixed;inset:0;background:rgba(7,18,35,.8);z-index:3000;display:flex;align-items:center;justify-content:center;padding:18px}.cert-overlay.hidden{display:none!important}.cert-dialog{position:relative;background:#fff;color:#1b293c;border-radius:14px;padding:24px;max-width:520px;width:100%;max-height:90vh;overflow:auto;box-shadow:0 14px 60px #0006}.cert-admin-dialog{max-width:960px}.cert-close{position:absolute;right:12px;top:8px;background:transparent;color:#1b293c;font-size:30px;border:0;cursor:pointer}.cert-dialog label{display:block;margin-top:10px;font-weight:600}.cert-dialog input,.cert-dialog select{max-width:100%}.cert-fields{display:grid;grid-template-columns:1.1fr repeat(4,minmax(60px,1fr));gap:8px;align-items:center;margin:16px 0}.cert-fields input{width:100%;min-width:0}.cert-field-header{font-size:12px;font-weight:bold}.cert-admin-dialog canvas{display:block;width:100%;height:auto;max-height:420px;object-fit:contain;background:#eef1f5;border:1px solid #a9b2c2;border-radius:8px}@media(max-width:600px){.cert-fields{gap:4px;grid-template-columns:1fr repeat(4,minmax(42px,1fr))}.cert-dialog{padding:16px}}

/* CHRISTMAS HOME — decorative only; existing API, log, admin and certificates unchanged */
body{background:radial-gradient(ellipse at 50% 0%,#123a54 0%,#09172a 55%,#071120 100%);min-height:100vh}
.xmas-side-art{position:fixed;top:0;bottom:0;width:max(160px,calc((100vw - 1120px)/2));z-index:0;pointer-events:none;background-image:url('christmas-radio-scene.png');background-repeat:no-repeat;background-size:auto 100vh;opacity:.94}
.xmas-side-left{left:0;background-position:left center}
.xmas-side-right{right:0;background-position:right center}
body::before{content:'';position:fixed;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(4,14,28,.80) 24%,rgba(4,14,28,.80) 76%,transparent 100%);pointer-events:none;z-index:0}
header.hero,.container,footer,.global-network-status{position:relative;z-index:1}
header.hero{background:linear-gradient(115deg,rgba(6,25,54,.97),rgba(7,41,57,.92),rgba(6,25,54,.97));border-bottom:2px solid #c99c38;box-shadow:0 8px 35px #0006}
header.hero .hero-copy h1{color:#fff4cc;text-shadow:0 3px 16px #000,0 0 24px #9e6b23}
.xmas-snowflake{font-size:.55em;color:#d9efff;vertical-align:middle}
.xmas-greeting{display:inline-block;margin-left:12px;color:#ffda76;font-weight:800;font-style:italic}
header.hero nav{justify-content:center}
header.hero .nav-btn{background:linear-gradient(#ffe887,#f7bb25);color:#172744;border:1px solid #fce7a4;box-shadow:0 2px 0 #8a651b;margin-top:4px}
header.hero .nav-btn.active{outline:2px solid #fff0b2;outline-offset:1px}
.container{max-width:1120px;background:linear-gradient(180deg,rgba(5,19,38,.90),rgba(5,19,38,.96));border-left:1px solid #ac803e77;border-right:1px solid #ac803e77;min-height:60vh}
.container .card{background:linear-gradient(140deg,rgba(13,39,69,.95),rgba(10,28,52,.96));border:1px solid #4c769a;border-radius:15px;box-shadow:0 7px 24px #0005}
#certificates .cert-home{border-color:#d5a846;max-width:900px;margin:25px auto;padding:30px;background:linear-gradient(125deg,#153b57,#10213c)}
#certificates .cert-home h2{color:#ffe3a0}
#certificates .cert-buttons button{background:linear-gradient(#ffe585,#f4bd2d)}
@media(max-width:1450px){.xmas-side-art{opacity:.55}.container{max-width:1050px}}
@media(max-width:1180px){.xmas-side-art{display:none}body::before{display:none}.container{max-width:100%}}
@media(max-width:760px){.xmas-greeting{display:block;margin:8px 0 0}.container{padding:16px 10px 40px}header.hero nav{justify-content:flex-start}}

/* Holiday navigation icons; preserve translatable button text. */
header.hero nav .nav-btn .nav-icon{display:inline-block;margin-right:5px;font-size:1.05em;line-height:1;vertical-align:-.07em;font-weight:normal} 
header.hero nav .nav-btn{display:inline-flex;align-items:center;justify-content:center;gap:2px}

/* Admin archive action */
.xmas-delete-activator{background:#9f2434!important;color:#fff!important;border:1px solid #e46d7b!important;margin-top:4px;}
.xmas-delete-activator:hover{background:#c83246!important;}

/* Side artwork correction: no altered contest logo, no baked dashboard. */
.xmas-side-art{background-image:none!important; background-size:cover!important; background-repeat:no-repeat!important; opacity:.97}
.xmas-side-left{background-image:url('xmas-santa-left.png')!important;background-position:center bottom!important}
.xmas-side-right{background-image:url('xmas-decorations-right.png')!important;background-position:center center!important}
@media (min-width:1181px){.xmas-side-art{width:max(160px,calc((100vw - 1120px)/2))}}

/* Publish Spot status animation — scoped to the spot modal */
.publish-spot-btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-width:165px;transition:transform .18s ease,box-shadow .18s ease,background-color .2s ease}
.publish-spot-btn:not(:disabled):hover{transform:translateY(-2px);box-shadow:0 5px 15px rgba(241,193,65,.24)}
.publish-spot-btn.spot-publishing{cursor:wait;opacity:.85}
.publish-spot-btn.spot-published{background:#16834c!important;color:white!important;animation:spot-success-pop .35s ease-out}
.spot-spinner{width:17px;height:17px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;display:inline-block;animation:spot-button-spin .7s linear infinite}
@keyframes spot-button-spin{to{transform:rotate(360deg)}}
@keyframes spot-success-pop{0%{transform:scale(.95)}65%{transform:scale(1.05)}100%{transform:scale(1)}}
@media (prefers-reduced-motion:reduce){.publish-spot-btn,.spot-spinner{animation:none!important;transition:none!important}}

/* Shared ranks and medal emphasis for Hunter and Activator leaderboards */
.contest-rank{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:54px;white-space:nowrap;font-variant-numeric:tabular-nums}
.contest-rank-medal{display:inline-block;font-size:1.45em;line-height:1.1;filter:drop-shadow(0 1px 3px rgba(0,0,0,.35));animation:contestMedalGlow 2.8s ease-in-out infinite}
.contest-rank-1 strong{color:#ffdf78}.contest-rank-2 strong{color:#dce9ff}.contest-rank-3 strong{color:#ffbf89}
@keyframes contestMedalGlow{0%,100%{filter:drop-shadow(0 1px 2px rgba(0,0,0,.3));transform:scale(1)}50%{filter:drop-shadow(0 0 7px rgba(255,223,120,.65));transform:scale(1.06)}}
@media(prefers-reduced-motion:reduce){.contest-rank-medal{animation:none}}

/* Certificate editor legibility and action feedback */
.cert-fields{grid-template-columns:1.1fr repeat(5,minmax(60px,1fr))}
.cert-dialog .small,.cert-dialog label,.cert-field-header{color:#263448!important;opacity:1!important}
.cert-dialog #certAdminState{color:#14263f!important;font-weight:700;background:#eaf1ff;padding:10px;border-radius:8px}
.cert-dialog #certAdminMessage,.cert-dialog #certMessage{color:#143b27!important;background:#e5f8e9!important;border:2px solid #27854c;border-radius:9px;padding:12px;font-weight:700;min-height:42px;opacity:1!important}
.cert-dialog .cert-buttons button{transition:transform .18s,box-shadow .18s,filter .18s;color:#17263a!important;font-weight:800}
.cert-dialog .cert-buttons button:active{transform:scale(.94)}
.cert-dialog .cert-buttons button.cert-working{animation:certPulse 1s infinite;cursor:wait;opacity:.75}
.cert-dialog .cert-buttons button.cert-done{box-shadow:0 0 0 4px #3da85a88;filter:brightness(1.08)}
@keyframes certPulse{50%{filter:brightness(1.22);transform:scale(.98)}}
@media(max-width:600px){.cert-fields{grid-template-columns:1fr repeat(5,minmax(35px,1fr));gap:3px}.cert-fields select{font-size:10px}}

/* Extra certificate fields share the existing editor grid */
.cert-field-row{display:contents;}

/* Certificate font uploader */
.cert-font-tools{background:#eaf0f9;border:1px solid #9db2cf;border-radius:10px;padding:12px;margin:12px 0;color:#14263f}
.cert-font-tools label{font-weight:700;color:#14263f;margin:0 0 8px}
.cert-font-tools input{display:block;width:100%;margin:8px 0}
#certFontNotice{display:block;font-size:13px;line-height:1.5;color:#234565;font-weight:600}
