*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: "Segoe UI", Arial, sans-serif; background: #f0f2f5; color: #1a252f; min-height: 100vh; font-size: 115%; }
.app-header { background: linear-gradient(90deg,#002b49 0%,#004a7c 100%); color:#fff; padding:12px 18px; display:flex; justify-content:space-between; align-items:center; border-bottom:3px solid #f1c40f; position:sticky; top:0; z-index:100; }
.app-header h1 { font-size:16.5pt; font-weight:bold; }
.app-header .sub { font-size:10.5pt; opacity:.85; text-align:right; line-height:1.4; }
.cal-wrap { padding:12px; }
.cal-table { width:100%; border-collapse:collapse; table-layout:fixed; }
.cal-table th { background:#f1f4f6; border:1px solid #dee2e6; padding:8px; font-size:11.5pt; color:#002b49; text-transform:uppercase; text-align:center; }
.cal-table td { border:1px solid #dee2e6; height:170px; vertical-align:top; padding:8px; background:#fff; cursor:pointer; transition:box-shadow .15s; }
.cal-table td:hover { box-shadow:inset 0 0 0 2px #004a7c; }
.cal-table td.sea { background:#f8fbfe; }
.cal-table td.travel { background:#fff; border:1px dashed #aaa; cursor:default; }
.cal-table td.travel:hover { box-shadow:none; }
.cal-table td.eclipse { background:#fff9c4; border:2.5px solid #f1c40f; }
.cal-table td.empty { background:#f9f9f9; cursor:default; }
.cal-table td.empty:hover { box-shadow:none; }
.date-row { display:flex; justify-content:space-between; border-bottom:1px solid #eee; padding-bottom:2px; margin-bottom:4px; }
.day-num { font-weight:bold; font-size:14.5pt; color:#002b49; }
.cruise-day { font-size:9.5pt; color:#7f8c8d; font-weight:bold; }
.port-name { font-weight:900; color:#c0392b; display:block; font-size:12.5pt; margin-bottom:1px; }
.port-country { font-size:10pt; color:#7f8c8d; display:block; margin-bottom:4px; }
.port-times { font-size:10pt; color:#2c3e50; font-weight:700; display:block; margin-bottom:3px; }
.hotel-name { font-size:9.5pt; color:#7f8c8d; display:block; margin-bottom:3px; }
.sea-label { color:#5d6d7e; font-weight:900; font-size:12.5pt; display:block; margin-top:24px; text-align:center; text-transform:uppercase; }
.tender-tag { color:#d35400; font-weight:800; font-size:8.5pt; border:1px solid #d35400; padding:1px 4px; border-radius:2px; display:inline-block; margin:2px 0; }
.overnight-tag { font-weight:bold; color:#2980b9; font-size:9.5pt; display:block; }
.cal-act { margin-top:3px; padding:3px 5px; border-radius:2px; font-size:9.5pt; border-left:3px solid #ccc; line-height:1.2; }
.cal-exc { background:#e3f2fd; border-left-color:#1976d2; color:#0d47a1; font-weight:600; }
.cal-note { background:#fffde7; border-left-color:#fbc02d; color:#5d4037; font-style:italic; }
.cal-dine { background:#f1f8e9; border-left-color:#388e3c; color:#1b5e20; font-weight:bold; }
.eclipse-label { font-weight:bold; color:#e67e22; font-size:10.5pt; display:block; margin-top:4px; border-top:1px solid #f1c40f; padding-top:3px; }
#detail-overlay { display:none; position:fixed; inset:0; background:rgba(0,0,0,.45); z-index:200; align-items:center; justify-content:center; }
#detail-overlay.open { display:flex; }
#detail-panel { background:#fff; width:92vw; max-width:960px; max-height:90vh; border-radius:8px; overflow:hidden; display:flex; flex-direction:column; box-shadow:0 8px 40px rgba(0,0,0,.35); }
#detail-panel iframe { flex:1; border:none; width:100%; height:100%; min-height:560px; }
.detail-bar { background:#002b49; color:#fff; padding:10px 14px; display:flex; justify-content:space-between; align-items:center; font-size:11.5pt; flex-shrink:0; }
.detail-bar .nav-btns { display:flex; gap:10px; }
.detail-bar button { background:rgba(255,255,255,.15); border:1px solid rgba(255,255,255,.3); color:#fff; padding:6px 14px; border-radius:4px; cursor:pointer; font-size:11pt; }
.detail-bar button:hover { background:rgba(255,255,255,.25); }
.detail-bar .close-btn { background:#c0392b; border-color:#c0392b; }
.day-wrap { max-width:900px; margin:0 auto; padding:0 0 24px; }
.day-hero { width:100%; height:220px; object-fit:cover; display:block; }
.day-header { background:linear-gradient(90deg,#002b49 0%,#004a7c 100%); color:#fff; padding:14px 20px; }
.day-header .day-label { font-size:10pt; opacity:.8; text-transform:uppercase; letter-spacing:.05em; }
.day-header h2 { font-size:19.5pt; font-weight:900; margin:2px 0; }
.day-header .day-meta { font-size:11.5pt; opacity:.85; }
.day-body { padding:16px 20px; }
.section { margin-bottom:16px; }
.section-title { font-size:10pt; font-weight:700; text-transform:uppercase; letter-spacing:.08em; color:#7f8c8d; margin-bottom:6px; border-bottom:1px solid #eee; padding-bottom:3px; }
.hal-desc { font-size:12pt; line-height:1.6; color:#34495e; font-style:italic; }
.hal-ref { font-size:9.5pt; color:#aaa; margin-top:4px; }
.info-grid { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.info-box { background:#f8f9fa; border-left:3px solid #004a7c; padding:8px 10px; border-radius:0 4px 4px 0; }
.info-box .label { font-size:9.5pt; color:#7f8c8d; text-transform:uppercase; letter-spacing:.05em; }
.info-box .value { font-size:12.5pt; font-weight:700; color:#1a252f; margin-top:2px; }
.tag-row { display:flex; gap:8px; flex-wrap:wrap; margin-top:8px; }
.tag { font-size:9.5pt; font-weight:700; padding:4px 10px; border-radius:3px; border:1px solid; }
.tag-tender { color:#d35400; border-color:#d35400; background:#fef5ec; }
.tag-overnight { color:#2980b9; border-color:#2980b9; background:#eaf4fb; }
.tag-scenic { color:#8e44ad; border-color:#8e44ad; background:#f5eef8; }
.act-block { display:flex; gap:10px; padding:12px 14px; border-radius:6px; margin-bottom:8px; align-items:flex-start; }
.act-block .act-icon { font-size:23px; flex-shrink:0; margin-top:1px; }
.act-block .act-content .act-type { font-size:9.5pt; text-transform:uppercase; letter-spacing:.05em; font-weight:700; }
.act-block .act-content .act-name { font-size:13pt; font-weight:700; margin:2px 0; }
.act-block .act-content .act-time { font-size:11pt; }
.act-exc { background:#e8f4fd; }
.act-exc .act-type { color:#1565c0; }
.act-exc .act-name { color:#0d47a1; }
.act-exc .act-time { color:#1976d2; }
.act-dine { background:#f1f8e9; }
.act-dine .act-type { color:#2e7d32; }
.act-dine .act-name { color:#1b5e20; }
.act-dine .act-time { color:#388e3c; }
.act-note { background:#fffde7; }
.act-note .act-type { color:#f57f17; }
.act-note .act-name { color:#5d4037; font-style:italic; font-weight:400; }
.act-note .act-time { color:#795548; }
.eclipse-section { background:linear-gradient(135deg,#1a0a00 0%,#3d1a00 50%,#1a0a00 100%); color:#fff; padding:16px; border-radius:6px; border:2px solid #f1c40f; margin-bottom:16px; }
.eclipse-section h3 { color:#f1c40f; font-size:15.5pt; margin-bottom:8px; }
.eclipse-section .totality { font-size:13.5pt; font-weight:700; color:#f39c12; }
.eclipse-section .eclipse-notes { font-size:11.5pt; opacity:.85; margin-top:6px; line-height:1.5; }
.sea-section { text-align:center; padding:24px; color:#5d6d7e; }
.sea-section h3 { font-size:19.5pt; text-transform:uppercase; letter-spacing:.1em; margin-bottom:8px; }
.sea-section p { font-size:12pt; line-height:1.6; }
.do-scaffold { background:#f8f9fa; border:1px dashed #ccc; border-radius:6px; padding:12px 14px; }
.do-scaffold .do-title { font-size:10pt; font-weight:700; text-transform:uppercase; color:#7f8c8d; margin-bottom:6px; }
.do-scaffold .do-placeholder { font-size:11.5pt; color:#aaa; font-style:italic; }