/**
 * AllPlanner 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
   ======================================== */

/* S198 D1: Quote CTA(.t2w-quote-cta*) 죽은 CSS 제거 — 렌더 사이트 0(테마 전역 grep), JS 핸들러(timeline.js)도 함께 제거. SaaS블루 하드코딩(#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-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; }
.t2w-pd-review-count { font-size: 13px; color: #6B7280; } /* S405: 별점 없이 후기만 있을 때 「후기 N개」 (t2w-pd-reviews 는 장소 후기 구역 이름 — 겹치지 않게) */

/* 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: var(--color-bg-cream); border: 1px solid rgba(255,183,0,0.25); border-radius: 8px;
    color: var(--color-primary-text); font-size: 13px; font-weight: 600; cursor: pointer;
    text-align: center; margin-bottom: 10px;
    transition: background 0.15s;
}
.t2w-pd-compare-btn:hover { background: rgba(255,183,0,0.12); }

/* 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 {
    /* S210: dark text on gold (system standard, WCAG ~8:1 — was #fff at 2.1:1) */
    background: var(--color-primary); color: var(--color-text-primary, #1F2937); text-decoration: none;
    display: flex; align-items: center; justify-content: center; gap: 6px;
    min-height: 44px;
}
.t2w-pd-cta-ext:hover { background: var(--color-primary-dark, #E5A400); color: var(--color-text-primary, #1F2937); }
/* S209/S210 commerce corridor: Woo checkout link + detail/inquiry fallback (replaces dead disabled button) */
.t2w-pd-cta-book {
    background: var(--color-primary); color: var(--color-text-primary, #1F2937); text-decoration: none;
    display: flex; align-items: center; justify-content: center; gap: 6px;
    min-height: 44px;
}
.t2w-pd-cta-book:hover { background: var(--color-primary-dark, #E5A400); color: var(--color-text-primary, #1F2937); }
.t2w-pd-cta-detail {
    background: var(--color-white, #FFFFFF); color: var(--color-text-primary, #1F2937);
    border: 1px solid var(--color-border-light, #E5E7EB); text-decoration: none;
    display: flex; align-items: center; justify-content: center; gap: 6px;
    min-height: 44px;
}
.t2w-pd-cta-detail:hover { background: var(--color-bg-light, #F9FAFB); border-color: var(--color-border-medium, #D1D5DB); }
.t2w-pd-cta:focus-visible { outline: 2px solid var(--t2w-gold, #F59E0B); outline-offset: 2px; }

/* ── 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: rgba(255,183,0,0.4); }
.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-reviews { font-size: 12px; color: #6B7280; } /* S405: 별점 없이 후기만 있을 때 「후기 N개」 */

.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: var(--color-bg-cream); color: var(--color-primary-text); border: 1px solid rgba(255,183,0,0.25);
    cursor: pointer; transition: background 0.15s;
}
.t2w-comparison-detail-btn:hover { background: rgba(255,183,0,0.12); }

/* 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;
}

/* P0a-2 (S105): itinerary source badge — preset / ai_realtime / ai_instant / pick_mode */
.t2w-tl-source-badge {
    display: inline-block;
    margin-left: 8px;
    padding: 2px 10px;
    background: var(--t2w-itinerary-source-bg);
    color: var(--t2w-color-primary-text);
    border-radius: 10px;
    font-size: 11px;
    font-weight: 600;
    line-height: 18px;
}

.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;
}



/* ═══════════ 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-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) {
    /* (S270 접기: L813 병합) */
    grid-column: 1 / -1;
    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--ticket i {
    color: #D97706;
}

/* Emotional hook (top of about tab) */

.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: var(--color-primary-text);
    font-style: italic;
}

/* Review Insight Box */

.t2w-pd-ri-header {
    font-size: 13px;
    font-weight: 700;
    color: var(--color-primary-text);
    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;
}


/* Review quotes */
.t2w-pd-ri-quotes {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.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: var(--color-bg-cream);
    color: var(--color-primary-text);
    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 var(--color-primary);
}

/* ========================================
   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 {
    /* (S270 접기: L391 병합) */
    font-size: 12px;
    color: #9CA3AF;
    padding: 4px 12px;
    text-align: center;
    line-height: 1.4;
    font-style: italic;
    background: linear-gradient(90deg, transparent 0%, var(--color-bg-cream) 15%, var(--color-bg-cream) 85%, transparent 100%);
    border-radius: 8px;
    margin: 2px 0;
    padding: 4px 16px;
    color: #4B5563;
}

/* Facility bar: hover micro-interaction */

.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 {
    /* (S270 접기: L1494 병합) */
    background: var(--color-bg-cream);
    border-radius: 12px;
    padding: 14px 16px;
    margin-bottom: 12px;
    background: linear-gradient(135deg, var(--color-bg-cream) 0%, var(--color-itinerary-source-bg) 50%, #FFFBEB 100%);
    border: 1px solid rgba(255,183,0,0.25);
}

/* Review quote: hover reveal */
.t2w-pd-ri-quote {
    /* (S270 접기: L1581 병합) */
    background: #fff;
    border: 1px solid #E5E7EB;
    border-radius: 10px;
    padding: 10px 14px;
    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: var(--color-primary);
}

/* 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 {
    /* (S270 접기: L1471 병합) */
    display: flex;
    align-items: flex-start;
    gap: 8px;
    padding: 12px 14px;
    margin: 0 0 12px;
    background: linear-gradient(135deg, var(--color-bg-cream) 0%, var(--color-itinerary-source-bg) 100%);
    border-radius: 10px;
    border-left: 3px solid var(--color-primary);
    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 {
    /* (S270 접기: L1570 병합) */
    color: #D97706;
    margin-right: 4px;
    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: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;
}

/* ── S170: 2-card 시작 허브 (검수 코스 / 직접 골라 만들기) ── */
.t2w-entry-hub__title {
    text-align: center;
    margin-bottom: 24px;
}
.t2w-entry-hub__cards {
    display: grid;
    grid-template-columns: 1.3fr 1fr;
    gap: 20px;
    align-items: stretch;
}
.t2w-entry-hub__card {
    display: flex;
    flex-direction: column;
    gap: 16px;
    padding: 24px 22px;
    border: 1.5px solid #EFE7D2;
    border-radius: 18px;
    background: #fff;
    box-shadow: 0 4px 18px rgba(24, 22, 16, 0.05);
    text-align: left;
}
.t2w-entry-hub__card--pick {
    background: linear-gradient(180deg, #FFFDF7 0%, #fff 100%);
    border-color: var(--color-primary);
}
.t2w-entry-hub__card-head {
    display: flex;
    align-items: flex-start;
    gap: 12px;
}
.t2w-entry-hub__card-icon {
    flex-shrink: 0;
    font-size: 26px;
    color: var(--color-primary);
}
.t2w-entry-hub__card-title {
    margin: 0 0 4px;
    font-size: 16px;
    font-weight: 800;
    color: #181610;
}
.t2w-entry-hub__card-sub {
    margin: 0;
    font-size: 13px;
    line-height: 1.5;
    color: #6B7280;
}
/* Card A — 기존 quickset·도시·pill 을 카드 안에서 좌측 정렬 + 줄바꿈 */
.t2w-entry-hub__card--preset .t2w-entry-quickset,
.t2w-entry-hub__card--preset .t2w-entry-v4__cities {
    justify-content: flex-start;
    margin: 0;
}
/* S170: 접이식 출발·도착 고급 설정 (테마 칩 대체) */
.t2w-entry-advanced-toggle {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    align-self: flex-start;
    margin-top: 2px;
    padding: 6px 10px;
    border: 0;
    background: transparent;
    color: #6B7280;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
}
.t2w-entry-advanced-toggle:hover { color: #181610; }
.t2w-entry-advanced-toggle .material-symbols-outlined { font-size: 18px; }
.t2w-entry-advanced-toggle__hint {
    color: #9CA3AF;
    font-weight: 600;
    font-size: 12px;
}
.t2w-entry-advanced-toggle__chevron { transition: transform .15s; }
.t2w-entry-advanced-toggle.is-open .t2w-entry-advanced-toggle__chevron { transform: rotate(180deg); }
.t2w-entry-advanced {
    display: none;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 4px;
    width: 100%;
}
.t2w-entry-advanced.is-open { display: flex; }
.t2w-entry-advanced .t2w-entry-departure-field { min-width: 180px; flex: 1 1 180px; }
/* Card B — 단계 안내 + CTA */
.t2w-entry-hub__steps {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 12px;
    flex: 1 1 auto;
}
.t2w-entry-hub__steps li {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 14px;
    font-weight: 600;
    color: #374151;
}
.t2w-entry-hub__steps .material-symbols-outlined {
    font-size: 20px;
    color: var(--color-primary);
}
.t2w-entry-hub__pick-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    min-height: 48px;
    border: 0;
    border-radius: 999px;
    background: #181610;
    color: #fff;
    font-size: 15px;
    font-weight: 800;
    cursor: pointer;
    transition: background .15s, box-shadow .15s, transform .15s;
}
.t2w-entry-hub__pick-btn:hover {
    background: #000;
    box-shadow: 0 6px 18px rgba(24, 22, 16, 0.22);
    transform: translateY(-1px);
}

/* 플래너 헤더 "직접 골라 만들기" 버튼 — 빈/콜드스타트 상태에서만 노출 */
.t2w-v29-ph-pick {
    display: none;
    align-items: center;
    gap: 6px;
    padding: 8px 16px;
    border: 0;
    border-radius: 999px;
    background: var(--color-primary);
    color: #181610;
    font-size: 14px;
    font-weight: 800;
    cursor: pointer;
    transition: box-shadow .15s, transform .15s;
}
.t2w-v29-ph-pick .material-symbols-outlined { font-size: 18px; }
.t2w-v29-ph-pick:hover {
    box-shadow: 0 4px 12px rgba(255, 183, 0, 0.4);
    transform: translateY(-1px);
}
.t2w-planner-v2:has(.t2w-v5-main.t2w-planner-search-active) .t2w-v29-ph-pick {
    display: inline-flex;
}

/* 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);
}

/* Entry condition buttons */
.t2w-entry-quickset {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 10px;
    margin: 0 0 18px;
}
.t2w-entry-quickset__group {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px;
    border: 1px solid #E5E7EB;
    border-radius: 999px;
    background: #fff;
}
.t2w-entry-quickset__label {
    padding: 0 8px;
    font-size: 12px;
    font-weight: 700;
    color: #6B7280;
    white-space: nowrap;
}
.t2w-entry-quickset__btn {
    min-height: 32px;
    padding: 0 12px;
    border: 0;
    border-radius: 999px;
    background: transparent;
    color: #374151;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    white-space: nowrap;
    transition: background .15s, color .15s, box-shadow .15s;
}
.t2w-entry-quickset__btn:hover,
.t2w-entry-quickset__btn.is-active {
    background: #181610;
    color: #fff;
    box-shadow: 0 2px 8px rgba(24, 22, 16, 0.14);
}
.t2w-entry-quickset__group--departure,
.t2w-entry-quickset__group--destination {
    border-radius: 18px;
}
.t2w-entry-departure-field {
    position: relative;
    min-width: 210px;
}
.t2w-entry-departure-input,
.t2w-entry-destination-input,
.t2w-entry-start-time {
    min-height: 32px;
    border: 0;
    border-radius: 999px;
    background: #F8FAFC;
    color: #181610;
    font-family: inherit;
    font-size: 12px;
    font-weight: 700;
    outline: none;
}
.t2w-entry-departure-input,
.t2w-entry-destination-input {
    width: 100%;
    padding: 0 12px;
}
.t2w-entry-start-time {
    width: 92px;
    padding: 0 8px;
}
.t2w-entry-departure-input:focus,
.t2w-entry-destination-input:focus,
.t2w-entry-start-time:focus {
    box-shadow: 0 0 0 2px rgba(255, 183, 0, 0.28);
}
.t2w-entry-departure-dropdown {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    right: 0;
    z-index: 60;
    max-height: 220px;
    overflow-y: auto;
    background: #fff;
    border: 1px solid #E5E7EB;
    border-radius: 12px;
    box-shadow: 0 12px 30px rgba(24, 22, 16, 0.14);
}
.t2w-entry-dep-result,
.t2w-entry-dep-loading,
.t2w-entry-dep-empty {
    padding: 10px 12px;
    font-size: 12px;
    color: #374151;
}
.t2w-entry-dep-result {
    cursor: pointer;
}
.t2w-entry-dep-result:hover {
    background: #FFF7E0;
}
.t2w-entry-dep-result-name {
    font-weight: 800;
    color: #181610;
}
.t2w-entry-dep-result-addr {
    margin-top: 2px;
    color: #6B7280;
    font-size: 11px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
/* S181: 출발/도착 좌표 확정 안내 (미선택 함정 가시화) */
.t2w-entry-geo-note {
    margin-top: 4px;
    padding: 0 4px;
    font-size: 12px;
    line-height: 1.4;
    color: var(--t2w-text-secondary, #6B7280);
}
.t2w-entry-geo-note[data-kind="ok"] { color: var(--t2w-success, #047857); }
.t2w-entry-geo-note[data-kind="warn"] { color: var(--t2w-warning, #B45309); }

/* 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);
}

/* 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;
}
.t2w-entry-manual {
    width: 100%;
    max-width: 520px;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    margin: 0 0 10px;
    padding: 10px 14px;
    border: 1.5px solid #D1D5DB;
    border-radius: 12px;
    background: #fff;
    color: #111827;
    font-size: 14px;
    font-weight: 800;
    cursor: pointer;
    transition: border-color .15s, background .15s, transform .15s, box-shadow .15s;
}
.t2w-entry-manual .material-symbols-outlined {
    font-size: 18px;
    color: #2563EB;
}
.t2w-entry-manual:hover {
    border-color: #93C5FD;
    background: #EFF6FF;
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(37, 99, 235, 0.12);
}

/* Tablet */
@media (min-width: 769px) and (max-width: 1024px) {
    .t2w-entry-v4 { padding: 32px 24px 24px; }
    .t2w-entry-hub__cards { grid-template-columns: 1fr; gap: 14px; }
    .t2w-entry-hub__card { padding: 20px 16px; }
    .t2w-entry-hub__title { margin-bottom: 18px; }
}

/* Mobile */
@media (max-width: 768px) {
    .t2w-entry-v4 {
        width: 100%;
        max-width: 100%;
        box-sizing: border-box;
        align-items: stretch;
        padding: 28px 16px 24px;
        border-radius: 0;
        overflow: hidden;
    }
    .t2w-entry-v4__title {
        font-size: 17px;
        text-align: left;
    }
    /* S170: 모바일은 2-카드 허브를 세로 스택 */
    .t2w-entry-hub__cards { grid-template-columns: 1fr; gap: 14px; }
    .t2w-entry-hub__card { padding: 20px 16px; }
    .t2w-entry-hub__title { margin-bottom: 18px; }
    .t2w-entry-quickset {
        justify-content: flex-start;
        overflow-x: visible;
        flex-direction: column;
        flex-wrap: nowrap;
        width: 100%;
        max-width: 100%;
        gap: 8px;
        padding-bottom: 0;
    }
    .t2w-entry-quickset__group {
        flex-shrink: 1;
        width: 100%;
        box-sizing: border-box;
        justify-content: center;
    }
    .t2w-entry-quickset__btn {
        min-height: 34px;
        padding: 0 11px;
        font-size: 12px;
    }
    .t2w-entry-quickset__group--departure,
    .t2w-entry-quickset__group--destination {
        justify-content: flex-start;
    }
    .t2w-entry-departure-field {
        flex: 1;
        min-width: 0;
    }
    .t2w-entry-departure-input,
    .t2w-entry-destination-input {
        min-width: 0;
    }
    .t2w-entry-start-time {
        width: 88px;
        flex-shrink: 0;
    }
    .t2w-entry-v4__cities {
        overflow-x: auto;
        flex-wrap: nowrap;
        justify-content: flex-start;
        width: 100%;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
    }
    .t2w-entry-v4__cities::-webkit-scrollbar { display: none; }
    .t2w-entry-v4__city { flex-shrink: 0; }
    .t2w-entry-v4 .t2w-entry-alt {
        max-width: 100%;
        width: 100%;
    }
    .t2w-entry-v4 .t2w-entry-manual,
    .t2w-entry-v4 .t2w-planner-search__bar {
        width: 100%;
        max-width: 100%;
        box-sizing: border-box;
    }
}

/* ══════════════════════════════════════════
   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 */


/* 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 {
    /* (S270 접기: L2249 병합) */
    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;
    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-ctrl {
    /* (S270 접기: L782 병합) */
    width: 28px;
        height: 28px;
        font-size: 11px;
        width: 26px;
        height: 26px;
        font-size: 10px;
    }
    .t2w-tl-day-count {
    /* (S270 접기: L787 병합) */
    font-size: 12px;
        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 */
    
    /* v29 card: smaller padding + thumb */
    .t2w-v29-card {
    /* (S270 접기: L3617 병합) */
    width: 100%;
        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 {
    /* (S270 접기: L779 병합) */
    gap: 4px;
    /* (S270 접기: L3570 병합) */
    flex-shrink: 0;
        gap: 4px;
        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;
}
/* S261: border(레이아웃 밀림) → outline + 안쪽 카드만 표시(배지·세로선 구역 제외) */
.t2w-place-item--drop-target .t2w-v29-card {
    outline: 2px dashed var(--color-primary);
    outline-offset: 2px;
    background: rgba(255, 183, 0, 0.06);
}

/* ── 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-destination-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 .t2w-v29-card {
    outline-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;
    }
    
}

/* ── 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; }
/* QW4 (S191): traveler-insight chips -> warm tokens (variables.css §1b). */
.t2w-pd-vi--calm { color: var(--color-tag-sage-text); }
.t2w-pd-vi--calm i { color: var(--color-tag-sage-text); }
.t2w-pd-vi--busy { color: var(--color-tag-rust-text); background: var(--color-tag-rust-bg); }
.t2w-pd-vi--busy i { color: var(--color-tag-rust-text); }
.t2w-pd-vi--moderate { color: var(--color-tag-amber-text); }
.t2w-pd-vi--moderate i { color: var(--color-tag-amber-text); }
.t2w-pd-vi--time { color: var(--color-tag-bronze-text); }
.t2w-pd-vi--time i { color: var(--color-tag-bronze-text); }
.t2w-pd-vi--audience { color: var(--color-tag-honey-text); }
.t2w-pd-vi--validated { color: var(--color-primary-text); }
.t2w-pd-vi--validated i { color: var(--color-primary-text); }
.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; }
}
@media (max-width: 768px) {
    /* Reserve right zone for fixed Chat FAB so breadcrumb info (Day, place count) stays readable */
    .t2w-breadcrumb-bar { padding-right: 76px; }
}

/* ─── 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 {
    /* (S270 접기: L1438 병합) */
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    padding: 8px 16px;
    border-bottom: 1px solid #F3F4F6;
    background: #FAFAFA;
    display: flex;
    padding: 10px 16px;
    gap: 0;
    background: #F9FAFB;
    border-bottom: 1px solid #E5E7EB;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}
.t2w-pd-facility {
    /* (S270 접기: L1446 병합) */
    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;
    /* (S270 접기: L1707 병합) */
    transition: transform 0.15s, box-shadow 0.15s;
    cursor: default;
    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 {
    /* (S270 접기: L1457 병합) */
    font-size: 10px;
    color: var(--color-primary);
    display: block;
    font-size: 18px;
    margin-bottom: 3px;
}
.t2w-pd-facility--active { color: #059669; font-weight: 600; }
.t2w-pd-facility--ticket {
    /* (S270 접기: L1461 병합) */
    background: #FEF3C7;
    border-color: #F59E0B;
    color: #92400E; 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(--t2w-amber-ink, #8a5a00); 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 {
    /* (S270 접기: L3943 병합) */
    opacity: 1; 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:hover { color: #64748B; }
.t2w-v29-card--collapsed .t2w-v29-card-chevron {
    transform: rotate(-90deg);
}
/* Cursor pointer for clickable cards */


/* 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 {
    /* (S270 접기: L5643 병합) */
    cursor: pointer;
    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;
}
/* S181 무음격하[D]: 주변 식당 0건 시 안내(로딩과 구분된 '진짜 cold'에서만 표시) */
.t2w-tl-meal-hint-empty {
    margin-top: 6px;
    padding: 6px 12px;
    font-size: 12px;
    line-height: 1.4;
    color: var(--t2w-text-sec, #6B7280);
}
.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-endpoint-stack {
    display: grid;
    gap: 6px;
    margin-bottom: 8px;
}
.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:0; 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,
.t2w-departure-v3 .t2w-destination-search-wrap { flex:1; min-width:0; position:relative; }
.t2w-departure-v3 .t2w-departure-input,
.t2w-departure-v3 .t2w-destination-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,
.t2w-departure-v3 .t2w-destination-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:0; border-radius:99px; white-space:nowrap; flex-shrink:0; cursor:pointer;
    font-family:inherit; line-height:1.4;
}
.t2w-departure-v3-time-badge:focus-visible {
    outline:2px solid var(--color-primary);
    outline-offset:2px;
}
.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(--t2w-amber-ink, #8a5a00); font-weight:700; }
/* S189: photo-forward meal recommendation carousel (was 32px chips) */
.t2w-tl-meal-mini-cards { display:flex; gap:8px; margin-top:6px; overflow-x:auto; -webkit-overflow-scrolling:touch; padding:0 4px 6px; scroll-snap-type:x mandatory; scrollbar-width:none; }
.t2w-tl-meal-mini-cards::-webkit-scrollbar { display:none; }
.t2w-tl-meal-mini {
    display:flex; flex-direction:column; flex-shrink:0;
    width:150px; min-width:150px; overflow:hidden;
    background:#fff; border-radius:12px; border:1px solid var(--color-border-light);
    box-shadow:0 1px 3px rgba(0,0,0,0.06);
    cursor:pointer; transition:border-color .15s, box-shadow .15s, transform .1s;
    scroll-snap-align:start;
}
.t2w-tl-meal-mini:hover { border-color:var(--color-primary); box-shadow:0 4px 12px rgba(0,0,0,0.1); transform:translateY(-1px); }
.t2w-tl-meal-mini:active { transform:scale(0.98); }
.t2w-tl-meal-mini-photo { width:100%; height:96px; background-size:cover; background-position:center; flex-shrink:0; }
.t2w-tl-meal-mini-photo--empty { display:flex; align-items:center; justify-content:center; background:var(--color-bg-cream); font-size:30px; }
.t2w-tl-meal-mini-info { display:flex; flex-direction:column; gap:3px; padding:8px 10px 10px; min-width:0; }
.t2w-tl-meal-mini-name { font-size:13px; font-weight:700; color:var(--color-text-primary); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.t2w-tl-meal-mini-meta { font-size:11px; color:var(--color-text-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.t2w-tl-meal-mini-sig { font-size:10px; color:var(--color-text-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.t2w-tl-meal-mini-add { margin-top:4px; text-align:center; font-size:12px; font-weight:700; color:var(--color-text-primary); background:var(--color-primary); border-radius:6px; padding:5px 0; }
.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-endpoint-stack { gap:6px; }
    .t2w-departure-v3 { padding:10px 12px; gap:8px; }
    .t2w-departure-v3-label { font-size:12px; }
    .t2w-tl-meal-mini { width:140px; min-width:140px; }
    .t2w-tl-meal-mini-photo { height:88px; }
}

/* ═══ v43.3: Compact card spacing (v3 prototype) ═══ */

.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 {
    /* (S270 접기: L3527 병합) */
    border-color: var(--t2w-border-warm, #e8e0d0); 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 {
    /* (S270 접기: L5633 병합) */
    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); 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;
}

/* (S269) Canvas Mode CSS 섹션(약 1,060줄) 제거 — ?canvas=1 전용 대체 UX 미사용 판정, canvas.js·마크업·enqueue 동반 삭제 */

/* ============================================================
 * S61 B (2026-04-25) — Intent Chips
 * 4 implicit-intent chips (drive/english/pace/budget) + regen button
 * 길 β: 홈 hero 미수정. 플래너 페이지 헤더 아래 노출.
 * ============================================================ */

.t2w-intent-chips {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    padding: 10px 16px;
    background: linear-gradient(180deg, rgba(255, 248, 230, 0.6) 0%, rgba(255, 255, 255, 1) 100%);
    border-bottom: 1px solid var(--t2w-border, #E5E7EB);
}

.t2w-intent-chips__group {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    flex: 1 1 auto;
    min-width: 0;
}

.t2w-intent-chip {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 6px 12px;
    border: 1px solid var(--t2w-border, #D1D5DB);
    border-radius: 999px;
    background: #FFFFFF;
    color: var(--t2w-text-secondary, #4B5563);
    font-size: 13px;
    font-weight: 500;
    line-height: 1.2;
    cursor: pointer;
    transition: all 0.15s ease;
    white-space: nowrap;
}

.t2w-intent-chip:hover {
    border-color: var(--t2w-gold, #F59E0B);
    background: #FFFBEB;
    color: var(--t2w-text, #111827);
}

.t2w-intent-chip:focus-visible {
    outline: 2px solid var(--t2w-gold, #F59E0B);
    outline-offset: 2px;
}

.t2w-intent-chip__icon {
    font-size: 16px !important;
    line-height: 1 !important;
}

.t2w-intent-chip__text {
    font-size: 13px;
}



.t2w-intent-chip--active:hover {
    background: #D97706;
    color: #FFFFFF;
}

.t2w-intent-regen {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 7px 14px;
    border: 1px solid var(--t2w-text, #111827);
    border-radius: 999px;
    background: var(--t2w-text, #111827);
    color: #FFFFFF;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.15s ease;
    white-space: nowrap;
    flex: 0 0 auto;
}





.t2w-intent-regen .material-symbols-outlined {
    font-size: 16px !important;
}

.t2w-intent-regen__text {
    font-size: 13px;
}

@media (max-width: 768px) {
    .t2w-intent-chips {
        padding: 8px 12px;
        gap: 6px;
        overflow-x: auto;
        flex-wrap: nowrap;
        -webkit-overflow-scrolling: touch;
    }

    .t2w-intent-chips__group {
        flex-wrap: nowrap;
    }

    .t2w-intent-chip,
    .t2w-intent-regen {
        font-size: 12px;
        padding: 5px 10px;
    }

    .t2w-intent-regen__text {
        font-size: 12px;
    }
}

/* ============================================================
 * S61 UI Polish (2026-04-25)
 *  - B 칩 영역 강화: 라벨 + 컨테이너 박스 + regen 버튼 강조
 *  - C 카드 삭제 액션 명시: hover 시 X 버튼 노출 + 학습 힌트
 *  - A 카드 패널 톤다운 살짝 (cream → 더 중성)
 * ============================================================ */

/* B — 칩 영역 강화 */
.t2w-intent-chips {
    /* 기존 스타일 OVERRIDE: 라벨 추가로 인한 layout 조정 */
    background: #FFFFFF;
    border-bottom: 1px solid var(--t2w-border, #E5E7EB);
    box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.02);
    padding: 12px 20px;
    gap: 10px;
}

.t2w-intent-chips__label {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 0 10px 0 0;
    border-right: 1px dashed var(--t2w-border, #E5E7EB);
    margin-right: 4px;
    color: var(--t2w-text-secondary, #4B5563);
    font-size: 12.5px;
    font-weight: 600;
    letter-spacing: -0.01em;
    flex: 0 0 auto;
}

.t2w-intent-chips__label-icon {
    font-size: 16px !important;
    color: var(--t2w-gold, #F59E0B);
}

.t2w-intent-chip {
    /* 기존 스타일 살짝 강화 */
    border-width: 1.5px;
    background: var(--t2w-bg-soft, #F9FAFB);
    transition: all 0.18s ease;
}

.t2w-intent-chip--active {
    /* (S270 접기: L6866 병합) */
    border-color: var(--t2w-gold, #F59E0B);
    background: var(--t2w-gold, #F59E0B);
    color: #FFFFFF;
    font-weight: 600;
    /* 더 두드러진 활성 상태 — 그림자 추가 */
    box-shadow: 0 1px 3px rgba(245, 158, 11, 0.3);
    transform: translateY(-1px);
}

.t2w-intent-regen {
    /* 더 눈에 띄는 CTA */
    background: linear-gradient(135deg, var(--t2w-gold, #F59E0B) 0%, #D97706 100%);
    border-color: transparent;
    color: #FFFFFF;
    box-shadow: 0 2px 6px rgba(245, 158, 11, 0.25);
    font-weight: 700;
}

.t2w-intent-regen:hover:not(:disabled) {
    /* (S270 접기: L6895 병합) */
    background: var(--t2w-gold, #F59E0B);
    border-color: var(--t2w-gold, #F59E0B);
    background: linear-gradient(135deg, #D97706 0%, #B45309 100%);
    box-shadow: 0 3px 10px rgba(245, 158, 11, 0.35);
    transform: translateY(-1px);
}

.t2w-intent-regen:disabled,
.t2w-intent-regen[aria-disabled="true"] {
    /* (S270 접기: L6900 병합) */
    background: #E5E7EB;
    color: #9CA3AF;
    border-color: #E5E7EB;
    cursor: not-allowed;
    background: #E5E7EB;
    color: #9CA3AF;
    box-shadow: none;
    transform: none;
}

@media (max-width: 768px) {
    .t2w-intent-chips {
        padding: 10px 12px;
    }
    .t2w-intent-chips__label {
        display: none; /* 모바일은 공간 절약: 라벨 생략 */
    }
}

/* C — 카드 삭제 액션 명시 */
/* `.t2w-card-detail-delete`는 펼친 후 detail 안에 있음.
 * collapsed 카드에도 hover 시 명시적 삭제 버튼 노출.
 * 동시에 "삭제 = 학습" 힌트를 한 줄 tooltip 으로. */
.t2w-v29-item {
    /* (S270 접기: L6070 병합) */
    margin-bottom: 8px;
    position: relative;
}

.t2w-v29-item__quick-delete {
    position: absolute;
    top: 8px;
    right: 8px;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.95);
    border: 1px solid var(--t2w-border, #E5E7EB);
    color: #6B7280;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    transition: all 0.18s ease;
    z-index: 5;
    padding: 0;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}

.t2w-v29-item:hover .t2w-v29-item__quick-delete,
.t2w-v29-item__quick-delete:focus {
    opacity: 1;
}

.t2w-v29-item__quick-delete:hover {
    background: #FEE2E2;
    border-color: #FCA5A5;
    color: #DC2626;
    transform: scale(1.05);
}

.t2w-v29-item__quick-delete .material-symbols-outlined {
    font-size: 16px !important;
}

/* 첫 카드 삭제 시 노출되는 학습 힌트 (negative-signals.js 토스트와 별개 — 인라인) */
.t2w-v29-item__delete-hint {
    position: absolute;
    top: 40px;
    right: 8px;
    background: rgba(17, 24, 39, 0.95);
    color: #FFFFFF;
    font-size: 11.5px;
    padding: 4px 8px;
    border-radius: 6px;
    white-space: nowrap;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.2s ease;
    z-index: 4;
}

.t2w-v29-item:hover .t2w-v29-item__quick-delete:hover + .t2w-v29-item__delete-hint {
    opacity: 1;
}

@media (max-width: 768px) {
    /* 모바일은 항상 보이게 (hover 없음) */
    .t2w-v29-item__quick-delete {
        opacity: 0.6;
    }
    .t2w-v29-item__delete-hint {
        display: none; /* 모바일은 hint 생략 (공간 절약) */
    }
}

/* A — 좌측 패널 톤 살짝 중성화 (cream → 따뜻한 화이트) */
.t2w-v5-left {
    background: #FAFAF9 !important; /* 기존 #FCFBF8 → 더 중성, 노란 인상 ↓ */
}

/* ── S195 P2: '도구' 서랍 — 글로벌 패널(#t2w-panel) 재사용, 보조정보 단일 수납. (override 미사용, 토큰+폴백) ── */
.t2w-panel--flat .t2w-panel-back { display: none; }

.t2w-tools-drawer { padding: 4px 2px 16px; }

/* 일정 다듬기 진입 (기존 어시스턴트 dock 톤 #1d180c와 일관) */
.t2w-tools-refine {
    display: flex; align-items: center; gap: 10px; width: 100%;
    padding: 14px 16px; margin: 4px 0 14px;
    border: none; border-radius: 14px; cursor: pointer;
    background: #1d180c; color: #fff; text-align: left;
}
.t2w-tools-refine:hover { background: #2a2310; }
.t2w-tools-refine .t2w-tools-refine-txt { display: flex; flex-direction: column; flex: 1; }
.t2w-tools-refine strong { font-size: 14px; font-weight: 700; }
.t2w-tools-refine em { font-size: 11px; font-style: normal; color: rgba(255,255,255,0.62); margin-top: 2px; }
.t2w-tools-refine .t2w-tools-refine-arr { color: rgba(255,255,255,0.6); font-size: 20px; }

/* S198 P2#1: 빠른 작업(저장·견적·공유) — 모바일 하단바에서 도구 서랍으로 이관. 토큰 전용·우선순위규칙 미사용·터치 44px+ */
.t2w-tools-quick { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 0 0 14px; }
.t2w-tools-quick-btn {
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px;
    min-height: 56px; padding: 12px 6px;
    border: 1px solid var(--t2w-border-soft, #ece7dd); border-radius: 12px;
    background: var(--t2w-surface, #fff); cursor: pointer;
    color: var(--t2w-text-warm, #2c2417); font-size: 12px; font-weight: 600;
}
.t2w-tools-quick-btn:hover { background: var(--t2w-surface-warm, #faf6ee); }
.t2w-tools-quick-btn .material-symbols-outlined { font-size: 22px; color: var(--t2w-text-warm-secondary, #7a6f5d); }

/* 아코디언 (한 번에 하나만 열림) */
.t2w-tools-acc { border-top: 1px solid var(--t2w-border-soft, #ece7dd); }
.t2w-tools-acc:last-child { border-bottom: 1px solid var(--t2w-border-soft, #ece7dd); }
.t2w-tools-acc-head {
    display: flex; align-items: center; gap: 8px; width: 100%;
    padding: 14px 4px; border: none; background: transparent; cursor: pointer;
    font-size: 14px; font-weight: 600; color: var(--t2w-text-warm, #2c2417); text-align: left;
}
.t2w-tools-acc-head .t2w-tools-acc-ico { font-size: 19px; color: var(--t2w-text-warm-secondary, #7a6f5d); }
.t2w-tools-acc-label { flex: 1; }
.t2w-tools-acc-chev { font-size: 20px; color: var(--t2w-text-warm-secondary, #9a8f7d); transition: transform 0.2s ease; }
.t2w-tools-acc.is-open .t2w-tools-acc-chev { transform: rotate(180deg); }
.t2w-tools-acc-body { display: none; padding: 0 4px 16px; }
.t2w-tools-acc.is-open .t2w-tools-acc-body { display: block; }

/* S195 P3+: 장소카드 AI 빠른 액션바(앞/뒤/빼기/카페) 표시 OFF — AI 입구 일원화('도구'). 같은 기능은 삭제 버튼·날짜이동 바·'주변 추천'이 제공(동작/재계산 로직 불변, 표시만). #id 특이도로 override 불필요 */
#t2w-planner-v2 .t2w-card-ai-actions { display: none; }

/* 비서 한마디 */
.t2w-tools-note { display: flex; gap: 8px; align-items: flex-start; }
.t2w-tools-note--primary {
    padding: 12px 14px; border-radius: 12px;
    background: var(--t2w-surface-warm, #f7f3ea);
    font-size: 13px; line-height: 1.45; color: var(--t2w-text-warm, #2c2417);
}
.t2w-tools-note-ico { flex: none; }
.t2w-tools-note-list { list-style: none; margin: 10px 0 0; padding: 0; }
.t2w-tools-note-list li { display: flex; gap: 8px; align-items: flex-start; font-size: 12.5px; line-height: 1.4; color: var(--t2w-text-warm-secondary, #6b6356); padding: 6px 2px; }
.t2w-tools-empty { font-size: 13px; color: var(--t2w-text-warm-secondary, #7a6f5d); padding: 8px 2px; line-height: 1.5; }
