/**
 * Trip2Where Planner V2 — ENHANCEMENTS (Onboarding · UI/UX Polish · Intent Search · Insight Bar)
 * Split from travel-planner-v2.css 2026-04-17 (P2-2)
 * Enqueued as: t2w-planner-enhancements (handle 3/4)
 */

/* ========================================
   ONBOARDING DASHBOARD (v7.5)
   ======================================== */

/* ── Context Bar ── */

/* ── Grid Active State (Step 3) ── */

/* ── Dashboard Content ── */

/* ── Choice Cards (AI / Manual) ── */

/* AI card */

/* Manual card */

/* ── Template Carousel ── */
/* Fill vertical space in dashboard */

/* ── AI Warning Toast ── */


/* ========================================
   v8.0 — UX UPGRADE
   ======================================== */

/* ── Quote CTA (bottom of timeline) ── */
.t2w-quote-cta {
    text-align: center;
    padding: 16px 0 8px;
    margin-top: 8px;
}

.t2w-quote-cta-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    padding: 14px 24px;
    background: linear-gradient(135deg, #F59E0B 0%, #FBBF24 100%);
    color: #fff;
    border: none;
    border-radius: 12px;
    font-size: 15px;
    font-weight: 700;
    cursor: pointer;
    transition: all 0.2s;
    box-shadow: 0 4px 12px rgba(245, 158, 11, 0.3);
    text-shadow: 0 1px 2px rgba(0,0,0,0.1);
}

.t2w-quote-cta-btn:hover {
    background: linear-gradient(135deg, #D97706 0%, #F59E0B 100%);
    transform: translateY(-1px);
    box-shadow: 0 6px 16px rgba(245, 158, 11, 0.4);
}

.t2w-quote-cta-note {
    margin: 8px 0 0;
    font-size: 12px;
    color: #94A3B8;
}

/* ── AI Preference Form (Step 3 redesign) ── */

.t2w-ai-form {
    background: #FAFBFC;
    border: 1px solid #E5E7EB;
    border-radius: 12px;
    padding: 20px;
    margin-top: 8px;
}

.t2w-ai-form-title {
    font-size: 17px;
    font-weight: 700;
    color: #111827;
    margin: 0 0 4px;
}

.t2w-ai-form-subtitle {
    font-size: 14px;
    color: #6B7280;
    margin: 0 0 16px;
}

.t2w-ai-form-section {
    margin-bottom: 16px;
}

.t2w-ai-form-section:last-child {
    margin-bottom: 0;
}

.t2w-ai-form-label {
    font-size: 14px;
    font-weight: 600;
    color: #334155;
    margin-bottom: 8px;
    display: flex;
    align-items: center;
    gap: 6px;
}

.t2w-ai-form-label i {
    font-size: 14px;
}

/* Date picker row */
.t2w-ai-date-row {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
}

.t2w-ai-date-input {
    flex: 1;
    padding: 8px 12px;
    border: 1px solid #D1D5DB;
    border-radius: 8px;
    font-size: 14px;
    color: #1E293B;
}

.t2w-ai-date-input:disabled {
    background: #F3F4F6;
    color: #9CA3AF;
}

.t2w-ai-date-sep {
    color: #94A3B8;
    font-size: 14px;
}

.t2w-ai-date-undecided {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    color: #6B7280;
    cursor: pointer;
}

.t2w-ai-date-undecided input[type="checkbox"] {
    accent-color: var(--color-primary);
}

/* Style chips */
.t2w-ai-style-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 8px;
}

.t2w-ai-style-chip {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 10px 14px;
    border: 1px solid #D1D5DB;
    border-radius: 8px;
    background: #fff;
    color: #374151;
    font-size: 14px;
    cursor: pointer;
    transition: all 0.15s;
}

.t2w-ai-style-chip:hover {
    border-color: #93C5FD;
    background: #F0F7FF;
}

.t2w-ai-style-chip--selected {
    border-color: var(--color-primary);
    background: #EFF6FF;
    color: #1D4ED8;
    font-weight: 600;
}

.t2w-ai-style-chip .chip-emoji {
    font-size: 16px;
}

/* Pace toggle */
.t2w-ai-pace-toggle {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
}

.t2w-ai-pace-btn {
    padding: 10px;
    border: 1px solid #D1D5DB;
    border-radius: 8px;
    background: #fff;
    color: #374151;
    font-size: 14px;
    font-weight: 500;
    cursor: pointer;
    text-align: center;
    transition: all 0.15s;
}

.t2w-ai-pace-btn:hover {
    border-color: #93C5FD;
}

.t2w-ai-pace-btn--selected {
    border-color: var(--color-primary);
    background: #EFF6FF;
    color: #1D4ED8;
    font-weight: 600;
}

/* Special request textarea */
.t2w-ai-textarea {
    width: 100%;
    padding: 10px 14px;
    border: 1px solid #D1D5DB;
    border-radius: 8px;
    font-size: 14px;
    color: #1E293B;
    resize: vertical;
    min-height: 64px;
    max-height: 120px;
    font-family: inherit;
}

.t2w-ai-textarea::placeholder {
    color: #9CA3AF;
}

.t2w-ai-char-count {
    text-align: right;
    font-size: 11px;
    color: #9CA3AF;
    margin-top: 4px;
}

/* Hidden fields (v8.1) */
.t2w-ai-form-section--hidden {
    display: none;
}


/* ── Zone Product Button (Feature 4, v8.2 solid) ── */
.t2w-zone-product-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    width: 100%;
    padding: 10px;
    margin-top: 8px;
    border: 1.5px solid #FCD34D;
    border-radius: 8px;
    background: #FFFBEB;
    color: #92400E;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.15s;
    box-shadow: 0 1px 2px rgba(0,0,0,0.05);
}

.t2w-zone-product-btn:hover {
    background: #FEF3C7;
    border-color: #F59E0B;
    box-shadow: 0 2px 6px rgba(245,158,11,0.2);
}

.t2w-zone-product-btn:disabled {
    opacity: 0.5;
    cursor: default;
}

/* Product list modal/panel */
.t2w-product-list {
    padding: 16px;
}

.t2w-product-filters {
    display: flex;
    gap: 8px;
    margin-bottom: 12px;
    justify-content: center;
}

.t2w-product-filter-btn {
    padding: 6px 14px;
    border: 1px solid #E5E7EB;
    border-radius: 20px;
    background: #fff;
    color: #6B7280;
    font-size: 13px;
    cursor: pointer;
    transition: all 0.15s;
}

.t2w-product-filter-btn--active {
    background: #FEF3C7;
    border-color: #F59E0B;
    color: #92400E;
    font-weight: 600;
}

.t2w-product-card {
    padding: 14px;
    border: 1px solid #E5E7EB;
    border-radius: 10px;
    margin-bottom: 10px;
    background: #fff;
}

.t2w-product-card-name {
    font-size: 15px;
    font-weight: 600;
    color: #111827;
    margin-bottom: 4px;
}

.t2w-product-card-rating {
    font-size: 13px;
    color: #F59E0B;
    margin-bottom: 4px;
}

.t2w-product-card-price {
    font-size: 15px;
    font-weight: 700;
    color: #111827;
}

.t2w-product-card-price small {
    font-size: 12px;
    color: #9CA3AF;
    font-weight: 400;
}

.t2w-product-card-duration {
    font-size: 13px;
    color: #6B7280;
    margin-top: 2px;
}

.t2w-product-card-action {
    margin-top: 8px;
}

.t2w-product-card-action a {
    font-size: 13px;
    color: var(--color-primary);
    text-decoration: none;
    font-weight: 500;
}

.t2w-product-card-action a:hover {
    text-decoration: underline;
}

.t2w-product-empty {
    text-align: center;
    padding: 24px;
    color: #9CA3AF;
    font-size: 14px;
}

@media (max-width: 640px) {
    .t2w-ai-style-grid {
        grid-template-columns: 1fr 1fr;
    }
    .t2w-day-action-btn span {
        display: none;
    }
}
/* ============================
   v11.0 — Emotional System (Phase 6B)
   ============================ */

