body.planner-open { overflow: hidden; }
.v3-shell { padding-bottom: 92px; }
.v3-topbar { border-bottom-color: rgba(255,255,255,.035); }
.v3-hero, .planner-entry-section, .v3-section { padding: 18px 20px; max-width: 1040px; margin-inline: auto; }
.v3-hero { padding-top: 32px; }
.v3-hero h1 { max-width: 680px; }
.v3-search { margin-top: 22px; display: flex; align-items: center; gap: 10px; border: 1px solid var(--line); background: var(--surface); border-radius: 18px; padding: 14px 16px; box-shadow: 0 8px 26px rgba(0,0,0,.16); }
.v3-search span { color: var(--accent); font-weight: 900; }
.v3-search input { width: 100%; border: 0; outline: 0; background: transparent; color: var(--ink); font-size: 16px; }
.v3-search input::placeholder { color: var(--muted); opacity: .7; }
.v3-time-tabs { margin-top: 12px; }
.v3-context-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 13px; color: var(--muted); font-size: 12px; }
.v3-context-row button { border: 0; background: transparent; color: var(--accent); font-weight: 850; padding: 4px 0; }
.v3-context-row button.active { color: var(--ink); }

.planner-entry-section { padding-top: 4px; }
.planner-entry { width: 100%; border: 1px solid rgba(232,120,77,.38); background: linear-gradient(135deg,var(--accent-soft),var(--surface)); color: var(--ink); border-radius: 22px; padding: 17px; display: flex; align-items: center; justify-content: space-between; gap: 16px; text-align: left; box-shadow: 0 10px 34px rgba(0,0,0,.18); }
.planner-entry > div { display: flex; align-items: center; gap: 13px; }
.planner-entry-icon { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 50%; background: var(--accent); color: var(--accent-ink); font-size: 20px; flex: 0 0 42px; }
.planner-entry strong { display: block; font-size: 18px; }
.planner-entry small { display: block; color: var(--muted); margin-top: 4px; line-height: 1.35; }
.planner-entry-arrow { color: var(--accent); font-size: 28px; }

.v3-rail { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(215px, 76%); gap: 10px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; padding-bottom: 7px; }
.v3-rail::-webkit-scrollbar { display: none; }
.v3-home-grid { display: grid; gap: 10px; }
.v3-card { position: relative; scroll-snap-align: start; overflow: hidden; min-height: 168px; border: 1px solid var(--line); border-radius: 20px; background: linear-gradient(150deg,var(--surface-2),var(--surface)); cursor: pointer; }
.v3-card img, .v3-card-placeholder { width: 100%; height: 112px; object-fit: cover; display: grid; place-items: center; background: linear-gradient(135deg,var(--surface-2),var(--bg)); color: var(--accent); font-size: 22px; font-weight: 950; }
.v3-card-body { padding: 13px; }
.v3-card-body strong { display: block; line-height: 1.15; font-size: 16px; }
.v3-card-body small { display: block; color: var(--muted); margin-top: 7px; line-height: 1.35; }
.v3-kicker { display: block; color: var(--accent); font-size: 9px; letter-spacing: .08em; text-transform: uppercase; font-weight: 900; margin-bottom: 5px; }
.save-mini { position: relative; z-index: 4; width: 31px; height: 31px; border-radius: 50%; border: 1px solid var(--line); background: rgba(11,14,14,.9); color: var(--ink); display: grid; place-items: center; font-weight: 950; }
.v3-card > .save-mini { position: absolute; top: 9px; right: 9px; }
.save-mini.saved { border-color: var(--accent); background: var(--accent); color: var(--accent-ink); }

.category-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 9px; }
.category-parent { min-height: 112px; border: 1px solid var(--line); border-radius: 20px; background: linear-gradient(145deg,var(--surface),var(--bg)); color: var(--ink); padding: 16px; text-align: left; display: flex; flex-direction: column; }
.category-parent > span { color: var(--accent); font-size: 23px; }
.category-parent strong { margin-top: auto; font-size: 16px; }
.category-parent small { color: var(--muted); margin-top: 4px; line-height: 1.25; }
.category-parent:hover { border-color: var(--accent); }

