* { box-sizing: border-box; margin: 0; padding: 0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Microsoft JhengHei", sans-serif; }
        html { scroll-behavior: smooth; }
        body { background-color: #f0f4f8; color: #1e293b; line-height: 1.6; }

        /* ===== 置頂導覽列 ===== */
        .topbar { position: sticky; top: 0; z-index: 1000; background: rgba(15, 23, 42, 0.96); backdrop-filter: blur(8px); color: #fff; box-shadow: 0 2px 12px rgba(0,0,0,0.25); }
        .topbar-inner { max-width: 950px; margin: 0 auto; padding: 9px 16px; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
        .topbar-title { font-size: 15px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
        .jump-select { flex-shrink: 0; max-width: 58%; background-color: #1e3a8a; color: #fff; border: 1px solid #3b82f6; border-radius: 8px; padding: 7px 32px 7px 10px; font-size: 13.5px; font-weight: 600; cursor: pointer; appearance: none; -webkit-appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8' fill='none' stroke='%23ffffff' stroke-width='2'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 11px center; background-size: 12px; }
        .jump-select:focus { outline: 2px solid #93c5fd; }

        .hero {
            background: linear-gradient(to bottom, rgba(15, 23, 42, 0.4), rgba(15, 23, 42, 0.8)), url('https://upload.wikimedia.org/wikipedia/commons/thumb/3/34/Queenstown_Bay_Lake_Wakatipu_01.jpg/1280px-Queenstown_Bay_Lake_Wakatipu_01.jpg') center/cover;
            color: white; text-align: center; padding: 90px 20px;
        }
        .hero h1 { font-size: 36px; margin-bottom: 15px; text-shadow: 0 2px 4px rgba(0,0,0,0.5); font-weight: 800; }
        .nav-summary { display: flex; justify-content: center; gap: 10px; flex-wrap: wrap; margin-top: 15px; }
        .nav-badge { background: rgba(255, 255, 255, 0.2); backdrop-filter: blur(5px); padding: 8px 18px; border-radius: 25px; font-size: 14px; font-weight: 500; }

        .container { max-width: 950px; margin: 40px auto; padding: 0 20px; }

        /* ===== 快速索引 ===== */
        .quick-index { background: white; border-radius: 18px; box-shadow: 0 10px 30px rgba(0,0,0,0.06); border: 1px solid #e2e8f0; padding: 30px 28px; margin-bottom: 45px; scroll-margin-top: 72px; }
        .index-title { font-size: 22px; color: #1e3a8a; font-weight: 800; }
        .index-sub { color: #64748b; font-size: 14px; margin-top: 4px; margin-bottom: 18px; }
        .ticket-shortcut { display: inline-flex; align-items: center; gap: 6px; background: linear-gradient(135deg, #f59e0b, #ef4444); color: #fff; text-decoration: none; font-weight: 700; font-size: 14.5px; padding: 11px 18px; border-radius: 10px; margin-bottom: 22px; box-shadow: 0 4px 12px rgba(239,68,68,0.25); transition: transform 0.15s; }
        .ticket-shortcut:hover { transform: translateY(-2px); }
        .route-btn { display: inline-flex; align-items: center; gap: 6px; background: linear-gradient(135deg, #2563eb, #0ea5e9); color: #fff; text-decoration: none; font-weight: 700; font-size: 15px; padding: 13px 22px; border-radius: 10px; box-shadow: 0 4px 12px rgba(37,99,235,0.28); transition: transform 0.15s; }
        .route-btn:hover { transform: translateY(-2px); }
        .route-note { color: #64748b; font-size: 13.5px; margin-top: 16px; }
        .index-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
        .index-chip { display: flex; flex-direction: column; gap: 2px; text-decoration: none; background: #f8fafc; border: 1px solid #e2e8f0; border-left: 4px solid #3b82f6; border-radius: 10px; padding: 11px 13px; transition: background 0.15s, transform 0.15s; }
        .index-chip:hover { background: #eff6ff; transform: translateY(-2px); }
        .index-chip.booked { border-left-color: #22c55e; background: #f0fdf4; }
        .index-chip.booked:hover { background: #dcfce7; }
        .chip-day { font-weight: 800; color: #1e3a8a; font-size: 14.5px; }
        .index-chip.booked .chip-day { color: #166534; }
        .chip-date { font-size: 12px; color: #64748b; font-weight: 600; }
        .chip-route { font-size: 12.5px; color: #475569; }

        /* ===== 票券總覽 ===== */
        .tickets-section { background: white; border-radius: 18px; box-shadow: 0 10px 30px rgba(0,0,0,0.06); border: 1px solid #e2e8f0; border-top: 5px solid #f59e0b; padding: 32px 28px; margin-bottom: 45px; scroll-margin-top: 72px; }
        .tickets-head h2 { font-size: 23px; color: #92400e; font-weight: 800; }
        .tickets-head p { color: #64748b; font-size: 14px; margin-top: 5px; margin-bottom: 8px; }
        .tickets-tip { background: #fffbeb; border: 1px solid #fef3c7; border-left: 5px solid #f59e0b; padding: 12px 16px; border-radius: 10px; font-size: 13.5px; color: #92400e; margin-bottom: 26px; }
        .ticket-card { background: #ffffff; border: 1px solid #e2e8f0; border-radius: 12px; margin-bottom: 22px; overflow: hidden; box-shadow: 0 2px 8px rgba(0,0,0,0.03); scroll-margin-top: 72px; }
        .ticket-card:last-child { margin-bottom: 0; }
        .tk-header { background-color: #f8fafc; padding: 14px 18px; border-bottom: 1px solid #e2e8f0; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 10px; }
        .date-badge { background: #3b82f6; color: white; padding: 4px 12px; border-radius: 6px; font-weight: bold; font-size: 13.5px; }
        .provider-badge { font-size: 12px; padding: 3px 10px; border-radius: 4px; font-weight: 600; }
        .provider-gyg { background: #ffede6; color: #ff5500; }
        .provider-trip { background: #e6f0ff; color: #0066cc; }
        .tk-body { padding: 20px; }
        .activity-title { font-size: 17.5px; color: #0f172a; margin-bottom: 14px; font-weight: 700; }
        .info-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 14px; margin-bottom: 18px; }
        .info-label { color: #64748b; font-weight: 500; margin-bottom: 2px; font-size: 13px; }
        .info-value { color: #1e293b; font-weight: 600; font-size: 14px; }
        .notice-box { background-color: #fdf2e9; border-left: 4px solid #ea580c; padding: 12px 15px; border-radius: 4px; font-size: 13.5px; color: #7c2d12; margin-bottom: 15px; }
        .map-box { background-color: #f1f5f9; border-radius: 8px; padding: 14px 15px; display: flex; align-items: center; justify-content: space-between; border: 1px dashed #cbd5e1; flex-wrap: wrap; gap: 12px; }
        .map-info { font-size: 13px; color: #475569; }
        .map-btn { background-color: #10b981; color: white; text-decoration: none; padding: 9px 16px; border-radius: 6px; font-size: 13px; font-weight: 600; display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; transition: background 0.2s; }
        .map-btn:hover { background-color: #059669; }
        .tk-daylink { display: inline-block; margin-top: 4px; font-size: 12.5px; color: #1d4ed8; text-decoration: none; font-weight: 600; }
        .tk-daylink:hover { text-decoration: underline; }

        /* ===== 每日卡片 ===== */
        .day-card { background: white; border-radius: 18px; overflow: hidden; box-shadow: 0 10px 30px rgba(0,0,0,0.06); margin-bottom: 45px; border: 1px solid #e2e8f0; scroll-margin-top: 72px; }
        .card-img { width: 100%; height: 320px; object-fit: cover; }
        .card-content { padding: 35px; }

        .day-header { display: flex; justify-content: space-between; align-items: center; border-bottom: 2px solid #e2e8f0; padding-bottom: 15px; margin-bottom: 22px; flex-wrap: wrap; gap: 10px; }
        .day-title { font-size: 22px; color: #1e3a8a; font-weight: 800; }
        .route-badge { background: #e0f2fe; color: #0369a1; padding: 5px 14px; border-radius: 6px; font-weight: bold; font-size: 13.5px; }

        .section-box { padding: 15px 18px; border-radius: 10px; margin-bottom: 20px; font-size: 14.5px; }
        .core-box { background: #f0fdf4; border: 1px solid #bbf7d0; border-left: 5px solid #22c55e; }
        .core-box h4 { color: #166534; margin-bottom: 6px; font-weight: 700; }

        .suggest-box { background: #f8fafc; border: 1px solid #e2e8f0; border-left: 5px solid #3b82f6; }
        .suggest-box h4 { color: #1d4ed8; margin-bottom: 8px; font-weight: 700; }
        .suggest-list { list-style: none; padding-left: 0; }
        .suggest-list li { margin-bottom: 6px; position: relative; padding-left: 18px; color: #475569; }
        .suggest-list li::before { content: "•"; color: #3b82f6; font-weight: bold; position: absolute; left: 0; }

        .hotel-box { background: #fef2f2; border: 1px solid #fecaca; border-left: 5px solid #ef4444; }
        .hotel-box h4 { color: #991b1b; margin-bottom: 6px; font-weight: 700; }

        .weather-box { background: #eef2ff; border: 1px solid #c7d2fe; border-left: 5px solid #4f46e5; }
        .weather-box h4 { color: #3730a3; margin-bottom: 8px; font-weight: 700; }
        .weather-box p { margin-bottom: 8px; }
        .weather-box p:last-child { margin-bottom: 0; }
        .weather-box .wx-data { font-size: 12.5px; color: #4338ca; font-weight: 700; }
        .weather-box .wx-good { color: #166534; font-weight: 700; }
        .weather-box .wx-warn { color: #b45309; font-weight: 700; }

        .map-links { margin-top: 12px; }
        .map-link { display: inline-block; text-decoration: none; font-size: 13px; font-weight: 700; padding: 8px 14px; border-radius: 7px; margin: 0 8px 6px 0; background: #ef4444; color: #fff; }
        .map-link:hover { filter: brightness(0.92); }
        .map-link.market { background: #059669; }
        .map-note { display: block; font-size: 12.5px; color: #7f1d1d; margin-top: 2px; }

        .food-box { background: #fffbeb; border: 1px solid #fef3c7; border-left: 5px solid #f59e0b; }
        .food-box h4 { color: #92400e; margin-bottom: 6px; font-weight: 700; }

        .ticket-ref { display: inline-flex; align-items: center; gap: 6px; background: #fef3c7; color: #92400e; text-decoration: none; font-weight: 700; font-size: 13.5px; padding: 9px 15px; border-radius: 8px; margin-bottom: 20px; border: 1px solid #fde68a; }
        .ticket-ref:hover { background: #fde68a; }

        .map-container { margin-top: 22px; border-radius: 12px; overflow: hidden; box-shadow: 0 4px 10px rgba(0,0,0,0.05); border: 1px solid #cbd5e1; }
        iframe { width: 100%; height: 320px; border: 0; display: block; }

        .footer { text-align: center; padding: 40px 20px; background: #0f172a; color: #94a3b8; font-size: 13.5px; border-top: 4px solid #3b82f6; }

        /* ===== 回頂端浮動鈕 ===== */
        .back-top { position: fixed; right: 18px; bottom: 18px; z-index: 900; width: 48px; height: 48px; border-radius: 50%; background: #1e3a8a; color: #fff; display: flex; align-items: center; justify-content: center; font-size: 20px; text-decoration: none; box-shadow: 0 4px 14px rgba(0,0,0,0.3); opacity: 0.9; }
        .back-top:hover { background: #1d4ed8; opacity: 1; }

        @media (max-width: 600px) {
            .hero h1 { font-size: 27px; }
            .hero { padding: 60px 16px; }
            .card-content { padding: 24px 20px; }
            .quick-index, .tickets-section { padding: 24px 18px; }
            .index-grid { grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); }
            .topbar-title { font-size: 13px; }
            .map-box { flex-direction: column; align-items: flex-start; }
            .map-btn { width: 100%; justify-content: center; }
        }

        /* ===== 加碼建議 extra-box ===== */
        .extra-box { background: #faf5ff; border: 1px solid #e9d5ff; border-left: 5px solid #8b5cf6; }
        .extra-box > h4 { color: #6d28d9; margin-bottom: 14px; font-weight: 800; font-size: 16px; }
        .extra-group { margin-bottom: 16px; }
        .extra-group:last-child { margin-bottom: 0; }
        .extra-label { font-weight: 700; font-size: 13px; margin-bottom: 8px; padding: 3px 11px; border-radius: 6px; display: inline-block; }
        .extra-label.spots { background: #ede9fe; color: #6d28d9; }
        .extra-label.tours { background: #ccfbf1; color: #0f766e; }
        .extra-label.stays { background: #ffe4e6; color: #9f1239; }
        .extra-box .suggest-list li { color: #44403c; }
        .extra-box .suggest-list li::before { content: "\203A"; color: #8b5cf6; }
        .tier { display: inline-block; font-size: 11px; font-weight: 700; padding: 1px 8px; border-radius: 10px; margin-right: 7px; vertical-align: 1px; }
        .tier.budget { background: #dcfce7; color: #166534; }
        .tier.family { background: #dbeafe; color: #1e40af; }
        .tier.lux { background: #fef3c7; color: #92400e; }

/* ===== 現場工具、離線與列印 ===== */
.utility-bar { display:flex; gap:10px; flex-wrap:wrap; margin:16px 0 24px; }
.utility-btn { border:0; border-radius:8px; padding:10px 14px; background:#334155; color:#fff; font-weight:700; cursor:pointer; }
.utility-btn:hover { background:#1e293b; }
.status-pill { display:inline-flex; align-items:center; padding:6px 10px; border-radius:999px; background:#dcfce7; color:#166534; font-size:12px; font-weight:700; }
.status-pill.offline { background:#fef3c7; color:#92400e; }
.emergency-section { background:#fff; border:2px solid #fecaca; border-top:6px solid #dc2626; border-radius:18px; padding:28px; margin-bottom:45px; scroll-margin-top:72px; }
.emergency-section h2 { color:#991b1b; margin-bottom:8px; }
.emergency-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:12px; margin:18px 0; }
.emergency-card { background:#fef2f2; border-radius:10px; padding:14px; }
.emergency-card a { color:#991b1b; font-weight:800; }
.private-notes { width:100%; min-height:110px; padding:12px; border:1px solid #cbd5e1; border-radius:8px; font:inherit; }
.offline-note { display:none; background:#fffbeb; color:#92400e; border:1px solid #fde68a; border-radius:8px; padding:10px 14px; margin:12px 0; }
body.is-offline .offline-note { display:block; }
.map-fallback { padding:10px; background:#f8fafc; font-size:13px; }

@media print {
  @page { size:A4; margin:12mm; }
  body { background:#fff; color:#000; font-size:10.5pt; }
  .topbar, .hero, .back-top, .utility-bar, iframe, .extra-box, .ticket-shortcut { display:none !important; }
  .container { max-width:none; margin:0; padding:0; }
  .quick-index, .tickets-section, .emergency-section, .day-card { box-shadow:none; break-inside:avoid; margin:0 0 10mm; border:1px solid #aaa; }
  .card-img { height:45mm; }
  .card-content { padding:6mm; }
  a { color:#000; text-decoration:none; }
  a[href^="http"]::after { content:" (" attr(href) ")"; font-size:8pt; overflow-wrap:anywhere; }
}