/* Region mood gradients */
.t2w-zone-card[data-region="sydney"]         { --zone-accent: #4A90E2; --zone-gradient: linear-gradient(135deg, #4A90E2 0%, #F5E6C8 100%); }
.t2w-zone-card[data-region="melbourne"]      { --zone-accent: #8B5CF6; --zone-gradient: linear-gradient(135deg, #3D2B1F 0%, #8B5CF6 100%); }
.t2w-zone-card[data-region="gold-coast"]     { --zone-accent: #06B6D4; --zone-gradient: linear-gradient(135deg, #06B6D4 0%, #FBBF24 100%); }
.t2w-zone-card[data-region="cairns"]         { --zone-accent: #059669; --zone-gradient: linear-gradient(135deg, #059669 0%, #0EA5E9 100%); }
.t2w-zone-card[data-region="blue-mountains"] { --zone-accent: #6366F1; --zone-gradient: linear-gradient(135deg, #6366F1 0%, #E0E7FF 100%); }
.t2w-zone-card[data-region="wollongong"]     { --zone-accent: #0369A1; --zone-gradient: linear-gradient(135deg, #0369A1 0%, #BAE6FD 100%); }
.t2w-zone-card[data-region="perth"]          { --zone-accent: #EA580C; --zone-gradient: linear-gradient(135deg, #EA580C 0%, #FED7AA 100%); }
.t2w-zone-card[data-region="adelaide"]       { --zone-accent: #7C3AED; --zone-gradient: linear-gradient(135deg, #7C3AED 0%, #DDD6FE 100%); }
.t2w-zone-card[data-region="hobart"]         { --zone-accent: #164E63; --zone-gradient: linear-gradient(135deg, #164E63 0%, #A5F3FC 100%); }

/* Emotional day title */
.t2w-day-title--emotional {
    display: block;
    font-size: 17px;
    font-weight: 600;
    color: #1F2937;
    line-height: 1.4;
}
.t2w-day-subtitle {
    display: block;
    font-size: 12px;
    color: #6B7280;
    font-weight: 400;
    margin-top: 2px;
}

/* Micro copy (place-level tips from AI) */
.t2w-micro-copy {
    font-size: 13px;
    color: #6B7280;
    font-style: italic;
    margin: 2px 0 6px 36px;
    line-height: 1.4;
    padding: 0;
}

/* Evidence line (practical fact, 2-tier copy) */
.t2w-evidence-line {
    font-size: 11px;
    color: #9CA3AF;
    margin: 0 0 6px 36px;
    line-height: 1.3;
    padding: 0;
    font-style: normal;
}

/* Transition bridge (zone-to-zone emotional text) */
.t2w-transition-bridge {
    font-size: 12px;
    color: #9CA3AF;
    padding: 4px 12px;
    text-align: center;
    line-height: 1.4;
    font-style: italic;
}
.t2w-movement-card .t2w-transition-bridge {
    margin-top: 4px;
    padding: 2px 8px;
}

/* Personalization echo (bottom of AI result) */
.t2w-personalization-echo {
    font-size: 13px;
    color: #6B7280;
    text-align: center;
    padding: 12px 16px;
    background: #F9FAFB;
    border-radius: 8px;
    margin: 8px 0;
    font-style: italic;
}

/* ============================
   v11.0 — Personalization (Phase 6C)
   ============================ */

/* Quick-start presets grid */
.t2w-quickstart-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
    padding: 16px;
    max-width: 400px;
    margin: 0 auto;
}
.t2w-quickstart-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    padding: 16px 12px;
    border: 2px solid #E5E7EB;
    border-radius: 12px;
    background: #fff;
    cursor: pointer;
    transition: all 0.2s;
    text-align: center;
}
.t2w-quickstart-card:hover {
    border-color: #F59E0B;
    background: #FFFBEB;
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(245, 158, 11, 0.15);
}
.t2w-quickstart-card--active {
    border-color: #F59E0B;
    background: #FEF3C7;
}
.t2w-quickstart-emoji { font-size: 28px; }
.t2w-quickstart-title { font-size: 14px; font-weight: 600; color: #1F2937; }
.t2w-quickstart-desc { font-size: 12px; color: #6B7280; }
.t2w-quickstart-skip {
    display: block;
    text-align: center;
    margin-top: 12px;
    font-size: 13px;
    color: #6B7280;
    cursor: pointer;
    text-decoration: underline;
}


/* ═══════════════════════════════════════
   v11.2 Product Detail & Comparison
   ═══════════════════════════════════════ */

/* Gallery */
.t2w-pd-gallery { margin: -16px -16px 12px; }
.t2w-pd-photo-hero {
    width: 100%; height: 200px;
    background: #E5E7EB center/cover no-repeat;
    border-radius: 0;
}
.t2w-pd-photo-strip {
    display: flex; gap: 4px;
    padding: 4px 8px; overflow-x: auto;
}
.t2w-pd-photo-thumb {
    width: 56px; height: 56px; flex-shrink: 0;
    background: #E5E7EB center/cover no-repeat;
    border-radius: 6px; cursor: pointer;
    border: 2px solid transparent;
    transition: border-color 0.15s;
}
.t2w-pd-photo-thumb:hover { border-color: var(--color-primary); }

/* Header */
.t2w-pd-header { margin-bottom: 12px; }
.t2w-pd-header h3 { font-size: 18px; font-weight: 700; color: #1F2937; margin: 0 0 6px; }
.t2w-pd-header-meta { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.t2w-pd-vendor-name { font-size: 13px; color: #6B7280; }
.t2w-pd-vendor-name i.fa-check-circle { font-size: 12px; }
.t2w-pd-rating { font-size: 13px; color: #F59E0B; font-weight: 600; }
.t2w-pd-rating small { font-weight: 400; color: #9CA3AF; }

/* Price box */
.t2w-pd-price-box {
    background: linear-gradient(135deg, #FFF7E6, #FFFDF5);
    border: 1px solid #FFD97540;
    border-radius: 10px; padding: 12px 14px; margin-bottom: 14px;
}
.t2w-pd-price-main { display: flex; align-items: baseline; gap: 8px; }
.t2w-pd-price-aud { font-size: 22px; font-weight: 800; color: #1F2937; }
.t2w-pd-price-krw { font-size: 14px; color: #6B7280; }
.t2w-pd-price-label { font-size: 11px; color: #9CA3AF; }
.t2w-pd-price-child { font-size: 12px; color: #6B7280; margin-top: 4px; }
.t2w-pd-duration { font-size: 13px; color: #374151; margin-top: 6px; }

/* Description */
.t2w-pd-desc { font-size: 13px; color: #4B5563; line-height: 1.6; white-space: pre-line; }
.t2w-pd-desc--collapsed { max-height: 80px; overflow: hidden; position: relative; }
.t2w-pd-desc--collapsed::after {
    content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 40px;
    background: linear-gradient(transparent, white);
}
.t2w-pd-desc-toggle {
    display: inline-block; margin-top: 4px; padding: 0;
    font-size: 12px; color: var(--color-primary); background: none; border: none; cursor: pointer;
}
.t2w-pd-desc-section { margin-bottom: 14px; }

/* Route minimap */
.t2w-pd-route-map {
    width: 100%; height: 180px;
    border-radius: 8px; margin-bottom: 8px;
    background: #F3F4F6;
}
.t2w-pd-route-marker span {
    display: flex; align-items: center; justify-content: center;
    width: 24px; height: 24px; border-radius: 50%;
    background: var(--color-primary); color: #fff; font-size: 12px; font-weight: 700;
    box-shadow: 0 2px 4px rgba(0,0,0,0.2);
}
.t2w-pd-route-stops {
    list-style: decimal; padding-left: 24px; margin: 0;
    font-size: 13px; color: #374151; line-height: 1.8;
}

/* Sections */
.t2w-pd-section { margin-bottom: 14px; }
.t2w-pd-section h5 { font-size: 13px; font-weight: 600; color: #374151; margin: 0 0 6px; }

/* Includes / Excludes 2-col */
.t2w-pd-incl-excl { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.t2w-pd-incl ul, .t2w-pd-excl ul { list-style: none; padding: 0; margin: 0; font-size: 12px; }
.t2w-pd-incl li::before { content: '✓ '; color: #10B981; font-weight: 700; }
.t2w-pd-excl li::before { content: '✕ '; color: #EF4444; font-weight: 700; }
.t2w-pd-incl li, .t2w-pd-excl li { padding: 2px 0; color: #4B5563; }

/* Compare button */
.t2w-pd-compare-btn {
    display: block; width: 100%; padding: 10px;
    background: #EFF6FF; border: 1px solid #BFDBFE; border-radius: 8px;
    color: #1D4ED8; font-size: 13px; font-weight: 600; cursor: pointer;
    text-align: center; margin-bottom: 10px;
    transition: background 0.15s;
}
.t2w-pd-compare-btn:hover { background: #DBEAFE; }

/* CTA */
.t2w-pd-cta {
    display: block; width: 100%; padding: 12px;
    border-radius: 10px; font-size: 14px; font-weight: 700;
    text-align: center; cursor: pointer; border: none;
    transition: transform 0.1s;
}
.t2w-pd-cta:active { transform: scale(0.98); }
.t2w-pd-cta-select { background: var(--color-primary); color: #1F2937; }
.t2w-pd-cta-coming { background: #E5E7EB; color: #9CA3AF; cursor: not-allowed; display: flex; align-items: center; justify-content: center; gap: 6px; }
.t2w-pd-cta-coming:active { transform: none; }
.t2w-pd-cta-ext {
    background: var(--color-primary); color: #fff; text-decoration: none;
    display: flex; align-items: center; justify-content: center; gap: 6px;
}

/* ── Place Detail Skeleton (v30.1) ── */
@keyframes t2w-shimmer { 0%{background-position:-200px 0} 100%{background-position:200px 0} }
/* v30.1 Content-aware skeleton — matches place detail card layout */
.t2w-pd-skeleton { padding: 0; }
.t2w-skel-shimmer { background: linear-gradient(90deg, #F3F4F6 25%, #E5E7EB 50%, #F3F4F6 75%); background-size: 400px 100%; animation: t2w-shimmer 1.2s ease-in-out infinite; }
.t2w-skel-hero { height: 220px; border-radius: 0 0 16px 16px; }
.t2w-skel-body { padding: 16px; }
.t2w-skel-title { height: 22px; width: 65%; border-radius: 6px; margin-bottom: 8px; }
.t2w-skel-rating { display: flex; gap: 6px; margin-bottom: 14px; }
.t2w-skel-stars { height: 14px; width: 90px; border-radius: 4px; }
.t2w-skel-count { height: 14px; width: 50px; border-radius: 4px; }
.t2w-skel-tags { display: flex; gap: 8px; margin-bottom: 16px; }
.t2w-skel-tag { height: 28px; width: 72px; border-radius: 999px; }
.t2w-skel-divider { height: 1px; background: #F3F4F6; margin: 12px 0; }
.t2w-skel-desc { height: 14px; border-radius: 4px; margin-bottom: 8px; }
.t2w-skel-desc:last-child { width: 45%; }
/* Replace-in-place crossfade */
.t2w-panel-content { transition: opacity 0.15s ease; }
.t2w-panel-content.t2w-panel-updating { opacity: 0.3; pointer-events: none; }

/* v31: Mobile skeleton adjustments */
@media (max-width: 768px) {
    .t2w-skel-hero { height: 140px; border-radius: 0 0 12px 12px; }
    .t2w-skel-body { padding: 14px; }
    .t2w-skel-title { height: 18px; }
    .t2w-skel-tag { height: 24px; width: 60px; }
}

/* v31: Mobile touch feedback — card tap visual response */
.t2w-v29-card:active {
    transform: scale(0.98);
    box-shadow: 0 2px 8px rgba(0,0,0,0.08);
    transition: transform 0.08s ease, box-shadow 0.08s ease;
}
.t2w-v29-item--meal .t2w-v29-card:active {
    transform: scale(0.98);
}
.t2w-mob-chip:active {
    transform: scale(0.95);
    transition: transform 0.08s ease;
}
.t2w-zb-add-place:active, .t2w-tl-add-zone-inline:active {
    transform: scale(0.97);
    transition: transform 0.08s ease;
}

/* ── Comparison Panel ── */
.t2w-comparison-panel { margin-top: 12px; }
.t2w-comparison-header { margin-bottom: 10px; }
.t2w-comparison-header h4 { font-size: 15px; font-weight: 700; color: #1F2937; margin: 0; }
.t2w-comparison-reason { font-size: 12px; color: #9CA3AF; }

.t2w-comparison-sort { display: flex; gap: 6px; margin-bottom: 10px; }
.t2w-comparison-sort-btn {
    padding: 5px 12px; border-radius: 20px; font-size: 12px; font-weight: 500;
    border: 1px solid #D1D5DB; background: #fff; color: #6B7280; cursor: pointer;
    transition: all 0.15s;
}
.t2w-comparison-sort-btn--active {
    background: #1F2937; color: #fff; border-color: #1F2937;
}

.t2w-comparison-list { display: flex; flex-direction: column; gap: 8px; }
.t2w-comparison-row {
    border: 1px solid #E5E7EB; border-radius: 10px;
    padding: 10px 12px; background: #fff;
    transition: border-color 0.15s;
}
.t2w-comparison-row:hover { border-color: #BFDBFE; }
.t2w-comparison-row--current { border-color: var(--color-primary); background: #FFFBEB; }

.t2w-comparison-row-main { margin-bottom: 4px; }
.t2w-comparison-name { font-size: 13px; font-weight: 600; color: #1F2937; display: block; }
.t2w-comparison-vendor { font-size: 11px; color: #9CA3AF; }

.t2w-comparison-row-meta { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 4px; }
.t2w-comparison-price { font-size: 14px; font-weight: 700; color: #1F2937; }
.t2w-comparison-price small { font-size: 11px; color: #9CA3AF; font-weight: 400; }
.t2w-comparison-dur { font-size: 11px; color: #6B7280; }
.t2w-comparison-rating { font-size: 12px; color: #F59E0B; font-weight: 600; }

.t2w-comparison-overlap { font-size: 11px; color: #6B7280; margin-bottom: 4px; }
.t2w-comparison-incl { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 6px; }
.t2w-comparison-incl-tag {
    font-size: 10px; padding: 2px 6px; border-radius: 4px;
    background: #F0FDF4; color: #166534; border: 1px solid #BBF7D0;
}
.t2w-comparison-incl-more { font-size: 10px; color: #9CA3AF; align-self: center; }

.t2w-comparison-detail-btn {
    padding: 4px 10px; border-radius: 6px; font-size: 11px;
    background: #EFF6FF; color: #1D4ED8; border: 1px solid #BFDBFE;
    cursor: pointer; transition: background 0.15s;
}
.t2w-comparison-detail-btn:hover { background: #DBEAFE; }

/* Food card price level */
.t2w-dock-card-price { font-size: 11px; color: #059669; font-weight: 600; }

/* Panel loading state */
.t2w-panel-loading {
    display: flex; align-items: center; justify-content: center;
    padding: 40px; color: #9CA3AF; font-size: 14px;
}

/* ── v11.3 Day Controls ── */

.t2w-tl-controls {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-left: auto;
    flex-shrink: 0;
}

.t2w-tl-ctrl {
    width: 30px;
    height: 30px;
    border-radius: 50%;
    border: 1px solid #D1D5DB;
    background: #fff;
    color: #374151;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    font-size: 12px;
    transition: all 0.15s;
    padding: 0;
}

.t2w-tl-ctrl:hover {
    background: #F3F4F6;
    border-color: #9CA3AF;
}

.t2w-tl-ctrl--reset {
    margin-left: 4px;
    color: #9CA3AF;
    font-size: 11px;
}

.t2w-tl-ctrl--reset:hover {
    background: #FEE2E2;
    border-color: #F87171;
    color: #DC2626;
}

.t2w-tl-day-count {
    font-size: 13px;
    font-weight: 700;
    color: #1F2937;
    min-width: 28px;
    text-align: center;
}

.t2w-tl-login-hint {
    font-size: 12px;
    color: #6B7280;
    padding: 4px 16px 8px;
    display: flex;
    align-items: center;
    gap: 6px;
    background: #F0F9FF;
    border-bottom: 1px solid #E0F2FE;
}

.t2w-tl-login-hint i {
    color: var(--color-primary);
    font-size: 11px;
}

@media (max-width: 768px) {
    .t2w-tl-controls {
        gap: 4px;
    }
    .t2w-tl-ctrl {
        width: 28px;
        height: 28px;
        font-size: 11px;
    }
    .t2w-tl-day-count {
        font-size: 12px;
    }
}

/* ═══════════ v11.7: Vibe Onboarding Cards ═══════════ */

.t2w-vibe-counter {
    color: #6B7280;
    font-size: 14px;
}
.t2w-vibe-count {
    font-weight: 700;
    color: #EF4444;
}

.t2w-vibe-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
    width: 100%;
    max-width: 480px;
    margin: 0 auto;
    padding: 0 16px 16px;
    box-sizing: border-box;
}
.t2w-vibe-grid .t2w-vibe-card:nth-child(5) {
    grid-column: 1 / -1;
}

.t2w-vibe-card {
    position: relative;
    aspect-ratio: 3 / 4;
    border-radius: 16px;
    background-size: cover;
    background-position: center;
    cursor: pointer;
    overflow: hidden;
    border: 3px solid transparent;
    transition: border-color 0.25s, transform 0.25s;
}
.t2w-vibe-card:hover {
    transform: scale(1.02);
}

.t2w-vibe-card-overlay {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    padding: 32px 14px 14px;
    background: linear-gradient(to top, rgba(0,0,0,0.65) 0%, transparent 100%);
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.t2w-vibe-label {
    font-size: 15px;
    font-weight: 700;
    color: #fff;
}
.t2w-vibe-sub {
    font-size: 12px;
    color: rgba(255,255,255,0.8);
}

.t2w-vibe-heart {
    position: absolute;
    top: 12px;
    right: 12px;
    font-size: 22px;
    color: #fff;
    filter: drop-shadow(0 1px 3px rgba(0,0,0,0.4));
    transition: transform 0.3s, color 0.3s;
    z-index: 2;
}

/* Active state */
.t2w-vibe-card--active {
    border-color: #EF4444;
}
.t2w-vibe-card--active .t2w-vibe-heart {
    color: #EF4444;
    transform: scale(1.2);
}

/* Heart beat animation on select */
.t2w-heart-beating {
    animation: t2w-heart-beat 0.5s ease;
}
@keyframes t2w-heart-beat {
    0%, 100% { transform: scale(1); }
    25% { transform: scale(1.4); }
    50% { transform: scale(1.1); }
    75% { transform: scale(1.3); }
}

/* Pulse animation when 2nd vibe selected */
.t2w-vibe-pulse {
    animation: t2w-vibe-pulse 0.5s ease;
}
@keyframes t2w-vibe-pulse {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.04); }
}

/* Manual link */
.t2w-vibe-manual {
    display: block;
    text-align: center;
    padding: 14px 0 6px;
    font-size: 13px;
    color: #6B7280;
    cursor: pointer;
    transition: color 0.2s;
}
.t2w-vibe-manual:hover {
    color: var(--color-primary);
}


/* Vibe Loading */
.t2w-vibe-loading {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 60px 20px;
    text-align: center;
}
.t2w-vibe-loading-icon {
    font-size: 36px;
    color: var(--color-primary);
    animation: t2w-vibe-float 2s ease-in-out infinite;
    margin-bottom: 20px;
}
@keyframes t2w-vibe-float {
    0%, 100% { transform: translateY(0) rotate(0deg); }
    50% { transform: translateY(-12px) rotate(10deg); }
}
.t2w-vibe-loading-title {
    font-size: 16px;
    font-weight: 600;
    color: #1F2937;
    margin: 0 0 6px;
}
.t2w-vibe-loading-sub {
    font-size: 13px;
    color: #6B7280;
    margin: 0;
}

/* 5th card full-width: different aspect ratio */
.t2w-vibe-grid .t2w-vibe-card:nth-child(5) {
    aspect-ratio: 16 / 9;
}

/* ========================================
   BROWSE-FIRST UX (v12.0)
   ======================================== */


/* ── Browse Grid ── */
.t2w-browse-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
    padding: 0 16px 80px;
    min-height: 200px;
}

/* ── Browse Card ── */
.t2w-browse-card {
    border-radius: 12px;
    overflow: hidden;
    background: #fff;
    border: 1px solid #E5E7EB;
    cursor: pointer;
    transition: transform 0.2s, box-shadow 0.2s;
}
.t2w-browse-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0,0,0,0.08);
}

.t2w-browse-card-img {
    position: relative;
    aspect-ratio: 4 / 3;
    background-size: cover;
    background-position: center;
    background-color: #F3F4F6;
}

/* Category fallback gradients (reuse existing .t2w-pc-img-* classes) */
.t2w-browse-card-img.t2w-pc-img-attraction { background-color: #DBEAFE; }
.t2w-browse-card-img.t2w-pc-img-nature { background-color: #D1FAE5; }
.t2w-browse-card-img.t2w-pc-img-food { background-color: #FEF3C7; }
.t2w-browse-card-img.t2w-pc-img-cafe { background-color: #FDE68A; }
.t2w-browse-card-img.t2w-pc-img-beach { background-color: #CFFAFE; }
.t2w-browse-card-img.t2w-pc-img-activity { background-color: #FCE7F3; }
.t2w-browse-card-img.t2w-pc-img-shopping { background-color: #EDE9FE; }

/* ── Heart Button ── */
.t2w-browse-heart {
    position: absolute;
    top: 8px;
    right: 8px;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: rgba(255,255,255,0.85);
    backdrop-filter: blur(4px);
    border: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 16px;
    color: #9CA3AF;
    transition: all 0.2s;
    z-index: 2;
}
.t2w-browse-heart:hover {
    background: #fff;
    color: #EF4444;
    transform: scale(1.1);
}
.t2w-browse-heart--active {
    background: #FEF2F2;
    color: #EF4444;
}
.t2w-browse-heart--active i {
    color: #EF4444;
}

/* ── Vibe Tags on Card ── */
.t2w-browse-vibe-tags {
    position: absolute;
    bottom: 8px;
    left: 8px;
    display: flex;
    gap: 4px;
}
.t2w-browse-vibe-tag {
    padding: 2px 8px;
    border-radius: 10px;
    background: rgba(0,0,0,0.5);
    backdrop-filter: blur(4px);
    font-size: 10px;
    font-weight: 500;
    color: #fff;
}

/* ── Card Body ── */
.t2w-browse-card-body {
    padding: 8px 10px 10px;
}
.t2w-browse-card-name {
    display: block;
    font-size: 13px;
    font-weight: 600;
    color: #111827;
    line-height: 1.3;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.t2w-browse-card-name-en {
    display: block;
    font-size: 11px;
    color: #9CA3AF;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.t2w-browse-card-meta {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-top: 4px;
    font-size: 11px;
    color: #6B7280;
}
.t2w-browse-card-cat {
    color: var(--color-primary);
    font-weight: 500;
}
.t2w-browse-card-rating {
    color: #D97706;
}
.t2w-browse-card-rating i {
    font-size: 10px;
}

/* ── Floating Bar ── */
.t2w-browse-floating-bar {
    position: sticky;
    bottom: 0;
    left: 0;
    right: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 16px;
    background: rgba(255,255,255,0.95);
    backdrop-filter: blur(8px);
    border-top: 1px solid #E5E7EB;
    z-index: 50;
    animation: t2w-slide-up 0.3s ease;
}
@keyframes t2w-slide-up {
    from { transform: translateY(100%); opacity: 0; }
    to { transform: translateY(0); opacity: 1; }
}
.t2w-browse-floating-count {
    font-size: 14px;
    font-weight: 600;
    color: #1F2937;
}
.t2w-browse-floating-count span {
    color: #EF4444;
    font-size: 18px;
}
.t2w-browse-confirm-btn {
    padding: 10px 24px;
    border-radius: 10px;
    border: none;
    background: var(--color-primary);
    color: #fff;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.2s, transform 0.15s;
}
.t2w-browse-confirm-btn:hover {
    background: #2563EB;
}
.t2w-browse-confirm-btn:active {
    transform: scale(0.97);
}

/* ── Skip link ── */
.t2w-browse-skip-link {
    display: block;
    text-align: center;
    padding: 14px 0 6px;
    font-size: 13px;
    color: #6B7280;
    cursor: pointer;
    transition: color 0.2s;
    grid-column: 1 / -1;
}
.t2w-browse-skip-link:hover {
    color: var(--color-primary);
}

/* ── Browse Dashboard override ── */

/* ── Mobile adjustments ── */
@media (max-width: 768px) {
    .t2w-browse-grid {
        gap: 10px;
        padding: 0 12px 80px;
    }
    .t2w-browse-card-name {
        font-size: 12px;
    }
    .t2w-browse-floating-bar {
        padding: 10px 12px;
    }
}

@media (max-width: 768px) {
    .t2w-vibe-grid {
        gap: 10px;
        padding: 0 12px 12px;
    }
    .t2w-vibe-grid .t2w-vibe-card:nth-child(5) {
        aspect-ratio: 16 / 9;
    }
    .t2w-vibe-label {
        font-size: 14px;
    }
    .t2w-vibe-heart {
        font-size: 20px;
    }
}

@keyframes t2w-spin {
    to { transform: rotate(360deg); }
}

/* ── Recommend Header ── */
.t2w-recommend-header {
    text-align: center;
}

/* ── AI Comment on browse cards ── */
.t2w-ai-comment {
    font-size: 11px;
    line-height: 1.5;
    color: #6B7280;
    margin: 4px 0 0;
    padding: 0;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* ── v12.2: micro_copy fade-in animation ── */
.t2w-mc-fadein {
    animation: t2w-mc-fade 0.6s ease-in forwards;
}
@keyframes t2w-mc-fade {
    from { opacity: 0; transform: translateY(4px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* ── v12.2: match reason tags ── */
.t2w-browse-card-reasons {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    margin-top: 4px;
}
.t2w-browse-reason {
    font-size: 10px;
    color: #6B7280;
    background: #F3F4F6;
    padding: 1px 6px;
    border-radius: 8px;
    white-space: nowrap;
}

/* ========================================
 * ZONE BUILDER (v13.0) — Zone Fill Accordion
 * ======================================== */

/* Zone Fill Accordion */
.t2w-zone-fill-item {
    border: 1px solid #E5E7EB;
    border-radius: 12px;
    margin-bottom: 12px;
    overflow: hidden;
    background: #fff;
}
.t2w-zone-fill-header {
    display: flex;
    align-items: center;
    padding: 12px;
    cursor: pointer;
    gap: 10px;
    transition: background 0.15s;
}
.t2w-zone-fill-header:hover {
    background: #F9FAFB;
}
.t2w-zone-fill-thumb {
    width: 44px;
    height: 44px;
    border-radius: 8px;
    background-size: cover;
    background-position: center;
    background-color: #F3F4F6;
    flex-shrink: 0;
}
.t2w-zone-fill-title {
    flex: 1;
    min-width: 0;
}
.t2w-zone-fill-name {
    display: block;
    font-size: 14px;
    font-weight: 600;
    color: #1F2937;
}
.t2w-zone-fill-count {
    font-size: 12px;
    color: #6B7280;
}
.t2w-zone-fill-modes {
    display: flex;
    gap: 4px;
    flex-shrink: 0;
}
.t2w-zone-fill-mode {
    font-size: 11px;
    padding: 4px 10px;
    border-radius: 12px;
    border: 1px solid #E5E7EB;
    background: #fff;
    color: #6B7280;
    cursor: pointer;
    transition: all 0.15s;
}
.t2w-zone-fill-mode:hover {
    border-color: #93C5FD;
    color: var(--color-primary);
}
.t2w-zone-fill-mode--active {
    background: var(--color-primary);
    color: #fff;
    border-color: var(--color-primary);
}
.t2w-zone-fill-arrow {
    color: #9CA3AF;
    font-size: 12px;
    transition: transform 0.2s;
    flex-shrink: 0;
}
.t2w-zone-fill-item--open .t2w-zone-fill-arrow {
    transform: rotate(180deg);
}
.t2w-zone-fill-body {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.3s ease;
}
.t2w-zone-fill-item--open .t2w-zone-fill-body {
    max-height: 800px;
}
.t2w-zone-fill-content {
    padding: 0 12px 12px;
}

/* Zone Scored Place Item (checklist) */
.t2w-zone-scored-place {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 0;
    border-bottom: 1px solid #F3F4F6;
    cursor: pointer;
    transition: background 0.1s;
}
.t2w-zone-scored-place:last-child {
    border-bottom: none;
}
.t2w-zone-scored-place:hover {
    background: #F9FAFB;
}
.t2w-zsp-check {
    font-size: 18px;
    color: #D1D5DB;
    flex-shrink: 0;
    transition: color 0.15s;
}
.t2w-zsp-checked .t2w-zsp-check {
    color: var(--color-primary);
}
.t2w-zsp-thumb {
    width: 40px;
    height: 40px;
    border-radius: 8px;
    background-size: cover;
    background-position: center;
    background-color: #F3F4F6;
    flex-shrink: 0;
}
.t2w-zsp-info {
    flex: 1;
    min-width: 0;
}
.t2w-zsp-name {
    display: block;
    font-size: 13px;
    font-weight: 500;
    color: #1F2937;
}
.t2w-zsp-reasons {
    display: flex;
    gap: 4px;
    margin-top: 2px;
}
.t2w-zsp-reason {
    font-size: 10px;
    padding: 1px 6px;
    border-radius: 4px;
    background: #EFF6FF;
    color: var(--color-primary);
}
.t2w-zsp-score {
    font-size: 12px;
    font-weight: 600;
    color: var(--color-primary);
    background: #EFF6FF;
    padding: 2px 8px;
    border-radius: 6px;
    flex-shrink: 0;
}

/* Zone Fill: Browse Grid inside accordion */
.t2w-zone-fill-browse-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 8px;
}

/* Zone Build Floating Bar */
.t2w-zone-build-floating {
    position: sticky;
    bottom: 0;
    left: 0;
    right: 0;
    background: #fff;
    border-top: 1px solid #E5E7EB;
    padding: 12px 16px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    z-index: 10;
    box-shadow: 0 -2px 8px rgba(0,0,0,0.06);
}
.t2w-zone-build-summary {
    font-size: 13px;
    color: #374151;
}
.t2w-zone-build-confirm {
    background: var(--color-primary);
    color: #fff;
    border: none;
    border-radius: 10px;
    padding: 10px 20px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.2s;
}
.t2w-zone-build-confirm:hover {
    background: #2563EB;
}

/* Mobile: Zone Picker */
@media (max-width: 480px) {
    .t2w-zone-fill-modes {
        display: none;
    }
    .t2w-zone-fill-header {
        position: relative;
    }
    .t2w-zone-fill-item--open .t2w-zone-fill-modes {
        display: flex;
        position: absolute;
        top: 56px;
        right: 12px;
    }
    .t2w-zone-fill-browse-grid {
        grid-template-columns: 1fr;
    }
}

/* ==========================================
   v18.0 — Review Intelligence Styles
   ========================================== */

/* Facility bar (between hero and tabs) */
.t2w-pd-facility-bar {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    padding: 8px 16px;
    border-bottom: 1px solid #F3F4F6;
    background: #FAFAFA;
}
.t2w-pd-facility {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 11px;
    color: #4B5563;
    background: #fff;
    border: 1px solid #E5E7EB;
    border-radius: 6px;
    padding: 3px 8px;
}
.t2w-pd-facility i {
    font-size: 10px;
    color: var(--color-primary);
}
.t2w-pd-facility--ticket {
    background: #FEF3C7;
    border-color: #F59E0B;
    color: #92400E;
}
.t2w-pd-facility--ticket i {
    color: #D97706;
}

/* Emotional hook (top of about tab) */
.t2w-pd-hook {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    padding: 12px 14px;
    margin: 0 0 12px;
    background: linear-gradient(135deg, #EFF6FF 0%, #F0FDF4 100%);
    border-radius: 10px;
    border-left: 3px solid #3B82F6;
}
.t2w-pd-hook-icon {
    font-size: 16px;
    line-height: 1.4;
    flex-shrink: 0;
}
.t2w-pd-hook-text {
    font-size: 13px;
    line-height: 1.6;
    color: #1E40AF;
    font-style: italic;
}

/* Review Insight Box */
.t2w-pd-ri-box {
    background: #EFF6FF;
    border-radius: 12px;
    padding: 14px 16px;
    margin-bottom: 12px;
}
.t2w-pd-ri-header {
    font-size: 13px;
    font-weight: 700;
    color: #1E40AF;
    margin-bottom: 8px;
}
.t2w-pd-ri-header i {
    color: var(--color-primary);
    margin-right: 4px;
}
.t2w-pd-ri-summary {
    font-size: 13px;
    line-height: 1.7;
    color: #374151;
}

/* Practical tips */
.t2w-pd-ri-tips {
    font-size: 12px;
    line-height: 1.6;
    color: #4B5563;
    padding: 10px 14px;
    background: #F9FAFB;
    border-radius: 8px;
    margin-bottom: 12px;
    border-left: 3px solid #F59E0B;
}
.t2w-pd-ri-tips i {
    color: #F59E0B;
    margin-right: 4px;
}

/* Audience tags */
.t2w-pd-ri-tags-section {
    margin-bottom: 12px;
}
.t2w-pd-ri-tags-label {
    font-size: 12px;
    font-weight: 600;
    color: #374151;
    margin-bottom: 6px;
}
.t2w-pd-ri-tags-label i {
    color: var(--color-primary);
    margin-right: 4px;
}
.t2w-pd-ri-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}
.t2w-pd-ri-tag {
    display: inline-block;
    font-size: 11px;
    font-weight: 600;
    padding: 4px 10px;
    border-radius: 20px;
    white-space: nowrap;
}

/* Skip signal */
.t2w-pd-ri-skip {
    font-size: 12px;
    line-height: 1.5;
    color: #92400E;
    background: #FEF3C7;
    border-radius: 8px;
    padding: 10px 14px;
    margin-bottom: 12px;
}
.t2w-pd-ri-skip i {
    color: #D97706;
    margin-right: 4px;
}

/* Review quotes */
.t2w-pd-ri-quotes {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.t2w-pd-ri-quote {
    background: #fff;
    border: 1px solid #E5E7EB;
    border-radius: 10px;
    padding: 10px 14px;
}
.t2w-pd-ri-quote-label {
    font-size: 11px;
    font-weight: 600;
    color: #6B7280;
    margin-bottom: 4px;
}
.t2w-pd-ri-quote-label i {
    color: var(--color-primary);
    margin-right: 4px;
}
.t2w-pd-ri-quote-text {
    font-size: 13px;
    line-height: 1.6;
    color: #374151;
    font-style: italic;
}

/* v18.0 — Place Card Review Insight Elements */
.t2w-pc-hook {
    font-size: 11px;
    line-height: 1.5;
    color: #6B7280;
    font-style: italic;
    margin: 4px 0 6px;
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}
.t2w-pc-ri-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    margin-bottom: 6px;
}
.t2w-pc-ri-tag {
    display: inline-block;
    font-size: 10px;
    font-weight: 600;
    padding: 2px 6px;
    border-radius: 10px;
    background: #EFF6FF;
    color: #1E40AF;
    white-space: nowrap;
}

/* v18.0 — Itinerary Place Hook (mini emotional copy) */
.t2w-ip-hook {
    display: block;
    font-size: 11px;
    line-height: 1.4;
    color: #6B7280;
    font-style: italic;
    margin-top: 2px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 220px;
    background: #F8FAFC;
    padding: 2px 6px;
    border-radius: 4px;
    border-left: 2px solid #93C5FD;
}

/* ========================================
   v18.1 — UI/UX Polish
   ======================================== */

/* Dock card: lift on hover */
.t2w-dock-place {
    transition: border-color 0.2s, box-shadow 0.2s, transform 0.2s;
}
.t2w-dock-place:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 16px rgba(0,0,0,0.08);
}

/* Dock card: gradient overlay for text readability */
.t2w-dock-place-thumb::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 36px;
    background: linear-gradient(transparent, rgba(0,0,0,0.08));
    pointer-events: none;
}

/* Tag color variety on cards */
.t2w-pc-ri-tag:nth-child(2) { background: #F0FDF4; color: #065F46; }
.t2w-pc-ri-tag:nth-child(3) { background: #FEF3C7; color: #92400E; }

/* Authenticity badge */
.t2w-dock-badge--auth {
    background: #EDE9FE;
    color: #5B21B6;
}
.t2w-dock-badge--auth i {
    font-size: 9px;
    margin-right: 2px;
}

/* Travel segment: softer + hover reveal */
.t2w-travel-segment {
    opacity: 0.75;
    transition: opacity 0.2s;
}
.t2w-travel-segment:hover {
    opacity: 1;
}

/* Transition bridge: emphasis with gradient bg */
.t2w-transition-bridge {
    background: linear-gradient(90deg, transparent 0%, #F0F9FF 15%, #F0F9FF 85%, transparent 100%);
    border-radius: 8px;
    margin: 2px 0;
    padding: 4px 16px;
    color: #4B5563;
}

/* Facility bar: hover micro-interaction */
.t2w-pd-facility {
    transition: transform 0.15s, box-shadow 0.15s;
    cursor: default;
}
.t2w-pd-facility:hover {
    transform: translateY(-1px);
    box-shadow: 0 2px 4px rgba(0,0,0,0.06);
}

/* Review insight box: richer gradient + subtle border */
.t2w-pd-ri-box {
    background: linear-gradient(135deg, #EFF6FF 0%, #F0FDF4 50%, #FFFBEB 100%);
    border: 1px solid #DBEAFE;
}

/* Review quote: hover reveal */
.t2w-pd-ri-quote {
    transition: box-shadow 0.15s, border-color 0.15s;
}
.t2w-pd-ri-quote:hover {
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
    border-color: #BFDBFE;
}

/* Nearby items: smoother interactions */
.t2w-pd-nearby-item {
    transition: background 0.15s, transform 0.15s;
    border-radius: 8px;
}
.t2w-pd-nearby-item:hover {
    background: #F8FAFC;
    transform: translateX(2px);
}

/* Place detail hook: gentle entrance */
@keyframes t2wHookFadeIn {
    from { opacity: 0; transform: translateY(4px); }
    to { opacity: 1; transform: translateY(0); }
}
.t2w-pd-hook {
    animation: t2wHookFadeIn 0.4s ease-out;
}

/* Itinerary place: left accent on hover */
.t2w-itinerary-place {
    border-left: 3px solid transparent;
    transition: all 0.2s ease;
}
.t2w-itinerary-place:hover {
    border-left-color: var(--color-primary);
}

/* Legacy food category toggle — replaced by v34 .t2w-nearby-cat */

/* Skip signal: better icon */
.t2w-pd-ri-skip i {
    font-size: 13px;
}

/* Nearby item: review insight hook */
.t2w-pd-ni-hook {
    display: block;
    font-size: 11px;
    line-height: 1.3;
    color: #6B7280;
    font-style: italic;
    margin-top: 1px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 180px;
}

/* Place card hook: better clamp on small screens */
@media (max-width: 768px) {
    .t2w-pc-hook {
        -webkit-line-clamp: 1;
    }
    .t2w-ip-hook {
        max-width: 160px;
    }
    .t2w-pd-ni-hook {
        max-width: 130px;
    }
}

/* ===== v19.0: Intent Search Styles ===== */

/* Intent search header */
.t2w-search-intent-header {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    padding: 10px 12px;
    background: linear-gradient(135deg, #EFF6FF 0%, #F0FDF4 100%);
    border-radius: 10px;
    margin: 8px 0;
}
.t2w-search-intent-icon { font-size: 16px; line-height: 1; }
.t2w-search-intent-badge {
    display: inline-block;
    padding: 3px 10px;
    background: #DBEAFE;
    color: #1E40AF;
    border-radius: 12px;
    font-size: 11px;
    font-weight: 600;
    white-space: nowrap;
}
.t2w-search-intent-count {
    color: #6B7280;
    font-size: 12px;
    margin-left: auto;
    white-space: nowrap;
}

/* Intent score badge on card thumbnail */
.t2w-dock-intent-score {
    position: absolute;
    top: 8px;
    right: 8px;
    background: linear-gradient(135deg, #3B82F6 0%, #2563EB 100%);
    color: #fff;
    font-size: 11px;
    font-weight: 700;
    padding: 2px 8px;
    border-radius: 8px;
    z-index: 2;
    box-shadow: 0 2px 6px rgba(59, 130, 246, 0.3);
}

/* ===== v19.0: Meal Slot Card ===== */

.t2w-meal-slot {
    background: linear-gradient(135deg, #FFFBEB 0%, #FEF3C7 100%);
    border: 1px solid #FDE68A;
    border-radius: 12px;
    padding: 12px;
    margin: 8px 0;
    transition: box-shadow 0.2s;
}
.t2w-meal-slot:hover {
    box-shadow: 0 4px 12px rgba(245, 158, 11, 0.15);
}
.t2w-meal-slot--korean {
    border-left: 3px solid #EF4444;
}
.t2w-meal-slot-header {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 6px;
}

/* v25.0: Radius toggle bar */
.t2w-meal-radius-bar {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 10px;
    padding-bottom: 8px;
    border-bottom: 1px solid #FDE68A;
}
.t2w-meal-radius-label {
    font-size: 11px;
    color: #92400E;
    font-weight: 600;
    flex-shrink: 0;
}
.t2w-meal-radius-chip {
    padding: 4px 10px;
    border-radius: 14px;
    border: 1px solid #FDE68A;
    background: #FFFBEB;
    color: #92400E;
    font-size: 11px;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.2s;
    white-space: nowrap;
}
.t2w-meal-radius-chip:hover {
    border-color: #F59E0B;
    background: #FEF3C7;
}
.t2w-meal-radius-chip--active {
    background: #F59E0B;
    color: #fff;
    border-color: #F59E0B;
}
.t2w-meal-dist {
    color: var(--color-primary);
    font-weight: 500;
}
.t2w-meal-slot-icon { font-size: 18px; }
.t2w-meal-slot-label {
    font-weight: 700;
    font-size: 13px;
    color: #92400E;
}
.t2w-meal-slot-korean-badge {
    margin-left: auto;
    font-size: 10px;
    background: #FEE2E2;
    color: #991B1B;
    padding: 2px 8px;
    border-radius: 8px;
    font-weight: 600;
}
/* v27.4: Meal Hero card + expandable list */
.t2w-meal-hero {
    display: flex;
    align-items: stretch;
    gap: 12px;
    padding: 10px;
    border-radius: 10px;
    background: rgba(255,255,255,0.92);
    border: 1px solid #F59E0B;
    margin-bottom: 8px;
    flex-wrap: wrap;
}
.t2w-meal-hero-thumb {
    width: 80px;
    height: 80px;
    border-radius: 10px;
    background-size: cover;
    background-position: center;
    background-color: #FDE68A;
    flex-shrink: 0;
}
.t2w-meal-hero-body {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 3px;
}
.t2w-meal-hero-top {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}
.t2w-meal-hero-name {
    font-weight: 700;
    font-size: 15px;
    color: #1F2937;
    line-height: 1.3;
}
.t2w-meal-hero-hook {
    font-size: 12px;
    color: #6B7280;
    font-style: italic;
    line-height: 1.4;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.t2w-meal-hero-btn {
    width: 100%;
    flex: none;
    padding: 9px 0;
    font-size: 13px;
    border-radius: 8px;
    margin-top: 2px;
}
.t2w-meal-badge-top {
    display: inline-block;
    font-size: 10px;
    background: #F59E0B;
    color: #fff;
    padding: 2px 8px;
    border-radius: 6px;
    font-weight: 700;
    vertical-align: middle;
}
.t2w-meal-cuisine-badge {
    display: inline-block;
    font-size: 10px;
    background: #EFF6FF;
    color: #1D4ED8;
    padding: 2px 8px;
    border-radius: 6px;
    font-weight: 600;
    vertical-align: middle;
    white-space: nowrap;
}
.t2w-meal-cuisine-badge--sm {
    font-size: 9px;
    padding: 1px 6px;
}

/* Expand toggle */
.t2w-meal-expand-toggle {
    display: block;
    width: 100%;
    padding: 8px 0;
    background: none;
    border: none;
    border-top: 1px dashed #FDE68A;
    color: #92400E;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    text-align: center;
    transition: color 0.15s;
}
.t2w-meal-expand-toggle:hover {
    color: #78350F;
}
.t2w-meal-expand-list {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding-top: 6px;
}

/* Candidate rows (expandable list) */
.t2w-meal-slot-place {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px;
    border-radius: 8px;
    background: rgba(255,255,255,0.6);
    border: 1px solid transparent;
    transition: border-color 0.15s;
}
.t2w-meal-slot-place:hover {
    border-color: #FDE68A;
}
.t2w-meal-slot-thumb {
    width: 48px;
    height: 48px;
    border-radius: 8px;
    background-size: cover;
    background-position: center;
    background-color: #FDE68A;
    flex-shrink: 0;
}
.t2w-meal-slot-details {
    flex: 1;
    min-width: 0;
}
.t2w-meal-slot-place .t2w-meal-slot-btn--accept {
    flex-shrink: 0;
    flex: none;
    padding: 6px 12px;
    font-size: 11px;
    white-space: nowrap;
}
.t2w-meal-slot-name {
    font-weight: 600;
    font-size: 13px;
    color: #1F2937;
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}
.t2w-meal-slot-hook {
    font-size: 12px;
    color: #6B7280;
    font-style: italic;
    margin-top: 2px;
    line-height: 1.4;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.t2w-meal-slot-meta {
    font-size: 11px;
    color: #9CA3AF;
    margin-top: 4px;
}
.t2w-meal-slot-actions {
    display: flex;
    gap: 6px;
    margin-top: 8px;
}
.t2w-meal-slot-btn {
    flex: 1;
    padding: 7px 0;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    border: 1px solid #E5E7EB;
    background: #fff;
    color: #374151;
    transition: all 0.15s;
}
.t2w-meal-slot-btn--accept {
    background: #F59E0B;
    color: #fff;
    border-color: #F59E0B;
}
.t2w-meal-slot-btn--accept:hover { background: #D97706; }
.t2w-meal-slot-btn:hover { border-color: #9CA3AF; }
.t2w-meal-slot-btn--skip { color: #9CA3AF; }

/* Meal row in zone sub-timeline */
.t2w-zb-meal-row {
    display: flex;
    align-items: center;
    background: linear-gradient(135deg, var(--t2w-gold-light, #fef3c7), #fff7ed);
    gap: 8px;
    padding: 8px 10px;
    margin: 4px 0;
    background: linear-gradient(135deg, #FFFBEB 0%, #FEF3C7 100%);
    border-radius: 8px;
    border: 1px solid #FDE68A;
}
.t2w-zb-meal-row--korean { border-left: 3px solid #EF4444; }
.t2w-zb-meal-icon { font-size: 18px; flex-shrink: 0; }
.t2w-zb-meal-info { flex: 1; min-width: 0; }
.t2w-zb-meal-label { font-size: 10px; font-weight: 700; color: #92400E; text-transform: uppercase; display: block; }
.t2w-zb-meal-name { font-size: 13px; font-weight: 600; color: #1F2937; display: block; }
.t2w-zb-meal-hook { font-size: 11px; color: #6B7280; font-style: italic; display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Meal banner loading state */
.t2w-meal-banner {
    padding: 10px 14px;
    margin: 8px 0;
    background: #FFFBEB;
    border-radius: 10px;
    border: 1px dashed #FDE68A;
}
.t2w-meal-banner-hint {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 12px;
    color: #92400E;
}
.t2w-meal-banner-hint i { color: #F59E0B; }

/* ===== v19.0: Product Context Cards ===== */

.t2w-pd-product-section {
    margin-top: 16px;
    padding: 12px;
    background: #F9FAFB;
    border-radius: 12px;
}
.t2w-pd-product-label {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    font-weight: 600;
    color: #6B7280;
    margin-bottom: 8px;
}
.t2w-pd-product-card {
    background: #fff;
    border: 1px solid #E5E7EB;
    border-radius: 10px;
    padding: 10px 12px;
    margin-bottom: 6px;
    transition: box-shadow 0.15s, border-color 0.15s;
}
.t2w-pd-product-card:hover {
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
    border-color: #D1D5DB;
}
.t2w-pd-product-name { font-weight: 600; font-size: 13px; color: #1F2937; }
.t2w-pd-product-price { color: #059669; font-weight: 700; font-size: 14px; float: right; }
.t2w-pd-product-detail { font-size: 11px; color: #9CA3AF; margin-top: 2px; }
.t2w-pd-product-btn {
    display: inline-block;
    margin-top: 6px;
    padding: 4px 12px;
    border: 1px solid #3B82F6;
    color: var(--color-primary);
    border-radius: 8px;
    font-size: 11px;
    font-weight: 600;
    cursor: pointer;
    background: transparent;
    transition: all 0.15s;
}
.t2w-pd-product-btn:hover {
    background: var(--color-primary);
    color: #fff;
}

/* ── v20.0: Timeline Inline Search ── */
.t2w-tl-search-wrap {
    padding: 0 0 12px;
}
.t2w-tl-search {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 14px;
    border: 1.5px solid #E5E7EB;
    border-radius: 12px;
    background: #fff;
    transition: border-color .2s, box-shadow .2s;
}
.t2w-tl-search:focus-within {
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px rgba(59,130,246,0.1);
}
.t2w-tl-search i.fa-search {
    color: var(--color-primary);
    font-size: 14px;
    flex-shrink: 0;
}
.t2w-tl-search-input {
    flex: 1;
    border: none;
    outline: none;
    font-size: 14px;
    color: #111827;
    background: transparent;
}
.t2w-tl-search-input::placeholder {
    color: #9CA3AF;
}
.t2w-tl-search-clear {
    border: none;
    background: none;
    color: #9CA3AF;
    cursor: pointer;
    padding: 2px;
    font-size: 14px;
}
.t2w-tl-search-clear:hover {
    color: #374151;
}
.t2w-tl-quick-chips {
    display: flex;
    gap: 6px;
    margin: 8px 0 0;
    flex-wrap: wrap;
}
.t2w-tl-quick-chip {
    font-size: 12px;
    padding: 5px 12px;
    border-radius: 16px;
    border: 1px solid #E5E7EB;
    background: #fff;
    color: #374151;
    cursor: pointer;
    transition: all .2s;
    white-space: nowrap;
}
.t2w-tl-quick-chip:hover {
    background: #EFF6FF;
    border-color: var(--color-primary);
    color: #1D4ED8;
}
.t2w-tl-search-results {
    margin-top: 8px;
    border: 1px solid #E5E7EB;
    border-radius: 12px;
    background: #fff;
    max-height: 320px;
    overflow-y: auto;
    box-shadow: 0 4px 12px rgba(0,0,0,0.08);
}
.t2w-tl-sr-loading,
.t2w-tl-sr-empty {
    padding: 16px;
    text-align: center;
    color: #6B7280;
    font-size: 13px;
}
.t2w-tl-sr-intent {
    padding: 10px 14px;
    background: #EFF6FF;
    font-size: 13px;
    color: #1D4ED8;
    font-weight: 600;
    border-bottom: 1px solid #E5E7EB;
}
.t2w-tl-sr-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 14px;
    border-bottom: 1px solid #F3F4F6;
    transition: background .15s;
}
.t2w-tl-sr-item:last-child {
    border-bottom: none;
}
.t2w-tl-sr-item:hover {
    background: #F9FAFB;
}
.t2w-tl-sr-info {
    display: flex;
    align-items: center;
    gap: 8px;
    flex: 1;
    min-width: 0;
}
.t2w-tl-sr-name {
    font-size: 14px;
    font-weight: 500;
    color: #111827;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.t2w-tl-sr-score {
    font-size: 11px;
    font-weight: 700;
    color: var(--color-primary);
    background: #EFF6FF;
    padding: 2px 6px;
    border-radius: 8px;
    flex-shrink: 0;
}
.t2w-tl-sr-rating {
    font-size: 12px;
    color: #6B7280;
    flex-shrink: 0;
}
.t2w-tl-sr-add {
    width: 30px;
    height: 30px;
    border-radius: 50%;
    border: 1.5px solid #3B82F6;
    background: #fff;
    color: var(--color-primary);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    flex-shrink: 0;
    transition: all .15s;
}
.t2w-tl-sr-add:hover {
    background: var(--color-primary);
    color: #fff;
}

/* ── v20.0: Meal Preference Card ── */
.t2w-meal-pref-card {
    margin: 12px 0;
    padding: 20px;
    background: linear-gradient(135deg, #FFFBEB, #FEF3C7);
    border: 1px solid #FDE68A;
    border-radius: 16px;
}
.t2w-meal-pref-header {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 6px;
}
.t2w-meal-pref-icon {
    font-size: 24px;
}
.t2w-meal-pref-title {
    font-size: 16px;
    font-weight: 700;
    color: #92400E;
}
.t2w-meal-pref-desc {
    font-size: 13px;
    color: #78716C;
    margin: 0 0 16px;
}
.t2w-meal-pref-section {
    margin-bottom: 14px;
}
.t2w-meal-pref-label {
    display: block;
    font-size: 13px;
    font-weight: 600;
    color: #44403C;
    margin-bottom: 8px;
}
.t2w-meal-pref-chips {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}
.t2w-meal-pref-chip {
    padding: 7px 14px;
    font-size: 13px;
    border-radius: 20px;
    border: 1.5px solid #D6D3D1;
    background: #fff;
    color: #44403C;
    cursor: pointer;
    transition: all .2s;
}
.t2w-meal-pref-chip:hover {
    border-color: #F59E0B;
    background: #FFFBEB;
}
.t2w-meal-pref-chip--active {
    border-color: #F59E0B;
    background: #FEF3C7;
    color: #92400E;
    font-weight: 600;
}
.t2w-meal-pref-actions {
    display: flex;
    gap: 10px;
    margin-top: 16px;
}
.t2w-meal-pref-submit {
    flex: 1;
    padding: 12px;
    border: none;
    border-radius: 12px;
    background: #F59E0B;
    color: #fff;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    transition: background .15s;
}
.t2w-meal-pref-submit:hover {
    background: #D97706;
}
.t2w-meal-pref-skip {
    padding: 12px 20px;
    border: 1.5px solid #D6D3D1;
    border-radius: 12px;
    background: #fff;
    color: #78716C;
    font-size: 14px;
    cursor: pointer;
    transition: all .15s;
}
.t2w-meal-pref-skip:hover {
    border-color: #A8A29E;
    color: #44403C;
}

/* ══════════════════════════════════════════
   Planner NLP Search (v23.0)
   ══════════════════════════════════════════ */

.t2w-planner-search {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 60vh;
    padding: 40px 20px;
    text-align: center;
}

.t2w-planner-search__title {
    font-size: 28px;
    font-weight: 700;
    color: #1a1a2e;
    margin: 0 0 8px;
    letter-spacing: -0.5px;
}

.t2w-planner-search__subtitle {
    font-size: 15px;
    color: #6B7280;
    margin: 0 0 32px;
    font-weight: 400;
}

.t2w-planner-search__bar {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    max-width: 520px;
    background: #fff;
    border: 2px solid #E5E7EB;
    border-radius: 16px;
    padding: 8px 12px;
    transition: border-color 0.2s, box-shadow 0.2s;
}

.t2w-planner-search__bar:focus-within {
    border-color: var(--color-primary);
    box-shadow: 0 0 0 4px rgba(255, 183, 0, 0.12);
}

.t2w-planner-search__bar .material-symbols-outlined {
    font-size: 22px;
    color: #9CA3AF;
    flex-shrink: 0;
}

.t2w-planner-search__bar input {
    flex: 1;
    border: none;
    outline: none;
    font-size: 16px;
    font-family: 'Noto Sans KR', 'Inter', sans-serif;
    color: #1a1a2e;
    background: transparent;
    min-width: 0;
}

.t2w-planner-search__bar input::placeholder {
    color: #9CA3AF;
}

#t2w-planner-nlp-submit {
    flex-shrink: 0;
    background: linear-gradient(135deg, var(--color-primary) 0%, #FF8C00 100%);
    color: #1a1a2e;
    border: none;
    border-radius: 12px;
    padding: 10px 20px;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    white-space: nowrap;
    transition: transform 0.15s, box-shadow 0.15s;
}

#t2w-planner-nlp-submit:hover {
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(255, 183, 0, 0.35);
}

#t2w-planner-nlp-submit:active {
    transform: translateY(0);
}

#t2w-planner-pick-mode {
    flex-shrink: 0;
    background: linear-gradient(135deg, var(--color-primary) 0%, #FF8C00 100%);
    color: #1a1a2e;
    border: none;
    border-radius: 12px;
    padding: 10px 16px;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    white-space: nowrap;
    transition: all 0.2s ease;
}
#t2w-planner-pick-mode:hover {
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(255, 183, 0, 0.35);
}
#t2w-planner-pick-mode:active {
    transform: translateY(0);
}

.t2w-planner-search__chips {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: center;
    margin-top: 24px;
    max-width: 520px;
}

.t2w-planner-search__chips .t2w-hero-tpl {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 8px 14px;
    background: rgba(255, 183, 0, 0.08);
    border: 1px solid rgba(255, 183, 0, 0.2);
    border-radius: 20px;
    font-size: 13px;
    font-weight: 500;
    color: #92400E;
    cursor: pointer;
    transition: all 0.2s;
    white-space: nowrap;
}

.t2w-planner-search__chips .t2w-hero-tpl:hover {
    background: rgba(255, 183, 0, 0.15);
    border-color: rgba(255, 183, 0, 0.4);
    transform: translateY(-1px);
}

.t2w-planner-search__chips .t2w-hero-tpl__icon {
    font-size: 16px;
    color: #D97706;
}

/* Search-active layout: timeline fills center */
.t2w-planner-search-active .t2w-tl {
    display: flex;
    align-items: center;
    justify-content: center;
}

/* Preview tags in planner search */
#t2w-planner-nlp-preview {
    margin-top: 12px;
    max-width: 520px;
    width: 100%;
}

/* Mobile responsive */
@media (max-width: 768px) {
    .t2w-planner-search {
        min-height: 50vh;
        padding: 24px 16px;
    }

    .t2w-planner-search__title {
        font-size: 22px;
    }

    .t2w-planner-search__bar {
        padding: 6px 10px;
        flex-wrap: wrap;
    }

    .t2w-planner-search__bar .material-symbols-outlined {
        display: none;
    }

    .t2w-planner-search__bar input {
        font-size: 15px;
        width: 100%;
        min-width: 0;
    }

    #t2w-planner-nlp-submit,
    #t2w-planner-pick-mode {
        flex: 1;
        padding: 10px 12px;
        font-size: 13px;
        text-align: center;
        justify-content: center;
    }

    .t2w-planner-search__chips {
        gap: 6px;
    }

    .t2w-planner-search__chips .t2w-hero-tpl {
        font-size: 12px;
        padding: 6px 10px;
    }
}

/* ══════════════════════════════════════════
   v49.3: Entry v4 — Hero-Style Entry
   ══════════════════════════════════════════ */

/* Light warm container */
.t2w-entry-v4 {
    background: linear-gradient(180deg, #FFF9EE 0%, #fff 60%);
    border-radius: 20px;
    padding: 40px 32px 28px;
    min-height: auto;
}

/* Title — single line */
.t2w-entry-v4__title {
    font-size: 22px;
    font-weight: 700;
    color: #181610;
    margin: 0 0 22px 0;
    letter-spacing: -0.3px;
}
.t2w-entry-v4__title em {
    font-style: normal;
    color: var(--color-primary);
}

/* City row */
.t2w-entry-v4__cities {
    display: flex;
    gap: 6px;
    justify-content: center;
    margin-bottom: 18px;
    flex-wrap: wrap;
}
.t2w-entry-v4__city {
    padding: 6px 14px;
    border-radius: 20px;
    border: 1.5px solid #E5E7EB;
    background: #fff;
    font-size: 13px;
    font-weight: 600;
    color: #374151;
    cursor: pointer;
    transition: all 0.15s;
    white-space: nowrap;
}
.t2w-entry-v4__city:hover {
    background: var(--color-primary);
    color: #181610;
    border-color: var(--color-primary);
    transform: translateY(-1px);
    box-shadow: 0 2px 8px rgba(255,183,0,0.2);
}

/* Theme pills — hero chip style */
.t2w-entry-pills {
    display: flex;
    flex-wrap: nowrap;
    gap: 10px;
    max-width: 700px;
    width: 100%;
    justify-content: center;
    margin-bottom: 24px;
    overflow: visible;
    position: relative;
}

.t2w-entry-pill {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 10px 18px;
    border-radius: 24px;
    border: 1.5px solid #E5E7EB;
    background: #fff;
    cursor: pointer;
    transition: all 0.2s;
    font-size: 14px;
    font-weight: 600;
    color: #374151;
    white-space: nowrap;
}
.t2w-entry-pill:hover {
    border-color: var(--color-primary);
    box-shadow: 0 4px 16px rgba(255, 183, 0, 0.15);
    transform: translateY(-2px);
    z-index: 30;
}
.t2w-entry-pill--loading {
    opacity: 0.5;
    pointer-events: none;
}

.t2w-entry-pill__icon {
    font-size: 16px;
    color: var(--color-primary);
    font-variation-settings: 'FILL' 1;
}
.t2w-entry-pill__label { pointer-events: none; }

/* Hover detail popover */
.t2w-entry-pill__detail {
    position: absolute;
    top: calc(100% + 10px);
    left: 50%;
    transform: translateX(-50%) translateY(-6px);
    background: #fff;
    border-radius: 14px;
    padding: 16px 20px;
    min-width: 230px;
    box-shadow: 0 12px 32px rgba(0,0,0,0.18);
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.2s, transform 0.2s, visibility 0.2s;
    z-index: 100;
    pointer-events: none;
}
.t2w-entry-pill:hover .t2w-entry-pill__detail {
    opacity: 1;
    visibility: visible;
    transform: translateX(-50%) translateY(0);
    pointer-events: auto;
}
.t2w-entry-pill--open .t2w-entry-pill__detail {
    opacity: 1;
    visibility: visible;
    transform: translateX(-50%) translateY(0);
    pointer-events: auto;
}

.t2w-entry-pill__sub { font-size: 14px; font-weight: 700; color: #181610; margin: 0 0 4px 0; }
.t2w-entry-pill__hook { font-size: 13px; color: var(--color-primary); margin: 0 0 8px 0; font-weight: 500; }
.t2w-entry-pill__list { list-style: none; margin: 0; padding: 0; font-size: 12px; color: #6B7280; line-height: 1.8; }

/* Secondary search */
.t2w-entry-v4 .t2w-entry-alt {
    max-width: 520px;
    width: 100%;
    border-top: 1px solid #F3F4F6;
    padding-top: 20px;
}
.t2w-entry-v4 .t2w-entry-alt__label {
    font-size: 13px;
    color: #9CA3AF;
    margin: 0 0 8px 0;
}

/* Active pill highlight (all viewports) */
.t2w-entry-pill--open {
    border-color: var(--color-primary);
    background: #FFFDF5;
    box-shadow: 0 0 0 2px rgba(255,183,0,0.2);
}

/* Tablet */
@media (min-width: 769px) and (max-width: 1024px) {
    .t2w-entry-v4 { padding: 32px 24px 24px; }
    .t2w-entry-pill:hover .t2w-entry-pill__detail { opacity: 0; visibility: hidden; pointer-events: none; }
    .t2w-entry-pill--open .t2w-entry-pill__detail {
        opacity: 1; visibility: visible;
        transform: translateX(-50%) translateY(0);
        pointer-events: auto;
    }
}

/* Mobile */
@media (max-width: 768px) {
    .t2w-entry-v4 {
        padding: 28px 16px 24px;
        border-radius: 0;
    }
    .t2w-entry-v4__title { font-size: 17px; }
    .t2w-entry-v4__cities {
        overflow-x: auto;
        flex-wrap: nowrap;
        justify-content: flex-start;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
    }
    .t2w-entry-v4__cities::-webkit-scrollbar { display: none; }
    .t2w-entry-v4__city { flex-shrink: 0; }
    .t2w-entry-pills {
        overflow-x: auto;
        justify-content: flex-start;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
        max-width: 100%;
    }
    .t2w-entry-pills::-webkit-scrollbar { display: none; }
    .t2w-entry-pill { font-size: 13px; padding: 8px 14px; flex-shrink: 0; }
    /* Bottom sheet popover */
    .t2w-entry-pill:hover .t2w-entry-pill__detail { opacity: 0; visibility: hidden; pointer-events: none; }
    .t2w-entry-pill__detail {
        position: fixed;
        top: auto; bottom: 0; left: 0; right: 0;
        transform: translateY(100%);
        min-width: auto; width: 100%;
        border-radius: 20px 20px 0 0;
        padding: 32px 20px calc(20px + env(safe-area-inset-bottom));
        z-index: 10000;
        box-shadow: 0 -8px 32px rgba(0,0,0,0.12);
        transition: opacity 0.25s ease, transform 0.3s cubic-bezier(0.32, 0.72, 0, 1), visibility 0.25s;
    }
    /* Handle bar */
    .t2w-entry-pill__detail::before {
        content: '';
        display: block;
        position: absolute;
        top: 10px; left: 50%;
        transform: translateX(-50%);
        width: 36px; height: 4px;
        border-radius: 2px;
        background: #D1D5DB;
    }
    .t2w-entry-pill--open .t2w-entry-pill__detail {
        opacity: 1; visibility: visible;
        transform: translateY(0);
        pointer-events: auto;
    }
    .t2w-entry-v4 .t2w-entry-alt { max-width: 100%; }
}

/* ══════════════════════════════════════════
   Multi-Leg Trip Builder (v24.0)
   ══════════════════════════════════════════ */

/* Leg separator in pill bar */
.t2w-cal-leg-sep {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 10px;
    margin: 0 2px;
    background: linear-gradient(135deg, var(--color-primary) 0%, #FF8C00 100%);
    color: #fff;
    border-radius: 16px;
    font-size: 11px;
    font-weight: 600;
    white-space: nowrap;
    flex-shrink: 0;
}

.t2w-cal-leg-sep .material-symbols-outlined {
    font-size: 14px;
}

/* First city label in pill bar (v24.1) */
.t2w-cal-leg-label {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 10px;
    margin: 0 2px;
    background: rgba(59, 130, 246, 0.12);
    color: var(--color-primary);
    border-radius: 16px;
    font-size: 11px;
    font-weight: 600;
    white-space: nowrap;
    flex-shrink: 0;
}

/* Add-leg bar */
.t2w-add-leg-bar {
    padding: 6px 12px;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}

.t2w-add-leg-btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 6px 14px;
    border: 1px dashed #D1D5DB;
    border-radius: 20px;
    background: #fff;
    color: #6B7280;
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.2s;
}

.t2w-add-leg-btn:hover {
    border-color: var(--color-primary);
    color: #D97706;
    background: #FFFBEB;
}

.t2w-add-leg-btn.active {
    border-color: var(--color-primary);
    color: #D97706;
}

.t2w-add-leg-btn .material-symbols-outlined {
    font-size: 18px;
}

/* Add-leg inline form */
.t2w-add-leg-form {
    width: 100%;
    margin-top: 8px;
    padding: 12px 0;
}

.t2w-add-leg-input-wrap {
    display: flex;
    align-items: center;
    gap: 8px;
    background: #fff;
    border: 2px solid #E5E7EB;
    border-radius: 12px;
    padding: 4px 6px 4px 14px;
    transition: border-color 0.2s;
    max-width: 400px;
}

.t2w-add-leg-input-wrap:focus-within {
    border-color: var(--color-primary);
}

#t2w-add-leg-nlp {
    flex: 1;
    border: none;
    outline: none;
    font-size: 14px;
    color: #1F2937;
    padding: 6px 0;
    background: transparent;
}

#t2w-add-leg-nlp::placeholder {
    color: #9CA3AF;
}

#t2w-add-leg-submit {
    padding: 6px 16px;
    background: var(--color-primary);
    color: #fff;
    border: none;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    white-space: nowrap;
    transition: background 0.2s;
}

#t2w-add-leg-submit:hover {
    background: #E5A500;
}

#t2w-add-leg-preview {
    margin-top: 6px;
    max-width: 400px;
}

/* Leg transition card in timeline */
.t2w-leg-transition {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 12px 16px;
    margin: 8px 0;
    background: linear-gradient(135deg, #FFF7E6 0%, #FFF3CD 100%);
    border: 1px solid #FFD980;
    border-radius: 12px;
    color: #92400E;
    font-size: 14px;
    font-weight: 500;
}

.t2w-leg-transition .material-symbols-outlined {
    font-size: 20px;
    color: #D97706;
}

/* Overview leg label */
.t2w-ov-leg-label {
    display: block;
    font-size: 10px;
    font-weight: 600;
    color: #D97706;
    background: #FFFBEB;
    border-radius: 4px;
    padding: 1px 6px;
    margin-bottom: 2px;
}

/* Mobile */
@media (max-width: 768px) {
    .t2w-add-leg-bar {
        padding: 6px 8px;
    }

    .t2w-add-leg-input-wrap {
        max-width: 100%;
    }

    .t2w-cal-leg-sep {
        font-size: 10px;
        padding: 3px 8px;
    }
}

/* ========================================
   v28: TRIP METRICS BAR
   ======================================== */

.t2w-metrics-bar {
    display: flex;
    gap: 6px;
    padding: 0 16px 12px;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}
.t2w-metrics-bar::-webkit-scrollbar { display: none; }

.t2w-metric-pill {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 6px 12px;
    background: var(--t2w-bg-card, #F9FAFB);
    border: 1px solid var(--t2w-border, #E5E7EB);
    border-radius: var(--radius-md, 0.5rem);
    font-size: 12px;
    font-weight: 600;
    color: var(--t2w-text-primary, #181610);
    white-space: nowrap;
    flex-shrink: 0;
}
.t2w-metric-pill i {
    font-size: 11px;
    color: var(--t2w-text-sec, #5c5c5c);
}

/* ========================================
   v28: SLIM TIMELINE (3-column dock mode)
   ======================================== */

/* When dock is enabled, slim down the timeline cards */
.t2w-v5-dock-enabled .t2w-tl-header {
    padding: 8px 12px;
}
.t2w-v5-dock-enabled .t2w-tl-date {
    font-size: 15px;
}
.t2w-v5-dock-enabled .t2w-tl-controls {
    gap: 4px;
}
.t2w-v5-dock-enabled .t2w-tl-search-wrap {
    padding: 0 12px 8px;
}
.t2w-v5-dock-enabled .t2w-tl-search {
    padding: 6px 10px;
}
.t2w-v5-dock-enabled .t2w-tl-search-input {
    font-size: 12px;
}
.t2w-v5-dock-enabled .t2w-tl-quick-chips {
    gap: 4px;
}
.t2w-v5-dock-enabled .t2w-tl-quick-chip {
    font-size: 11px;
    padding: 3px 8px;
}
/* Slim zone cards */
.t2w-v5-dock-enabled .t2w-zone-card {
    border-radius: 8px;
    margin-bottom: 4px;
}
.t2w-v5-dock-enabled .t2w-zone-card-grip {
    width: 4px;
    border-radius: 4px 0 0 4px;
}
.t2w-v5-dock-enabled .t2w-zone-card-body {
    padding: 8px 10px;
}
.t2w-v5-dock-enabled .t2w-zone-card-thumb {
    display: none;
}
.t2w-v5-dock-enabled .t2w-zone-card-name {
    font-size: 14px;
}
.t2w-v5-dock-enabled .t2w-zone-card-time-pill {
    font-size: 11px;
    padding: 2px 6px;
}
.t2w-v5-dock-enabled .t2w-zone-card-meta {
    font-size: 11px;
}
/* Slim place rows */
.t2w-v5-dock-enabled .t2w-zb-place-row {
    padding: 4px 6px;
    gap: 6px;
}
.t2w-v5-dock-enabled .t2w-zb-place-thumb {
    width: 0;
    display: none;
}
.t2w-v5-dock-enabled .t2w-zb-place-name {
    font-size: 13px;
}
.t2w-v5-dock-enabled .t2w-zb-place-time {
    font-size: 11px;
}
.t2w-v5-dock-enabled .t2w-zb-micro-copy {
    display: none;
}
/* Slim movement cards */
.t2w-v5-dock-enabled .t2w-movement-card {
    padding: 4px 0;
}
.t2w-v5-dock-enabled .t2w-mv-content {
    padding: 6px 8px;
}
.t2w-v5-dock-enabled .t2w-mv-header {
    display: none;
}
.t2w-v5-dock-enabled .t2w-transition-bridge {
    display: none;
}
/* Slim action bar */
.t2w-v5-dock-enabled .t2w-day-actions {
    gap: 4px;
    padding: 8px 0;
}
.t2w-v5-dock-enabled .t2w-day-action-btn {
    padding: 6px 10px;
    font-size: 12px;
}
/* Slim metrics */
.t2w-v5-dock-enabled .t2w-metrics-bar {
    padding: 0 12px 8px;
    gap: 4px;
}
.t2w-v5-dock-enabled .t2w-metric-pill {
    padding: 4px 8px;
    font-size: 11px;
}
/* Slim overview */
.t2w-v5-dock-enabled .t2w-day-overview {
    padding: 4px 0;
    gap: 4px;
}
.t2w-v5-dock-enabled .t2w-day-ov-chip {
    font-size: 11px;
    padding: 3px 8px;
}
/* Selected zone highlight */
.t2w-v5-dock-enabled .t2w-zone-card--dock-active {
    background: #FFF7ED;
    border: 2px solid var(--color-primary);
}

/* =============================================
   v31.0 Stitch Design Alignment — Base CSS
   ============================================= */

/* Day header: Stitch warm style + left accent bar */
.t2w-tl-date {
    font-weight: 800;
    color: var(--t2w-text-warm, #1d180c);
    border-left: 4px solid var(--color-primary);
    padding-left: 12px;
}

/* Zone card: warm borders + shadow + v29 vertical stack */
.t2w-zone-card {
    border: 1px solid var(--t2w-border-warm, #e8e0d0);
    box-shadow: 0 4px 20px -2px rgba(29,24,12,0.05);
    border-radius: 16px;
    flex-direction: column;
}
.t2w-zone-card:hover {
    border-color: rgba(255,183,0,0.4);
}

/* Place card: warm style */
.t2w-place-card {
    border: 1px solid var(--t2w-border-warm, #e8e0d0);
    border-radius: 14px;
    overflow: hidden;
    box-shadow: 0 2px 12px -2px rgba(29,24,12,0.06);
    transition: all .2s;
}
.t2w-place-card:hover {
    border-color: rgba(255,183,0,0.35);
    box-shadow: 0 6px 20px -4px rgba(29,24,12,0.1);
    transform: translateY(-2px);
}

/* Place card body */
.t2w-pc-body {
    padding: 10px 12px;
}
.t2w-pc-name {
    font-size: 14px;
    font-weight: 700;
    color: var(--t2w-text-warm, #1d180c);
}

/* Hook text (emotional copy) */
.t2w-pc-hook {
    color: var(--t2w-text-warm-secondary, #7a6f5d);
    font-style: italic;
}

/* Place row in timeline: warm */
.t2w-zb-place-row {
    border-bottom: 1px solid rgba(232,224,208,0.5);
}
.t2w-zb-place-name {
    color: var(--t2w-text-warm, #1d180c);
}

/* Dock panel background */
.t2w-v5-center {
    background: var(--t2w-bg-warm, #fcfbf8);
    border-color: var(--t2w-border-warm, #e8e0d0);
}

/* Panel glassmorphism hint */
.t2w-panel {
    background: rgba(252,251,248,0.97);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border-left: 1px solid rgba(255,255,255,0.3);
    box-shadow: -4px 0 30px -8px rgba(29,24,12,0.12);
}

/* Place detail panel */
.t2w-panel.t2w-panel--detail .t2w-pd-name {
    font-size: 24px;
    font-weight: 800;
    color: var(--t2w-text-warm, #1d180c);
}

/* Warm borders globally */
.t2w-tl-body {
    border-color: var(--t2w-border-warm, #e8e0d0);
}

/* Metrics bar: warm chips */
.t2w-metrics-pill {
    background: var(--color-white-warm, #f4f0e6);
    border-color: var(--t2w-border-warm, #e8e0d0);
    color: var(--t2w-text-warm-secondary, #7a6f5d);
}

/* Quick chips: warm */
.t2w-tl-quick-chip {
    background: var(--color-white-warm, #f4f0e6);
    color: var(--t2w-text-warm-secondary, #7a6f5d);
    border-color: var(--t2w-border-warm, #e8e0d0);
}

/* ── v31 Mobile: v29 Timeline Card Fixes ── */
@media (max-width: 768px) {
    /* Day header: wrap to two rows */
    .t2w-tl-header {
        flex-wrap: wrap;
        gap: 6px;
        padding: 10px 14px;
    }
    #t2w-planner-v2 .t2w-tl-date {
        font-size: 15px;
        padding: 0;
        border-left: 3px solid var(--color-primary);
        padding-left: 10px;
        flex: 1 1 auto;
        min-width: 0;
    }
    .t2w-day-title--emotional {
        font-size: 15px;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }
    .t2w-day-subtitle {
        font-size: 11px;
    }
    .t2w-tl-controls {
        flex-shrink: 0;
        gap: 4px;
    }
    .t2w-tl-ctrl {
        width: 26px;
        height: 26px;
        font-size: 10px;
    }
    .t2w-tl-day-count {
        font-size: 11px;
    }
    /* Gauge: compact on mobile */
    #t2w-planner-v2 .t2w-gauge {
        width: 100%;
        order: 3;
    }
    .t2w-gauge-label {
        font-size: 11px;
    }
    .t2w-gauge-tip {
        display: none;
    }
    /* v29 zone separator: tighten */
    .t2w-v29-zone-sep {
        padding: 10px 14px;
        gap: 10px;
    }
    .t2w-v29-zone-name {
        font-size: 15px;
    }
    /* v29 place timeline: reduce left offset */
    .t2w-v29-timeline {
        margin-left: 0;
    }
    /* v42.2: Mobile — hide timeline line + badge column, cards go full width */
    .t2w-v29-line {
        display: none;
    }
    .t2w-v29-badge {
        display: none;
    }
    .t2w-v29-item {
        gap: 0;
        margin-bottom: 10px;
    }
    /* Time now shown inside card header via JS */
    .t2w-v29-card {
        width: 100%;
    }
    /* v29 card: smaller padding + thumb */
    .t2w-v29-card {
        padding: 14px;
        border-radius: 12px;
    }
    .t2w-v29-card-body {
        flex-direction: column;
        gap: 10px;
    }
    .t2w-v29-card-thumb {
        width: 100%;
        height: 120px;
        border-radius: 10px;
    }
    .t2w-v29-card-title h3 {
        font-size: 15px;
    }
    /* Rating + category row: wrap so category doesn't squeeze */
    .t2w-v29-card-rating {
        flex-wrap: wrap;
        font-size: 12px;
    }
    .t2w-v29-card-rating i {
        font-size: 11px;
    }
    .t2w-v29-card-cat {
        white-space: nowrap;
    }
    #t2w-planner-v2 .t2w-v29-card-desc {
        font-size: 13px;
        -webkit-line-clamp: 2;
    }
    /* v29 card meta: smaller text */
    .t2w-v29-card-meta {
        font-size: 12px;
    }
    .t2w-v29-card-vibes {
        gap: 4px;
    }
    .t2w-v29-card-vibe {
        font-size: 11px;
        padding: 2px 6px;
    }
    /* Day controls row: wrap properly */
    .t2w-tl-controls {
        flex-wrap: wrap;
        gap: 6px;
    }
    /* Metrics bar: scroll horizontal */
    .t2w-metrics-bar {
        overflow-x: auto;
        flex-wrap: nowrap;
        -webkit-overflow-scrolling: touch;
        padding-bottom: 4px;
    }
    .t2w-metric-pill {
        flex-shrink: 0;
        white-space: nowrap;
    }
    /* Movement card mobile */
    #t2w-planner-v2 .t2w-movement-card {
        margin: 8px 0;
        padding: 8px 12px;
        font-size: 12px;
    }
}

/* ══════════════════════════════════════════
   v33: Place DnD + Departure Card
   ══════════════════════════════════════════ */

/* ── Place DnD States ── */
.t2w-v29-item[draggable="true"] {
    cursor: grab;
    transition: opacity 0.2s, box-shadow 0.2s, transform 0.15s;
}
.t2w-place-item--dragging {
    opacity: 0.5;
    box-shadow: 0 8px 24px rgba(0,0,0,0.15);
    z-index: 100;
    cursor: grabbing;
}
.t2w-place-item--drop-target {
    border: 2px dashed var(--color-primary);
    background: rgba(255, 183, 0, 0.06);
    border-radius: 12px;
}

/* ── Place Grip Handle ── */
.t2w-place-grip {
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: grab;
    color: #C4B89A;
    border-radius: 8px;
    transition: color 0.2s, background 0.2s;
    flex-shrink: 0;
}
.t2w-place-grip:hover {
    color: var(--color-primary);
    background: rgba(255, 183, 0, 0.08);
}
.t2w-place-grip:active {
    cursor: grabbing;
    color: var(--color-primary);
}

/* ── Departure Card ── */
.t2w-departure-card {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 16px;
    margin-bottom: 12px;
    background: linear-gradient(135deg, #FFF9EB 0%, #FFFDF7 100%);
    border: 1.5px solid var(--t2w-border-warm, #e8e0d0);
    border-radius: 14px;
    position: relative;
}
.t2w-departure-badge {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    flex-shrink: 0;
}
.t2w-departure-time {
    font-size: 11px;
    font-weight: 700;
    color: var(--t2w-text-warm-secondary, #7a6f5d);
}
.t2w-departure-circle {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--color-primary), #FF9500);
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-size: 15px;
    box-shadow: 0 2px 8px rgba(255, 183, 0, 0.3);
}
.t2w-departure-body {
    flex: 1;
    min-width: 0;
}
.t2w-departure-label {
    font-size: 14px;
    font-weight: 700;
    color: var(--color-text-primary, #1d180c);
    margin-bottom: 6px;
    letter-spacing: 0.3px;
}
.t2w-departure-row {
    display: flex;
    gap: 8px;
    align-items: center;
}
.t2w-departure-input {
    flex: 1;
    min-width: 0;
    padding: 8px 12px;
    border: 1.5px solid var(--t2w-border-warm, #e8e0d0);
    border-radius: 10px;
    font-size: 14px;
    font-weight: 500;
    color: var(--color-text-primary, #1d180c);
    background: #fff;
    outline: none;
    transition: border-color 0.2s;
}
.t2w-departure-input:focus {
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px rgba(255, 183, 0, 0.1);
}
.t2w-departure-input::placeholder {
    color: #B5A88A;
}
.t2w-departure-time-input {
    width: 100px;
    padding: 8px 10px;
    border: 1.5px solid var(--t2w-border-warm, #e8e0d0);
    border-radius: 10px;
    font-size: 14px;
    font-weight: 600;
    color: var(--color-text-primary, #1d180c);
    background: #fff;
    outline: none;
    text-align: center;
    transition: border-color 0.2s;
    flex-shrink: 0;
}
.t2w-departure-time-input:focus {
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px rgba(255, 183, 0, 0.1);
}

/* ── Departure search dropdown ── */
.t2w-departure-search-wrap {
    position: relative;
    flex: 1;
    min-width: 0;
}
.t2w-departure-search-wrap .t2w-departure-input {
    width: 100%;
    padding-right: 32px;
}
.t2w-departure-search-icon {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: #B5A88A;
    font-size: 13px;
    pointer-events: none;
}
.t2w-departure-dropdown {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    z-index: 10050;
    background: #fff;
    border: 1.5px solid var(--t2w-border-warm, #e8e0d0);
    border-radius: 10px;
    box-shadow: 0 4px 16px rgba(0,0,0,0.12);
    margin-top: 4px;
    max-height: 240px;
    overflow-y: auto;
}
.t2w-dep-result {
    padding: 10px 14px;
    cursor: pointer;
    border-bottom: 1px solid #f0ebe0;
    transition: background 0.15s;
}
.t2w-dep-result:last-child { border-bottom: none; }
.t2w-dep-result:hover {
    background: #FFF9EB;
}
.t2w-dep-result-name {
    font-size: 14px;
    font-weight: 600;
    color: var(--color-text-primary, #1d180c);
}
.t2w-dep-result-addr {
    font-size: 12px;
    color: var(--t2w-text-warm-secondary, #7a6f5d);
    margin-top: 2px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.t2w-dep-loading, .t2w-dep-empty {
    padding: 12px 14px;
    font-size: 13px;
    color: var(--t2w-text-warm-secondary, #7a6f5d);
    text-align: center;
}

/* ── Dark mode ── */
[data-theme="dark"] .t2w-departure-card {
    background: linear-gradient(135deg, #1E1B16 0%, #252118 100%);
    border-color: #3D3526;
}
[data-theme="dark"] .t2w-departure-input,
[data-theme="dark"] .t2w-departure-time-input {
    background: #1A1814;
    border-color: #3D3526;
    color: #E8DCC8;
}
[data-theme="dark"] .t2w-departure-dropdown {
    background: #1E1B16;
    border-color: #3D3526;
    box-shadow: 0 4px 16px rgba(0,0,0,0.4);
}
[data-theme="dark"] .t2w-dep-result { border-color: #2E2920; }
[data-theme="dark"] .t2w-dep-result:hover { background: #2A2518; }
[data-theme="dark"] .t2w-dep-result-name { color: #E8DCC8; }
[data-theme="dark"] .t2w-dep-result-addr { color: #8A7D6A; }
[data-theme="dark"] .t2w-departure-label {
    color: #8A7D6A;
}
[data-theme="dark"] .t2w-place-grip {
    color: #5A5040;
}
[data-theme="dark"] .t2w-place-grip:hover {
    color: var(--color-primary);
    background: rgba(255, 183, 0, 0.1);
}
[data-theme="dark"] .t2w-place-item--drop-target {
    border-color: var(--color-primary);
    background: rgba(255, 183, 0, 0.08);
}

/* ── Responsive: Mobile (≤768px) ── */
@media (max-width: 768px) {
    .t2w-departure-row {
        flex-direction: column;
        gap: 6px;
    }
    .t2w-departure-time-input {
        width: 100%;
    }
    .t2w-departure-card {
        padding: 12px;
        gap: 10px;
    }
    .t2w-departure-circle {
        width: 32px;
        height: 32px;
        font-size: 13px;
    }
    /* Place grip: always visible on mobile (no hover) */
    .t2w-place-grip {
        color: var(--t2w-text-warm-secondary, #7a6f5d);
        width: 44px;
        height: 44px;
    }
    .t2w-v29-card-hover-actions {
        opacity: 1;
    }
}

/* ── Responsive: Tablet (769~1024px) ── */
@media (min-width: 769px) and (max-width: 1024px) {
    .t2w-departure-time-input {
        width: 110px;
    }
    .t2w-departure-card {
        padding: 12px 14px;
    }
}

/* ========================================
   v34: NEARBY DISCOVERY (Modern Nearby Recommendations)
   ======================================== */

/* Section container */
.t2w-nearby-discovery {
    padding: 0 0 8px;
}

/* Header: title + help button */
.t2w-nearby-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 14px;
}
.t2w-nearby-header-left {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 15px;
    font-weight: 700;
    color: #111827;
}
.t2w-nearby-header-left i {
    color: #F97316;
    font-size: 16px;
}

/* Help button with popup */
.t2w-nearby-help {
    position: relative;
    background: none;
    border: none;
    color: #9CA3AF;
    cursor: pointer;
    padding: 4px;
    font-size: 15px;
    transition: color 0.2s;
}
.t2w-nearby-help:hover { color: #6B7280; }
.t2w-nearby-help-popup {
    display: none;
    position: absolute;
    right: 0;
    top: 100%;
    margin-top: 6px;
    background: #1F2937;
    color: #fff;
    font-size: 12px;
    font-weight: 400;
    line-height: 1.5;
    padding: 10px 14px;
    border-radius: 10px;
    width: 240px;
    z-index: 20;
    box-shadow: 0 4px 16px rgba(0,0,0,0.15);
}
.t2w-nearby-help-popup::before {
    content: '';
    position: absolute;
    top: -5px;
    right: 8px;
    width: 10px;
    height: 10px;
    background: #1F2937;
    transform: rotate(45deg);
}
.t2w-nearby-help:hover .t2w-nearby-help-popup,
.t2w-nearby-help--open .t2w-nearby-help-popup {
    display: block;
}

/* Category cards grid — 4 columns */
.t2w-nearby-cats {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 8px;
    margin-bottom: 12px;
}
.t2w-nearby-cat {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    padding: 12px 4px 10px;
    background: #fff;
    border: 1.5px solid #E5E7EB;
    border-radius: 12px;
    cursor: pointer;
    position: relative;
    transition: all 0.2s;
}
.t2w-nearby-cat:hover {
    border-color: var(--cat-color, #E5E7EB);
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0,0,0,0.06);
}
.t2w-nearby-cat--active {
    border-color: var(--cat-color, #F97316);
    background: color-mix(in srgb, var(--cat-color) 6%, #fff);
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
}
.t2w-nearby-cat--active::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 24px;
    height: 2.5px;
    border-radius: 2px;
    background: var(--cat-color, #F97316);
}

/* Category card icon */
.t2w-nearby-cat-icon {
    width: 36px;
    height: 36px;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 16px;
    color: var(--cat-color, #F97316);
    background: color-mix(in srgb, var(--cat-color) 10%, #fff);
}

/* Category card label + count */
.t2w-nearby-cat-label {
    font-size: 12px;
    font-weight: 600;
    color: #374151;
}
.t2w-nearby-cat-count {
    font-size: 11px;
    color: #9CA3AF;
    min-height: 14px;
}

/* Category card inline help (?) */
.t2w-nearby-cat-help {
    position: absolute;
    top: 4px;
    right: 4px;
    color: #D1D5DB;
    font-size: 12px;
    cursor: help;
    transition: color 0.2s;
}
.t2w-nearby-cat-help:hover { color: #9CA3AF; }
.t2w-nearby-cat-help[data-tooltip] {
    position: absolute;
}
.t2w-nearby-cat-help[data-tooltip]::after {
    content: attr(data-tooltip);
    display: none;
    position: absolute;
    right: -4px;
    top: 100%;
    margin-top: 6px;
    background: #1F2937;
    color: #fff;
    font-size: 11px;
    font-weight: 400;
    line-height: 1.4;
    padding: 8px 12px;
    border-radius: 8px;
    width: 180px;
    z-index: 20;
    box-shadow: 0 4px 12px rgba(0,0,0,0.15);
    white-space: normal;
}
.t2w-nearby-cat-help:hover::after,
.t2w-nearby-help--open.t2w-nearby-cat-help::after {
    display: block;
}

/* Sub-filter pills (food type) */
.t2w-nearby-subfilter {
    display: flex;
    gap: 6px;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding: 2px 0 12px;
}
.t2w-nearby-subfilter::-webkit-scrollbar { display: none; }
.t2w-nearby-subfilter[data-visible=""] { display: none; }
.t2w-nearby-pill {
    flex-shrink: 0;
    padding: 5px 14px;
    font-size: 12px;
    font-weight: 500;
    color: #6B7280;
    background: #F3F4F6;
    border: 1px solid transparent;
    border-radius: 999px;
    cursor: pointer;
    transition: all 0.2s;
    white-space: nowrap;
}
.t2w-nearby-pill:hover {
    background: #E5E7EB;
    color: #374151;
}
.t2w-nearby-pill--active {
    background: #FFF7ED;
    color: #F97316;
    border-color: #FDBA74;
    font-weight: 600;
}

/* Results area */
.t2w-nearby-results {
    display: flex;
    flex-direction: column;
    gap: 8px;
    min-height: 80px;
}

/* Skeleton loader */
.t2w-nearby-skeleton {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.t2w-nearby-skel-card {
    display: flex;
    gap: 12px;
    padding: 12px;
    border-radius: 12px;
    background: #F9FAFB;
}
.t2w-nearby-skel-card::before {
    content: '';
    flex-shrink: 0;
    width: 56px;
    height: 56px;
    border-radius: 10px;
    background: linear-gradient(90deg, #F3F4F6 25%, #E5E7EB 50%, #F3F4F6 75%);
    background-size: 200% 100%;
    animation: t2w-skeleton-shimmer 1.5s infinite;
}
.t2w-nearby-skel-card::after {
    content: '';
    flex: 1;
    height: 14px;
    border-radius: 4px;
    align-self: center;
    background: linear-gradient(90deg, #F3F4F6 25%, #E5E7EB 50%, #F3F4F6 75%);
    background-size: 200% 100%;
    animation: t2w-skeleton-shimmer 1.5s infinite;
}

/* Result card */
.t2w-nearby-card {
    display: flex;
    gap: 12px;
    padding: 12px;
    border-radius: 12px;
    background: #fff;
    border: 1px solid #F3F4F6;
    cursor: pointer;
    transition: all 0.2s;
}
.t2w-nearby-card:hover {
    background: #FAFBFC;
    border-color: #E5E7EB;
    box-shadow: 0 2px 8px rgba(0,0,0,0.04);
    transform: translateY(-1px);
}

/* Card thumbnail */
.t2w-nearby-card-thumb {
    flex-shrink: 0;
    width: 56px;
    height: 56px;
    border-radius: 10px;
    overflow: hidden;
    background: #F3F4F6;
}
.t2w-nearby-card-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.t2w-nearby-card-thumb-empty {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: rgba(255,255,255,0.9);
    font-size: 18px;
    background: linear-gradient(135deg, #9CA3AF, #D1D5DB);
    border-radius: inherit;
}

/* Card body */
.t2w-nearby-card-body {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 3px;
}
.t2w-nearby-card-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}
.t2w-nearby-card-name {
    font-size: 14px;
    font-weight: 600;
    color: #111827;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.t2w-nearby-card-rating {
    flex-shrink: 0;
    font-size: 12px;
    font-weight: 600;
    color: #F59E0B;
}
.t2w-nearby-card-rating i {
    font-size: 11px;
    margin-right: 2px;
}
.t2w-nearby-card-hook {
    font-size: 12px;
    color: #6B7280;
    font-style: italic;
    line-height: 1.3;
    margin: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.t2w-nearby-card-meta {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 2px;
}
.t2w-nearby-card-badge {
    font-size: 11px;
    font-weight: 500;
    color: #F97316;
    background: #FFF7ED;
    padding: 1px 8px;
    border-radius: 999px;
}
.t2w-nearby-card-dist {
    font-size: 11px;
    color: #9CA3AF;
}

/* Empty state */
.t2w-nearby-empty {
    text-align: center;
    padding: 24px 16px;
    color: #9CA3AF;
}
.t2w-nearby-empty i {
    font-size: 28px;
    margin-bottom: 8px;
    display: block;
    opacity: 0.4;
}
.t2w-nearby-empty p {
    font-size: 13px;
    margin: 0;
}

/* Google Maps link */
.t2w-nearby-maps-link {
    text-align: center;
    padding: 10px 0 4px;
}
.t2w-nearby-maps-link a {
    font-size: 12px;
    color: #6B7280;
    text-decoration: none;
    transition: color 0.2s;
}
.t2w-nearby-maps-link a:hover { color: #F97316; }
.t2w-nearby-maps-link i { margin-right: 4px; }

/* ── Nearby Discovery: Mobile (<=768px) ── */
@media (max-width: 768px) {
    .t2w-nearby-cats {
        grid-template-columns: repeat(4, 1fr);
        gap: 6px;
    }
    .t2w-nearby-cat {
        padding: 10px 2px 8px;
    }
    .t2w-nearby-cat-icon {
        width: 32px;
        height: 32px;
        font-size: 14px;
        border-radius: 8px;
    }
    .t2w-nearby-cat-label { font-size: 11px; }
    .t2w-nearby-card-thumb {
        width: 48px;
        height: 48px;
    }
    .t2w-nearby-card { padding: 10px; }
    .t2w-nearby-card-name { font-size: 13px; }
    .t2w-nearby-card-hook { font-size: 11px; max-width: 200px; }
    /* Help popup: full-width on mobile */
    .t2w-nearby-help-popup {
        right: -10px;
        width: 220px;
    }
    .t2w-nearby-cat-help[data-tooltip]::after {
        width: 160px;
        right: -8px;
    }
}

/* ── Nearby Discovery: Tablet (769~1024px) ── */
@media (min-width: 769px) and (max-width: 1024px) {
    .t2w-nearby-cats { gap: 8px; }
    .t2w-nearby-cat-icon {
        width: 34px;
        height: 34px;
    }
}

/* ========================================
   v37.1: INSIGHT BAR (Tour verified data)
   ======================================== */

.t2w-insight-bar {
    margin: 8px 0 4px;
    padding: 8px 10px;
    background: linear-gradient(135deg, #FFF9E6, #FFF3CC);
    border-radius: 8px;
    border-left: 3px solid #D4A017;
}

.t2w-insight-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 4px;
}

.t2w-insight-tag {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 11px;
    font-weight: 600;
    padding: 2px 8px;
    border-radius: 10px;
    background: rgba(255,255,255,0.8);
    color: #5A4B2F;
    white-space: nowrap;
}

.t2w-insight-tag i {
    font-size: 10px;
}

.t2w-insight-verified { color: #16A34A; }
.t2w-insight-verified i { color: #16A34A; }

.t2w-insight-crowd-high { color: #DC2626; background: rgba(254,226,226,0.8); }
.t2w-insight-crowd-high i { color: #DC2626; }

.t2w-insight-crowd-low { color: #059669; background: rgba(209,250,229,0.8); }
.t2w-insight-crowd-low i { color: #059669; }

.t2w-insight-time { color: #7C3AED; }
.t2w-insight-time i { color: #7C3AED; }

.t2w-insight-validated { color: #B45309; }
.t2w-insight-validated i { color: #B45309; }

.t2w-insight-tip {
    font-size: 12px;
    color: #78602B;
    line-height: 1.4;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.t2w-insight-tip i {
    color: #D4A017;
    margin-right: 4px;
    font-size: 11px;
}

.t2w-insight-tags:empty + .t2w-insight-tip {
    margin-top: 0;
}

@media (max-width: 768px) {
    .t2w-insight-bar {
        padding: 6px 8px;
        margin: 6px 0 2px;
    }
    .t2w-insight-tags { gap: 4px; }
    .t2w-insight-tag { font-size: 10px; padding: 1px 6px; }
    .t2w-insight-tip { font-size: 11px; -webkit-line-clamp: 1; }
}

/* ========================================
   v39.3: Timeline Review CTA
   ======================================== */
.t2w-tl-review-cta {
    display: flex; align-items: center; gap: 8px; padding: 8px 12px; margin: 6px 0 0;
    background: linear-gradient(90deg, #F0F9FF, #EFF6FF); border-radius: 8px;
    font-size: 12px; color: #4B5563; flex-wrap: wrap;
}
.t2w-tl-review-cta i { color: var(--color-primary); }
.t2w-tl-review-karma { color: #B45309; font-weight: 600; font-size: 11px; }
.t2w-tl-review-btn {
    margin-left: auto; padding: 4px 14px; border-radius: 16px; border: 1px solid #3B82F6;
    background: #fff; color: var(--color-primary); font-size: 12px; font-weight: 600; cursor: pointer; transition: all .2s;
}
.t2w-tl-review-btn:hover { background: var(--color-primary); color: #fff; }
.t2w-tl-review-form { width: 100%; margin-top: 6px; }
.t2w-tl-review-form .t2w-pd-star { font-size: 22px; }
.t2w-tl-review-form .t2w-rf-quick-row { gap: 6px; }
.t2w-tl-rv-submit {
    padding: 6px 14px; border: none; border-radius: 8px; background: #10B981; color: #fff;
    font-size: 12px; font-weight: 600; cursor: pointer; white-space: nowrap;
}
.t2w-tl-rv-submit:hover { background: #059669; }
.t2w-tl-review-done {
    padding: 6px 12px; margin: 6px 0 0; background: #F0FDF4; border-radius: 8px;
    font-size: 12px; color: #059669; font-weight: 600;
}
.t2w-tl-review-done i { margin-right: 4px; }

/* ========================================
   v38.2: PLACE DETAIL — Traveler Verified Insight
   ======================================== */
.t2w-pd-traveler-insight {
    margin: 12px 0;
    padding: 12px 14px;
    background: linear-gradient(135deg, #FEFCE8, #FEF9C3);
    border-radius: 12px;
    border-left: 3px solid #D4A017;
}
.t2w-pd-vi-header {
    font-size: 13px;
    font-weight: 700;
    color: #92400E;
    margin-bottom: 8px;
}
.t2w-pd-vi-header i {
    color: #D4A017;
    margin-right: 4px;
}
.t2w-pd-vi-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}
.t2w-pd-vi-chip {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 12px;
    font-weight: 500;
    padding: 4px 10px;
    border-radius: 16px;
    background: rgba(255,255,255,0.85);
    color: #5A4B2F;
    line-height: 1.3;
}
.t2w-pd-vi-chip i { font-size: 11px; }
.t2w-pd-vi--calm { color: #059669; }
.t2w-pd-vi--calm i { color: #059669; }
.t2w-pd-vi--busy { color: #DC2626; background: rgba(254,226,226,0.7); }
.t2w-pd-vi--busy i { color: #DC2626; }
.t2w-pd-vi--moderate { color: #D97706; }
.t2w-pd-vi--moderate i { color: #D97706; }
.t2w-pd-vi--time { color: #7C3AED; }
.t2w-pd-vi--time i { color: #7C3AED; }
.t2w-pd-vi--audience { color: #1D4ED8; }
.t2w-pd-vi--validated { color: #B45309; }
.t2w-pd-vi--validated i { color: #B45309; }
.t2w-pd-vi-tip {
    margin-top: 8px;
    font-size: 12px;
    color: #78602B;
    line-height: 1.5;
    padding: 6px 10px;
    background: rgba(255,255,255,0.6);
    border-radius: 8px;
}
.t2w-pd-vi-tip i {
    color: #D4A017;
    margin-right: 4px;
    font-size: 11px;
}
.t2w-pd-verified-mark {
    display: inline-block;
    font-size: 10px;
    font-weight: 600;
    color: #16A34A;
    margin-left: 4px;
}
.t2w-pd-verified-mark i { font-size: 9px; margin-right: 2px; }

/* Zone crowd hint banner */
.t2w-zone-crowd-hint {
    margin: 0 12px 4px;
    padding: 6px 10px;
    font-size: 11px;
    border-radius: 6px;
    line-height: 1.4;
}
.t2w-zone-crowd-hint i { margin-right: 4px; font-size: 10px; }
.t2w-zone-crowd--high {
    background: rgba(254,226,226,0.6);
    color: #B91C1C;
}
.t2w-zone-crowd--medium {
    background: rgba(254,243,199,0.6);
    color: #92400E;
}
.t2w-zone-time-warn {
    margin: 4px 12px 8px;
    padding: 6px 10px;
    font-size: 11px;
    border-radius: 6px;
    background: rgba(254,243,199,0.5);
    color: #92400E;
    line-height: 1.4;
}
.t2w-zone-time-warn i { margin-right: 4px; font-size: 10px; color: #D97706; }
@media (max-width: 768px) {
    .t2w-pd-traveler-insight { padding: 10px 12px; margin: 8px 0; }
    .t2w-pd-vi-chip { font-size: 11px; padding: 3px 8px; }
    .t2w-pd-vi-tip { font-size: 11px; }
}

/* ========================================
   v34: INLINE NEARBY (Timeline embedded)
   ======================================== */

.t2w-v29-inline-reco {
    position: relative;
    margin: 8px 0 4px;
    padding: 12px;
    background: #FAFBFC;
    border-radius: 12px;
    border: 1px solid #F3F4F6;
}
/* Category tab strip — inline horizontal row */
.t2w-inline-cat-tabs {
    display: flex;
    gap: 6px;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding: 2px 0;
}
.t2w-inline-cat-tabs::-webkit-scrollbar { display: none; }
.t2w-inline-cat-tab {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 5px 12px;
    font-size: 12px;
    font-weight: 500;
    color: #6B7280;
    background: #fff;
    border: 1.5px solid #E5E7EB;
    border-radius: 999px;
    cursor: pointer;
    transition: all 0.15s;
    white-space: nowrap;
}
.t2w-inline-cat-tab i { font-size: 11px; color: var(--cat-color, #9CA3AF); }
.t2w-inline-cat-tab:hover { border-color: var(--cat-color); color: var(--cat-color); }
.t2w-inline-cat-tab--active {
    border-color: var(--cat-color, #F97316);
    color: var(--cat-color, #F97316);
    background: color-mix(in srgb, var(--cat-color) 8%, #fff);
    font-weight: 600;
    box-shadow: 0 1px 4px rgba(0,0,0,0.08);
}
.t2w-inline-cat-cnt {
    font-size: 10px;
    font-weight: 600;
    background: var(--cat-color, #9CA3AF);
    color: #fff;
    border-radius: 999px;
    padding: 0 5px;
    min-width: 16px;
    text-align: center;
    line-height: 16px;
}

/* Floating popover — anchored to inline reco */
.t2w-inline-popover {
    position: absolute;
    right: calc(100% + 12px);
    bottom: -8px;
    width: 340px;
    z-index: 100;
    background: #fff;
    border-radius: 16px;
    box-shadow: 0 8px 32px rgba(0,0,0,0.15), 0 2px 8px rgba(0,0,0,0.08);
    border: 1px solid #E5E7EB;
    overflow: hidden;
    animation: t2w-pop-in 0.2s ease;
}
/* Right-pointing arrow connecting popover to avatar strip */
.t2w-inline-popover::after {
    content: '';
    position: absolute;
    right: -7px;
    bottom: 24px;
    transform: rotate(45deg);
    width: 12px;
    height: 12px;
    background: #fff;
    border-right: 1px solid #E5E7EB;
    border-top: 1px solid #E5E7EB;
}
@keyframes t2w-pop-in {
    from { opacity: 0; transform: translateX(8px); }
    to { opacity: 1; transform: translateX(0); }
}
.t2w-pop-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 16px 8px;
    font-size: 14px;
    font-weight: 600;
    color: #111827;
}
.t2w-pop-close {
    width: 28px; height: 28px;
    border: none;
    background: #F3F4F6;
    border-radius: 50%;
    color: #6B7280;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
}
.t2w-pop-close:hover { background: #E5E7EB; }

/* Popover category tabs */
.t2w-pop-cats {
    display: flex;
    gap: 6px;
    padding: 0 16px 10px;
    overflow-x: auto;
    scrollbar-width: none;
}
.t2w-pop-cats::-webkit-scrollbar { display: none; }
.t2w-pop-cat {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 5px 12px;
    font-size: 12px;
    font-weight: 500;
    color: #6B7280;
    background: #F9FAFB;
    border: 1.5px solid #E5E7EB;
    border-radius: 999px;
    cursor: pointer;
    transition: all 0.15s;
    white-space: nowrap;
}
.t2w-pop-cat i { font-size: 11px; color: var(--cat-color, #9CA3AF); }
.t2w-pop-cat:hover { border-color: var(--cat-color); }
.t2w-pop-cat--active {
    border-color: var(--cat-color, #F97316);
    color: var(--cat-color, #F97316);
    background: color-mix(in srgb, var(--cat-color) 6%, #fff);
    font-weight: 600;
}
.t2w-pop-cat-count { font-size: 10px; opacity: 0.7; }

/* Popover results */
.t2w-pop-results {
    max-height: 280px;
    overflow-y: auto;
    padding: 0 12px 12px;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.t2w-pop-results .t2w-nearby-card {
    padding: 10px;
    border-radius: 10px;
    position: relative;
}
.t2w-pop-results .t2w-nearby-card-thumb {
    width: 48px; height: 48px;
    border-radius: 8px;
}
/* Quick-add button on nearby card */
.t2w-nearby-card-add {
    position: absolute;
    right: 8px;
    top: 50%;
    transform: translateY(-50%);
    width: 28px; height: 28px;
    border: 1.5px solid #E5E7EB;
    border-radius: 50%;
    background: #fff;
    color: #9CA3AF;
    font-size: 12px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.15s;
    flex-shrink: 0;
}
.t2w-nearby-card-add:hover { border-color: #F59E0B; color: #F59E0B; background: #FFFBEB; }
.t2w-nearby-card-add--done { border-color: #10B981; color: #10B981; background: #ECFDF5; }

/* Loading/empty states */
.t2w-inline-loading {
    text-align: center;
    padding: 12px;
    color: #D1D5DB;
    font-size: 14px;
}
.t2w-v29-inline-empty {
    display: block;
    text-align: center;
    padding: 10px;
    font-size: 12px;
    color: #9CA3AF;
}

/* ── Inline Nearby: Mobile ── */
@media (max-width: 768px) {
    .t2w-v29-inline-reco { padding: 8px 10px; margin: 4px 0 2px; }
    .t2w-inline-cat-tab { padding: 4px 10px; font-size: 11px; }
    .t2w-inline-cat-cnt { font-size: 9px; min-width: 14px; line-height: 14px; padding: 0 4px; }
    /* Popover → bottom-sheet on mobile (override desktop left-side) */
    .t2w-inline-popover {
        position: fixed;
        top: auto;
        bottom: 0;
        left: 0;
        right: 0;
        width: auto;
        margin: 0;
        transform: none;
        border-radius: 20px 20px 0 0;
        max-height: 65vh;
        z-index: 1100;
        animation: t2w-pop-slide-up 0.25s ease;
    }
    .t2w-inline-popover::after { display: none; }
    @keyframes t2w-pop-slide-up {
        from { transform: translateY(100%); }
        to { transform: translateY(0); }
    }
    .t2w-pop-results { max-height: 45vh; }
}
/* Mobile backdrop overlay */
.t2w-pop-backdrop {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.35);
    z-index: 1099;
}

/* ── AI Refine Chat (v38.4) ── */
.t2w-refine-chat {
    display: flex;
    flex-direction: column;
    height: 420px;
    gap: 12px;
}
.t2w-refine-messages {
    flex: 1;
    overflow-y: auto;
    padding: 8px 4px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.t2w-refine-msg {
    display: flex;
    max-width: 85%;
}
.t2w-refine-msg--ai {
    align-self: flex-start;
}
.t2w-refine-msg--user {
    align-self: flex-end;
}
.t2w-refine-msg-body {
    padding: 10px 14px;
    border-radius: 14px;
    font-size: 14px;
    line-height: 1.5;
    word-break: keep-all;
}
.t2w-refine-msg--ai .t2w-refine-msg-body {
    background: #f3f4f6;
    color: #1f2937;
    border-bottom-left-radius: 4px;
}
.t2w-refine-msg--user .t2w-refine-msg-body {
    background: linear-gradient(135deg, var(--color-primary), #F59E0B);
    color: #fff;
    border-bottom-right-radius: 4px;
}
.t2w-refine-examples {
    display: block;
    margin-top: 8px;
    font-size: 12px;
    color: #6b7280;
    line-height: 1.6;
}
.t2w-refine-input-wrap {
    display: flex;
    gap: 8px;
    padding-top: 4px;
    border-top: 1px solid #e5e7eb;
}
.t2w-refine-input {
    flex: 1;
    padding: 10px 14px;
    border: 1px solid #d1d5db;
    border-radius: 24px;
    font-size: 14px;
    outline: none;
    transition: border-color 0.2s;
}
.t2w-refine-input:focus {
    border-color: #F59E0B;
    box-shadow: 0 0 0 2px rgba(245,158,11,0.15);
}
.t2w-refine-send {
    width: 40px;
    height: 40px;
    border: none;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--color-primary), #F59E0B);
    color: #fff;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    transition: opacity 0.2s;
    flex-shrink: 0;
}
.t2w-refine-send:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}
.t2w-refine-actions {
    margin-top: 8px;
}
.t2w-refine-apply-btn {
    display: inline-block;
    padding: 6px 16px;
    background: #10B981;
    color: #fff;
    border: none;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.2s;
}
.t2w-refine-apply-btn:hover {
    background: #059669;
}
.t2w-refine-applied {
    display: inline-block;
    padding: 6px 12px;
    color: #10B981;
    font-size: 13px;
    font-weight: 600;
}
.t2w-refine-error {
    color: #EF4444;
}
.t2w-spinner-sm {
    display: inline-block;
    width: 16px;
    height: 16px;
    border: 2px solid #d1d5db;
    border-top-color: #F59E0B;
    border-radius: 50%;
    animation: t2w-spin 0.6s linear infinite;
    vertical-align: middle;
    margin-right: 6px;
}
@keyframes t2w-spin {
    to { transform: rotate(360deg); }
}
@media (max-width: 768px) {
    .t2w-refine-chat { height: 360px; }
    .t2w-refine-msg { max-width: 92%; }
    .t2w-refine-msg-body { font-size: 13px; padding: 8px 12px; }
    .t2w-refine-input { font-size: 16px; } /* prevent iOS zoom */
}

/* ═══════════════════════════════════════════════════════════════════
   v39.5: Planner UX Upgrade — Compact Cards + Breadcrumb + Bridges
   ═══════════════════════════════════════════════════════════════════ */

/* ─── Breadcrumb Navigation (sticky top) ─── */
.t2w-breadcrumb-bar {
    position: sticky;
    top: 0;
    z-index: 20;
    background: #111827;
    color: #fff;
    padding: 8px 16px;
    font-size: 12px;
    display: flex;
    align-items: center;
    gap: 6px;
}
.t2w-breadcrumb-bar .bc-day { color: var(--color-primary); font-weight: 700; }
.t2w-breadcrumb-bar .bc-sep { color: #4B5563; }
.t2w-breadcrumb-bar .bc-zone { color: #93C5FD; }
.t2w-breadcrumb-bar .bc-action { color: #D1D5DB; }
.t2w-breadcrumb-bar .bc-right { margin-left: auto; font-size: 10px; color: #9CA3AF; }
.t2w-breadcrumb-bar .bc-back { cursor: pointer; margin-right: 4px; font-size: 14px; }
.t2w-bc-progress { height: 2px; background: #1F2937; }
.t2w-bc-progress-fill { height: 100%; background: var(--color-primary); transition: width 0.3s ease; }
@media (min-width: 769px) {
    .t2w-breadcrumb-bar { display: none; }
}

/* ─── Compact Horizontal Place Card (search/dock) ─── */
.t2w-place-card.t2w-pc-compact {
    display: flex;
    gap: 10px;
    padding: 12px 16px;
    border-bottom: 1px solid #F3F4F6;
    background: #fff;
    border-radius: 0;
    box-shadow: none;
    cursor: pointer;
    transition: background 0.15s;
}
.t2w-place-card.t2w-pc-compact:active { background: #FAFAFA; }
.t2w-pc-compact .t2w-pc-image {
    width: 64px;
    height: 64px;
    border-radius: 10px;
    flex-shrink: 0;
    position: relative;
    overflow: visible;
    background-size: cover;
    background-position: center;
}
.t2w-pc-compact .t2w-pc-image .t2w-wishlist-btn { display: none; }
.t2w-pc-compact .t2w-pc-wc-dot {
    position: absolute;
    bottom: 3px;
    right: 3px;
    width: 16px;
    height: 16px;
    background: #fff;
    border-radius: 99px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 9px;
    box-shadow: 0 1px 2px rgba(0,0,0,0.15);
    z-index: 2;
}
.t2w-pc-compact .t2w-pc-content { flex: 1; min-width: 0; padding: 0; }
.t2w-pc-compact .t2w-pc-name {
    font-size: 14px;
    font-weight: 700;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    margin: 0;
}
.t2w-pc-compact .t2w-pc-name-en { display: none; }
.t2w-pc-compact .t2w-pc-meta { font-size: 11px; color: #9CA3AF; margin-bottom: 4px; }
.t2w-pc-compact .t2w-pc-hook {
    font-size: 12px;
    color: #6B7280;
    line-height: 1.4;
    margin-bottom: 6px;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.t2w-pc-compact .t2w-pc-badges { display: none; }
.t2w-pc-compact .t2w-add-place {
    width: 36px;
    height: 36px;
    border-radius: 99px;
    padding: 0;
    font-size: 14px;
    align-self: center;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
}
/* Compact card facility tags */
.t2w-pc-compact .t2w-pc-fac-tags { display: flex; gap: 3px; flex-wrap: wrap; }
.t2w-pc-fac-tag {
    font-size: 10px;
    padding: 2px 6px;
    border-radius: 99px;
    white-space: nowrap;
    background: #F3F4F6;
    color: #6B7280;
}
.t2w-pc-fac-tag--restroom { background: #EFF6FF; color: #2563EB; }
.t2w-pc-fac-tag--parking { background: #EFF6FF; color: #2563EB; }
.t2w-pc-fac-tag--access { background: #EFF6FF; color: #2563EB; }
.t2w-pc-fac-tag--outdoor { background: #ECFDF5; color: #059669; }
.t2w-pc-fac-tag--indoor { background: #ECFDF5; color: #059669; }
.t2w-pc-fac-tag--crowd { background: #FEF2F2; color: #DC2626; }
.t2w-pc-fac-tag--optimal { background: #F5F3FF; color: #7C3AED; }

/* Desktop: wider compact card */
@media (min-width: 769px) {
    .t2w-pc-compact .t2w-pc-image { width: 80px; height: 80px; border-radius: 12px; }
    .t2w-pc-compact .t2w-pc-name { font-size: 15px; }
    .t2w-pc-compact .t2w-pc-hook { -webkit-line-clamp: 1; font-size: 13px; }
    .t2w-pc-fac-tag { font-size: 11px; padding: 2px 8px; }
}

/* ─── Timeline Dot: Restroom indicator ─── */
.t2w-v29-circle--wc { position: relative; }
.t2w-v29-circle--wc::after {
    content: '\1F6BB';
    position: absolute;
    top: -3px;
    left: 22px;
    font-size: 10px;
    line-height: 1;
}

/* ─── Movement Bridge Enhanced (between places) ─── */
.t2w-v29-transport-bridge {
    margin: 2px 0 2px 38px;
    padding: 6px 10px;
    background: #FFFBEB;
    border-radius: 6px;
    font-size: 11px;
    color: #78350F;
    line-height: 1.5;
    border-left: 2px solid var(--color-primary);
}
.t2w-v29-transport-bridge i { margin-right: 3px; }

/* Zone transition bridge */
.t2w-v29-mv-bridge-tip {
    font-size: 11px;
    color: #6B7280;
    margin-top: 4px;
    padding: 6px 10px;
    background: #F9FAFB;
    border-radius: 6px;
    line-height: 1.5;
}

/* ─── Facility Strip Enhancement (place detail) ─── */
.t2w-pd-facility-bar {
    display: flex;
    padding: 10px 16px;
    gap: 0;
    background: #F9FAFB;
    border-bottom: 1px solid #E5E7EB;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}
.t2w-pd-facility {
    flex: 1;
    min-width: 0;
    text-align: center;
    padding: 6px 4px;
    font-size: 10px;
    color: #6B7280;
    border-right: 1px solid #E5E7EB;
    white-space: nowrap;
}
.t2w-pd-facility:last-child { border-right: none; }
.t2w-pd-facility i {
    display: block;
    font-size: 18px;
    margin-bottom: 3px;
}
.t2w-pd-facility--active { color: #059669; font-weight: 600; }
.t2w-pd-facility--ticket { color: #D97706; }

/* ─── Map Marker: Restroom badge overlay ─── */
.t2w-marker-wc-badge {
    position: absolute;
    top: -4px;
    right: -6px;
    font-size: 10px;
    background: #fff;
    border-radius: 99px;
    width: 14px;
    height: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 1px 2px rgba(0,0,0,0.15);
    z-index: 2;
}

/* ─── Timeline Insight Bar: Restroom + parking icons ─── */
.t2w-v29-fac-strip {
    display: flex;
    gap: 4px;
    margin-top: 4px;
}
.t2w-v29-fac-icon {
    font-size: 10px;
    padding: 1px 5px;
    border-radius: 99px;
    background: #EFF6FF;
    color: #2563EB;
}
.t2w-v29-fac-icon--outdoor { background: #ECFDF5; color: #059669; }

/* ═══════════════════════════════════════════════════════════════════
   v39.6: Place Detail — Time Chips + Transport Card + Route Tips
   ═══════════════════════════════════════════════════════════════════ */

/* ─── "언제 가면 좋을까?" Time Chips ─── */
.t2w-pd-when-card {
    padding: 16px;
    border-bottom: 1px solid #E5E7EB;
}
.t2w-pd-when-title {
    font-size: 13px;
    font-weight: 700;
    color: #111827;
    margin-bottom: 10px;
}
.t2w-pd-when-title i { color: var(--color-primary); margin-right: 4px; }
.t2w-pd-when-chips {
    display: flex;
    gap: 6px;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    padding-bottom: 2px;
}
.t2w-pd-when-chip {
    flex-shrink: 0;
    padding: 6px 12px;
    border-radius: 99px;
    border: 1px solid #E5E7EB;
    background: #fff;
    font-size: 12px;
    color: #6B7280;
    cursor: pointer;
    transition: all 0.15s ease;
    white-space: nowrap;
}
.t2w-pd-when-chip:hover { border-color: var(--color-primary); color: #92400E; }
.t2w-pd-when-chip--active {
    background: #FFFBEB;
    border-color: var(--color-primary);
    color: #92400E;
    font-weight: 600;
}
.t2w-pd-when-note {
    margin-top: 8px;
    font-size: 12px;
    color: #92400E;
    background: #FFFBEB;
    padding: 6px 10px;
    border-radius: 6px;
    line-height: 1.5;
}

/* ─── Place Detail: Transport/Access Card ─── */
.t2w-pd-transport-card {
    padding: 16px;
    border-bottom: 1px solid #E5E7EB;
}
.t2w-pd-transport-title {
    font-size: 13px;
    font-weight: 700;
    color: #111827;
    margin-bottom: 8px;
}
.t2w-pd-transport-title i { color: var(--color-primary); margin-right: 4px; }
.t2w-pd-transport-row {
    font-size: 12px;
    color: #4B5563;
    line-height: 1.5;
    padding: 4px 0;
}
.t2w-pd-transport-row i {
    width: 18px;
    text-align: center;
    margin-right: 6px;
    color: #9CA3AF;
}

/* ─── Timeline: Route Tip in Transport Card ─── */
.t2w-transport-tip {
    display: block;
    width: 100%;
    margin-top: 6px;
    font-size: 11px;
    color: #78350F;
    background: #FFFBEB;
    padding: 4px 8px;
    border-radius: 4px;
    line-height: 1.4;
}
.t2w-transport-tip i {
    color: var(--color-primary);
    margin-right: 3px;
    font-size: 10px;
}

/* ─── Breadcrumb: State-specific styles ─── */
.t2w-breadcrumb-bar .bc-place {
    color: #fff;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 120px;
}
.t2w-breadcrumb-bar[data-bc-state="detail"] .bc-back {
    color: var(--color-primary);
}
.t2w-breadcrumb-bar[data-bc-state="browse"] .bc-action {
    color: var(--color-primary);
    font-weight: 600;
}

/* ─── v41.0: Public Toilet Stop Card ─── */
#t2w-planner-v2 .t2w-v29-circle--toilet {
    background: #0EA5E9;
    color: #fff;
}
.t2w-v29-card--toilet {
    background: #F0F9FF;
    border: 1px solid #BAE6FD;
    border-radius: 12px;
    padding: 10px 14px;
}
.t2w-v29-toilet-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}
.t2w-v29-toilet-header h4 {
    margin: 0;
    font-size: 13px;
    font-weight: 600;
    color: #0C4A6E;
}
.t2w-v29-toilet-header h4 i {
    color: #0EA5E9;
    margin-right: 4px;
}
.t2w-v29-toilet-remove {
    background: none;
    border: none;
    color: #94A3B8;
    cursor: pointer;
    padding: 4px;
    font-size: 12px;
    line-height: 1;
}
.t2w-v29-toilet-remove:hover { color: #EF4444; }
.t2w-v29-toilet-meta {
    font-size: 11px;
    color: #64748B;
    margin-top: 4px;
}
.t2w-v29-toilet-meta i { margin-right: 2px; color: #0EA5E9; }
.t2w-v29-toilet-addr {
    font-size: 11px;
    color: #94A3B8;
    margin-top: 3px;
}
.t2w-v29-toilet-addr i { margin-right: 3px; }

/* Toilet toggle button in map controls */
.t2w-toilet-toggle {
    background: #fff;
    border: 2px solid #E2E8F0;
    border-radius: 8px;
    padding: 6px 12px;
    cursor: pointer;
    font-size: 13px;
    color: #64748B;
    display: flex;
    align-items: center;
    gap: 6px;
    transition: all .2s;
}
.t2w-toilet-toggle:hover { border-color: #0EA5E9; color: #0EA5E9; }
.t2w-toilet-toggle.active {
    background: #0EA5E9;
    border-color: #0EA5E9;
    color: #fff;
}
.t2w-toilet-toggle i { font-size: 14px; }

/* Toilet map marker */
.t2w-toilet-marker {
    background: #0EA5E9;
    color: #fff;
    border-radius: 50%;
    width: 28px;
    height: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    border: 2px solid #fff;
    box-shadow: 0 2px 6px rgba(0,0,0,.2);
}

/* Toilet search result card (in panel/dock) */
.t2w-toilet-result {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 10px 12px;
    border-bottom: 1px solid #F1F5F9;
    cursor: pointer;
    transition: background .15s;
}
.t2w-toilet-result:hover { background: #F0F9FF; }
.t2w-toilet-result-icon {
    width: 36px;
    height: 36px;
    border-radius: 8px;
    background: #E0F2FE;
    color: #0EA5E9;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 16px;
    flex-shrink: 0;
}
.t2w-toilet-result-info { flex: 1; min-width: 0; }
.t2w-toilet-result-name {
    font-size: 13px;
    font-weight: 600;
    color: #1E293B;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.t2w-toilet-result-detail {
    font-size: 11px;
    color: #94A3B8;
    margin-top: 2px;
}
.t2w-toilet-result-tags {
    display: flex;
    gap: 4px;
    flex-wrap: wrap;
    margin-top: 4px;
}
.t2w-toilet-tag {
    font-size: 10px;
    padding: 2px 6px;
    border-radius: 4px;
    background: #E0F2FE;
    color: #0369A1;
}
.t2w-toilet-result-dist {
    font-size: 11px;
    color: #0EA5E9;
    white-space: nowrap;
    align-self: center;
}

/* Toilet suggestion banner (auto-suggest on long drives) */
.t2w-toilet-suggest {
    background: linear-gradient(135deg, #E0F2FE, #F0F9FF);
    border: 1px dashed #7DD3FC;
    border-radius: 10px;
    padding: 10px 14px;
    margin: 4px 0 4px 38px;
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 12px;
    color: #0C4A6E;
    cursor: pointer;
    transition: all .2s;
}
.t2w-toilet-suggest:hover {
    background: linear-gradient(135deg, #BAE6FD, #E0F2FE);
    border-color: #38BDF8;
}
.t2w-toilet-suggest i {
    font-size: 16px;
    color: #0EA5E9;
}

@media (max-width: 768px) {
    .t2w-v29-card--toilet { padding: 8px 10px; }
    .t2w-v29-toilet-header h4 { font-size: 12px; }
    .t2w-toilet-toggle { padding: 5px 10px; font-size: 12px; }
    .t2w-toilet-suggest { margin-left: 28px; padding: 8px 10px; }
}

/* ═══ v5.2: 100-Test Refinement — Production Styles ═══ */

/* v5.2 [Critical #4]: Reduced motion support */
@media (prefers-reduced-motion: reduce) {
    .t2w-v29-item,
    .t2w-v29-card,
    .t2w-v29-circle { animation: none; transition-duration: 0.01ms; }
}

/* v5.2 [Major #5]: MUST GO card — stronger visual distinction */
#t2w-planner-v2 .t2w-v29-card--must {
    background: #FFFBEB;
    border: 1.5px solid rgba(255,183,0,0.25);
}
.t2w-v29-card--must::before {
    content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px;
    background: var(--color-primary); border-radius: 14px 0 0 14px; z-index: 1;
}
#t2w-planner-v2 .t2w-v29-badge-mustgo {
    font-size: 9px; font-weight: 700;
    background: linear-gradient(135deg, var(--color-primary), #F59E0B);
    color: #fff; padding: 3px 8px; border-radius: 5px;
    letter-spacing: 0.3px; display: inline-flex; align-items: center; gap: 3px;
}
.t2w-v29-badge-mustgo i { font-size: 8px; }

/* v5.2 [Major #6]: NOW indicator — pulsing blue ring */
#t2w-planner-v2 .t2w-v29-item--now .t2w-v29-circle {
    box-shadow: 0 0 0 2px #fff, 0 0 0 4px #3B82F6, 0 0 12px rgba(59,130,246,0.4);
    animation: t2wNowPulse 2s ease-in-out infinite;
}
#t2w-planner-v2 .t2w-v29-item--now .t2w-v29-time { color: #3B82F6; font-weight: 700; }
.t2w-v29-now-label {
    font-size: 10px; color: var(--color-primary); font-weight: 700; text-align: center;
    margin-top: 2px; letter-spacing: 0.3px;
}
@keyframes t2wNowPulse {
    0%, 100% { box-shadow: 0 0 0 2px #fff, 0 0 0 4px #3B82F6, 0 0 12px rgba(59,130,246,0.4); }
    50% { box-shadow: 0 0 0 2px #fff, 0 0 0 6px #3B82F6, 0 0 20px rgba(59,130,246,0.6); }
}

/* v5.2 [Major #6]: Completed items — subtle circle only, no opacity */
#t2w-planner-v2 .t2w-v29-item--done .t2w-v29-circle { background: #D1D5DB; }
#t2w-planner-v2 .t2w-v29-item--done .t2w-v29-time { color: #9CA3AF; }

/* v5.2 [Major #7]: Delete card flash + undo toast */
.t2w-v29-card--deleting {
    animation: t2wDeleteFlash 0.4s ease forwards;
}
@keyframes t2wDeleteFlash {
    0% { transform: scale(1); opacity: 1; }
    30% { background: #FEE2E2; }
    100% { transform: scale(0.95); opacity: 0; }
}
#t2w-planner-v2 .t2w-toast--delete { background: #7F1D1D; }
.t2w-toast-undo {
    color: var(--color-primary); font-weight: 700; cursor: pointer; margin-left: 8px;
    padding: 4px 8px; border-radius: 4px;
}
.t2w-toast-undo:hover { text-decoration: underline; background: rgba(255,255,255,0.1); }
.t2w-toast-timer {
    width: 100%; height: 3px; background: rgba(255,255,255,0.15);
    border-radius: 2px; position: absolute; bottom: 0; left: 0; overflow: hidden;
}
.t2w-toast-timer-bar {
    height: 100%; background: var(--color-primary); border-radius: 2px;
    animation: t2wTimerShrink 3s linear forwards;
}
@keyframes t2wTimerShrink { from { width: 100%; } to { width: 0%; } }

/* v5.2 [Major #9]: Fixed-width time badge */
.t2w-v29-time { min-width: 44px; text-align: center; }

/* v5.2 [Major #11]: Collapsed card indicators (memo/AI tip) */
.t2w-v29-card-indicators {
    display: flex; gap: 3px; align-items: center; margin-left: 4px;
}
.t2w-v29-card-indicator {
    font-size: 10px; opacity: 0.6;
}
.t2w-v29-card-indicator--memo { color: #F59E0B; }
.t2w-v29-card-indicator--tip { color: #F97316; }

/* v5.2 [Major #12]: Collapse All button */
.t2w-tl-collapse-all {
    width: 36px; height: 36px; border-radius: 8px; border: 1px solid #E5E7EB;
    background: #fff; cursor: pointer; font-size: 12px; color: #6B7280;
    display: flex; align-items: center; justify-content: center;
    transition: all 0.2s; margin-left: 4px;
}
.t2w-tl-collapse-all:hover { border-color: var(--color-primary); color: var(--color-primary); }

/* v5.2 [Nice #14]: Return to departure connector */
.t2w-v29-return {
    display: flex; align-items: center; gap: 10px;
    margin: 6px 0 0 0; padding: 8px 0; position: relative;
}
.t2w-v29-return-icon {
    width: 28px; height: 28px; border-radius: 50%; background: #374151; color: #fff;
    display: flex; align-items: center; justify-content: center; font-size: 10px;
    border: 2.5px solid #fff; box-shadow: 0 0 0 1.5px #D1D5DB; flex-shrink: 0;
}
.t2w-v29-return-text { font-size: 12px; color: #6B7280; }
.t2w-v29-return-time { font-size: 12px; color: #9CA3AF; font-weight: 500; min-width: 44px; text-align: center; }

/* v5.2 [Nice #20]: Scroll to top button */
.t2w-scroll-top {
    position: fixed; bottom: 80px; right: 24px; z-index: 25;
    width: 44px; height: 44px; border-radius: 50%; background: #fff;
    border: 1px solid #E5E7EB; box-shadow: 0 4px 12px rgba(0,0,0,0.1);
    cursor: pointer; display: flex; align-items: center; justify-content: center;
    font-size: 14px; color: #6B7280; transition: all 0.3s;
    opacity: 0; pointer-events: none; transform: translateY(10px);
}
.t2w-scroll-top.visible { opacity: 1; pointer-events: auto; transform: translateY(0); }
.t2w-scroll-top:hover { border-color: var(--color-primary); color: var(--color-primary); transform: translateY(-2px); }

/* v5.2 [Critical #3]: Mobile transport buttons always visible */
@media (max-width: 768px) {
    #t2w-planner-v2 .t2w-v29-transport-actions .t2w-v29-transport-btn { opacity: 1; }
    #t2w-planner-v2 .t2w-place-dur-btn { opacity: 1; }
    .t2w-v29-card-hover-actions { display: none; }
}

/* ═══ v5.2b: Card Accordion + Space Optimization ═══ */

/* Accordion: collapsed state — hide body, show only header */
.t2w-v29-card--collapsed .t2w-v29-card-body,
.t2w-v29-card--collapsed .t2w-v29-card-desc,
.t2w-v29-card--collapsed .t2w-v29-card-vibes,
.t2w-v29-card--collapsed .t2w-v29-insight-bar,
.t2w-v29-card--collapsed .t2w-v29-fac-strip,
.t2w-v29-card--collapsed .t2w-v29-inline-reco,
.t2w-v29-card--collapsed .t2w-v29-review-cta {
    display: none;
}
/* v6.0: Inline facility icons in card header (visible when collapsed) */
.t2w-v29-fac-inline {
    display: inline-flex; gap: 5px; margin-left: 8px; flex-shrink: 0; vertical-align: middle;
}
.t2w-v29-fac-inline i {
    font-size: 13px; color: #94A3B8;
}
.t2w-v29-fac-inline i.fa-restroom { color: var(--color-primary); }
.t2w-v29-fac-inline i.fa-parking { color: #6366F1; }
.t2w-v29-fac-inline i.fa-fire { color: #F97316; }
.t2w-v29-fac-inline i.fa-home { color: #8B5CF6; }
.t2w-v29-fac-inline i.fa-tree { color: #10B981; }

/* Accordion chevron on card header — clickable toggle */
.t2w-v29-card-chevron {
    font-size: 11px; color: #94A3B8; margin-left: auto; padding: 8px 4px 8px 12px;
    flex-shrink: 0; align-self: center; cursor: pointer;
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.t2w-v29-card-chevron:hover { color: #64748B; }
.t2w-v29-card--collapsed .t2w-v29-card-chevron {
    transform: rotate(-90deg);
}
/* Cursor pointer for clickable cards */
.t2w-v29-card-header { cursor: pointer; }

/* Space optimization: compact card body */
.t2w-v29-card-body {
    gap: 10px;
}
.t2w-v29-card-thumb {
    width: 140px;
    height: 100px;
    border-radius: 10px;
}
#t2w-planner-v2 .t2w-v29-card-desc {
    -webkit-line-clamp: 2;
    font-size: 13px;
    line-height: 1.5;
}
/* Space optimization: card padding + title + radius */
.t2w-v29-card {
    padding: 12px 14px;
    border-radius: 12px;
}
.t2w-v29-card-header {
    padding: 0;
    margin-bottom: 8px;
}
.t2w-v29-card-title h3 {
    font-size: 16px;
    font-weight: 700;
    flex: 1 1 0;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* v43.2: Collapsed card — hide badges to give name more space */
.t2w-v29-card--collapsed .t2w-v29-card-title .t2w-v29-badge-mustgo,
.t2w-v29-card--collapsed .t2w-v29-card-title .t2w-v29-fac-inline {
    display: none;
}

/* v42.1: Visited place check indicator */
.t2w-visited-check {
    font-size: 16px;
    color: #D1D5DB;
    cursor: pointer;
    transition: color 0.2s, transform 0.2s;
    margin-right: 4px;
    flex-shrink: 0;
}
.t2w-visited-check:hover {
    color: #9CA3AF;
    transform: scale(1.15);
}
.t2w-visited-check--on {
    color: #10B981;
}
.t2w-visited-check--on:hover {
    color: #059669;
}

/* v42.2: Review language label */
.t2w-pd-review-lang {
    font-size: 10px;
    font-weight: 600;
    color: #6B7280;
    background: #F3F4F6;
    padding: 1px 6px;
    border-radius: 10px;
    margin-left: 4px;
}

/* v42.2: Sidebar compact stats */
.t2w-dash-stats-compact {
    display: flex;
    gap: 4px;
    margin-bottom: 10px;
}
.t2w-dash-stat-c {
    flex: 1;
    background: #F3F4F6;
    border-radius: 8px;
    padding: 6px 8px;
    text-align: center;
}
.t2w-dash-stat-c-val {
    font-size: 15px;
    font-weight: 800;
    color: #181610;
}
.t2w-dash-stat-c-label {
    font-size: 9px;
    color: #9CA3AF;
}

/* v42.2: Detail toggle — v43.1: smooth expand */
.t2w-dash-detail-toggle {
    font-size: 11px;
    color: #9CA3AF;
    cursor: pointer;
    text-align: center;
    padding: 6px;
    border: 1px solid #E5E7EB;
    border-radius: 8px;
    margin-bottom: 8px;
    transition: all 0.2s;
}
.t2w-dash-detail-toggle:hover {
    color: var(--color-primary);
    border-color: var(--color-primary);
}
/* v43.1: Smooth detail expand (replaces display:none toggle) */
.t2w-dash-detail-content {
    overflow: hidden;
    max-height: 0;
    opacity: 0;
    transition: max-height 0.35s ease, opacity 0.25s ease;
}
.t2w-dash-detail-content.t2w-expanded {
    max-height: 900px; /* v43.3: increased — quality gauge now inside */
    opacity: 1;
}
/* v43.3: Quality gauge inside detail — add bottom separator */
.t2w-dash-detail-content > .t2w-dash-quality {
    margin-bottom: 10px;
    border-bottom: 1px solid #E5E7EB;
    padding-bottom: 10px;
    border-radius: 10px 10px 0 0;
}
/* v43.3: Schedule section spacing when before detail toggle */
.t2w-dash-schedule + .t2w-dash-detail-toggle {
    margin-top: 4px;
}

/* ═══ v43.3: Timeline Inline Meal Hints — aligned with cards ═══ */
.t2w-tl-meal-hint {
    margin: 0 0 0 68px; /* aligned with card content */
    padding: 6px 0;
}
.t2w-tl-meal-hint-inner {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    background: #FFFDF7;
    border: 1px solid rgba(255, 183, 0, 0.15);
    border-radius: 10px;
    cursor: default;
}
.t2w-tl-meal-hint-icon {
    font-size: 15px;
    flex-shrink: 0;
}
.t2w-tl-meal-hint-text {
    font-size: 12px;
    color: var(--t2w-text-sec, #6B7280);
    flex: 1;
    min-width: 0;
}
.t2w-tl-meal-hint-text strong {
    color: var(--color-primary);
    font-weight: 700;
}
.t2w-tl-meal-hint-count {
    font-size: 10px;
    color: var(--color-primary);
    font-weight: 600;
    background: rgba(255, 183, 0, 0.1);
    padding: 1px 6px;
    border-radius: 99px;
}
.t2w-tl-meal-hint-thumbs {
    display: flex;
    margin-left: -4px;
    flex-shrink: 0;
}
.t2w-tl-meal-hint-av {
    width: 24px;
    height: 24px;
    border-radius: 50%;
    border: 2px solid #FFFDF7;
    margin-left: -6px;
    object-fit: cover;
}
.t2w-tl-meal-hint-btn {
    font-size: 10px;
    font-weight: 700;
    color: var(--color-primary);
    background: rgba(255, 183, 0, 0.08);
    border: none;
    padding: 4px 10px;
    border-radius: 6px;
    cursor: pointer;
    font-family: inherit;
    white-space: nowrap;
    flex-shrink: 0;
    transition: background 0.15s;
}
.t2w-tl-meal-hint-btn:hover {
    background: rgba(255, 183, 0, 0.18);
}
/* Expanded meal rec in timeline */
.t2w-tl-meal-expanded {
    margin: 4px 0 4px 34px;
    background: #FFFDF7;
    border-radius: 10px;
    border: 1px solid rgba(255, 183, 0, 0.15);
    padding: 10px;
}
.t2w-tl-meal-expanded .t2w-dash-meal-header {
    margin-bottom: 8px;
}
@media (max-width: 768px) {
    .t2w-tl-meal-hint { margin-left: 48px; }
    .t2w-tl-meal-expanded { margin-left: 28px; }
}

/* ═══ v43.4: Crowd Hint Badge (after transport card) ═══ */
.t2w-crowd-hint {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 6px 12px 6px 34px;
    margin: 2px 0;
    background: #FEF3C7;
    color: #92400E;
    font-size: 11px;
    font-weight: 600;
    border-radius: 6px;
    line-height: 1.3;
}
.t2w-crowd-hint .material-symbols-outlined {
    font-size: 14px;
    color: #B45309;
}
.t2w-crowd-hint--high {
    background: #FEF3C7;
    color: #92400E;
}
.t2w-crowd-hint--medium {
    background: #FFF7ED;
    color: #9A3412;
}
@media (max-width: 768px) {
    .t2w-crowd-hint {
        padding-left: 28px;
        font-size: 10px;
    }
}

/* ═══ v43.4: Card Detail CTA Row (자세히 보기 + delete) ═══ */
.t2w-card-detail-row {
    display: flex;
    gap: 8px;
    padding: 8px 12px 4px;
    align-items: center;
}
.t2w-v29-card--collapsed .t2w-card-detail-row { display: none; }

.t2w-card-detail-cta {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 10px 16px;
    background: var(--color-primary);
    color: var(--t2w-dark, #181610);
    border: none;
    border-radius: 10px;
    font-size: 13px;
    font-weight: 700;
    font-family: inherit;
    cursor: pointer;
    transition: all 0.15s ease;
    line-height: 1;
}
.t2w-card-detail-cta:hover {
    background: #E5A400;
    transform: translateY(-1px);
    box-shadow: 0 2px 8px rgba(255, 183, 0, 0.3);
}
.t2w-card-detail-cta:active {
    transform: translateY(0);
}
.t2w-card-detail-cta .material-symbols-outlined {
    font-size: 16px;
}

.t2w-card-detail-delete {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    padding: 0;
    background: #FEF2F2;
    color: #EF4444;
    border: 1px solid #FEE2E2;
    border-radius: 8px;
    cursor: pointer;
    transition: all 0.15s ease;
    flex-shrink: 0;
}
.t2w-card-detail-delete:hover {
    background: #FEE2E2;
    border-color: #FECACA;
    color: #DC2626;
}
.t2w-card-detail-delete .material-symbols-outlined {
    font-size: 16px;
}

@media (max-width: 768px) {
    .t2w-card-detail-cta {
        padding: 9px 12px;
        font-size: 12px;
    }
    .t2w-card-detail-delete {
        width: 36px;
        height: 36px;
    }
}

/* ═══ v3 Prototype: Progress Bar + Departure v3 + Meal Mini Cards ═══ */

/* -- Progress Bar (Day header) -- */
.t2w-tl-progress { display:flex; align-items:center; gap:8px; padding:6px 16px; }
.t2w-tl-progress-label { font-size:11px; font-weight:600; color:#6B7280; flex-shrink:0; }
.t2w-tl-progress-bar { flex:1; height:6px; background:#F3F0E8; border-radius:3px; overflow:hidden; }
.t2w-tl-progress-fill { height:100%; background:var(--color-primary); border-radius:3px; transition:width .5s; }
.t2w-tl-progress-pct { font-size:13px; font-weight:800; color:var(--color-primary); font-family:'Plus Jakarta Sans',sans-serif; flex-shrink:0; }

/* -- Departure Card v3 (compact one-line) -- */
.t2w-departure-v3 {
    display:flex; align-items:center; gap:10px; padding:12px 16px;
    background:#fff; border-radius:12px; box-shadow:0 1px 3px rgba(0,0,0,.04);
    margin-bottom:8px; border:none;
}
.t2w-departure-v3 .t2w-departure-badge,
.t2w-departure-v3 .t2w-departure-body,
.t2w-departure-v3 .t2w-departure-label,
.t2w-departure-v3 .t2w-departure-row { display:contents; }
.t2w-departure-v3-icon { font-size:18px; flex-shrink:0; }
.t2w-departure-v3-label { font-size:13px; font-weight:700; color:var(--color-text-primary, #1d180c); white-space:nowrap; flex-shrink:0; }
.t2w-departure-v3 .t2w-departure-search-wrap { flex:1; min-width:0; position:relative; }
.t2w-departure-v3 .t2w-departure-input {
    width:100%; padding:6px 10px; border:1.5px solid #E5E7EB; border-radius:8px;
    font-size:12px; background:#FAFAFA; outline:none; transition:border-color .2s;
}
.t2w-departure-v3 .t2w-departure-input:focus { border-color:var(--color-primary); box-shadow:0 0 0 2px rgba(255,183,0,.1); }
.t2w-departure-v3 .t2w-departure-search-icon { position:absolute; right:8px; top:50%; transform:translateY(-50%); font-size:11px; color:#9CA3AF; pointer-events:none; }
.t2w-departure-v3-time-badge {
    font-size:11px; font-weight:700; color:var(--color-primary); background:rgba(255,183,0,.1);
    padding:4px 10px; border-radius:99px; white-space:nowrap; flex-shrink:0; cursor:pointer;
}
.t2w-departure-v3 .t2w-departure-time-input {
    width:0; height:0; overflow:hidden; opacity:0; position:absolute; pointer-events:none;
}
/* Show time input on badge click (JS toggles via adjacent sibling or direct) */
.t2w-departure-v3 .t2w-departure-time-input.t2w-time-visible {
    width:auto; height:auto; opacity:1; position:static; pointer-events:auto;
    padding:4px 8px; border:1.5px solid #E5E7EB; border-radius:8px; font-size:12px;
}

/* -- Meal Mini Cards (v3 prototype) -- */
.t2w-tl-meal-hint-header { font-size:12px; color:var(--t2w-text-sec, #6B7280); padding:0 4px; }
.t2w-tl-meal-hint-header strong { color:var(--color-primary); font-weight:700; }
.t2w-tl-meal-mini-cards { display:flex; gap:6px; margin-top:6px; overflow-x:auto; -webkit-overflow-scrolling:touch; padding:0 4px 4px; }
.t2w-tl-meal-mini {
    display:flex; align-items:center; gap:6px; padding:6px 10px;
    background:#fff; border-radius:8px; border:1px solid #E5E7EB;
    cursor:pointer; transition:all .15s; flex-shrink:0;
}
.t2w-tl-meal-mini:hover { border-color:var(--color-primary); }
.t2w-tl-meal-mini-thumb { width:32px; height:32px; border-radius:6px; object-fit:cover; flex-shrink:0; }
.t2w-tl-meal-mini-thumb--empty {
    display:flex; align-items:center; justify-content:center;
    background:#F3F0E8; font-size:14px;
}
.t2w-tl-meal-mini-info { display:flex; flex-direction:column; min-width:0; }
.t2w-tl-meal-mini-name { font-size:11px; font-weight:600; color:#181610; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:100px; }
.t2w-tl-meal-mini-meta { font-size:9px; color:#9CA3AF; }
.t2w-tl-meal-add-btn {
    margin-top:6px; font-size:11px; font-weight:700; color:var(--color-primary);
    background:rgba(255,183,0,.08); border:none; padding:6px 14px;
    border-radius:8px; cursor:pointer; font-family:inherit; transition:background .15s;
}
.t2w-tl-meal-add-btn:hover { background:rgba(255,183,0,.18); }

@media (max-width: 768px) {
    .t2w-tl-progress { padding:4px 12px; }
    .t2w-tl-progress-label { font-size:10px; }
    .t2w-tl-progress-pct { font-size:12px; }
    .t2w-departure-v3 { padding:10px 12px; gap:8px; }
    .t2w-departure-v3-label { font-size:12px; }
    .t2w-tl-meal-mini-name { max-width:70px; }
}

/* ═══ v43.3: Compact card spacing (v3 prototype) ═══ */
.t2w-v29-item { margin-bottom: 8px; }
.t2w-v29-item:last-child { margin-bottom: 0; }

/* ═══ v43.3: Numbered Circle Badge ═══ */
.t2w-v29-circle--num {
    font-size: 10px;
    font-weight: 800;
    font-family: 'Plus Jakarta Sans', sans-serif;
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
}
.t2w-v29-circle--num i { display: none; }

/* ═══ v43.3: Time Range in Card Header ═══ */
.t2w-v29-time-range {
    display: flex;
    align-items: center;
    gap: 3px;
    font-size: 11px;
    font-weight: 600;
    color: var(--color-primary);
    margin-bottom: 1px;
}
.t2w-v29-time-range .material-symbols-outlined {
    font-size: 13px;
}
.t2w-v29-card--collapsed .t2w-v29-time-range { display: none; }

/* ═══ v43.3: Timeline Filter Chips ═══ */
.t2w-tl-filters {
    display: flex;
    gap: 6px;
    padding: 8px 16px;
    overflow-x: auto;
    scrollbar-width: none;
    background: #fff;
    border-bottom: 1px solid #E5E7EB;
}
.t2w-tl-filters::-webkit-scrollbar { display: none; }
.t2w-tl-filter-chip {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 6px 14px;
    border-radius: 99px;
    border: 1px solid #E5E7EB;
    background: #fff;
    font-size: 12px;
    font-weight: 600;
    color: #6B7280;
    cursor: pointer;
    white-space: nowrap;
    font-family: inherit;
    transition: all .15s;
}
.t2w-tl-filter-chip .material-symbols-outlined { font-size: 15px; }
.t2w-tl-filter-chip:hover { border-color: var(--color-primary); color: #E5A400; }
.t2w-tl-filter-chip--on {
    background: #181610;
    color: #fff;
    border-color: #181610;
}
.t2w-tl-filter-chip--on:hover { opacity: 0.85; color: #fff; }
@media (max-width: 768px) {
    .t2w-tl-filters { padding: 6px 12px; gap: 4px; }
    .t2w-tl-filter-chip { padding: 5px 10px; font-size: 11px; }
}

/* ═══ v43.3: Card Action Bar (Day move + Delete) ═══ */
.t2w-card-actions {
    display: flex;
    gap: 8px;
    padding: 8px 12px 10px;
    border-top: 1px solid #f3f4f6;
    align-items: center;
}
.t2w-v29-card--collapsed .t2w-card-actions { display: none; }

/* Move button */
.t2w-card-action-move { position: relative; flex: 1; }
.t2w-card-action-move-btn {
    width: 100%; padding: 7px 10px; border-radius: 8px; border: 1px solid #E5E7EB;
    background: #fff; font-size: 11px; font-weight: 600; color: #6B7280;
    cursor: pointer; font-family: inherit; display: flex; align-items: center; gap: 5px;
    transition: all .15s;
}
.t2w-card-action-move-btn:hover { border-color: var(--color-primary); color: #E5A400; background: rgba(255,183,0,.06); }
.t2w-card-action-move-btn .material-symbols-outlined { font-size: 15px; }
.t2w-card-action-arrow { margin-left: auto; font-size: 13px; transition: transform .2s; }
.t2w-card-action-move.t2w-open .t2w-card-action-arrow { transform: rotate(180deg); }
.t2w-card-action-move.t2w-open .t2w-card-action-move-btn { border-color: var(--color-primary); color: #E5A400; background: rgba(255,183,0,.06); }

/* Move dropdown */
.t2w-card-move-dropdown {
    position: absolute; bottom: calc(100% + 6px); left: 0; right: 0;
    background: #fff; border-radius: 10px; box-shadow: 0 8px 32px rgba(0,0,0,.12);
    border: 1px solid #E5E7EB; overflow: hidden;
    opacity: 0; visibility: hidden; transform: translateY(8px);
    transition: all .2s cubic-bezier(.16,1,.3,1); z-index: 20;
}
.t2w-card-action-move.t2w-open .t2w-card-move-dropdown { opacity: 1; visibility: visible; transform: translateY(0); }
.t2w-card-move-title {
    font-size: 9px; font-weight: 700; color: #9CA3AF; padding: 8px 12px 4px;
    letter-spacing: .05em; text-transform: uppercase;
}
.t2w-card-move-opt {
    display: flex; align-items: center; gap: 8px; padding: 8px 12px;
    font-size: 12px; font-weight: 600; color: #181610; cursor: pointer;
    transition: background .1s; border: none; background: none; width: 100%; text-align: left;
    font-family: inherit;
}
.t2w-card-move-opt:hover { background: rgba(255,183,0,.06); }
.t2w-card-move-opt--current { color: #9CA3AF; cursor: default; }
.t2w-card-move-opt--current:hover { background: none; }
.t2w-card-move-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
.t2w-card-move-current {
    font-size: 9px; background: #f3f4f6; padding: 1px 6px; border-radius: 3px;
    margin-left: auto; font-weight: 600; color: #9CA3AF;
}

/* Delete button */
.t2w-card-action-delete {
    padding: 7px 12px; border-radius: 8px; border: 1px solid #FEE2E2;
    background: #FEF2F2; font-size: 11px; font-weight: 600; color: #EF4444;
    cursor: pointer; font-family: inherit; display: flex; align-items: center; gap: 4px;
    transition: all .15s; flex-shrink: 0;
}
.t2w-card-action-delete:hover { background: #FEE2E2; border-color: #FECACA; }
.t2w-card-action-delete .material-symbols-outlined { font-size: 15px; }
.t2w-card-action-delete--full { flex: 1; justify-content: center; }

/* Delete animation */
#t2w-planner-v2 .t2w-v29-card--deleting {
    opacity: 0; transform: translateX(40px);
    transition: all .35s cubic-bezier(.16,1,.3,1);
}

@media (max-width: 768px) {
    .t2w-card-actions { padding: 6px 10px 8px; gap: 6px; }
    .t2w-card-action-move-btn { font-size: 10px; padding: 6px 8px; }
    .t2w-card-action-delete { font-size: 10px; padding: 6px 10px; }
    .t2w-card-move-dropdown { bottom: auto; top: calc(100% + 4px); }
}

/* ═══ v43.1: Stage Transition Animations ═══ */
@keyframes t2w-stage-fadeIn {
    from { opacity: 0; transform: translateY(12px); }
    to   { opacity: 1; transform: translateY(0); }
}
@keyframes t2w-stage-slideInRight {
    from { opacity: 0; transform: translateX(30px); }
    to   { opacity: 1; transform: translateX(0); }
}

/* Timeline day switch animation */
.t2w-tl-body { transition: opacity 0.2s ease; }
.t2w-tl-body.t2w-day-switching {
    opacity: 0;
}

/* Card list entry animation */
.t2w-card-list { animation: t2w-stage-fadeIn 0.3s ease both; }

/* Pick Mode entry */
.t2w-pick-mode.active {
    display: flex;
    animation: t2w-stage-slideInRight 0.35s ease both;
}

/* Sidebar render animation */
.t2w-sb-dash { animation: t2w-stage-fadeIn 0.25s ease both; }

/* Timeline floating bar slide-up */
.t2w-tl-float-bar {
    animation: t2w-stage-fadeIn 0.3s ease both;
}

/* v42.2: Login hint dismiss */
.t2w-hint-dismiss {
    float: right;
    cursor: pointer;
    font-size: 14px;
    font-weight: 700;
    opacity: 0.5;
    margin-left: 8px;
}
.t2w-hint-dismiss:hover { opacity: 1; }

/* Hide old 4-grid stats (replaced by compact row) */
.t2w-dash-stats { display: none; }

/* ═══════════════════════════════════
   v42.2: Smart Onboarding — ask missing info only
   ═══════════════════════════════════ */
.t2w-smart-onboarding {
    max-width: 480px;
    margin: 20px auto;
    padding: 0 16px;
}

/* Query echo */
.t2w-sob-query {
    display: flex; align-items: center; gap: 8px;
    padding: 12px 16px; background: #F9FAFB; border-radius: 12px;
    border: 1px solid #E5E7EB; margin-bottom: 18px;
    font-size: 15px; font-weight: 600; color: #111827;
}
.t2w-sob-query .material-symbols-outlined {
    font-size: 20px; color: var(--color-primary); flex-shrink: 0;
}

/* Questions */
.t2w-sob-question { margin-bottom: 14px; }
.t2w-sob-q-label { font-size: 13px; font-weight: 600; color: #374151; margin-bottom: 6px; }
.t2w-sob-chips { display: flex; gap: 5px; flex-wrap: wrap; }
.t2w-sob-q-chip {
    padding: 8px 16px; border-radius: 20px; font-size: 13px; font-weight: 600;
    border: 1.5px solid #E5E7EB; background: #fff; cursor: pointer;
    transition: all 0.15s; color: #6B7280; font-family: inherit;
}
.t2w-sob-q-chip:hover { border-color: var(--color-primary); color: #181610; }
.t2w-sob-q-chip--active { background: #181610; color: #fff; border-color: #181610; }

.t2w-sob-date-row { display: flex; gap: 8px; }
.t2w-sob-input {
    flex: 1; padding: 10px 12px; border: 1.5px solid #E5E7EB; border-radius: 10px;
    font-size: 14px; font-family: inherit; background: #fff;
}
.t2w-sob-input:focus { border-color: var(--color-primary); outline: none; }
.t2w-sob-select {
    width: 110px; padding: 10px 12px; border: 1.5px solid #E5E7EB; border-radius: 10px;
    font-size: 14px; font-family: inherit; background: #fff;
    appearance: none; -webkit-appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 4.5L6 8L9.5 4.5' stroke='%239CA3AF' stroke-width='1.5'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 10px center;
}

/* Ready message */
.t2w-sob-ready {
    text-align: center; padding: 14px; color: #059669;
    font-size: 14px; font-weight: 600;
}

/* CTA */
.t2w-sob-cta {
    width: 100%; padding: 14px; border-radius: 12px; font-size: 15px; font-weight: 700;
    border: none; cursor: pointer; font-family: inherit; text-align: center;
    background: var(--color-primary); color: #000; display: flex; align-items: center; justify-content: center; gap: 6px;
    transition: all 0.2s; margin-top: 8px;
}
.t2w-sob-cta:hover { background: #E5A400; }

/* ═══════════════════════════════════
   v42.2: UX Improvements (#1-#6)
   ═══════════════════════════════════ */

/* #1: Collapsed card thumbnail */
.t2w-v29-card-thumb-mini {
    width: 40px;
    height: 40px;
    border-radius: 8px;
    background-size: cover;
    background-position: center;
    flex-shrink: 0;
    margin-right: 4px;
}
/* Hide mini thumb when card is expanded */
.t2w-v29-card:not(.t2w-v29-card--collapsed) .t2w-v29-card-thumb-mini {
    display: none;
}

/* #2: Compact 1-line day header */
.t2w-day-title--compact {
    font-size: 18px;
    font-weight: 800;
    letter-spacing: -0.02em;
}
.t2w-day-subtitle--compact {
    font-size: 12px;
    color: #9CA3AF;
    margin-left: 8px;
}
.t2w-tl-controls--inline {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    margin-left: auto;
    float: right;
}
.t2w-tl-controls--inline .t2w-tl-ctrl {
    width: 28px;
    height: 28px;
    font-size: 11px;
}
#t2w-planner-v2 .t2w-tl-controls--inline .t2w-tl-day-count {
    font-size: 13px;
    padding: 0 4px;
}
/* Hide old collapse-all button in inline mode */
.t2w-tl-controls--inline .t2w-tl-collapse-all {
    display: none;
}

/* #4: Add zone button tone-down */
#t2w-planner-v2 .t2w-tl-add-zone-inline,
#t2w-planner-v2 .t2w-card-add-zone {
    background: transparent;
    color: #9CA3AF;
    border: 1.5px dashed #D1D5DB;
    font-weight: 600;
    transition: all 0.2s;
}
#t2w-planner-v2 .t2w-tl-add-zone-inline:hover,
#t2w-planner-v2 .t2w-card-add-zone:hover {
    border-color: var(--color-primary);
    color: var(--color-primary);
    background: transparent;
}

/* #5: Mobile map height reduction */
@media (max-width: 768px) {
    .t2w-map-container,
    .t2w-planner-map {
        max-height: 35vh;
    }
}

/* v42.2: Meal auto-recommend card */
.t2w-dash-meal-rec {
    background: #FFFBEB;
    border: 1px solid #FDE68A;
    border-radius: 12px;
    padding: 12px;
    margin-top: 8px;
}
.t2w-dash-meal-header {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    font-weight: 600;
    color: #92400E;
    margin-bottom: 8px;
}
.t2w-dash-meal-icon { font-size: 16px; }
.t2w-dash-meal-empty {
    font-size: 12px;
    color: #9CA3AF;
    text-align: center;
    padding: 8px;
}

/* Cuisine chips */
.t2w-meal-cuisine-chips {
    display: flex;
    gap: 4px;
    flex-wrap: wrap;
    margin-bottom: 8px;
}
.t2w-meal-chip {
    padding: 3px 10px;
    border-radius: 20px;
    border: 1px solid #E5E7EB;
    background: #fff;
    font-size: 11px;
    font-weight: 600;
    font-family: inherit;
    color: #6B7280;
    cursor: pointer;
    transition: all 0.15s;
    min-height: 0;
}
.t2w-meal-chip:hover { border-color: var(--color-primary); color: #92400E; }
.t2w-meal-chip--active {
    background: var(--color-primary);
    color: #000;
    border-color: var(--color-primary);
}

/* Recommendation card */
.t2w-meal-reco-card {
    display: flex;
    gap: 10px;
    align-items: center;
}
.t2w-meal-reco-thumb {
    width: 56px;
    height: 56px;
    border-radius: 10px;
    background-size: cover;
    background-position: center;
    flex-shrink: 0;
}
.t2w-meal-reco-info {
    flex: 1;
    min-width: 0;
}
.t2w-meal-reco-name {
    font-size: 13px;
    font-weight: 700;
    color: #181610;
    line-height: 1.3;
}
.t2w-meal-reco-cuisine {
    font-size: 11px;
    color: #92400E;
    font-weight: 600;
}
.t2w-meal-reco-sig {
    font-size: 11px;
    color: #6B7280;
}
.t2w-meal-reco-rating {
    font-size: 11px;
    color: #F59E0B;
    font-weight: 600;
}
.t2w-meal-reco-actions {
    display: flex;
    flex-direction: column;
    gap: 4px;
    flex-shrink: 0;
}
.t2w-meal-reco-btn {
    padding: 4px 10px;
    border-radius: 8px;
    border: none;
    font-size: 11px;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
    min-height: 0;
    transition: all 0.15s;
}
.t2w-meal-reco-btn--add {
    background: var(--color-primary);
    color: #000;
}
.t2w-meal-reco-btn--add:hover { background: #E5A400; }
.t2w-meal-reco-btn--next {
    background: #F3F4F6;
    color: #374151;
}
.t2w-meal-reco-btn--next:hover { background: #E5E7EB; }
.t2w-meal-reco-btn--skip {
    background: transparent;
    color: #9CA3AF;
    font-size: 10px;
}
.t2w-meal-reco-btn--skip:hover { color: #6B7280; }
.t2w-v29-name-check {
    display: inline-flex;
    align-items: center;
}
/* Compact vibe tags */
.t2w-v29-card-vibes {
    gap: 4px;
    margin-top: 4px;
}
.t2w-v29-vibe {
    font-size: 11px;
    padding: 2px 6px;
}
/* Compact rating row */
.t2w-v29-card-rating {
    margin-top: 2px;
    font-size: 12px;
}
.t2w-v29-card-rating i {
    font-size: 10px;
}
.t2w-v29-card-cat {
    font-size: 12px;
}

/* Collapsed card: compact header row */
.t2w-v29-card--collapsed {
    padding: 8px 14px;
}
.t2w-v29-card--collapsed .t2w-v29-card-header {
    margin-bottom: 0;
}
/* Done + collapsed: checkmark icon */
.t2w-v29-item--done .t2w-v29-card--collapsed .t2w-v29-card-title h3::before {
    content: '\f00c'; font-family: 'Font Awesome 5 Free'; font-weight: 900;
    font-size: 10px; color: #10B981; margin-right: 6px;
}

/* Mobile: stacked body on expand */
@media (max-width: 768px) {
    .t2w-v29-card-thumb {
        width: 100%;
        height: 120px;
    }
    .t2w-v29-card-body {
        flex-direction: column;
    }
}

/* ═══ v7: Grip A (Ribbed) + Toggle C (Labeled Pill) + Duration Compact ═══ */

/* ── v7 Card header = flex row ── */
#t2w-planner-v2 .t2w-v29-card-header {
    display: flex;
    align-items: stretch;
    gap: 0;
    cursor: default;
}

/* ── v7 Grip A: Ribbed Texture + "이동" label ── */
.t2w-v7-grip {
    width: 30px;
    min-height: 42px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    cursor: grab;
    flex-shrink: 0;
    border-right: 1px solid rgba(0,0,0,0.04);
    position: relative;
    background: repeating-linear-gradient(
        0deg,
        transparent, transparent 3px,
        rgba(0,0,0,0.03) 3px, rgba(0,0,0,0.03) 4px
    );
    border-radius: 12px 0 0 12px;
    transition: all 0.2s;
}
.t2w-v7-grip::before {
    content: '';
    position: absolute;
    left: 0; top: 0; bottom: 0;
    width: 3px;
    background: #E5E7EB;
    border-radius: 3px 0 0 3px;
    transition: background 0.2s;
}
.t2w-v7-grip:hover::before { background: var(--color-primary); }
.t2w-v7-grip:hover {
    background: repeating-linear-gradient(
        0deg,
        rgba(255,183,0,0.02), rgba(255,183,0,0.02) 3px,
        rgba(255,183,0,0.06) 3px, rgba(255,183,0,0.06) 4px
    );
}
.t2w-v7-grip:active { cursor: grabbing; }
.t2w-v7-grip-dots {
    display: grid;
    grid-template-columns: repeat(2, 3px);
    gap: 2px;
}
.t2w-v7-grip-dots span {
    width: 3px; height: 3px;
    border-radius: 50%;
    background: #C4C4C4;
    transition: background 0.2s;
}
.t2w-v7-grip:hover .t2w-v7-grip-dots span { background: var(--color-primary); }
.t2w-v7-grip-label {
    font-size: 7px;
    color: #C4C4C4;
    font-weight: 600;
    letter-spacing: 0.3px;
    transition: color 0.2s;
    margin-top: 1px;
}
.t2w-v7-grip:hover .t2w-v7-grip-label { color: var(--color-primary); }

/* MUST card — grip bar gold */
.t2w-v29-card--must .t2w-v7-grip::before { background: #F59E0B; }

/* ── v7 Content zone ── */
.t2w-v7-content {
    flex: 1;
    min-width: 0;
    padding: 0;
}

/* ── v7 Duration pill (compact micro) ── */
.t2w-v7-dur {
    display: inline-flex;
    align-items: center;
    gap: 0;
    background: #F9FAFB;
    border-radius: 6px;
    padding: 1px;
    flex-shrink: 0;
    border: 1px solid #EBEBEB;
    margin: auto 0;
    transition: border-color 0.2s;
    height: 28px;
}
.t2w-v7-dur:hover { border-color: #D1D5DB; }
.t2w-v7-dur-btn {
    width: 20px;
    max-width: 20px;
    min-width: 20px;
    height: 24px;
    border: none;
    background: transparent;
    color: #BFBFBF;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 4px;
    transition: all 0.15s;
    padding: 0;
    line-height: 1;
    box-shadow: none;
    margin: 0;
    flex-shrink: 0;
}
.t2w-v7-dur-btn:hover { background: var(--color-primary); color: #fff; }
.t2w-v7-dur-btn:active { transform: scale(0.9); }
.t2w-v7-dur-display {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 0 2px;
    min-width: 0;
}
.t2w-v7-dur-time {
    display: block;
    font-size: 11px;
    font-weight: 700;
    color: #374151;
    line-height: 1.1;
    white-space: nowrap;
}
.t2w-v7-dur-range {
    display: block;
    font-size: 7px;
    color: #B0B0B0;
    line-height: 1.1;
    letter-spacing: -0.2px;
    white-space: nowrap;
}

/* ── v7 Toggle C: Labeled Pill ── */
.t2w-v7-toggle {
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    flex-shrink: 0;
    margin: auto 4px auto 4px;
    transition: all 0.2s;
}
.t2w-v7-toggle > i,
.t2w-v7-toggle-text {
    transition: all 0.25s ease;
}
.t2w-v7-toggle > i {
    font-size: 8px;
    margin-right: 3px;
}
.t2w-v7-toggle-text {
    font-size: 9px;
    font-weight: 600;
    white-space: nowrap;
}
/* Collapsed state (gray) */
.t2w-v7-toggle--collapsed {
    padding: 4px 8px;
    background: #F3F4F6;
    border: 1px solid #E5E7EB;
    border-radius: 8px;
}
.t2w-v7-toggle--collapsed > i { color: #9CA3AF; transform: rotate(-90deg); }
.t2w-v7-toggle--collapsed .t2w-v7-toggle-text { color: #9CA3AF; }
.t2w-v7-toggle--collapsed:hover {
    background: #EFF6FF;
    border-color: #93C5FD;
}
.t2w-v7-toggle--collapsed:hover > i,
.t2w-v7-toggle--collapsed:hover .t2w-v7-toggle-text { color: var(--color-primary); }

/* Expanded state (blue) */
.t2w-v7-toggle:not(.t2w-v7-toggle--collapsed) {
    padding: 4px 8px;
    background: #EFF6FF;
    border: 1px solid #BFDBFE;
    border-radius: 8px;
}
.t2w-v7-toggle:not(.t2w-v7-toggle--collapsed) > i { color: var(--color-primary); transform: rotate(0deg); }
.t2w-v7-toggle:not(.t2w-v7-toggle--collapsed) .t2w-v7-toggle-text { color: var(--color-primary); }
.t2w-v7-toggle:not(.t2w-v7-toggle--collapsed):hover {
    background: #DBEAFE;
    border-color: #93C5FD;
}

/* ── v7: Hide old elements ── */
.t2w-v29-card-chevron { display: none; }
.t2w-v29-card-hover-actions { display: none; }
.t2w-v29-card-right { display: none; }


/* ══════════════════════════════════════════════════════════════════
   W1.2 (2026-04-19): Smart Onboarding Step 2 — optional fine-tuning
   ══════════════════════════════════════════════════════════════════ */
.t2w-sob-step2 {
    margin-top: 16px;
    padding: 14px 16px;
    border: 1px dashed var(--t2w-border-light, #e5e7eb);
    border-radius: 12px;
    background: var(--t2w-bg-subtle, #fafafa);
}
.t2w-sob-step2-head {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    font-weight: 600;
    color: var(--t2w-text-muted, #6b7280);
    margin-bottom: 10px;
}
.t2w-sob-step2-head .material-symbols-outlined {
    font-size: 16px;
}
.t2w-sob-step2 .t2w-sob-question {
    margin-top: 10px;
}
.t2w-sob-step2 .t2w-sob-question:first-of-type {
    margin-top: 0;
}
.t2w-sob-step2 .t2w-sob-q-label {
    font-size: 13px;
    margin-bottom: 6px;
    color: var(--t2w-text, #374151);
}
.t2w-sob-step2 .t2w-sob-q-chip {
    font-size: 13px;
    padding: 5px 10px;
}

/* ═══════════════════════════════════════════════════════════════════
 * Canvas Mode (Wave 2.3, 2026-04-19)
 * Opt-in UX via ?canvas=1. Timeline 70% + Sidebar 30%.
 * Tokens: var(--t2w-*). Responsive breakpoints 900/600 per responsive-design.md.
 * ═══════════════════════════════════════════════════════════════════ */

body.t2w-canvas-active { overflow: hidden; }
body.t2w-canvas-active .t2w-v29-planner-header,
body.t2w-canvas-active #t2w-calendar,
body.t2w-canvas-active #t2w-weather,
body.t2w-canvas-active #t2w-preset-overlay,
body.t2w-canvas-active #t2w-pick-mode,
body.t2w-canvas-active .t2w-v5-main,
body.t2w-canvas-active #t2w-cost-bar,
body.t2w-canvas-active .t2w-pick-mini-cart,
body.t2w-canvas-active .t2w-pick-detail-overlay,
body.t2w-canvas-active .t2w-pick-map-toggle { display: none; }

.t2w-canvas {
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    z-index: 9999;
    background: var(--t2w-bg, #f8fafc);
    display: flex;
    flex-direction: column;
}
/* Hide site chrome (fixed elements above z-index 999) when Canvas is active */
body.t2w-canvas-active #site-header,
body.t2w-canvas-active .t2w-app-header,
body.t2w-canvas-active #t2w-bottom-nav,
body.t2w-canvas-active .t2w-bottom-nav,
body.t2w-canvas-active #wpadminbar,
body.t2w-canvas-active .hp-header,
body.t2w-canvas-active .hp-menu,
body.t2w-canvas-active .t2w-mob-overview,
body.t2w-canvas-active .t2w-day-nav,
body.t2w-canvas-active .t2w-ai-float,
body.t2w-canvas-active .t2w-panel-backdrop,
body.t2w-canvas-active .t2w-v29-planner-header { display: none; }

.t2w-canvas__bar {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 12px 20px;
    background: #fff;
    border-bottom: 1px solid var(--t2w-border, #e5e7eb);
    box-shadow: 0 1px 2px rgba(0,0,0,0.03);
}
.t2w-canvas__back {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: none;
    border: none;
    color: var(--t2w-text, #374151);
    cursor: pointer;
    font-size: 14px;
    padding: 6px 10px;
    border-radius: 6px;
    min-height: 44px;
}
.t2w-canvas__back:hover { background: var(--t2w-bg-subtle, #f3f4f6); }
.t2w-canvas__back .material-symbols-outlined { font-size: 20px; }

.t2w-canvas__meta {
    flex: 1;
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 14px;
    color: var(--t2w-text, #374151);
    overflow: hidden;
}
.t2w-canvas__meta-region { font-weight: 600; }
.t2w-canvas__meta-dot { color: var(--t2w-text-muted, #9ca3af); }
.t2w-canvas__meta-days { color: var(--t2w-text-muted, #6b7280); }
.t2w-canvas__meta-coverage {
    margin-left: auto;
    font-size: 12px;
    padding: 3px 8px;
    border-radius: 100px;
    font-weight: 500;
    cursor: help;
}
.t2w-canvas__cov--high { background: #d1fae5; color: #065f46; }
.t2w-canvas__cov--mid  { background: #fef3c7; color: #92400e; }
.t2w-canvas__cov--low  { background: #fee2e2; color: #991b1b; }

.t2w-canvas__actions { display: flex; gap: 8px; }
.t2w-canvas__btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 8px 14px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
    border: none;
    min-height: 44px;
    transition: all 0.15s ease;
}
.t2w-canvas__btn .material-symbols-outlined { font-size: 18px; }
.t2w-canvas__btn--ghost {
    background: transparent;
    color: var(--t2w-text, #374151);
    border: 1px solid var(--t2w-border, #e5e7eb);
}
.t2w-canvas__btn--ghost:hover { background: var(--t2w-bg-subtle, #f3f4f6); }
.t2w-canvas__btn--primary {
    background: var(--t2w-primary, #1e40af);
    color: #fff;
}
.t2w-canvas__btn--primary:hover { background: var(--t2w-primary-dark, #1e3a8a); }

.t2w-canvas__grid {
    flex: 1;
    display: grid;
    grid-template-columns: 7fr 3fr;
    min-height: 0;
    overflow: hidden;
}

.t2w-canvas__timeline {
    position: relative;
    overflow-y: auto;
    padding: 24px 32px;
    background: var(--t2w-bg, #f8fafc);
}
.t2w-canvas__tl-loading,
.t2w-canvas__tl-empty,
.t2w-canvas__error {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 80px 20px;
    color: var(--t2w-text-muted, #6b7280);
    text-align: center;
}
.t2w-canvas__tl-loading .material-symbols-outlined,
.t2w-canvas__tl-empty .material-symbols-outlined,
.t2w-canvas__error .material-symbols-outlined {
    font-size: 48px;
    color: var(--t2w-primary, #1e40af);
    opacity: 0.5;
}
.t2w-canvas__error { color: var(--t2w-danger, #dc2626); }
.t2w-canvas__err-list {
    text-align: left;
    font-size: 13px;
    color: var(--t2w-text-muted, #6b7280);
    max-width: 400px;
}

.t2w-canvas__tl-summary {
    font-size: 16px;
    font-weight: 600;
    color: var(--t2w-text, #111827);
    margin-bottom: 8px;
}
.t2w-canvas__tl-echo {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    padding: 12px 16px;
    background: linear-gradient(135deg, #eff6ff, #f3e8ff);
    border-radius: 12px;
    font-size: 13px;
    color: var(--t2w-primary, #1e40af);
    margin-bottom: 24px;
    border-left: 3px solid var(--t2w-primary, #1e40af);
}
.t2w-canvas__tl-echo .material-symbols-outlined {
    font-size: 18px;
    flex: 0 0 auto;
    margin-top: 1px;
}

.t2w-canvas__day {
    background: #fff;
    border-radius: 16px;
    padding: 20px 24px;
    margin-bottom: 20px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.04);
    border: 1px solid var(--t2w-border-subtle, #f3f4f6);
}
.t2w-canvas__day-head {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 16px;
    padding-bottom: 12px;
    border-bottom: 1px solid var(--t2w-border-subtle, #f3f4f6);
}
.t2w-canvas__day-num {
    background: var(--t2w-primary, #1e40af);
    color: #fff;
    font-size: 12px;
    font-weight: 700;
    padding: 4px 10px;
    border-radius: 100px;
    letter-spacing: 0.02em;
}
.t2w-canvas__day-title {
    font-size: 15px;
    font-weight: 600;
    color: var(--t2w-text, #111827);
}
.t2w-canvas__day-zones { display: flex; flex-direction: column; gap: 20px; }

.t2w-canvas__zone {
    padding-left: 16px;
    border-left: 2px solid var(--t2w-border, #e5e7eb);
}
.t2w-canvas__zone-head {
    display: flex;
    align-items: center;
    gap: 4px;
    margin-bottom: 10px;
    font-size: 13px;
    color: var(--t2w-text-muted, #6b7280);
    font-weight: 500;
}
.t2w-canvas__zone-head .material-symbols-outlined { font-size: 16px; }
.t2w-canvas__zone-name { color: var(--t2w-text, #374151); }
.t2w-canvas__zone-places { display: flex; flex-direction: column; gap: 10px; }
.t2w-canvas__zone-bridge {
    margin-top: 10px;
    padding: 6px 12px;
    font-size: 12px;
    color: var(--t2w-text-muted, #6b7280);
    background: var(--t2w-bg-subtle, #f9fafb);
    border-radius: 8px;
    font-style: italic;
}

/* B-Plus (2026-04-19): Day 하단 통합 투어 카드 + sidebar drawer.
 * Context-First Product Exposure — zone 카드 사이 개입 금지, Day 결정점에만 노출.
 * Bar chart 로 coverage 가치를 즉각 시각화. */
.t2w-canvas__day-tours {
    margin-top: 16px;
    padding: 14px 16px 16px;
    background: linear-gradient(135deg, var(--t2w-surface, #ffffff) 0%, var(--t2w-bg-subtle, #fffaf0) 100%);
    border: 1px solid var(--t2w-border-subtle, #e5e7eb);
    border-left: 3px solid var(--t2w-primary, #d97706);
    border-radius: 12px;
}
.t2w-canvas__day-tours-head {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 10px;
    font-size: 13px;
    font-weight: 600;
    color: var(--t2w-text, #374151);
}
.t2w-canvas__day-tours-head .material-symbols-outlined {
    font-size: 18px;
    color: var(--t2w-primary, #d97706);
}
.t2w-canvas__day-tours-list {
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.t2w-canvas__day-tour {
    display: grid;
    grid-template-columns: 1fr auto auto;
    gap: 12px;
    align-items: center;
    padding: 12px 14px;
    min-height: 44px;
    background: var(--t2w-surface, #ffffff);
    border: 1px solid var(--t2w-border-subtle, #e5e7eb);
    border-radius: 10px;
    cursor: pointer;
    transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
}
.t2w-canvas__day-tour:hover,
.t2w-canvas__day-tour:focus {
    border-color: var(--t2w-primary, #d97706);
    box-shadow: 0 4px 14px rgba(217, 119, 6, 0.08);
    transform: translateY(-1px);
    outline: none;
}
.t2w-canvas__day-tour-main {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.t2w-canvas__day-tour-name {
    font-size: 14px;
    font-weight: 600;
    color: var(--t2w-text, #111827);
    line-height: 1.35;
}
.t2w-canvas__day-tour-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 10px;
    font-size: 12px;
    color: var(--t2w-text-muted, #6b7280);
}
.t2w-canvas__day-tour-rating {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    color: var(--t2w-text, #374151);
}
.t2w-canvas__day-tour-rating .material-symbols-outlined {
    font-size: 14px;
    color: var(--t2w-warning, #f59e0b);
}
.t2w-canvas__day-tour-reviews {
    color: var(--t2w-text-muted, #9ca3af);
    font-weight: 400;
}
.t2w-canvas__day-tour-coverage {
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.t2w-canvas__day-tour-bar {
    height: 6px;
    background: var(--t2w-border-subtle, #e5e7eb);
    border-radius: 3px;
    overflow: hidden;
}
.t2w-canvas__day-tour-bar-fill {
    display: block;
    height: 100%;
    background: linear-gradient(90deg, var(--t2w-primary, #d97706) 0%, var(--t2w-warning, #f59e0b) 100%);
    border-radius: 3px;
    transition: width 0.3s ease;
}
.t2w-canvas__day-tour-coverage-label {
    font-size: 11px;
    color: var(--t2w-text-muted, #6b7280);
}
.t2w-canvas__day-tour-coverage-label strong {
    color: var(--t2w-primary, #d97706);
    font-weight: 700;
}
.t2w-canvas__day-tour-price {
    font-size: 16px;
    font-weight: 700;
    color: var(--t2w-text, #111827);
    white-space: nowrap;
}
.t2w-canvas__day-tour-cta {
    color: var(--t2w-text-muted, #9ca3af);
}
.t2w-canvas__day-tour-cta .material-symbols-outlined {
    font-size: 22px;
}
.t2w-canvas__day-tour:hover .t2w-canvas__day-tour-cta {
    color: var(--t2w-primary, #d97706);
}

@media (max-width: 1024px) {
    .t2w-canvas__day-tour-name { font-size: 13px; }
    .t2w-canvas__day-tour-price { font-size: 15px; }
}
@media (max-width: 768px) {
    .t2w-canvas__day-tours {
        padding: 12px;
        margin-top: 14px;
    }
    .t2w-canvas__day-tour {
        grid-template-columns: 1fr auto;
        gap: 10px;
        padding: 10px 12px;
    }
    .t2w-canvas__day-tour-cta { display: none; }
    .t2w-canvas__day-tour-name { font-size: 13px; }
    .t2w-canvas__day-tour-price { font-size: 14px; }
    .t2w-canvas__day-tours-head { font-size: 12px; }
}

/* Sidebar drawer — tour detail (B-Plus click target) */
.t2w-canvas__drawer {
    display: flex;
    flex-direction: column;
    max-height: 100%;
}
.t2w-canvas__drawer-head {
    padding: 10px 12px;
    border-bottom: 1px solid var(--t2w-border-subtle, #e5e7eb);
}
.t2w-canvas__drawer-close {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 10px;
    background: none;
    border: none;
    color: var(--t2w-text-muted, #6b7280);
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
    border-radius: 6px;
    min-height: 32px;
    transition: background 0.15s ease, color 0.15s ease;
}
.t2w-canvas__drawer-close:hover {
    background: var(--t2w-bg-subtle, #f9fafb);
    color: var(--t2w-text, #374151);
}
.t2w-canvas__drawer-close .material-symbols-outlined { font-size: 18px; }
.t2w-canvas__drawer-thumb {
    width: 100%;
    height: 180px;
    object-fit: cover;
    display: block;
}
.t2w-canvas__drawer-thumb--empty {
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--t2w-bg-subtle, #f3f4f6);
    color: var(--t2w-text-muted, #9ca3af);
}
.t2w-canvas__drawer-thumb--empty .material-symbols-outlined { font-size: 48px; }
.t2w-canvas__drawer-body {
    padding: 14px 16px;
    overflow-y: auto;
    flex: 1;
}
.t2w-canvas__drawer-title {
    margin: 0 0 8px;
    font-size: 17px;
    font-weight: 700;
    color: var(--t2w-text, #111827);
    line-height: 1.35;
}
.t2w-canvas__drawer-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 12px;
    margin-bottom: 12px;
    font-size: 13px;
    color: var(--t2w-text-muted, #6b7280);
}
.t2w-canvas__drawer-rating {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    color: var(--t2w-text, #374151);
}
.t2w-canvas__drawer-rating .material-symbols-outlined {
    font-size: 14px;
    color: var(--t2w-warning, #f59e0b);
}
.t2w-canvas__drawer-vendor {
    padding: 2px 8px;
    background: var(--t2w-bg-subtle, #f3f4f6);
    border-radius: 10px;
    font-size: 11px;
    color: var(--t2w-text, #374151);
}
.t2w-canvas__drawer-desc {
    margin: 0 0 16px;
    font-size: 13px;
    line-height: 1.6;
    color: var(--t2w-text, #374151);
}
.t2w-canvas__drawer-section {
    margin-bottom: 14px;
}
.t2w-canvas__drawer-section h5 {
    margin: 0 0 6px;
    font-size: 12px;
    font-weight: 600;
    color: var(--t2w-text-muted, #6b7280);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}
.t2w-canvas__drawer-section ul {
    margin: 0;
    padding-left: 18px;
    list-style: disc;
    font-size: 13px;
    color: var(--t2w-text, #374151);
    line-height: 1.5;
}
.t2w-canvas__drawer-section li { margin-bottom: 2px; }
.t2w-canvas__drawer-foot {
    padding: 12px 16px;
    border-top: 1px solid var(--t2w-border-subtle, #e5e7eb);
    background: var(--t2w-surface, #ffffff);
    display: flex;
    align-items: center;
    gap: 10px;
    justify-content: space-between;
    position: sticky;
    bottom: 0;
}
.t2w-canvas__drawer-price {
    font-size: 18px;
    font-weight: 700;
    color: var(--t2w-text, #111827);
}
.t2w-canvas__drawer-book {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 10px 16px;
    background: var(--t2w-primary, #d97706);
    color: #ffffff;
    border: none;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    min-height: 44px;
    transition: background 0.15s ease, transform 0.15s ease;
}
.t2w-canvas__drawer-book:hover:not(:disabled) {
    background: var(--t2w-primary-dark, #b45309);
    transform: translateY(-1px);
}
.t2w-canvas__drawer-book:disabled {
    background: var(--t2w-text-muted, #9ca3af);
    cursor: not-allowed;
    opacity: 0.7;
}
.t2w-canvas__drawer-book .material-symbols-outlined { font-size: 18px; }

/* Drawer full-page share link (2026-04-19 P0-3 follow-up) */
.t2w-canvas__drawer-fullpage {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    margin-top: 16px;
    padding: 10px 14px;
    font-size: 13px;
    font-weight: 500;
    color: var(--t2w-text-muted, #6b7280);
    background: var(--t2w-surface-alt, #f9fafb);
    border: 1px solid var(--t2w-border, #e5e7eb);
    border-radius: 8px;
    text-decoration: none;
    transition: background 0.15s, color 0.15s;
}
.t2w-canvas__drawer-fullpage:hover,
.t2w-canvas__drawer-fullpage:focus {
    background: var(--t2w-surface, #fff);
    color: var(--t2w-primary, #1e3a5f);
    text-decoration: none;
}
.t2w-canvas__drawer-fullpage .material-symbols-outlined { font-size: 16px; }

@media (max-width: 768px) {
    .t2w-canvas__drawer-thumb { height: 150px; }
    .t2w-canvas__drawer-title { font-size: 16px; }
    .t2w-canvas__drawer-price { font-size: 16px; }
    .t2w-canvas__drawer-book { font-size: 13px; padding: 8px 14px; }
    .t2w-canvas__drawer-fullpage { font-size: 12px; padding: 9px 12px; }
}

.t2w-canvas__place {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 10px;
    border: 1px solid var(--t2w-border-subtle, #f3f4f6);
    border-radius: 12px;
    transition: all 0.15s ease;
    cursor: pointer;
}
.t2w-canvas__place:hover {
    border-color: var(--t2w-primary, #1e40af);
    box-shadow: 0 2px 8px rgba(30,64,175,0.08);
}
.t2w-canvas__place-thumb {
    width: 64px; height: 64px;
    flex: 0 0 64px;
    border-radius: 8px;
    object-fit: cover;
    background: var(--t2w-bg-subtle, #f3f4f6);
}
.t2w-canvas__place-thumb--empty {
    display: flex; align-items: center; justify-content: center;
    color: var(--t2w-text-muted, #9ca3af);
}
.t2w-canvas__place-thumb--empty .material-symbols-outlined { font-size: 28px; }
.t2w-canvas__place-main { flex: 1; min-width: 0; }
.t2w-canvas__place-name {
    font-size: 14px;
    font-weight: 600;
    color: var(--t2w-text, #111827);
    margin-bottom: 4px;
}
.t2w-canvas__place-meta {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 12px;
    color: var(--t2w-text-muted, #6b7280);
    margin-bottom: 4px;
    flex-wrap: wrap;
}
.t2w-canvas__place-rating {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    color: var(--t2w-warning, #f59e0b);
}
.t2w-canvas__place-rating .material-symbols-outlined { font-size: 14px; }
.t2w-canvas__place-micro {
    font-size: 12px;
    color: var(--t2w-text-muted, #6b7280);
    line-height: 1.4;
}
.t2w-canvas__place-swap {
    flex: 0 0 auto;
    width: 44px; height: 44px;
    border: 1px solid var(--t2w-border, #e5e7eb);
    background: #fff;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--t2w-text-muted, #9ca3af);
    cursor: not-allowed;
    opacity: 0.4;
}
.t2w-canvas__place-swap:not(:disabled) { cursor: pointer; opacity: 1; color: var(--t2w-text-muted, #6b7280); }
.t2w-canvas__place-swap:not(:disabled):hover {
    border-color: var(--t2w-primary, #1e40af);
    color: var(--t2w-primary, #1e40af);
    background: var(--t2w-bg-subtle, #eff6ff);
}

/* W2.4 anchor highlight */
.t2w-canvas__place--anchor {
    border-color: var(--t2w-primary, #1e40af);
    background: linear-gradient(135deg, #eff6ff 0%, #fff 100%);
    box-shadow: 0 0 0 2px rgba(30,64,175,0.15);
}
.t2w-canvas__place--anchor .t2w-canvas__place-swap {
    background: var(--t2w-primary, #1e40af);
    color: #fff;
    border-color: var(--t2w-primary, #1e40af);
}

/* W2.4 alternatives sidebar rendering */
.t2w-canvas__alt-header {
    padding: 12px 14px;
    background: linear-gradient(135deg, #eff6ff, #f3e8ff);
    border-radius: 12px;
    margin-bottom: 12px;
    border-left: 3px solid var(--t2w-primary, #1e40af);
}
.t2w-canvas__alt-anchor-label {
    font-size: 11px;
    font-weight: 600;
    color: var(--t2w-primary, #1e40af);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: 2px;
}
.t2w-canvas__alt-anchor-name {
    font-size: 14px;
    font-weight: 700;
    color: var(--t2w-text, #111827);
    margin-bottom: 6px;
}
.t2w-canvas__alt-anchor-sub {
    font-size: 12px;
    font-weight: 400;
    color: var(--t2w-text-muted, #6b7280);
    margin-left: 4px;
}
.t2w-canvas__alt-hint {
    font-size: 11px;
    color: var(--t2w-text-muted, #6b7280);
    line-height: 1.4;
}
.t2w-canvas__alt-hint small { opacity: 0.7; }

.t2w-canvas__alt-list { display: flex; flex-direction: column; gap: 10px; }
.t2w-canvas__alt {
    display: flex;
    gap: 10px;
    padding: 10px;
    border: 1px solid var(--t2w-border, #e5e7eb);
    border-radius: 12px;
    background: #fff;
    transition: all 0.15s ease;
}
.t2w-canvas__alt:hover {
    border-color: var(--t2w-primary, #1e40af);
    box-shadow: 0 2px 8px rgba(30,64,175,0.08);
}
.t2w-canvas__alt-thumb {
    width: 56px; height: 56px;
    flex: 0 0 56px;
    border-radius: 8px;
    object-fit: cover;
    background: var(--t2w-bg-subtle, #f3f4f6);
}
.t2w-canvas__alt-thumb--empty {
    display: flex; align-items: center; justify-content: center;
    color: var(--t2w-text-muted, #9ca3af);
}
.t2w-canvas__alt-main { flex: 1; min-width: 0; }
.t2w-canvas__alt-name {
    font-size: 13px;
    font-weight: 600;
    color: var(--t2w-text, #111827);
    margin-bottom: 4px;
    line-height: 1.3;
}
.t2w-canvas__alt-meta {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 11px;
    color: var(--t2w-text-muted, #6b7280);
    margin-bottom: 6px;
    flex-wrap: wrap;
}
.t2w-canvas__alt-rating {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    color: var(--t2w-warning, #f59e0b);
}
.t2w-canvas__alt-rating .material-symbols-outlined { font-size: 12px; }
.t2w-canvas__alt-score {
    padding: 1px 6px;
    background: var(--t2w-bg-subtle, #eff6ff);
    color: var(--t2w-primary, #1e40af);
    border-radius: 100px;
    font-weight: 600;
}
.t2w-canvas__alt-reasons {
    display: flex;
    flex-wrap: wrap;
    gap: 3px;
    margin-bottom: 6px;
}
.t2w-canvas__alt-tag {
    font-size: 10px;
    padding: 1px 6px;
    background: var(--t2w-bg-subtle, #f3f4f6);
    color: var(--t2w-text-muted, #6b7280);
    border-radius: 100px;
}
.t2w-canvas__alt-apply {
    width: 100%;
    padding: 8px;
    background: var(--t2w-primary, #1e40af);
    border: 1px solid var(--t2w-primary, #1e40af);
    border-radius: 6px;
    font-size: 12px;
    font-weight: 600;
    color: #fff;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    min-height: 36px;
    transition: all 0.15s ease;
}
.t2w-canvas__alt-apply:hover {
    background: var(--t2w-primary-dark, #1e3a8a);
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(30,64,175,0.25);
}
.t2w-canvas__alt-apply:active { transform: translateY(0); }
.t2w-canvas__alt-apply:disabled {
    background: var(--t2w-bg-subtle, #f9fafb);
    border: 1px dashed var(--t2w-border, #e5e7eb);
    color: var(--t2w-text-muted, #9ca3af);
    cursor: not-allowed;
    transform: none;
    box-shadow: none;
}
.t2w-canvas__alt-apply .material-symbols-outlined { font-size: 14px; }

/* W2.6: Just-swapped highlight flash */
@keyframes t2w-canvas-just-swapped {
    0%   { background: #d1fae5; transform: scale(1.02); }
    100% { background: #fff; transform: scale(1); }
}
.t2w-canvas .t2w-canvas__place.t2w-canvas__place--just-swapped {
    animation: t2w-canvas-just-swapped 2s ease-out;
    border-color: var(--t2w-success, #10b981);
}

/* W2.6: Swap done notice in sidebar */
.t2w-canvas__swap-done {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    padding: 10px 12px;
    background: #d1fae5;
    color: #065f46;
    border-radius: 8px;
    margin-bottom: 10px;
    font-size: 12px;
    line-height: 1.4;
    border-left: 3px solid #10b981;
}
.t2w-canvas__swap-done .material-symbols-outlined {
    font-size: 18px;
    flex: 0 0 auto;
    margin-top: 1px;
}
.t2w-canvas__swap-done-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6px; }

/* QA-1: Undo button inside swap-done notice */
.t2w-canvas__undo-btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 6px 10px;
    background: #fff;
    border: 1px solid #10b981;
    border-radius: 6px;
    color: #065f46;
    font-size: 12px;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.15s ease;
    align-self: flex-start;
    min-height: 32px;
}
.t2w-canvas__undo-btn:hover {
    background: #d1fae5;
    transform: translateY(-1px);
}
.t2w-canvas__undo-btn .material-symbols-outlined {
    font-size: 14px;
    margin-top: 0;
}
.t2w-canvas__undo-btn strong { font-weight: 600; }

/* W2.6: Bottom toast */
.t2w-canvas__toast {
    position: fixed;
    bottom: 24px;
    left: 50%;
    transform: translateX(-50%) translateY(80px);
    background: var(--t2w-text, #111827);
    color: #fff;
    padding: 12px 20px;
    border-radius: 100px;
    font-size: 13px;
    font-weight: 500;
    display: flex;
    align-items: center;
    gap: 8px;
    box-shadow: 0 8px 24px rgba(0,0,0,0.15);
    z-index: 10000;
    opacity: 0;
    transition: opacity 0.2s ease, transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
    pointer-events: none;
    max-width: 90vw;
}
.t2w-canvas__toast--show {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
}
.t2w-canvas__toast .material-symbols-outlined {
    font-size: 18px;
    color: #10b981;
}

.t2w-canvas__sidebar {
    background: #fff;
    border-left: 1px solid var(--t2w-border, #e5e7eb);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
.t2w-canvas__sb-head {
    padding: 20px 20px 12px;
    border-bottom: 1px solid var(--t2w-border-subtle, #f3f4f6);
}
.t2w-canvas__sb-title {
    font-size: 15px;
    font-weight: 700;
    color: var(--t2w-text, #111827);
    margin-bottom: 4px;
}
.t2w-canvas__sb-subtitle {
    font-size: 12px;
    color: var(--t2w-text-muted, #6b7280);
    line-height: 1.4;
}

.t2w-canvas__tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 2px;
    padding: 8px 12px;
    border-bottom: 1px solid var(--t2w-border-subtle, #f3f4f6);
    background: var(--t2w-bg-subtle, #f9fafb);
}
.t2w-canvas__tab {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 8px 10px;
    background: transparent;
    border: none;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 500;
    color: var(--t2w-text-muted, #6b7280);
    cursor: pointer;
    min-height: 36px;
}
.t2w-canvas__tab:disabled { opacity: 0.4; cursor: not-allowed; }
.t2w-canvas__tab .material-symbols-outlined { font-size: 14px; }
.t2w-canvas__tab:not(:disabled):hover { background: var(--t2w-border-subtle, #f3f4f6); }
.t2w-canvas__tab--active {
    background: #fff;
    color: var(--t2w-primary, #1e40af);
    box-shadow: 0 1px 2px rgba(0,0,0,0.05);
}

.t2w-canvas__sb-body {
    flex: 1;
    overflow-y: auto;
    padding: 12px 16px;
}
.t2w-canvas__sb-placeholder,
.t2w-canvas__sb-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 40px 16px;
    color: var(--t2w-text-muted, #9ca3af);
    gap: 8px;
}
.t2w-canvas__sb-placeholder .material-symbols-outlined,
.t2w-canvas__sb-empty .material-symbols-outlined {
    font-size: 36px;
    opacity: 0.5;
}
.t2w-canvas__sb-placeholder p,
.t2w-canvas__sb-empty p {
    font-size: 13px;
    line-height: 1.5;
}

.t2w-canvas__preset-list { display: flex; flex-direction: column; gap: 12px; }
.t2w-canvas__preset {
    padding: 14px;
    border: 1px solid var(--t2w-border, #e5e7eb);
    border-radius: 12px;
    background: #fff;
    transition: all 0.15s ease;
}
.t2w-canvas__preset:hover {
    border-color: var(--t2w-primary, #1e40af);
    box-shadow: 0 2px 8px rgba(30,64,175,0.06);
}
.t2w-canvas__preset-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 8px;
}
.t2w-canvas__preset-badge {
    display: inline-block;
    background: var(--t2w-bg-subtle, #eff6ff);
    color: var(--t2w-primary, #1e40af);
    padding: 2px 8px;
    border-radius: 100px;
    font-size: 11px;
    font-weight: 600;
}
.t2w-canvas__preset-saves {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    font-size: 11px;
    color: var(--t2w-text-muted, #9ca3af);
}
.t2w-canvas__preset-saves .material-symbols-outlined { font-size: 13px; }
.t2w-canvas__preset-title {
    font-size: 14px;
    font-weight: 600;
    color: var(--t2w-text, #111827);
    margin: 0 0 6px 0;
    line-height: 1.3;
}
.t2w-canvas__preset-desc {
    font-size: 12px;
    color: var(--t2w-text-muted, #6b7280);
    line-height: 1.5;
    margin: 0 0 10px 0;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.t2w-canvas__preset-highlights {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    margin-bottom: 10px;
}
.t2w-canvas__preset-tag {
    font-size: 11px;
    padding: 2px 8px;
    background: var(--t2w-bg-subtle, #f3f4f6);
    color: var(--t2w-text-muted, #6b7280);
    border-radius: 100px;
}
.t2w-canvas__preset-apply {
    width: 100%;
    padding: 10px;
    background: var(--t2w-bg-subtle, #f9fafb);
    border: 1px dashed var(--t2w-border, #e5e7eb);
    border-radius: 8px;
    font-size: 12px;
    color: var(--t2w-text-muted, #9ca3af);
    cursor: not-allowed;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    min-height: 44px;
}
.t2w-canvas__preset-apply .material-symbols-outlined { font-size: 14px; }

/* Responsive: 900 tablet, 600 mobile (responsive-design.md) */
@media (max-width: 1024px) {
    .t2w-canvas__grid { grid-template-columns: 6fr 4fr; }
}
@media (max-width: 900px) {
    .t2w-canvas__grid {
        grid-template-columns: 1fr;
        grid-template-rows: 1fr auto;
    }
    .t2w-canvas__sidebar {
        border-left: none;
        border-top: 1px solid var(--t2w-border, #e5e7eb);
        max-height: 45vh;
    }
    .t2w-canvas__timeline { padding: 16px; }
}
@media (max-width: 768px) {
    .t2w-canvas__bar { padding: 10px 12px; gap: 8px; }
    .t2w-canvas__back span:not(.material-symbols-outlined) { display: none; }
    .t2w-canvas__meta-days { display: none; }
    .t2w-canvas__btn span:not(.material-symbols-outlined) { display: none; }
    .t2w-canvas__btn { padding: 8px 10px; }
    .t2w-canvas__day { padding: 14px 16px; }
    .t2w-canvas__tab { font-size: 11px; padding: 6px 8px; }
    .t2w-canvas__place-thumb { width: 56px; height: 56px; flex: 0 0 56px; }
}