.v3-backdrop { position: fixed; inset: 0; z-index: 88; background: rgba(0,0,0,.66); display: flex; align-items: flex-end; opacity: 0; transition: opacity .18s ease; }
.v3-backdrop.open { opacity: 1; }
.v3-sheet { position: relative; width: 100%; max-height: 92dvh; overflow-y: auto; background: var(--bg); border: 1px solid var(--line); border-bottom: 0; border-radius: 28px 28px 0 0; padding: 26px 18px max(26px,env(safe-area-inset-bottom)); transform: translateY(18px); transition: transform .18s ease; }
.v3-backdrop.open .v3-sheet { transform: translateY(0); }
.v3-sheet-close { position: absolute; top: 14px; right: 15px; z-index: 4; width: 37px; height: 37px; border-radius: 50%; border: 1px solid var(--line); background: var(--surface); color: var(--ink); font-size: 22px; }
.v3-sheet-header { padding: 10px 6px 16px; }
.v3-sheet-header h2 { font-size: 30px; margin: 0; letter-spacing: -1px; }
.v3-sheet-header p:last-child { color: var(--muted); margin: 8px 0 0; line-height: 1.4; }
.v3-sheet-header.compact { padding-bottom: 10px; }
.v3-tabs { display: flex; gap: 7px; overflow-x: auto; padding: 0 3px 14px; scrollbar-width: none; }
.v3-tabs::-webkit-scrollbar { display: none; }
.v3-tab { white-space: nowrap; border: 1px solid var(--line); background: var(--surface); color: var(--muted); border-radius: 999px; padding: 9px 12px; font-size: 11px; font-weight: 850; }
.v3-tab.active { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); }
.v3-results, .my-list-results { display: grid; gap: 9px; }
.v3-list-card { border: 1px solid var(--line); background: var(--surface); border-radius: 18px; padding: 15px; display: flex; justify-content: space-between; align-items: center; gap: 13px; cursor: pointer; }
.v3-list-card > div:first-child { min-width: 0; }
.v3-list-card strong { display: block; font-size: 16px; }
.v3-list-card small { display: block; color: var(--muted); margin-top: 5px; line-height: 1.35; }
.v3-card-side { display: flex; align-items: center; gap: 9px; }
.v3-chevron { color: var(--accent); font-size: 27px; }
.v3-empty, .v3-loading { border: 1px dashed var(--line); border-radius: 20px; padding: 24px; text-align: center; color: var(--muted); }
.v3-empty strong { display: block; color: var(--ink); font-size: 17px; }
.v3-empty p { margin: 7px 0 0; }

.movie-group { border: 1px solid var(--line); background: var(--surface); border-radius: 20px; overflow: hidden; }
.movie-summary-row { display: flex; align-items: center; padding-right: 12px; }
.movie-summary { flex: 1; min-width: 0; border: 0; background: transparent; color: var(--ink); display: grid; grid-template-columns: 66px minmax(0,1fr) auto; gap: 12px; align-items: center; padding: 12px; text-align: left; }
.movie-summary img, .movie-poster-placeholder { width: 66px; height: 94px; object-fit: cover; border-radius: 11px; background: var(--surface-2); display: grid; place-items: center; color: var(--accent); font-size: 25px; }
.movie-summary strong { display: block; font-size: 17px; }
.movie-summary small { display: block; color: var(--muted); margin-top: 6px; }
.movie-group.expanded .movie-summary .v3-chevron { transform: rotate(90deg); }
.movie-venues { border-top: 1px solid var(--line); background: rgba(255,255,255,.015); }
.movie-venue { padding: 14px; border-bottom: 1px solid rgba(255,255,255,.055); }
.movie-venue:last-child { border-bottom: 0; }
.movie-venue-head { display: flex; justify-content: space-between; gap: 12px; align-items: start; }
.movie-venue-head strong, .movie-venue-head small { display: block; }
.movie-venue-head small { color: var(--muted); margin-top: 4px; }
.movie-venue-head button { border: 0; background: transparent; color: var(--accent); font-size: 11px; font-weight: 900; }
.showtime-row { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 12px; }
.showtime-chip { border: 1px solid var(--line); background: var(--bg); color: var(--ink); border-radius: 999px; padding: 8px 10px; font-size: 11px; font-weight: 850; }
.showtime-chip:hover { border-color: var(--accent); }

.my-list-actions { display: flex; justify-content: space-between; gap: 10px; align-items: center; margin: 0 5px 15px; }
.planner-submit.compact { width: auto; padding-inline: 14px; }
.saved-row { display: grid; grid-template-columns: 52px minmax(0,1fr) auto; align-items: center; gap: 11px; border: 1px solid var(--line); background: var(--surface); border-radius: 18px; padding: 11px; }
.saved-row img, .saved-icon { width: 52px; height: 52px; border-radius: 12px; object-fit: cover; background: var(--surface-2); display: grid; place-items: center; color: var(--accent); font-weight: 950; }
.saved-row strong, .saved-row small { display: block; }
.saved-row small { color: var(--muted); margin-top: 4px; }
.saved-actions { display: flex; gap: 6px; align-items: center; }
.saved-actions button { border: 1px solid var(--line); background: transparent; color: var(--ink); border-radius: 999px; padding: 7px 9px; font-size: 10px; font-weight: 850; }

.planner-form { display: grid; gap: 18px; padding: 4px 5px 18px; }
.planner-field > label, .planner-time-grid label { color: var(--ink); font-size: 12px; font-weight: 850; }
.planner-field label small { color: var(--muted); font-weight: 650; }
.planner-chip-row { display: flex; gap: 7px; overflow-x: auto; margin-top: 9px; }
.planner-chip { white-space: nowrap; border: 1px solid var(--line); background: var(--surface); color: var(--muted); border-radius: 999px; padding: 9px 12px; font-size: 11px; font-weight: 850; }
.planner-chip.active { border-color: var(--accent); background: var(--accent-soft); color: var(--ink); }
.planner-time-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }
.planner-time-grid label { display: grid; gap: 7px; }
.planner-time-grid input { width: 100%; border: 1px solid var(--line); border-radius: 13px; background: var(--surface); color: var(--ink); padding: 11px; }
.planner-location-note, .planner-saved-note { color: var(--muted); margin: -5px 0; font-size: 11px; line-height: 1.4; }
.planner-saved-note { color: var(--accent); }
.planner-intent-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; margin-top: 9px; }
.planner-intent { min-height: 67px; border: 1px solid var(--line); background: var(--surface); color: var(--ink); border-radius: 16px; padding: 12px; text-align: left; display: flex; flex-direction: column; gap: 7px; }
.planner-intent span { color: var(--accent); font-size: 18px; }
.planner-intent.active { border-color: var(--accent); background: var(--accent-soft); }
.planner-submit { width: 100%; border: 0; border-radius: 15px; padding: 13px 16px; background: var(--accent); color: var(--accent-ink); font-weight: 950; }
.planner-submit:disabled { opacity: .55; }
.planner-results { padding: 0 5px 18px; }
.planner-result-head { display: flex; justify-content: space-between; gap: 12px; align-items: end; margin: 4px 0 14px; }
.planner-result-head h3 { margin: 0; }
.planner-result-head > span { color: var(--muted); font-size: 10px; }
.planner-timeline { display: grid; gap: 0; }
.planner-stop { display: grid; grid-template-columns: 34px minmax(0,1fr); gap: 10px; position: relative; padding-bottom: 14px; }
.planner-stop:not(:last-child)::before { content: ""; position: absolute; left: 16px; top: 34px; bottom: 0; width: 1px; background: var(--line); }
.planner-stop-index { width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; background: var(--accent); color: var(--accent-ink); font-weight: 950; z-index: 1; }
.planner-stop-body { border: 1px solid var(--line); border-radius: 17px; background: var(--surface); padding: 13px; }
.planner-travel, .planner-stop-time { color: var(--accent); font-size: 10px; font-weight: 850; }
.planner-stop-body h4 { margin: 7px 0 0; font-size: 16px; }
.planner-stop-body p { color: var(--muted); margin: 4px 0 0; }
.planner-stop-actions { display: flex; gap: 7px; margin-top: 10px; }
.planner-stop-actions button { border: 1px solid var(--line); border-radius: 999px; background: transparent; color: var(--ink); padding: 7px 9px; font-size: 10px; font-weight: 850; }
.planner-unplanned { margin-top: 12px; color: var(--muted); }
.planner-unplanned summary { color: var(--ink); font-weight: 800; }
.planner-estimate-note { color: var(--muted); font-size: 10px; line-height: 1.45; }
.planner-loading, .planner-empty { border: 1px dashed var(--line); border-radius: 18px; padding: 20px; text-align: center; color: var(--muted); }

.v3-map-sheet { max-height: 86dvh; }
.v3-map { height: min(62dvh,560px); }
.app-toast { position: fixed; z-index: 160; left: 50%; bottom: 96px; transform: translateX(-50%); background: var(--ink); color: var(--bg); border-radius: 999px; padding: 10px 14px; font-size: 11px; font-weight: 900; box-shadow: var(--shadow); }

.v3-bottom-nav { grid-template-columns: repeat(5,1fr); }
.v3-bottom-nav .nav-item { position: relative; }
.list-badge { position: absolute; top: 1px; left: calc(50% + 7px); min-width: 16px; height: 16px; border-radius: 999px; display: grid; place-items: center; padding: 0 4px; background: var(--accent); color: var(--accent-ink); font-size: 8px; }

@media (min-width:760px) {
  .v3-home-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .v3-rail { grid-auto-columns: 260px; }
  .category-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .v3-sheet { width: min(760px,92vw); margin-inline: auto; border-radius: 28px 28px 0 0; }
}

@media (max-width:420px) {
  .v3-hero h1 { font-size: 43px; }
  .category-parent { min-height: 103px; padding: 14px; }
  .planner-time-grid { grid-template-columns: 1fr; }
  .movie-summary { grid-template-columns: 56px minmax(0,1fr) auto; }
  .movie-summary img, .movie-poster-placeholder { width: 56px; height: 82px; }
}
