:root {
  color-scheme: dark;
  --bg: #0d0d0e;
  --panel: #171718;
  --panel-soft: #202123;
  --line: #303134;
  --text: #f4f4f5;
  --muted: #a7a8ad;
  --subtle: #73757d;
  --accent: #2fb7e9;
  --accent-2: #f2b705;
  --green: #76d49b;
  --danger: #ff6b6b;
}

* {
  box-sizing: border-box;
}

[hidden] {
  display: none !important;
}

html {
  height: 100%;
  overflow: hidden;
}

body {
  margin: 0;
  min-width: 320px;
  height: 100%;
  overflow: hidden;
  background: var(--bg);
  color: var(--text);
  font-family:
    Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
    sans-serif;
}

button,
input,
select {
  font: inherit;
}

button {
  cursor: pointer;
}

.landing-page {
  position: fixed;
  inset: 0;
  z-index: 90;
  display: grid;
  grid-template-rows: auto 1fr auto;
  min-height: 100dvh;
  overflow: hidden;
  background: #f6f3ed;
  color: #12232d;
}

body.landing-active .app-shell {
  visibility: hidden;
}

body.trip-basics-active .app-shell {
  visibility: hidden;
}


body.trip-preferences-active .app-shell { visibility:hidden; }

.trip-basics-page {
  position: fixed;
  inset: 0;
  z-index: 91;
  min-height: 100dvh;
  overflow-y: auto;
  background: #ffffff;
  color: #14242c;
  color-scheme: light;
}

.trip-basics-header {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  width: min(1180px, calc(100% - 48px));
  margin: 0 auto;
  padding: 24px 0;
}

.trip-basics-back {
  justify-self: start;
  width: 42px;
  height: 42px;
  border: 1px solid #cfd5d5;
  border-radius: 50%;
  background: transparent;
  color: #19313b;
  font-size: 20px;
}

.trip-basics-step { justify-self: end; color: #748188; font-size: 11px; font-weight: 800; letter-spacing: 1.6px; }
.trip-basics-main { width:min(610px,calc(100% - 48px)); margin:28px auto 72px; }
.trip-basics-form { display:grid; gap:0; padding:6px 0; }
.trip-basics-section { display:grid; grid-template-columns:44px 1fr; gap:16px; padding:23px 0 27px; border-bottom:1px solid #e1e4e3; }
.trip-basics-number { display:grid; place-items:center; width:36px; height:36px; border-radius:50%; background:#e4f1f3; color:#1f83a6; font-size:11px; font-weight:850; }
.trip-basics-fields { display:grid; gap:18px; }
.trip-basics-question h2 { margin:0 0 4px; font-size:20px; letter-spacing:-.03em; }
.trip-basics-question p { margin:0; color:#7b878c; font-size:13px; }
.trip-date-grid { display:grid; grid-template-columns:1fr auto 1fr; align-items:end; gap:11px; }
.trip-date-grid > span { padding-bottom:14px; color:#97a1a5; }
.trip-date-grid label { display:grid; gap:8px; color:#526168; font-size:12px; font-weight:700; }
.trip-date-grid input,.trip-district-field select,.trip-district-field input { width:100%; height:46px; border:1px solid #cbd2d3; border-radius:11px; background:#fff; color:#1c2d35; padding:0 12px; outline:none; color-scheme:light; }
.trip-date-grid input { position:relative; z-index:2; cursor:pointer; pointer-events:auto; appearance:auto; -webkit-appearance:auto; }
.trip-date-grid input::-webkit-calendar-picker-indicator { cursor:pointer; opacity:1; }
.trip-date-grid input:focus,.trip-district-field select:focus,.trip-district-field input:focus { border-color:#2786a5; box-shadow:0 0 0 3px rgba(39,134,165,.12); }
.trip-anchor-time-grid { display:grid; grid-template-columns:1fr 1fr; gap:11px; }
.trip-anchor-time-single { grid-template-columns:minmax(180px, 1fr); max-width:50%; }
.trip-anchor-time-grid label { display:grid; gap:8px; color:#526168; font-size:12px; font-weight:700; }
.trip-anchor-time-grid input { width:100%; height:46px; border:1px solid #cbd2d3; border-radius:11px; background:#fff; color:#1c2d35; padding:0 12px; outline:none; color-scheme:light; }
.trip-anchor-time-grid input:focus { border-color:#2786a5; box-shadow:0 0 0 3px rgba(39,134,165,.12); }
.localized-time-input { position:relative; display:block; }
.localized-time-input input { display:block; }
.localized-time-value { display:none; position:absolute; inset:0 40px 0 13px; align-items:center; color:#1c2d35; font-size:13px; font-weight:700; pointer-events:none; }
:is(html[lang="en"], html[lang="ja"], html[lang="zh"], html[lang="zh-TW"]) .localized-time-input input { color:transparent; }
:is(html[lang="en"], html[lang="ja"], html[lang="zh"], html[lang="zh-TW"]) .localized-time-input input::-webkit-datetime-edit { color:transparent; }
:is(html[lang="en"], html[lang="ja"], html[lang="zh"], html[lang="zh-TW"]) .localized-time-value { display:flex; }
.trip-return-question { margin-top:5px; }
.trip-basics-question h3 { margin:0; color:#192d36; font-size:15px; }
.trip-no-stay-base { display:grid; gap:10px; padding:14px; border:1px solid #b9d7df; border-radius:14px; background:#f3fafb; }
.trip-base-periods { display:grid; gap:12px; }
.trip-companion-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:8px; }
.trip-companion-grid label { position:relative; display:grid; place-items:center; gap:7px; min-height:98px; border:1px solid #cbd2d3; border-radius:13px; background:#fff; color:#57656b; cursor:pointer; }
.trip-companion-grid input { position:absolute; opacity:0; pointer-events:none; }
.trip-companion-grid label:has(input:checked) { border-color:#1f83a6; background:#e7f3f5; color:#166c88; box-shadow:0 0 0 2px rgba(31,131,166,.12); }
.trip-companion-icon { font-size:26px; font-family:Georgia,serif; line-height:1; }.trip-companion-grid b { font-size:12px; }
.trip-district-field { position:relative; display:flex; align-items:center; }
.trip-district-field > span { position:absolute; z-index:1; left:15px; color:#2582a0; font-size:19px; }
  .trip-district-field select,.trip-district-field input { padding-left:45px; appearance:auto; }
  .trip-place-results { margin-top:7px; overflow:hidden; border:1px solid #d5dddf; border-radius:12px; background:#fff; box-shadow:0 12px 28px rgba(20,42,53,.12); }
  .trip-place-result { display:block; width:100%; padding:11px 14px; border:0; border-bottom:1px solid #edf0f1; background:#fff; text-align:left; cursor:pointer; }
  .trip-place-result:last-child { border-bottom:0; }
  .trip-place-result:hover,.trip-place-result:focus { background:#edf7f9; outline:none; }
  .trip-place-result b,.trip-place-result span { display:block; }
  .trip-place-result b { color:#172a33; font-size:13px; }
  .trip-place-result span { margin-top:3px; color:#718087; font-size:11px; }
  .trip-place-results-state { margin:0; padding:12px 14px; color:#718087; font-size:12px; }
  .trip-no-accommodation { display:flex; align-items:center; gap:8px; width:max-content; color:#52636b; font-size:13px; cursor:pointer; }
  .trip-no-accommodation input { width:17px; height:17px; accent-color:#2185a4; }
  .trip-accommodation-periods { display:grid; gap:12px; }
  .trip-accommodation-period { position:relative; display:grid; gap:9px; padding:14px; border:1px solid #d7dfe1; border-radius:14px; background:#f9fbfb; }
  .trip-accommodation-period-head { display:flex; align-items:center; justify-content:space-between; }
  .trip-accommodation-period-head b { font-size:13px; }
  .trip-accommodation-remove { border:0; background:transparent; color:#879399; font-size:12px; }
  .trip-accommodation-dates { display:grid; grid-template-columns:1fr auto 1fr; align-items:end; gap:10px; }
  .trip-accommodation-dates label { display:grid; gap:5px; color:#596970; font-size:11px; text-align:left; }
  .trip-accommodation-dates input { width:100%; height:42px; border:1px solid #cbd2d3; border-radius:10px; background:#fff; color:#1c2d35; padding:0 10px; color-scheme:light; }
  .trip-accommodation-dates > span { padding-bottom:11px; color:#95a0a5; }
  .trip-accommodation-add { justify-self:start; padding:9px 13px; border:1px dashed #8eb8c5; border-radius:10px; background:#f2f9fa; color:#1d7896; font-size:12px; font-weight:700; }
  .trip-accommodation-help { color:#829096; font-size:11px; }
  .trip-multi-city-question { display:grid; gap:12px; margin-top:12px; padding-top:20px; border-top:1px solid #dfe5e6; }
  .trip-choice-grid-compact { max-width:360px; }
  .trip-transport-plans { display:grid; gap:10px; padding:14px; border:1px solid #b9d7df; border-radius:14px; background:#f3fafb; }
  .trip-transport-guide { margin:0; color:#596970; font-size:12px; }
  #tripTransportSegments { display:grid; gap:10px; }
  .trip-transport-card { display:grid; gap:12px; padding:14px; border:1px solid #d8e2e4; border-radius:10px; background:#fff; }
  .trip-transport-type-field { display:grid; gap:6px; color:#596970; font-size:11px; }
  .trip-transport-type { width:100%; height:42px; padding:0 10px; border:1px solid #cbd2d3; border-radius:9px; background:#fff; color:#1c2d35; font:inherit; }
  .trip-transport-route { display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); align-items:start; gap:10px; }
  .trip-transport-route > span { padding-top:13px; color:#829096; }
  .trip-transport-actions { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
  .trip-transport-reserved { display:flex; align-items:center; gap:7px; color:#40535c; font-size:12px; cursor:pointer; }
  .trip-transport-reserved input { width:16px; height:16px; accent-color:#2185a4; }
  .trip-booking-link,.trip-booking-links a { color:#16728e; font-size:12px; font-weight:800; text-decoration:none; }
  .trip-booking-links { display:flex; gap:9px; }
  .trip-transport-datetime { grid-column:1 / -1; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; padding-top:10px; border-top:1px solid #e1e8e9; }
  .trip-transport-datetime[hidden] { display:none; }
  .trip-transport-datetime label { display:grid; gap:6px; color:#596970; font-size:11px; }
  .trip-transport-datetime input { width:100%; height:40px; padding:0 10px; border:1px solid #cbd2d3; border-radius:9px; background:#fff; color:#1c2d35; font:inherit; }
  .trip-transport-duration { align-self:end; min-height:40px; padding:12px; border-radius:9px; background:#e9f6f8; color:#16728e; font-size:12px; font-weight:800; }
  .trip-transport-duration:empty { display:none; }
  @media (max-width:700px) { .trip-transport-route,.trip-transport-datetime { grid-template-columns:1fr; } .trip-transport-route > span { display:none; } }
  .trip-base-region-field { display:grid; gap:7px; color:#596970; font-size:11px; }
  .trip-base-region { width:100%; height:44px; padding:0 38px 0 12px; border:1px solid #cbd2d3; border-radius:10px; background:#fff; color:#1c2d35; font:inherit; font-size:13px; font-weight:700; }
  .trip-base-region:focus { outline:2px solid rgba(33,133,164,.18); border-color:#2185a4; }
  .trip-accommodation-periods-disabled { opacity:.38; pointer-events:none; }
  @media (max-width:560px) { .trip-accommodation-dates,.trip-anchor-time-grid { grid-template-columns:1fr; } .trip-anchor-time-single { max-width:none; } .trip-accommodation-dates > span { display:none; } }
.trip-basics-submit { justify-self:end; display:flex; align-items:center; justify-content:space-between; gap:38px; min-width:195px; margin-top:24px; padding:14px 20px; border:0; border-radius:999px; background:#142a35; color:#fff; font-size:14px; font-weight:800; box-shadow:0 10px 24px rgba(20,42,53,.14); }
.trip-basics-submit:hover { background:#1f83a6; transform:translateY(-1px); }
.trip-basics-submit:disabled { cursor:wait; opacity:.58; transform:none; }
.trip-basics-status { min-height:20px; margin:16px 0 -8px 60px; color:#b4564b; font-size:12px; }

@media (max-width: 820px) {
  .trip-basics-main { margin-top:28px; }
}

@media (max-width: 560px) {
  .trip-basics-header,.trip-basics-main { width:calc(100% - 30px); }
  .trip-basics-header { padding:16px 0; }.trip-basics-header .landing-brand { font-size:19px; }
  .trip-basics-step { display:none; }.trip-basics-main { margin-top:16px; }
  .trip-basics-section { grid-template-columns:1fr; gap:14px; }
  .trip-date-grid { grid-template-columns:1fr; }.trip-date-grid > span { display:none; }
  .trip-companion-grid { grid-template-columns:repeat(2,1fr); }
  .trip-basics-submit { width:100%; }
}

.landing-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: min(1460px, calc(100% - 64px));
  margin: 0 auto;
  padding: 24px 0;
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.landing-brand {
  display: inline-flex;
  align-items: center;
  gap: 11px;
  color: #12232d;
  font-size: 25px;
  font-weight: 850;
  letter-spacing: -1.2px;
  text-decoration: none;
}

.landing-brand-mark {
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  border-radius: 12px 12px 12px 4px;
  background: #1f83a6;
  color: #fff;
  font-size: 19px;
  font-weight: 900;
  transform: rotate(-5deg);
}

.landing-nav,
.landing-actions {
  display: flex;
  align-items: center;
  gap: 12px;
}

.landing-auth-actions {
  display: flex;
  align-items: center;
  gap: 12px;
}

.landing-language {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-height: 46px;
  padding: 0 12px;
  border: 1px solid #d5dbdc;
  border-radius: 999px;
  background: rgba(255,255,255,.64);
  color: #31434b;
  transition: border-color .18s ease, background .18s ease, box-shadow .18s ease;
}

.landing-language:focus-within,
.landing-language:hover {
  border-color: #82afbd;
  background: #fff;
  box-shadow: 0 8px 22px rgba(18,35,45,.08);
}

.landing-language-icon { color: #1f83a6; font-size: 17px; font-weight: 900; }
.landing-language select {
  width: 76px;
  border: 0;
  outline: 0;
  background: transparent;
  color: #12232d;
  font: inherit;
  font-size: 13px;
  font-weight: 750;
  cursor: pointer;
}

.landing-nav button,
.landing-actions button {
  border: 0;
}

.landing-text-button {
  padding: 12px 14px;
  background: transparent;
  color: #24343c;
  font-weight: 700;
}

.landing-signup-button {
  padding: 12px 19px;
  border: 1px solid #a9b2b5 !important;
  border-radius: 999px;
  background: rgba(255,255,255,.45);
  color: #12232d;
  font-weight: 750;
}

.landing-profile {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 150px;
  padding: 7px 13px 7px 8px;
  border: 1px solid #ccd2d2;
  border-radius: 999px;
  background: rgba(255,255,255,.66);
  color: #12232d;
  text-align: left;
}

.landing-profile-avatar {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  flex: 0 0 auto;
  border-radius: 50%;
  background: #1f83a6;
  background-position: center;
  background-size: cover;
  color: #fff;
  font-size: 13px;
  font-weight: 850;
}

.landing-profile-copy { display: grid; min-width: 0; }
.landing-profile-copy strong { max-width: 112px; overflow: hidden; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.landing-profile-copy small { color: #738087; font-size: 10px; }

.landing-start-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 20px;
  min-width: 190px;
  padding: 17px 25px;
  border-radius: 999px;
  background: #12232d;
  color: #fff;
  font-weight: 800;
  box-shadow: 0 14px 28px rgba(18,35,45,.16);
  transition: transform .18s ease, background .18s ease;
}

.landing-start-button:hover { transform: translateY(-2px); background: #1f83a6; }
.landing-start-button-small { min-width: auto; padding: 12px 20px; box-shadow: none; }

.landing-hero {
  display: grid;
  grid-template-columns: minmax(430px, .85fr) minmax(520px, 1.15fr);
  align-items: center;
  gap: 5vw;
  width: min(1460px, calc(100% - 64px));
  margin: 0 auto;
  padding: 34px 0 56px;
}

.landing-copy { position: relative; z-index: 3; padding-left: clamp(0px, 3vw, 48px); }
.landing-kicker { display: flex; align-items: center; gap: 10px; margin: 0 0 22px; color: #287d96; font-size: 12px; font-weight: 850; letter-spacing: 2.4px; }
.landing-kicker span { width: 34px; height: 2px; background: #e99a45; }
.landing-copy h1 { margin: 0; font-size: clamp(54px, 5.4vw, 92px); line-height: .99; letter-spacing: -.065em; }
.landing-copy h1 em { color: #1f83a6; font-family: Georgia, serif; font-weight: 500; }
.landing-description { max-width: 570px; margin: 28px 0 32px; color: #56666d; font-size: clamp(17px, 1.35vw, 22px); line-height: 1.65; }
.landing-note { margin: 18px 0 0 7px; color: #899398; font-size: 13px; }

.landing-visual {
  position: relative;
  height: min(650px, 69vh);
  min-height: 500px;
  overflow: hidden;
  border-radius: 48px 48px 160px 48px;
  background: linear-gradient(155deg, #a9dce3 0 48%, #f4bd63 48% 100%);
  box-shadow: 0 36px 90px rgba(29,71,83,.16);
}

.landing-sun { position: absolute; top: 70px; right: 80px; width: 90px; height: 90px; border-radius: 50%; background: #fff3c4; box-shadow: 0 0 0 24px rgba(255,243,196,.22); }
.landing-cloud { position: absolute; width: 170px; height: 52px; border-radius: 999px; background: rgba(255,255,255,.72); filter: blur(1px); }
.landing-cloud::before,.landing-cloud::after { content:""; position:absolute; bottom:0; border-radius:50%; background:inherit; }
.landing-cloud::before { left:30px; width:75px; height:75px; }.landing-cloud::after { right:25px; width:58px; height:58px; }
.landing-cloud-one { top: 125px; left: 80px; }.landing-cloud-two { top: 230px; right: -40px; transform: scale(.75); }
.landing-arch { position: absolute; bottom: -65px; border-radius: 180px 180px 0 0; }
.landing-arch-back { right: 4%; width: 57%; height: 74%; background: #174f69; }
.landing-arch-front { right: 13%; width: 39%; height: 62%; background: linear-gradient(150deg,#f39256,#d86c4e); box-shadow: inset 30px 15px 55px rgba(255,255,255,.12); }
.landing-path { position:absolute; left:5%; bottom:12%; width:72%; height:32%; border:4px dashed rgba(255,255,255,.8); border-left-color:transparent; border-bottom-color:transparent; border-radius:50%; transform:rotate(-7deg); }
.landing-pin { position:absolute; z-index:3; display:grid; gap:2px; min-width:132px; padding:13px 16px; border-radius:15px; background:#fff; box-shadow:0 14px 32px rgba(25,53,62,.2); }
.landing-pin::before { content:""; position:absolute; left:-8px; top:18px; width:16px; height:16px; border-radius:50%; background:#e9614f; box-shadow:0 0 0 6px rgba(255,255,255,.8); }
.landing-pin b { font-size:14px; }.landing-pin span { color:#899398; font-size:11px; }
.landing-pin-one { left:12%; top:42%; }.landing-pin-two { right:7%; top:31%; }
.landing-place-card { position:absolute; z-index:4; right:7%; bottom:8%; display:flex; align-items:center; gap:13px; width:310px; padding:15px; border-radius:22px; background:rgba(255,255,255,.94); box-shadow:0 20px 48px rgba(25,53,62,.25); }
.landing-place-card > span:last-child { display:grid; gap:4px; }.landing-place-card small { color:#7a888e; }
.landing-place-photo { display:grid; place-items:center; width:66px; height:66px; flex:0 0 auto; border-radius:17px; background:linear-gradient(145deg,#f0a54c,#e75f4e); color:#fff; font-size:30px; }
.landing-footer { display:flex; justify-content:space-between; width:min(1460px,calc(100% - 64px)); margin:0 auto; padding:0 0 24px; color:#8a9498; font-size:11px; font-weight:700; letter-spacing:1.7px; }

@media (max-width: 900px) {
  .landing-header,.landing-hero,.landing-footer { width: min(100% - 32px, 720px); }
  .landing-signup-button { display:none; }
  .landing-hero { grid-template-columns:1fr; padding-top:30px; overflow-y:auto; }
  .landing-copy { padding:0 6px; }
  .landing-copy h1 { font-size:clamp(48px,12vw,72px); }
  .landing-visual { height:440px; min-height:440px; }
}

@media (max-width: 560px) {
  .landing-header { padding:16px 0; }
  .landing-brand { font-size:21px; }.landing-brand-mark { width:34px; height:34px; }
  .landing-text-button { display:none; }
  .landing-language { min-height: 40px; padding: 0 9px; }
  .landing-language select { width: 60px; font-size: 12px; }
  .landing-language-icon { display:none; }
  .landing-start-button-small { padding:10px 15px; font-size:13px; }
  .landing-hero { gap:32px; padding:24px 0 36px; }
  .landing-copy h1 { font-size:46px; }
  .landing-description { margin:20px 0 24px; font-size:16px; }
  .landing-actions { align-items:flex-start; flex-direction:column; }
  .landing-visual { height:350px; min-height:350px; border-radius:30px 30px 90px 30px; }
  .landing-place-card { right:5%; width:260px; }.landing-pin-two { display:none; }
}

.app-shell {
  display: grid;
  grid-template-columns: 224px minmax(310px, .86fr) minmax(280px, .72fr) minmax(350px, 1.05fr);
  height: 100vh;
  overflow: hidden;
  transition: grid-template-columns 260ms ease;
}

.trip-preferences-page { position:fixed; inset:0; z-index:91; min-height:100dvh; overflow-y:auto; background:#fff; color:#14242c; color-scheme:light; }
.trip-preferences-main { width:min(820px,calc(100% - 48px)); margin:28px auto 72px; }
.trip-preferences-form { display:grid; gap:20px; }
.trip-preferences-title span { color:#a95070; font-size:11px; font-weight:800; letter-spacing:.12em; }
.trip-preferences-title h1 { margin:6px 0; font-size:30px; letter-spacing:-.04em; }
.trip-preferences-title p { margin:0; color:#765f68; }
.trip-preferences-form footer { display:flex; justify-content:flex-end; gap:9px; }
.trip-preferences-form footer button { min-height:46px; padding:0 18px; border:0; border-radius:11px; color:#fff; background:#a95070; font-weight:800; }
.trip-preferences-form footer .secondary { border:1px solid #d9c5cc; color:#765f68; background:#fff; }

.app-shell.schedule-mode {
  grid-template-columns: 224px minmax(0, 1fr);
}

.app-shell.schedule-mode .create-recommendations {
  display: none;
}

.create-recommendations {
  display: grid;
  grid-template-rows: auto auto auto auto auto minmax(0, 1fr) auto;
  min-width: 0;
  height: 100vh;
  overflow: hidden;
  padding: 24px 16px 18px;
  border-left: 1px solid #282a2d;
  background: #f7f8f8;
  color: #17262e;
}

.create-recommendations-header { display:flex; align-items:flex-end; justify-content:space-between; gap:12px; padding:2px 4px 14px; }
.create-recommendations-header p { margin:0 0 5px; color:#2582a0; font-size:9px; font-weight:850; letter-spacing:1.5px; }
.create-recommendations-header h2 { margin:0; font-size:23px; letter-spacing:-.04em; }
.create-recommendations-header > span { display:grid; place-items:center; min-width:30px; height:30px; border-radius:999px; background:#dceef2; color:#1f7895; font-size:12px; font-weight:850; }
.create-recommendations-summary { margin:0 4px 15px; color:#6d7a80; font-size:12px; line-height:1.55; }
.create-recommendation-filters { display:flex; flex-wrap:wrap; align-content:flex-start; gap:6px; margin:0 3px 13px; padding-bottom:2px; overflow:visible; }
.create-recommendation-filter { flex:0 0 auto; padding:7px 10px; border:1px solid #d5dfe1; border-radius:999px; background:#fff; color:#65747a; font-size:10px; font-weight:750; white-space:nowrap; }
.create-recommendation-filter[aria-pressed="true"] { border-color:#2582a0; background:#e2f2f5; color:#176f8b; }
.create-price-filters { display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin:0 3px 13px; padding:10px 0 0; border-top:1px solid #e2e7e8; }
.create-price-filters[hidden] { display:none; }
.create-price-filter { flex:0 0 auto; min-height:28px; padding:6px 9px; border:1px solid #d8dfe1; border-radius:999px; background:#fff; color:#68767b; font-size:10px; font-weight:750; white-space:nowrap; }
.create-price-filter:hover,.create-price-filter:focus-visible { border-color:#bc7891; color:#8f405d; }
.create-price-filter[aria-pressed="true"] { border-color:#a95070; background:#a95070; color:#fff; box-shadow:0 4px 10px rgba(169,80,112,.18); }
.selected-only-filter { border-color:rgba(169,80,112,.38); color:#94425f; }
.selected-only-filter[aria-pressed="true"] { border-color:#a95070; background:#a95070; color:#fff; box-shadow:0 5px 12px rgba(169,80,112,.2); }
.create-recommendations-list { display:grid; grid-auto-rows:max-content; align-content:start; gap:9px; min-height:0; overflow-y:auto; padding:0 3px 16px; scrollbar-width:thin; }
.create-recommendations-list,
.location-map-search-results,
.schedule-scroll {
  scrollbar-width: thin;
  scrollbar-color: rgba(169, 80, 112, .72) rgba(169, 80, 112, .08);
  scrollbar-gutter: stable;
}

.create-recommendations-list::-webkit-scrollbar,
.location-map-search-results::-webkit-scrollbar,
.schedule-scroll::-webkit-scrollbar {
  width: 9px;
  height: 9px;
}

.create-recommendations-list::-webkit-scrollbar-track,
.location-map-search-results::-webkit-scrollbar-track,
.schedule-scroll::-webkit-scrollbar-track {
  margin-block: 5px;
  border-radius: 999px;
  background: rgba(169, 80, 112, .08);
}

.create-recommendations-list::-webkit-scrollbar-thumb,
.location-map-search-results::-webkit-scrollbar-thumb,
.schedule-scroll::-webkit-scrollbar-thumb {
  min-height: 42px;
  border: 2px solid transparent;
  border-radius: 999px;
  background: linear-gradient(180deg, #c86b8d, #9f4969) padding-box;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .24);
}

.create-recommendations-list::-webkit-scrollbar-thumb:hover,
.location-map-search-results::-webkit-scrollbar-thumb:hover,
.schedule-scroll::-webkit-scrollbar-thumb:hover {
  background: linear-gradient(180deg, #d47798, #873b58) padding-box;
}

.create-recommendations-list::-webkit-scrollbar-corner,
.location-map-search-results::-webkit-scrollbar-corner,
.schedule-scroll::-webkit-scrollbar-corner {
  background: transparent;
}
.create-recommendation-card { display:grid; grid-template-columns:78px minmax(0,1fr) 20px; align-items:center; align-self:start; gap:12px; width:100%; min-height:92px; padding:9px; border:1px solid #e0e4e4; border-radius:15px; background:#fff; color:#17262e; text-align:left; transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease; }
.create-recommendation-card:hover { border-color:#8fc4d3; box-shadow:0 9px 22px rgba(30,65,76,.1); transform:translateY(-1px); }
.create-recommendation-card.detail-active { border-color:#8f405d; box-shadow:0 0 0 3px rgba(168,78,110,.2),0 10px 24px rgba(111,58,78,.13); }
.create-recommendation-card.selected { border-color:#2582a0; background:#eaf6f8; box-shadow:0 0 0 2px rgba(37,130,160,.12); }
.create-recommendation-card.selected.detail-active { border-color:#8f405d; box-shadow:0 0 0 3px rgba(168,78,110,.24),0 10px 24px rgba(111,58,78,.15); }
.create-recommendation-card.selected > b { display:grid; place-items:center; width:20px; height:20px; border-radius:50%; background:#2582a0; color:#fff; }
.create-recommendation-image { display:grid; place-items:center; width:78px; height:72px; border-radius:11px; background:#dbeff1 center/cover no-repeat; color:#2582a0; font-size:25px; }
.create-recommendation-copy { display:grid; min-width:0; gap:3px; }
.create-recommendation-copy strong { overflow:hidden; font-size:14px; text-overflow:ellipsis; white-space:nowrap; }
.create-recommendation-copy small { display:flex; align-items:center; flex-wrap:wrap; gap:5px; color:#2582a0; font-size:10px; font-weight:750; }
.create-photo-spot-badge { display:inline-flex; align-items:center; padding:2px 6px; border-radius:999px; background:#f5dce6; color:#9b3f62; font-size:9px; font-style:normal; font-weight:850; line-height:1.35; }
.create-recommendation-copy span { overflow:hidden; color:#7b878c; font-size:10px; line-height:1.35; text-overflow:ellipsis; white-space:nowrap; }
.create-recommendation-card > b { color:#9ba5a8; font-size:15px; }
.create-recommendation-card-add { display:grid; place-items:center; width:24px; height:24px; border-radius:50%; cursor:pointer; }
.create-recommendation-card-add:hover { background:rgba(168,78,110,.1); color:#8f405d; }
.create-recommendation-card-add:focus-visible { outline:2px solid #a84e6e; outline-offset:2px; }
.create-recommendation-card-add[aria-disabled="true"] { cursor:wait; opacity:.55; }
.create-recommendations-empty { padding:28px 12px; color:#7b878c; font-size:12px; text-align:center; }
.create-place-search {
  position: relative;
  top: auto;
  left: auto;
  z-index: 3;
  grid-template-columns: minmax(0, 1fr) auto;
  width: auto;
  margin: 0 3px 14px;
  padding: 12px;
  border: 1px solid rgba(137,84,103,.18);
  border-radius: 15px;
  background: rgba(255,255,255,.68);
}
.create-place-search-heading {
  grid-column: 1 / -1;
  display: grid;
  gap: 2px;
  margin-bottom: 3px;
}
.create-place-search-heading strong { color:#4d303a; font-size:13px; }
.create-place-search-heading small { color:#8a737b; font-size:10px; }
.create-place-search input {
  box-shadow: none;
  border-color: rgba(137,84,103,.22);
  background: #fff;
}
.create-place-search > button[type="submit"] {
  border-color: #a95070;
  background: #a95070;
  box-shadow: none;
}
.create-place-search .location-map-search-results {
  position: absolute;
  top: calc(100% - 12px);
  right: 12px;
  left: 12px;
  z-index: 30;
  max-height: min(280px, 38vh);
  border-radius: 12px;
  box-shadow: 0 14px 30px rgba(92,53,67,.16);
}
.create-schedule-action-wrap {
  position: relative;
  z-index: 1;
  padding: 14px 3px 0;
  border-top: 1px solid #dfe6e7;
  background: #f7f8f8;
}
.app-shell:not(.schedule-mode)[data-itinerary-type="attraction"] .create-schedule-action-wrap {
  position: sticky;
  bottom: 0;
  align-self: end;
  width: 100%;
  margin-top: auto;
}
.app-shell:not(.schedule-mode)[data-itinerary-type="attraction"] .create-recommendations-list {
  min-height: 0;
  overflow-y: auto;
}
.app-shell:not(.schedule-mode)[data-itinerary-type="restaurant"] .create-recommendations {
  grid-template-rows: auto auto auto auto auto minmax(0, 1fr);
  padding-bottom: 18px;
}
.app-shell:not(.schedule-mode)[data-itinerary-type="restaurant"] .create-schedule-action-wrap { display: none; }
.app-shell:not(.schedule-mode)[data-itinerary-type="restaurant"] .create-recommendations-list { padding-bottom: 4px; }
.create-schedule-action { display:grid; grid-template-columns:38px minmax(0,1fr) 24px; align-items:center; gap:11px; width:100%; min-height:68px; padding:10px 14px; border:0; border-radius:17px; background:linear-gradient(135deg,#123441,#1d7893); color:#fff; text-align:left; box-shadow:0 12px 28px rgba(18,52,65,.22); transition:transform .18s ease,box-shadow .18s ease,filter .18s ease; }
.create-schedule-action:hover,.create-schedule-action:focus-visible { outline:0; filter:brightness(1.08); transform:translateY(-2px); box-shadow:0 16px 32px rgba(18,52,65,.3); }
.create-schedule-action:disabled { cursor:wait; filter:saturate(.55); opacity:.7; transform:none; }
.create-schedule-action-icon { display:grid; place-items:center; width:38px; height:38px; border-radius:12px; background:rgba(255,255,255,.16); color:#aeeaff; font-size:18px; }
.create-schedule-action-copy { display:grid; gap:3px; min-width:0; }
.create-schedule-action-copy strong { font-size:15px; letter-spacing:-.02em; }
.create-schedule-action-copy small { overflow:hidden; color:#c9e4eb; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.create-schedule-action-arrow { font-size:20px; font-weight:800; text-align:right; }

.preference-survey-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.preference-survey-question { display:grid; gap:8px; padding:14px; border:1px solid rgba(137,84,103,.17); border-radius:14px; background:#fff; }
.preference-survey-question strong { font-size:14px; }
.preference-survey-question small { color:#806d74; }
.preference-score-options { display:grid; grid-template-columns:repeat(5,1fr); gap:5px; }
.preference-score-options label { position:relative; }
.preference-score-options input { position:absolute; opacity:0; pointer-events:none; }
.preference-score-options span { display:grid; min-height:34px; place-items:center; border:1px solid #dfcbd2; border-radius:9px; color:#765f68; cursor:pointer; }
.preference-score-options input:checked + span { border-color:#a95070; color:#fff; background:#a95070; box-shadow:0 0 0 2px rgba(169,80,112,.14); }
.preference-survey-timing { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.preference-survey-timing label { display:grid; gap:7px; font-size:13px; font-weight:700; }
.preference-survey-timing select,.preference-survey-timing input { min-height:42px; padding:8px 10px; border:1px solid #d9c5cc; border-radius:10px; background:#fff; }
@media (max-width:640px) { .preference-survey-grid,.preference-survey-timing { grid-template-columns:1fr; } }

/* Create-trip palette: soft pink ink wash */
.app-shell:has(.nav-item[data-page="create-trip"].active) {
  --accent: #c45f7d;
  --create-ink: #382b31;
  --create-muted: #7d6870;
  --create-pink: #c45f7d;
  --create-pink-deep: #8f405d;
  --create-paper: #fbf7f6;
  --create-line: rgba(137, 84, 103, .2);
}

.app-shell:has(.nav-item[data-page="create-trip"].active) .chat-area {
  color: var(--create-ink);
  background:
    radial-gradient(ellipse at 18% 20%, rgba(226, 151, 174, .22) 0 8%, transparent 29%),
    radial-gradient(ellipse at 78% 78%, rgba(190, 105, 135, .13) 0 7%, transparent 27%),
    linear-gradient(115deg, rgba(255,255,255,.54), transparent 44%),
    var(--create-paper);
}

.app-shell:has(.nav-item[data-page="create-trip"].active) .chat-area::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  opacity: .34;
  background-image:
    repeating-linear-gradient(8deg, rgba(88,57,68,.025) 0 1px, transparent 1px 7px),
    radial-gradient(circle at 34% 58%, rgba(166,78,111,.16) 0 1px, transparent 2px);
  background-size: auto, 19px 19px;
  mix-blend-mode: multiply;
}

.app-shell:has(.nav-item[data-page="create-trip"].active) .chat-area > * {
  position: relative;
  z-index: 1;
}

.app-shell:has(.nav-item[data-page="create-trip"].active) .topbar {
  border-bottom: 1px solid rgba(137,84,103,.12);
  background: rgba(255,250,249,.7);
  backdrop-filter: blur(10px);
}

.app-shell:has(.nav-item[data-page="create-trip"].active) .chat-title,
.app-shell:has(.nav-item[data-page="create-trip"].active) .welcome h1 {
  color: #31262b;
}

.app-shell:has(.nav-item[data-page="create-trip"].active) .trip-title-editable:hover,
.app-shell:has(.nav-item[data-page="create-trip"].active) .trip-title-editable:focus-visible {
  color: var(--create-pink-deep);
}

.app-shell:has(.nav-item[data-page="create-trip"].active) .welcome p {
  color: var(--create-muted);
}

.app-shell:has(.nav-item[data-page="create-trip"].active) .stamp {
  background:
    radial-gradient(circle at 69% 31%, #a43f62 0 5px, transparent 6px),
    radial-gradient(ellipse at 38% 36%, rgba(255,255,255,.62), transparent 42%),
    linear-gradient(158deg, #f6d6df 0%, #dda2b5 48%, #eee7e3 49%, #d8cbc7 100%);
  box-shadow: 0 18px 48px rgba(143,64,93,.2);
}

.app-shell:has(.nav-item[data-page="create-trip"].active) .stamp span {
  filter: sepia(.18) saturate(.72) hue-rotate(290deg);
}

.app-shell:has(.nav-item[data-page="create-trip"].active) .message {
  border-color: var(--create-line);
  background: rgba(255,252,251,.78);
  box-shadow: 0 8px 24px rgba(87,51,64,.06);
}

.app-shell:has(.nav-item[data-page="create-trip"].active) .message.user {
  border-color: rgba(179,89,120,.28);
  background: rgba(246,220,228,.72);
}

.app-shell:has(.nav-item[data-page="create-trip"].active) .message strong,
.app-shell:has(.nav-item[data-page="create-trip"].active) .message p { color: var(--create-ink); }
.app-shell:has(.nav-item[data-page="create-trip"].active) .message-link { color: var(--create-pink-deep); }

.app-shell:has(.nav-item[data-page="create-trip"].active) .question-card {
  border-color: var(--create-line);
  background: rgba(255,250,249,.88);
  box-shadow: 0 14px 34px rgba(106,61,77,.08);
}

.app-shell:has(.nav-item[data-page="create-trip"].active) .option-grid button,
.app-shell:has(.nav-item[data-page="create-trip"].active) .guided-answer input {
  border-color: rgba(137,84,103,.22);
  background: rgba(255,255,255,.72);
  color: var(--create-ink);
}

.app-shell:has(.nav-item[data-page="create-trip"].active) .composer {
  border-color: rgba(143,64,93,.28);
  background: rgba(255,252,251,.86);
  box-shadow: 0 16px 40px rgba(102,54,72,.1);
  backdrop-filter: blur(12px);
}

.app-shell:has(.nav-item[data-page="create-trip"].active) .composer-dock {
  grid-template-columns: minmax(0, 1fr);
  margin-inline: clamp(10px, 1.5vw, 18px);
}

.app-shell:has(.nav-item[data-page="create-trip"].active) .composer input,
.app-shell:has(.nav-item[data-page="create-trip"].active) .composer-mode { color: var(--create-ink); }
.app-shell:has(.nav-item[data-page="create-trip"].active) .composer-mode { border-color:rgba(137,84,103,.2); background:#f7e9ed; }
.app-shell:has(.nav-item[data-page="create-trip"].active) .send-btn { background:#b85d7b; color:#fff7f9; }

.app-shell:has(.nav-item[data-page="create-trip"].active) .create-recommendations {
  border-left-color: rgba(137,84,103,.2);
  color: var(--create-ink);
  background:
    radial-gradient(ellipse at 88% 8%, rgba(222,145,168,.23), transparent 28%),
    linear-gradient(145deg, rgba(255,255,255,.6), transparent 52%),
    #f8f0f1;
}

.app-shell:has(.nav-item[data-page="create-trip"].active) .create-recommendations-header p,
.app-shell:has(.nav-item[data-page="create-trip"].active) .create-recommendation-copy small { color:var(--create-pink-deep); }
.app-shell:has(.nav-item[data-page="create-trip"].active) .create-recommendations-header > span { background:#efd5dd; color:#8f405d; }
.app-shell:has(.nav-item[data-page="create-trip"].active) .create-recommendations-summary { color:var(--create-muted); }
.app-shell:has(.nav-item[data-page="create-trip"].active) .create-recommendation-filter { border-color:rgba(137,84,103,.2); color:#765f68; background:rgba(255,255,255,.76); }
.app-shell:has(.nav-item[data-page="create-trip"].active) .create-recommendation-filter[aria-pressed="true"] { border-color:#b65b79; background:#f2dbe2; color:#843b56; }
.app-shell:has(.nav-item[data-page="create-trip"].active) .create-recommendation-card { border-color:rgba(137,84,103,.16); color:var(--create-ink); background:rgba(255,253,252,.84); }
.app-shell:has(.nav-item[data-page="create-trip"].active) .create-recommendation-card:hover { border-color:#ce8ca2; box-shadow:0 10px 24px rgba(111,58,78,.11); }
.app-shell:has(.nav-item[data-page="create-trip"].active) .create-recommendation-card.detail-active { border-color:#8f405d; box-shadow:0 0 0 3px rgba(168,78,110,.2),0 10px 24px rgba(111,58,78,.13); }
.app-shell:has(.nav-item[data-page="create-trip"].active) .create-recommendation-card.selected { border-color:#b65b79; background:rgba(247,220,228,.86); box-shadow:0 0 0 2px rgba(182,91,121,.12); }
.app-shell:has(.nav-item[data-page="create-trip"].active) .create-recommendation-card.selected.detail-active { border-color:#8f405d; box-shadow:0 0 0 3px rgba(168,78,110,.24),0 10px 24px rgba(111,58,78,.15); }
.app-shell:has(.nav-item[data-page="create-trip"].active) .create-recommendation-card.selected > b { background:#a84e6e; }
.app-shell:has(.nav-item[data-page="create-trip"].active) .create-recommendation-image { background-color:#efd9df; color:#a84e6e; }
.app-shell:has(.nav-item[data-page="create-trip"].active) .create-schedule-action-wrap {
  border-top-color: rgba(137,84,103,.18);
  background: #f8edef;
}
.app-shell:has(.nav-item[data-page="create-trip"].active) .create-schedule-action { background:linear-gradient(135deg,#5e3847,#a95070 58%,#c97591); box-shadow:0 12px 28px rgba(116,52,76,.25); }
.app-shell:has(.nav-item[data-page="create-trip"].active) .create-schedule-action-icon { color:#ffe4ec; }
.app-shell:has(.nav-item[data-page="create-trip"].active) .create-schedule-action-copy small { color:#f6d9e2; }

.app-shell:has(.nav-item[data-page="create-trip"].active) .sidebar {
  border-right-color: #4c303a;
  background:
    radial-gradient(ellipse at 50% 0%, rgba(190,91,125,.2), transparent 30%),
    linear-gradient(180deg, #35252b, #241b1f 72%);
}

.app-shell:has(.nav-item[data-page="create-trip"].active) .sidebar-toggle {
  border-color: #72505c;
  background: #432f36;
  color: #f8dfe7;
}

.app-shell:has(.nav-item[data-page="create-trip"].active) .nav-item:hover,
.app-shell:has(.nav-item[data-page="create-trip"].active) .nav-item:focus-visible {
  background: rgba(211,116,148,.11);
  color: #fff0f5;
}

.app-shell:has(.nav-item[data-page="create-trip"].active) .nav-item.active {
  background: linear-gradient(135deg, rgba(196,95,125,.32), rgba(196,95,125,.1));
  color: #f3b7ca;
  box-shadow: inset 3px 0 0 #d77e9b;
}

.app-shell:has(.nav-item[data-page="create-trip"].active) .discover.location-panel {
  background:
    radial-gradient(ellipse at 18% 20%, rgba(226,151,174,.22) 0 8%, transparent 29%),
    radial-gradient(ellipse at 78% 78%, rgba(190,105,135,.13) 0 7%, transparent 27%),
    linear-gradient(115deg, rgba(255,255,255,.54), transparent 44%),
    var(--create-paper);
}

.app-shell:has(.nav-item[data-page="create-trip"].active) .live-map-card {
  border-color: rgba(137,84,103,.28);
  background: var(--create-paper);
  box-shadow: 0 16px 38px rgba(92,53,67,.17);
}

.app-shell:has(.nav-item[data-page="create-trip"].active) .composer input::placeholder { color:#9a7f89; }
.app-shell:has(.nav-item[data-page="create-trip"].active) .chat-place-result { border-color:#785564; background:#402d35; }
.app-shell:has(.nav-item[data-page="create-trip"].active) .chat-place-result:hover,
.app-shell:has(.nav-item[data-page="create-trip"].active) .chat-place-result:focus-visible { border-color:#c86f8d; }
.trip-anchor-marker { position:relative; display:grid; place-items:center; width:36px; height:36px; border:2px solid #fff; border-radius:50% 50% 50% 7px; color:#fff; box-shadow:0 4px 11px rgba(15,35,44,.28); transform:rotate(-45deg); }
.trip-anchor-marker > span { font-size:8px; font-weight:900; transform:rotate(45deg); }
.trip-anchor-marker > strong { position:absolute; top:39px; left:16px; max-width:120px; padding:3px 6px; border-radius:6px; background:rgba(255,255,255,.95); color:#1a2c34; font-size:9px; font-weight:800; white-space:nowrap; box-shadow:0 3px 8px rgba(20,42,53,.14); transform:rotate(45deg) translateX(-4px); transform-origin:left top; }
.trip-anchor-start { background:#ef6b4e; }
.trip-anchor-end { background:#7b61a8; }
.trip-anchor-base { background:#2c9585; }
.trip-anchor-base > span { width:31px; text-align:center; line-height:1.05; white-space:normal; }
.trip-anchor-accommodation { background:#276f9b; }
.trip-anchor-meal-previous { background:#2f79b7; }
.trip-anchor-meal-next { background:#bf4e78; }
.trip-anchor-meal-previous,
.trip-anchor-meal-next {
  width:40px;
  height:40px;
  border-width:3px;
  box-shadow:0 5px 14px rgba(24,35,48,.25);
}
.trip-anchor-meal-previous > span,
.trip-anchor-meal-next > span {
  font-size:10px;
  letter-spacing:-.04em;
  text-shadow:0 1px 2px rgba(0,0,0,.18);
}
.trip-anchor-meal-previous > strong,
.trip-anchor-meal-next > strong {
  top:43px;
  left:18px;
  max-width:150px;
  padding:5px 9px;
  border:1px solid rgba(56,67,79,.1);
  border-radius:999px;
  color:#26323b;
  font-size:10px;
  letter-spacing:-.02em;
  box-shadow:0 4px 12px rgba(20,42,53,.16);
}

/* Attraction schedule uses the same route-board composition as the final itinerary. */
.app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-page {
  grid-template-columns:minmax(390px,480px) minmax(0,1fr);
  grid-template-rows:auto minmax(0,1fr);
  gap:0;
  padding:24px clamp(18px,4vw,72px) 30px;
  background:#fbf4f5;
}
.app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-route-day-tabs {
  grid-column:1 / -1;
  display:flex;
  width:100%;
  max-width:none;
  min-width:0;
  margin-bottom:14px;
  overflow-x:auto;
  overflow-y:hidden;
  border:1px solid #eadde1;
  border-radius:0 0 18px 18px;
  background:#fff;
  box-shadow:0 12px 30px rgba(83,40,56,.07);
  scrollbar-width:none;
}
.app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-route-day-tabs::-webkit-scrollbar { display:none; }
.schedule-route-day-tab {
  position:relative;
  flex:1 0 min(270px,42vw);
  min-height:82px;
  padding:12px 26px;
  display:grid;
  grid-template-columns:auto 1fr;
  grid-template-rows:auto auto;
  column-gap:14px;
  border:0;
  border-right:1px solid #eadde1;
  background:#fff;
  color:#382b31;
  text-align:left;
  cursor:pointer;
}
.schedule-route-day-tab:last-child { border-right:0; }
.schedule-route-day-tab > span { grid-row:1 / 3; align-self:center; padding:8px 9px; border-radius:7px; background:#f0f2f5; color:#718096; font-size:11px; font-weight:800; }
.schedule-route-day-tab strong { align-self:end; font-size:18px; }
.schedule-route-day-tab small { align-self:start; margin-top:4px; color:#89747c; font-size:11px; }
.schedule-route-day-tab.active { background:linear-gradient(135deg,#c45c80,#a94268); color:#fff; }
.schedule-route-day-tab.active::after { content:""; position:absolute; left:50%; bottom:-6px; width:12px; height:12px; background:#b64e73; transform:rotate(45deg); }
.schedule-route-day-tab.active > span { background:#fff; color:#b64e73; }
.schedule-route-day-tab.active small { color:#f7dce6; }
.app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-list-panel {
  grid-column:1;
  min-height:0;
  padding:26px 22px 18px;
  border:1px solid #eadde1;
  border-right:0;
  border-radius:18px 0 0 18px;
  background:#fffaf9;
  box-shadow:0 16px 44px rgba(83,40,56,.08);
  backdrop-filter:none;
}
.app-shell.schedule-mode[data-itinerary-type="attraction"] .map-panel {
  grid-column:2;
  min-height:0;
  border:1px solid #eadde1;
  border-radius:0 18px 18px 0;
  background:#dbe3e8;
  box-shadow:0 16px 44px rgba(83,40,56,.08);
}
.app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-toolbar { min-height:64px; margin:0 0 5px; padding:0 0 18px; border-bottom:1px solid #eadde1; }
.app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-toolbar h1 { font-size:22px; }
.app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-scroll { padding:5px 7px 0 0; }
.app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-day-heading { padding:12px 0 18px; border-bottom:0; }
.app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-day-heading > span { border-radius:6px; }
.app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-card { min-height:86px; border-radius:15px; box-shadow:0 4px 12px rgba(67,37,49,.07); }


@media (max-width: 1250px) {
  .app-shell { grid-template-columns:72px minmax(290px,.9fr) minmax(260px,.7fr) minmax(330px,1fr); }
}

@media (max-width: 980px) {
  .app-shell { grid-template-columns:72px minmax(300px,.9fr) minmax(330px,1fr); }
  .create-recommendations { display:none; }
}

#placeChatPanel {
  top: 0;
  right: 0;
  bottom: 0;
  width: min(42%, 430px);
  grid-template-rows: auto 132px auto minmax(0, 1fr);
  border: 0;
  border-left: 1px solid #d8e1e7;
  border-radius: 0;
  background: #ffffff;
  box-shadow: -12px 0 34px rgba(16, 36, 48, 0.16);
}

#placeChatPanel::before { display: none; }
#placeChatPanel.location-map-detail {
  z-index: 1000;
  width: min(100%, 430px);
  border-left: 1px solid #d8e1e7;
  border-radius: 0 28px 28px 0;
}
#placeChatPanel .place-hero { margin: 0; border: 0; }
#placeChatPanel .place-actions { padding: 14px 0 0; }
#placeChatPanel .recommend-section { padding: 20px 0 0; }

@media (max-width: 760px) {
  #placeChatPanel {
    top: 15%;
    width: 100%;
    border-top: 1px solid #d8e1e7;
    border-left: 0;
  }
}

/* Map place detail drawer */
.place-chat-panel {
  top: 0;
  right: 0;
  bottom: 0;
  width: min(42%, 430px);
  grid-template-rows: auto 132px auto minmax(0, 1fr);
  border: 0;
  border-left: 1px solid #d8e1e7;
  border-radius: 0;
  background: #ffffff;
  box-shadow: -12px 0 34px rgba(16, 36, 48, 0.16);
}

.place-chat-panel::before { display: none; }

.place-detail-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 66px;
  padding: 0 16px 0 20px;
  border-bottom: 1px solid #e1e8ed;
}

.place-detail-header h2 {
  margin: 0;
  overflow: hidden;
  color: #101820;
  font-size: 20px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.place-detail-header .place-back {
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  margin: 0;
  border: 0;
  background: transparent;
  color: #45525c;
  font-size: 34px;
  font-weight: 300;
  line-height: 1;
}

.place-hero {
  margin: 0;
  border: 0;
}

.place-detail-tabs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
  padding: 16px 16px 8px;
}

.place-detail-tab {
  min-height: 40px;
  border: 0;
  border-radius: 14px;
  background: #e9eef4;
  color: #263746;
  font-weight: 800;
}

.place-detail-tab.active {
  background: #2865a5;
  color: #ffffff;
  box-shadow: 0 3px 8px rgba(40, 101, 165, 0.25);
}

.place-detail-scroll {
  min-height: 0;
  overflow-y: auto;
  padding: 4px 16px 20px;
}

.place-detail-pane[hidden] { display: none; }

.place-description {
  margin: 8px 2px 16px;
  color: #52616d;
  font-size: 14px;
  line-height: 1.6;
}

.place-facts {
  display: grid;
  gap: 14px;
  margin: 0 2px 18px;
}

.place-facts > div {
  display: grid;
  grid-template-columns: 24px minmax(0, 1fr);
  gap: 6px;
  align-items: start;
}

.place-facts dt { color: #0877bd; font-size: 20px; }
.place-facts dd { margin: 1px 0 0; color: #52616d; font-size: 14px; line-height: 1.45; }
.place-facts dd strong { display: block; margin-bottom: 2px; color: #263746; font-size: 12px; }
.place-facts dd small { display: block; margin-top: 3px; color: #7c8993; }

.place-map-link {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 40px;
  border: 1px solid #b9d6ea;
  border-radius: 14px;
  padding: 0 12px;
  color: #263746;
  font-size: 13px;
  font-weight: 800;
  text-decoration: none;
  box-shadow: 0 2px 5px rgba(24, 67, 94, 0.08);
}

.place-map-link > span:first-child { color: #0877bd; font-size: 19px; }
.place-map-link b { margin-left: auto; border-radius: 4px; padding: 2px 5px; background: #e3f2fd; color: #0877bd; font-size: 10px; }
.place-actions { padding: 14px 0 0; }
.recommend-section { padding: 20px 0 0; }

.place-review-form {
  display: grid;
  grid-template-columns: 72px 1fr;
  gap: 9px 10px;
  align-items: center;
  margin-top: 8px;
  padding: 14px;
  border-radius: 14px;
  background: #f4f7fa;
}

.place-review-form label { color: #263746; font-size: 13px; font-weight: 800; }
.place-review-form select,
.place-review-form textarea { border: 1px solid #cbd7df; border-radius: 8px; padding: 9px; background: #ffffff; color: #172833; font: inherit; }
.place-review-form textarea { min-height: 92px; resize: vertical; }
.place-review-form button { grid-column: 2; min-height: 38px; border: 0; border-radius: 8px; background: #2865a5; color: #ffffff; font-weight: 900; }
.place-review-status { grid-column: 1 / -1; margin: 0; color: #52616d; font-size: 12px; }

.place-review-list { display: grid; gap: 10px; margin-top: 14px; }
.place-review-list article { border: 1px solid #dce5eb; border-radius: 12px; padding: 12px; }
.place-review-list article div { display: flex; justify-content: space-between; gap: 12px; }
.place-review-list article span { color: #f0a500; letter-spacing: 1px; }
.place-review-list article p,
.place-review-empty { margin: 8px 0 0; color: #52616d; font-size: 13px; line-height: 1.5; }

/* Keep longer localized place-detail copy inside the map drawer. */
#placeChatPanel .place-detail-header h2 {
  flex: 1 1 auto;
  min-width: 0;
  padding-right: 8px;
  overflow: visible;
  overflow-wrap: anywhere;
  line-height: 1.25;
  text-overflow: clip;
  white-space: normal;
}

#placeChatPanel .place-detail-header .place-back {
  flex: 0 0 40px;
}

#placeChatPanel .place-detail-tabs {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

#placeChatPanel .place-detail-tab,
#placeChatPanel .recommend-chip {
  min-width: 0;
  overflow-wrap: anywhere;
  white-space: normal;
}

#placeChatPanel .place-detail-scroll {
  width: 100%;
  min-width: 0;
  max-width: 100%;
  overflow-x: hidden;
}

#placeChatPanel .recommend-list {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

#placeChatPanel,
#placeChatPanel > *,
#placeChatPanel .place-detail-pane,
#placeChatPanel .place-facts,
#placeChatPanel .place-facts > div,
#placeChatPanel .place-facts dd,
#placeChatPanel .place-actions,
#placeChatPanel .recommend-section,
#placeChatPanel .recommend-list,
#placeChatPanel .place-map-link {
  min-width: 0;
  max-width: 100%;
}

#placeChatPanel .place-detail-header,
#placeChatPanel .place-detail-tabs,
#placeChatPanel .place-detail-pane,
#placeChatPanel .recommend-section {
  overflow-x: hidden;
}

#placeChatPanel .place-description,
#placeChatPanel .place-facts dd,
#placeChatPanel .place-map-link span,
#placeChatPanel .recommend-chip {
  overflow-wrap: anywhere;
  word-break: normal;
}

@media (max-width: 760px) {
  .place-chat-panel {
    top: 15%;
    width: 100%;
    border-top: 1px solid #d8e1e7;
    border-left: 0;
  }
}

.app-shell.sidebar-collapsed {
  grid-template-columns: 64px minmax(310px, .86fr) minmax(280px, .72fr) minmax(350px, 1.05fr);
}

.app-shell.schedule-mode.sidebar-collapsed {
  grid-template-columns: 64px minmax(0, 1fr);
}

.embedded-artifact-page { position:fixed; inset:0 0 0 224px; z-index:30; overflow:hidden; background:#fff; transition:left 260ms ease; }
.app-shell.sidebar-collapsed .embedded-artifact-page { left:64px; }
.embedded-artifact-page[hidden] { display:none; }
.embedded-artifact-page { height:100vh; }
.schedule-edit-spa { display:block; }
.app-shell.calendar-artifact-mode .chat-area > .topbar { display:none; }
.app-shell.schedule-edit-artifact-mode .chat-area > .topbar { display:none; }
.app-shell.schedule-edit-artifact-mode .schedule-edit-spa { left:16px; background:#fbf7f6; background-image:none; }
.app-shell.schedule-edit-artifact-mode .chat-area::before { content:none!important; display:none!important; }
.app-shell.schedule-edit-artifact-mode .schedule-edit-spa {
  position: fixed !important;
  left:240px !important;
  transition:none;
}
.app-shell.schedule-edit-artifact-mode.sidebar-collapsed .schedule-edit-spa {
  left:80px !important;
}
.app-shell.calendar-artifact-mode .embedded-artifact-page { left:0; }
@media (max-width:760px) { .embedded-artifact-page,.app-shell.sidebar-collapsed .embedded-artifact-page,.app-shell.schedule-edit-artifact-mode .schedule-edit-spa { left:0 !important; bottom:64px; } }

.app-shell.schedule-drawer-open {
  grid-template-columns: 64px minmax(440px, 1fr) minmax(360px, 44vw);
}

.app-shell.chat-drawer-open {
  grid-template-columns: 64px minmax(440px, 1fr) minmax(360px, 44vw);
}

.app-shell.schedule-mode.schedule-drawer-open {
  grid-template-columns: 64px minmax(0, 1fr);
}

.app-shell.schedule-mode.chat-drawer-open {
  grid-template-columns: 64px minmax(0, 1fr);
}

.app-shell.schedule-mode .discover {
  display: none;
}

.sidebar {
  position: sticky;
  top: 0;
  display: flex;
  flex-direction: column;
  height: 100vh;
  padding: 0 8px 16px;
  overflow: hidden;
  background: #121213;
  border-right: 1px solid #26272a;
}

.schedule-drawer-backdrop {
  position: fixed;
  inset: 0;
  z-index: 46;
  background: rgba(0, 0, 0, 0.46);
  opacity: 0;
  pointer-events: none;
  transition: opacity 180ms ease;
}

.chat-history-backdrop {
  position: fixed;
  inset: 0;
  z-index: 46;
  background: rgba(0, 0, 0, 0.38);
  opacity: 0;
  pointer-events: none;
  transition: opacity 180ms ease;
}

.schedule-drawer-backdrop.open {
  opacity: 1;
  pointer-events: auto;
}

.chat-history-backdrop.open {
  opacity: 1;
  pointer-events: auto;
}

.schedule-drawer {
  position: fixed;
  top: 0;
  bottom: 0;
  left: 224px;
  z-index: 47;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  width: min(320px, calc(100vw - 224px));
  padding: 18px 12px;
  border-right: 1px solid #303237;
  background: #171819;
  box-shadow: 18px 0 42px rgba(0, 0, 0, 0.32);
  transform: translateX(-105%);
  visibility: hidden;
  transition:
    transform 200ms ease,
    visibility 200ms;
}

.chat-history-drawer {
  position: fixed;
  top: 0;
  bottom: 0;
  left: 64px;
  z-index: 47;
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr);
  width: min(360px, calc(100vw - 64px));
  padding: 14px 12px;
  border-right: 1px solid #2b2c30;
  background: #171718;
  box-shadow: 18px 0 42px rgba(0, 0, 0, 0.28);
  transform: translateX(-105%);
  visibility: hidden;
  transition:
    transform 200ms ease,
    visibility 200ms;
}

.schedule-drawer.open {
  transform: translateX(0);
  visibility: visible;
}

.chat-history-drawer.open {
  transform: translateX(0);
  visibility: visible;
}

.app-shell.schedule-drawer-open .schedule-drawer {
  left: 64px;
  width: min(320px, calc(100vw - 64px));
}

.app-shell.schedule-drawer-open .sidebar,
.app-shell.chat-drawer-open .sidebar {
  z-index: 48;
}

/* Tablet and narrow desktop trip builder: use one workspace pane at a time. */
@media (min-width: 621px) and (max-width: 900px) {
  .app-shell:has(.chat-area.flow-guide-active):not(.schedule-mode) {
    grid-template-columns: 64px minmax(0, 1fr) !important;
  }

  .app-shell:has(.chat-area.flow-guide-active):not(.schedule-mode) .itinerary-flow-nav { left: 64px; }

  .app-shell:has(.chat-area.flow-guide-active):not(.schedule-mode) .mobile-workspace-nav {
    position: fixed;
    top: 84px;
    right: 12px;
    left: 76px;
    z-index: 46;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 5px;
    height: 44px;
    padding: 4px;
    border: 1px solid rgba(137,84,103,.16);
    border-radius: 14px;
    background: rgba(255,250,249,.96);
    box-shadow: 0 7px 20px rgba(92,53,67,.12);
    backdrop-filter: blur(14px);
  }

  .app-shell:has(.chat-area.flow-guide-active):not(.schedule-mode) .mobile-workspace-nav button {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    min-width: 0;
    border: 0;
    border-radius: 10px;
    color: #806b73;
    background: transparent;
    font-size: 12px;
    font-weight: 850;
  }

  .app-shell:has(.chat-area.flow-guide-active):not(.schedule-mode) .mobile-workspace-nav button.active {
    color: #fff;
    background: #a95070;
    box-shadow: 0 5px 12px rgba(143,64,93,.22);
  }

  .app-shell:has(.chat-area.flow-guide-active):not(.schedule-mode) .chat-area.flow-guide-active {
    grid-column: 2;
    grid-template-rows: 138px minmax(0, 1fr) auto auto;
    min-width: 0;
  }

  .app-shell:has(.chat-area.flow-guide-active):not(.schedule-mode)[data-mobile-pane="list"] .chat-area,
  .app-shell:has(.chat-area.flow-guide-active):not(.schedule-mode)[data-mobile-pane="map"] .chat-area {
    display: none;
  }

  .app-shell:has(.chat-area.flow-guide-active):not(.schedule-mode) .create-recommendations,
  .app-shell:has(.chat-area.flow-guide-active):not(.schedule-mode) .discover.location-panel {
    display: none !important;
  }

  .app-shell:has(.chat-area.flow-guide-active):not(.schedule-mode)[data-mobile-pane="list"] .create-recommendations {
    position: fixed;
    inset: 138px 0 0 64px;
    z-index: 30;
    display: flex !important;
    flex-direction: column;
    width: auto;
    min-width: 0;
    padding: 10px 16px 14px;
    overflow: hidden;
    border: 0;
  }

  .app-shell:has(.chat-area.flow-guide-active):not(.schedule-mode)[data-mobile-pane="list"] .create-recommendations-list {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
  }

  .app-shell:has(.chat-area.flow-guide-active):not(.schedule-mode)[data-mobile-pane="map"] .discover.location-panel {
    position: fixed;
    inset: 138px 0 0 64px;
    z-index: 30;
    display: block !important;
    width: auto;
    min-width: 0;
    padding: 10px 12px 12px;
    overflow: hidden;
    border: 0;
  }

  .app-shell:has(.chat-area.flow-guide-active):not(.schedule-mode)[data-mobile-pane="map"] :is(.live-map-section,.live-map-card,.naver-map) {
    width: 100%;
    height: 100%;
    min-height: 0;
  }
}

.app-shell.schedule-drawer-open .brand span:last-child,
.app-shell.sidebar-collapsed .brand span:last-child,
.app-shell.schedule-drawer-open .nav-item span:last-child,
.app-shell.sidebar-collapsed .nav-item span:last-child,
.app-shell.schedule-drawer-open .account-copy,
.app-shell.sidebar-collapsed .account-copy,
.app-shell.schedule-drawer-open .more,
.app-shell.sidebar-collapsed .more,
.app-shell.chat-drawer-open .brand span:last-child,
.app-shell.chat-drawer-open .nav-item span:last-child,
.app-shell.chat-drawer-open .account-copy,
.app-shell.chat-drawer-open .more {
  display: none;
}

.app-shell.schedule-drawer-open .brand,
.app-shell.sidebar-collapsed .brand,
.app-shell.schedule-drawer-open .nav-item,
.app-shell.sidebar-collapsed .nav-item,
.app-shell.schedule-drawer-open .account-panel,
.app-shell.sidebar-collapsed .account-panel,
.app-shell.chat-drawer-open .brand,
.app-shell.chat-drawer-open .nav-item,
.app-shell.chat-drawer-open .account-panel {
  justify-content: center;
}

.app-shell.schedule-drawer-open .account-panel,
.app-shell.sidebar-collapsed .account-panel,
.app-shell.chat-drawer-open .account-panel {
  grid-template-columns: 34px;
}

.chat-history-search {
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr);
  align-items: center;
  min-height: 42px;
  padding: 0 12px;
  border-radius: 999px;
  background: #242426;
  color: #a7aab0;
}

.chat-history-search input {
  min-width: 0;
  border: 0;
  outline: 0;
  background: transparent;
  color: #f4f4f5;
}

.chat-history-actions {
  display: grid;
  gap: 4px;
  padding: 18px 0 12px;
}

.chat-history-action,
.chat-history-open,
.chat-history-menu-button {
  display: flex;
  align-items: center;
  min-width: 0;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: #f4f4f5;
  text-align: left;
}

.chat-history-action {
  gap: 10px;
  min-height: 38px;
  padding: 0 10px;
  font-weight: 700;
}

.chat-history-action:hover,
.chat-history-action:focus-visible,
.chat-history-item:hover,
.chat-history-item:focus-visible,
.chat-history-item.active,
.chat-history-open:focus-visible,
.chat-history-menu-button:hover,
.chat-history-menu-button:focus-visible {
  outline: 0;
  background: #292b2f;
}

.chat-history-section {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  min-height: 0;
}

.chat-history-section > p {
  margin: 0;
  padding: 8px 10px;
  color: #888c93;
  font-size: 12px;
  font-weight: 700;
}

.chat-history-list {
  display: grid;
  align-content: start;
  gap: 2px;
  min-height: 0;
  overflow-y: auto;
}

.chat-history-item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 30px;
  align-items: center;
  border-radius: 6px;
  font-size: 14px;
}

.chat-history-open {
  width: 100%;
  padding: 10px;
  text-decoration: none;
}

.chat-history-title {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.chat-history-menu-button {
  justify-content: center;
  width: 30px;
  height: 30px;
  padding: 0;
  color: #c7cbd0;
  font-size: 18px;
  opacity: 0;
}

.chat-history-item:hover .chat-history-menu-button,
.chat-history-item:focus-within .chat-history-menu-button,
.chat-history-item.active .chat-history-menu-button {
  opacity: 1;
}

.trip-list-menu-button {
  justify-content: center;
  width: 30px;
  height: 30px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: #c7cbd0;
  font-size: 18px;
  opacity: 0;
}

.schedule-drawer-trip:hover .trip-list-menu-button,
.schedule-drawer-trip:focus-within .trip-list-menu-button,
.schedule-drawer-trip.active .trip-list-menu-button {
  opacity: 1;
}

.chat-history-empty {
  margin: 0;
  padding: 12px 10px;
  color: #9da2a9;
  font-size: 13px;
  line-height: 1.5;
}

.schedule-drawer-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 2px 6px 14px;
  border-bottom: 1px solid #303237;
}

.schedule-drawer-header p,
.schedule-drawer-header h2 {
  margin: 0;
}

.schedule-drawer-header p {
  margin-bottom: 4px;
  color: #8f969e;
  font-size: 11px;
  font-weight: 800;
}

.schedule-drawer-header h2 {
  font-size: 19px;
}

.schedule-drawer-close {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: #c7cbd0;
  font-size: 22px;
}

.schedule-drawer-close:hover,
.schedule-drawer-close:focus-visible {
  outline: 0;
  background: #292b2f;
  color: #ffffff;
}

.schedule-drawer-list {
  display: grid;
  align-content: start;
  gap: 4px;
  min-height: 0;
  padding-top: 10px;
  overflow-y: auto;
}

.schedule-drawer-trip {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 30px;
  align-items: center;
  border-radius: 6px;
}

.schedule-drawer-item {
  display: grid;
  gap: 4px;
  width: 100%;
  min-width: 0;
  padding: 11px 10px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: #f4f4f5;
  text-align: left;
}

.schedule-drawer-item:hover,
.schedule-drawer-item:focus-visible,
.schedule-drawer-trip:hover,
.schedule-drawer-trip:focus-within,
.schedule-drawer-trip.active {
  outline: 0;
  background: #292b2f;
}

.schedule-drawer-item strong,
.schedule-drawer-item small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.schedule-drawer-item strong {
  font-size: 14px;
}

.schedule-drawer-item small,
.schedule-drawer-empty {
  color: #9da2a9;
  font-size: 12px;
}

.schedule-drawer-empty {
  margin: 0;
  padding: 14px 10px;
  line-height: 1.5;
}

.brand {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 44px;
  color: var(--text);
  text-decoration: none;
  font-size: 25px;
  font-weight: 800;
  letter-spacing: 0;
}

.sidebar-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
  min-height: 42px;
  margin-top: -2px;
}

.app-shell.sidebar-collapsed .sidebar-header {
  justify-content: center;
}

.app-shell.sidebar-collapsed .sidebar {
  overflow: visible;
}

.app-shell.sidebar-collapsed .sidebar-toggle {
  display: none;
}

.app-shell.sidebar-collapsed .brand {
  position: relative;
  cursor: pointer;
}

.app-shell.sidebar-collapsed .brand::after {
  content: "›";
  position: absolute;
  top: 50%;
  left: 50%;
  z-index: 80;
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border: 1px solid rgba(213,126,155,.48);
  border-radius: 9px;
  background: #432f36;
  color: #ffe8ef;
  font-size: 22px;
  font-weight: 700;
  line-height: 1;
  box-shadow: 0 7px 18px rgba(0,0,0,.24);
  opacity: 0;
  pointer-events: none;
  transform: translate(-50%,-50%) scale(.86);
  transition: opacity .15s ease, transform .15s ease;
}

.app-shell.sidebar-collapsed .brand:hover::after,
.app-shell.sidebar-collapsed .brand:focus-visible::after {
  opacity: 1;
  transform: translate(-50%,-50%) scale(1);
}

.brand-mark {
  display: grid;
  place-items: center;
  width: 24px;
  height: 24px;
  color: #ffffff;
}

.side-nav {
  display: grid;
  gap: 16px;
  margin-top: 18px;
}

.history-nav {
  position: relative;
}

.nav-item,
.account-panel,
.chat-title,
.section-row button {
  border: 0;
  color: var(--text);
}

.nav-item {
  display: flex;
  align-items: center;
  gap: 14px;
  width: 100%;
  min-height: 34px;
  padding: 4px 0;
  background: transparent;
  color: inherit;
  text-align: left;
  text-decoration: none;
  font-weight: 700;
}

.nav-item .icon {
  display: grid;
  place-items: center;
  width: 22px;
  height: 22px;
  color: var(--text);
}

.nav-item.active span:last-child {
  color: #ffffff;
}

.history-dropdown {
  position: absolute;
  top: 100%;
  left: 28px;
  z-index: 20;
  display: grid;
  gap: 8px;
  width: 260px;
  max-height: 0;
  overflow-y: auto;
  padding: 8px;
  border: 0;
  border-radius: 12px;
  background: #17191c;
  box-shadow: 0 18px 44px rgba(0, 0, 0, 0.42);
  opacity: 0;
  pointer-events: none;
  transform: translateY(-8px);
  transition:
    max-height 180ms ease,
    opacity 160ms ease,
    transform 160ms ease;
}

.history-nav:hover .history-dropdown,
.history-nav:focus-within .history-dropdown {
  max-height: 348px;
  opacity: 1;
  pointer-events: auto;
  transform: translateY(0);
}

.history-item {
  display: grid;
  gap: 4px;
  min-height: 60px;
  padding: 10px;
  border: 1px solid transparent;
  border-radius: 8px;
  background: #202328;
  color: var(--text);
  text-align: left;
}

.history-item:hover,
.history-item:focus-visible {
  border-color: #36a7d5;
  outline: 0;
  background: #25313a;
}

.history-item strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 13px;
}

.history-item small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.sidebar-spacer {
  flex: 1;
}

.account-panel {
  position: sticky;
  bottom: 16px;
  display: grid;
  grid-template-columns: 34px 1fr 24px;
  align-items: center;
  gap: 10px;
  width: 100%;
  margin-top: 18px;
  padding: 8px 0;
  background: transparent;
  text-align: left;
}

.avatar {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: #8a520b;
  color: #ffe1aa;
  font-weight: 800;
}

.transport-page {
  min-height: 100%;
  padding: 28px;
  overflow-y: auto;
}

.transport-shell {
  display: grid;
  gap: 20px;
  max-width: 1120px;
  margin: 0 auto;
}

.transport-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
}

.transport-header h1 {
  margin: 4px 0 8px;
  font-size: 32px;
}

.transport-header p {
  margin: 0;
  color: var(--muted);
}

.transport-search-form {
  display: grid;
  grid-template-columns: repeat(4, minmax(160px, 1fr));
  gap: 12px;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--panel);
}

.transport-search-form label {
  display: grid;
  gap: 6px;
  font-size: 13px;
  color: var(--muted);
}

.transport-search-form label.hidden-field {
  display: none;
}

.transport-search-form select,
.transport-search-form input {
  width: 100%;
  min-height: 42px;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 0 12px;
  background: var(--panel-soft);
  color: var(--text);
}

.transport-submit {
  align-self: end;
  min-height: 42px;
  border: 0;
  border-radius: 8px;
  background: var(--accent);
  color: #fff;
  font-weight: 700;
  cursor: pointer;
}

.transport-status {
  min-height: 20px;
  color: var(--muted);
  font-size: 14px;
}

.transport-status.error {
  color: var(--danger);
}

.transport-results {
  display: grid;
  gap: 10px;
}

.transport-result-card {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 12px;
  align-items: center;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--panel);
}

.transport-result-header {
  display: flex;
  align-items: center;
  gap: 10px;
}

.transport-result-header strong {
  font-size: 17px;
}

.transport-result-header span {
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 3px 8px;
  color: var(--muted);
  font-size: 12px;
}

.transport-result-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  color: var(--muted);
  font-size: 13px;
}

.transport-book-button {
  min-height: 38px;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 0 12px;
  background: var(--panel-soft);
  color: var(--text);
  cursor: pointer;
}

.account-panel.signed-in .avatar {
  background-size: cover;
  background-position: center;
  color: #ffffff;
}

.auth-modal {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: grid;
  place-items: center;
  padding: 24px;
}

.trip-rename-modal {
  position: fixed;
  inset: 0;
  z-index: 110;
  display: grid;
  place-items: center;
  padding: 18px;
}

.trip-rename-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.72);
  backdrop-filter: blur(8px);
}

.trip-rename-card {
  position: relative;
  z-index: 1;
  display: grid;
  gap: 26px;
  width: min(512px, 100%);
  padding: 24px;
  border: 1px solid #292b30;
  border-radius: 28px;
  background: #1f1f20;
  box-shadow: 0 26px 90px rgba(0, 0, 0, 0.5);
}

.trip-rename-card h2 {
  margin: 0;
  font-size: 22px;
  letter-spacing: 0;
}

.trip-rename-card input {
  width: 100%;
  min-height: 56px;
  padding: 0 14px;
  border: 2px solid #f0f0f0;
  border-radius: 4px;
  outline: 0;
  background: transparent;
  color: #f4f4f5;
  font-size: 16px;
  font-weight: 700;
}

.trip-rename-actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
}

.trip-rename-actions button {
  min-height: 42px;
  padding: 0 16px;
  border: 0;
  border-radius: 999px;
  color: #ffffff;
  font-weight: 800;
}

.trip-rename-cancel {
  background: #111112;
}

.trip-rename-submit {
  background: #3b3b3e;
}

.trip-rename-submit:not(:disabled) {
  background: #285f8d;
}

.trip-rename-submit:disabled {
  cursor: not-allowed;
  color: #8e8e92;
}

.auth-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.68);
  backdrop-filter: blur(8px);
}

.auth-card {
  position: relative;
  z-index: 1;
  width: min(520px, 100%);
  max-height: min(760px, calc(100vh - 48px));
  overflow-y: auto;
  padding: 28px;
  border: 1px solid #303238;
  border-radius: 28px;
  background: #181a1f;
  color: var(--text);
  box-shadow: 0 30px 90px rgba(0, 0, 0, 0.45);
}

.auth-close {
  position: absolute;
  top: 16px;
  right: 16px;
  width: 34px;
  height: 34px;
  border: 1px solid #343842;
  border-radius: 50%;
  background: #22252c;
  color: #ffffff;
  font-size: 20px;
}

.auth-eyebrow {
  margin: 0 0 10px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  letter-spacing: 0.12em;
}

.auth-card h2 {
  margin: 0;
  font-size: clamp(24px, 4vw, 32px);
}

.auth-description {
  margin: 10px 0 20px;
  color: var(--muted);
  line-height: 1.6;
}

.auth-notice {
  margin: 0 0 16px;
  padding: 12px 14px;
  border: 1px solid #345342;
  border-radius: 14px;
  background: #193524;
  color: #baf4ce;
  line-height: 1.5;
}

.auth-notice.error {
  border-color: #633434;
  background: #3a2020;
  color: #ffc0c0;
}

.auth-tabs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  margin-bottom: 14px;
  padding: 5px;
  border: 1px solid #303238;
  border-radius: 16px;
  background: #111216;
}

.auth-tab {
  min-height: 40px;
  border: 0;
  border-radius: 12px;
  background: transparent;
  color: var(--muted);
  font-weight: 900;
}

.auth-tab.active {
  background: #ffffff;
  color: #111216;
}

.auth-form {
  display: grid;
  gap: 12px;
}

.auth-form input {
  width: 100%;
  min-height: 48px;
  border: 1px solid #303238;
  border-radius: 14px;
  padding: 0 14px;
  outline: 0;
  background: #101116;
  color: #ffffff;
}

.auth-form input:focus {
  border-color: var(--accent);
}

.auth-submit,
.auth-google {
  display: grid;
  place-items: center;
  min-height: 48px;
  border: 0;
  border-radius: 14px;
  background: #ffffff;
  color: #101011;
  font-weight: 900;
  text-decoration: none;
}

.auth-google {
  border: 1px solid #303238;
  background: #202226;
  color: #ffffff;
}

.auth-submit.secondary {
  width: 100%;
  margin-top: 16px;
  background: #292d35;
  color: #ffffff;
}

.member-profile {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 16px;
  border: 1px solid #303238;
  border-radius: 18px;
  background: #101116;
}

.account-sections {
  display: grid;
  gap: 14px;
  margin-top: 16px;
}

.account-section {
  display: grid;
  gap: 12px;
  padding: 16px;
  border: 1px solid #303238;
  border-radius: 18px;
  background: #101116;
}

.account-section-title {
  display: grid;
  gap: 4px;
}

.account-section-title strong {
  font-size: 15px;
}

.account-section-title span {
  color: var(--muted);
  font-size: 13px;
  line-height: 1.45;
}

.account-info-list {
  display: grid;
  gap: 8px;
  margin: 0;
}

.account-info-list div {
  display: grid;
  grid-template-columns: 112px minmax(0, 1fr);
  gap: 10px;
  padding-top: 8px;
  border-top: 1px solid #25272d;
}

.account-info-list dt {
  color: var(--muted);
  font-size: 13px;
}

.account-info-list dd {
  margin: 0;
  overflow-wrap: anywhere;
  color: #ffffff;
  font-size: 13px;
  font-weight: 800;
}

.account-settings-form {
  display: grid;
  gap: 12px;
}

.account-settings-form label {
  display: grid;
  gap: 7px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 800;
}

.account-settings-form input,
.account-settings-form select {
  min-height: 44px;
  border: 1px solid #303238;
  border-radius: 12px;
  padding: 0 12px;
  outline: 0;
  background: #181a1f;
  color: #ffffff;
}

.account-settings-form input:focus,
.account-settings-form select:focus {
  border-color: var(--accent);
}

.setting-toggle {
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
}

.setting-toggle small {
  display: block;
  margin-top: 3px;
  color: var(--subtle);
  font-weight: 600;
}

.setting-toggle input {
  width: 18px;
  min-height: 18px;
}

.account-action-list {
  display: grid;
  gap: 8px;
}

.account-action-list button {
  min-height: 40px;
  border: 1px solid #303238;
  border-radius: 12px;
  background: #181a1f;
  color: #ffffff;
  text-align: left;
  padding: 0 12px;
  font-weight: 800;
}

.account-action-list button:disabled {
  cursor: not-allowed;
  color: var(--subtle);
}

.account-action-list button:not(:disabled):hover,
.account-action-list button:not(:disabled):focus-visible {
  border-color: var(--accent);
  outline: 0;
}

.support-detail {
  max-height: 180px;
  overflow-y: auto;
  padding: 14px;
  border: 1px solid #303238;
  border-radius: 14px;
  background: #181a1f;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.6;
}

.support-detail strong {
  display: block;
  margin-bottom: 6px;
  color: #ffffff;
}

.danger-section {
  border-color: #633434;
  background: #241616;
}

.danger-section .account-section-title span {
  color: #f0abab;
}

.danger-button {
  min-height: 44px;
  border: 1px solid #8f3f3f;
  border-radius: 12px;
  background: #4a2020;
  color: #ffd0d0;
  font-weight: 900;
}

.danger-button:hover,
.danger-button:focus-visible {
  border-color: #ff6b6b;
  outline: 0;
}

.member-profile strong,
.member-profile small {
  display: block;
}

.member-profile small {
  margin-top: 4px;
  color: var(--muted);
}

.member-avatar {
  display: grid;
  place-items: center;
  flex: 0 0 48px;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: #8a520b;
  color: #ffe1aa;
  background-size: cover;
  background-position: center;
  font-weight: 900;
}

.account-copy {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.account-copy small {
  overflow: hidden;
  color: var(--muted);
  text-overflow: ellipsis;
  white-space: nowrap;
}

.more {
  color: var(--muted);
}

.chat-area {
  position: relative;
  display: grid;
  grid-template-rows: 48px minmax(0, 1fr) auto auto;
  height: 100vh;
  overflow: hidden;
  background: #101011;
}

.chat-area.schedule-active {
  grid-template-rows: 48px minmax(0, 1fr);
}

.itinerary-guide-page {
  min-height: 0;
  overflow-y: auto;
  padding: clamp(34px, 6vh, 72px) clamp(24px, 6vw, 84px);
  color: #382b31;
  background:
    radial-gradient(ellipse at 15% 10%, rgba(226,151,174,.26), transparent 30%),
    radial-gradient(ellipse at 92% 88%, rgba(190,105,135,.16), transparent 30%),
    #fbf7f6;
}

.itinerary-guide-inner {
  width: min(900px, 100%);
  margin: 0 auto;
}

.itinerary-guide-header { margin-bottom: 34px; }
.itinerary-guide-header p {
  margin: 0 0 10px;
  color: #a44767;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .2em;
}
.itinerary-guide-header h1 {
  margin: 0;
  font-size: clamp(30px, 4vw, 48px);
  letter-spacing: -.045em;
}
.itinerary-guide-header > span {
  display: block;
  margin-top: 13px;
  color: #7d6870;
  line-height: 1.6;
}

.itinerary-guide-steps {
  position: relative;
  display: grid;
  gap: 14px;
}

.itinerary-guide-steps::before {
  content: "";
  position: absolute;
  top: 38px;
  bottom: 38px;
  left: 31px;
  width: 2px;
  background: linear-gradient(#cc7895, #e8c4d0);
}

.itinerary-guide-step {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: 64px minmax(0,1fr) 28px;
  align-items: center;
  gap: 18px;
  width: 100%;
  min-height: 112px;
  padding: 18px 22px 18px 0;
  border: 1px solid rgba(137,84,103,.18);
  border-radius: 22px;
  background: rgba(255,253,252,.88);
  color: #382b31;
  text-align: left;
  box-shadow: 0 9px 28px rgba(92,53,67,.07);
  transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
}

.itinerary-guide-step:hover,
.itinerary-guide-step:focus-visible {
  border-color: #ca7894;
  outline: 0;
  box-shadow: 0 15px 34px rgba(105,53,73,.14);
  transform: translateY(-2px);
}

.itinerary-guide-number {
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  margin-left: 8px;
  border: 6px solid #fbf7f6;
  border-radius: 50%;
  background: linear-gradient(145deg,#a84e6e,#d47b99);
  color: #fff;
  font-size: 18px;
  font-weight: 900;
  box-shadow: 0 5px 15px rgba(143,64,93,.24);
}

.itinerary-guide-copy { display: grid; gap: 5px; }
.itinerary-guide-copy small { color: #ae5574; font-size: 10px; font-style: normal; font-weight: 900; letter-spacing: .14em; }
.itinerary-guide-copy strong { font-size: 20px; letter-spacing: -.025em; }
.itinerary-guide-copy em { color: #806b73; font-size: 13px; font-style: normal; line-height: 1.45; }
.itinerary-guide-step > b { color: #b05272; font-size: 22px; }

@media (max-width: 620px) {
  .itinerary-guide-page { padding: 28px 16px; }
  .itinerary-guide-step { grid-template-columns: 56px minmax(0,1fr) 20px; gap: 10px; padding-right: 14px; }
  .itinerary-guide-copy strong { font-size: 17px; }
  .itinerary-guide-copy em { font-size: 12px; }
}

.topbar {
  display: flex;
  align-items: center;
  gap: 24px;
  padding: 0 16px 0 28px;
}

.chat-area.flow-guide-active {
  grid-template-rows: 78px minmax(0, 1fr) auto auto;
}

.chat-area.schedule-active.flow-guide-active {
  grid-template-rows: 78px minmax(0, 1fr);
}

.itinerary-flow-nav {
  position: fixed;
  top: 0;
  right: 0;
  left: 224px;
  z-index: 45;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-width: 0;
  height: 78px;
  padding: 0 24px;
  border-bottom: 1px solid rgba(137,84,103,.18);
  background:
    linear-gradient(90deg, rgba(255,250,249,.97), rgba(250,239,242,.97));
  box-shadow: 0 7px 24px rgba(92,53,67,.08);
  backdrop-filter: blur(14px);
}

.app-shell.sidebar-collapsed .itinerary-flow-nav {
  left: 64px;
}

.chat-area.flow-guide-active .topbar .chat-title {
  visibility: hidden;
}

.app-shell:has(.chat-area.flow-guide-active):not(.schedule-mode) .create-recommendations {
  padding-top: 92px;
}

.app-shell:has(.chat-area.flow-guide-active):not(.schedule-mode) .create-recommendations-list {
  min-height: 0;
}

.app-shell:has(.chat-area.flow-guide-active):not(.schedule-mode) .discover.location-panel {
  padding-top: 88px;
}

.app-shell:has(.chat-area.flow-guide-active):not(.schedule-mode) .live-map-section,
.app-shell:has(.chat-area.flow-guide-active):not(.schedule-mode) .live-map-card,
.app-shell:has(.chat-area.flow-guide-active):not(.schedule-mode) .naver-map {
  min-height: calc(100vh - 92px);
}

.itinerary-flow-nav > i {
  color: #c9aeb7;
  font-size: 11px;
  font-style: normal;
}

.itinerary-flow-nav .flow-edge-navigation {
  gap: 5px;
  min-height: 34px;
  padding-inline: 11px;
  color: #984765;
  background: #fff8fa;
  border-color: #dfbdca;
  font-weight: 850;
}
.itinerary-flow-nav .flow-edge-navigation[hidden] { display: none; }
.itinerary-flow-nav .flow-edge-navigation b { font-size: 15px; line-height: 1; }
.itinerary-flow-nav .flow-edge-navigation > strong { display: block; font-size: 10px; }
.itinerary-flow-nav .flow-edge-navigation { position: absolute; top: 50%; z-index: 2; transform: translateY(-50%); }
.itinerary-flow-nav .flow-edge-navigation:hover,
.itinerary-flow-nav .flow-edge-navigation:focus-visible { transform: translateY(calc(-50% - 1px)); }
.itinerary-flow-nav .flow-edge-navigation.previous { left: 24px; }
.itinerary-flow-nav .flow-edge-navigation.next { right: 24px; }

@media (max-width: 900px) {
  .itinerary-flow-nav .flow-edge-navigation.previous { left: 10px; }
  .itinerary-flow-nav .flow-edge-navigation.next { right: 10px; }
}

.itinerary-flow-nav button {
  display: flex;
  align-items: center;
  gap: 7px;
  min-height: 38px;
  padding: 5px 10px;
  border: 1px solid rgba(137,84,103,.18);
  border-radius: 999px;
  background: rgba(255,252,251,.7);
  color: #806b73;
  white-space: nowrap;
  transition: border-color .16s ease, background .16s ease, color .16s ease, transform .16s ease;
}

.itinerary-flow-nav button > span {
  display: grid;
  place-items: center;
  width: 23px;
  height: 23px;
  border-radius: 50%;
  background: #eadde1;
  color: #8f5368;
  font-size: 10px;
  font-weight: 900;
}

:is(html[lang="en"], html[lang="ja"], html[lang="zh"], html[lang="zh-TW"]) .itinerary-flow-nav {
  gap: 4px;
  padding-inline: 12px;
}

:is(html[lang="en"], html[lang="ja"], html[lang="zh"], html[lang="zh-TW"]) .itinerary-flow-nav button {
  gap: 5px;
  padding-inline: 8px;
  font-size: 11px;
}

:is(html[lang="en"], html[lang="ja"], html[lang="zh"], html[lang="zh-TW"]) .create-place-search-heading small,
:is(html[lang="en"], html[lang="ja"], html[lang="zh"], html[lang="zh-TW"]) .create-recommendations-summary {
  line-height: 1.45;
}

@media (max-width: 1280px) {
  :is(html[lang="en"], html[lang="ja"], html[lang="zh"], html[lang="zh-TW"]) .itinerary-flow-nav > i {
    display: none;
  }
}

.itinerary-flow-nav button > strong {
  font-size: 11px;
}

.itinerary-flow-nav button:hover,
.itinerary-flow-nav button:focus-visible {
  border-color: #c87592;
  outline: 0;
  color: #8f405d;
  transform: translateY(-1px);
}

.itinerary-flow-nav button.current {
  border-color: #b45576;
  background: linear-gradient(135deg,#8f405d,#c96e8e);
  color: #fff;
  box-shadow: 0 7px 18px rgba(143,64,93,.2);
}

.itinerary-flow-nav button.current > span {
  background: rgba(255,255,255,.2);
  color: #fff;
}

.itinerary-flow-nav button.current::after {
  content: "현재";
  padding: 2px 5px;
  border-radius: 999px;
  background: rgba(255,255,255,.18);
  font-size: 9px;
  font-weight: 900;
}

.itinerary-flow-nav [data-flow-step="3"],
.itinerary-flow-nav [data-flow-step="4"],
.itinerary-flow-nav [data-flow-step="3"] + i,
.itinerary-flow-nav [data-flow-step="4"] + i {
  display: none;
}

html[lang="en"] .itinerary-flow-nav button.current::after { content:"Current"; }
html[lang="ja"] .itinerary-flow-nav button.current::after { content:"現在"; }
html[lang="zh"] .itinerary-flow-nav button.current::after { content:"当前"; }
html[lang="zh-TW"] .itinerary-flow-nav button.current::after { content:"目前"; }

@media (max-width: 1160px) {
  .itinerary-flow-nav {
    justify-content: flex-start;
    overflow-x: auto;
    scrollbar-width: none;
  }
  .itinerary-flow-nav::-webkit-scrollbar { display: none; }
  .itinerary-flow-nav button > strong { display: none; }
  .itinerary-flow-nav button { padding: 5px; }
  .itinerary-flow-nav button.current::after { display: none; }
}

@media (max-width: 620px) {
  .topbar { gap: 10px; padding-left: 14px; }
  .itinerary-flow-nav > i { display: none; }
  .itinerary-flow-nav { left: 72px; padding: 0 10px; }
  .app-shell.sidebar-collapsed .itinerary-flow-nav { left: 64px; }

  .itinerary-flow-nav:has([data-flow-step="2"].current) {
    justify-content: space-between;
    gap: 6px;
  }

  .itinerary-flow-nav:has([data-flow-step="2"].current) [data-flow-step="3"],
  .itinerary-flow-nav:has([data-flow-step="2"].current) [data-flow-step="4"] {
    display: none;
  }

  .itinerary-flow-nav:has([data-flow-step="2"].current) [data-flow-step="1"],
  .itinerary-flow-nav:has([data-flow-step="2"].current) [data-flow-step="2"],
  .itinerary-flow-nav:has([data-flow-step="2"].current) [data-flow-step="5"] {
    flex: 1 1 0;
    justify-content: center;
    min-width: 0;
    padding-inline: 7px;
  }

  .itinerary-flow-nav:has([data-flow-step="2"].current) [data-flow-step="1"] > strong,
  .itinerary-flow-nav:has([data-flow-step="2"].current) [data-flow-step="5"] > strong {
    display: block;
    overflow: hidden;
    font-size: 10px;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
}

/* Attraction schedule: match the pink ink-wash create experience. */
.app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-page {
  gap: 22px;
  background:
    radial-gradient(ellipse at 8% 10%, rgba(226,151,174,.2), transparent 30%),
    radial-gradient(ellipse at 78% 92%, rgba(190,105,135,.1), transparent 28%),
    repeating-linear-gradient(8deg, rgba(88,57,68,.018) 0 1px, transparent 1px 8px),
    #fbf7f6;
  color: #382b31;
}

.app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-list-panel {
  padding: 20px;
  border: 1px solid rgba(137,84,103,.16);
  border-radius: 24px;
  background: rgba(255,252,251,.76);
  box-shadow: 0 16px 38px rgba(92,53,67,.09);
  backdrop-filter: blur(10px);
}

.app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-toolbar {
  min-height: 58px;
  margin-bottom: 18px;
  padding-bottom: 14px;
  border-bottom: 1px solid rgba(137,84,103,.14);
}

.app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-toolbar h1 {
  color: #382b31;
  font-size: 25px;
  letter-spacing: -.035em;
}

.app-shell.schedule-mode[data-itinerary-type="attraction"] .day-tab {
  border-color: rgba(137,84,103,.2);
  background: rgba(255,255,255,.8);
  color: #806b73;
}

.app-shell.schedule-mode[data-itinerary-type="attraction"] .day-tab:hover,
.app-shell.schedule-mode[data-itinerary-type="attraction"] .day-tab:focus-visible {
  border-color: #c87592;
  color: #93435f;
}

.app-shell.schedule-mode[data-itinerary-type="attraction"] .day-tab.active {
  border-color: #b45576;
  background: linear-gradient(135deg,#91415e,#c86d8d);
  color: #fff;
  box-shadow: 0 7px 18px rgba(143,64,93,.18);
}

.app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-scroll {
  padding-right: 6px;
  scrollbar-color: #d79aaf transparent;
}

.app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-day-section::before {
  background: linear-gradient(#c76f8d,#ead0d8);
}

.app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-day-heading {
  border-bottom-color: rgba(137,84,103,.14);
  background: transparent;
}

.app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-day-heading > span {
  background: #f1dce3;
  color: #94425f;
}

.app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-day-heading h2 {
  color: #382b31;
}

.app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-day-heading small {
  color: #907b83;
}

.app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-card {
  border-color: rgba(137,84,103,.18);
  border-radius: 17px;
  background: rgba(255,254,253,.92);
  color: #382b31;
  box-shadow: inset -5px 0 0 #c86d8d, 0 8px 22px rgba(92,53,67,.07);
}

.app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-card.active,
.app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-card:hover,
.app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-card:focus-visible {
  border-color: #c87592;
  background: #fff;
  box-shadow: inset -5px 0 0 #b45576, 0 12px 26px rgba(105,53,73,.12);
}

.app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-order {
  background: #f0d8e0;
  color: #8f405d;
}

.app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-card p {
  color: #806b73;
}

.app-shell.schedule-mode[data-schedule-type="restaurant"] .plan-kind {
  display: inline-flex;
  width: max-content;
  margin-bottom: 3px;
  padding: 3px 7px;
  border-radius: 999px;
  background: #f0d8e0;
  color: #8f405d;
  font-size: 9px;
  font-weight: 900;
  letter-spacing: .05em;
}

.app-shell.schedule-mode[data-schedule-type="restaurant"] .plan-card.integrated-restaurant {
  border-color: rgba(180,85,118,.28);
  background: #fff8fa;
  box-shadow: inset -5px 0 0 #a84e6e, 0 8px 22px rgba(92,53,67,.08);
}

.app-shell.schedule-mode[data-schedule-type="restaurant"] .plan-card.integrated-attraction .plan-kind {
  background: #eee7e9;
  color: #745e66;
}

.app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-route-line {
  border-left-color: #d59aaf;
  color: #a84e6e;
}

.app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-route-panel {
  border-color: #ead0d9;
  background: rgba(255,255,255,.9);
  color: #553640;
  box-shadow: 0 8px 18px rgba(92,53,67,.08);
}

.app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-empty,
.app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-day-empty {
  border-color: #d5a0b2;
  background: #fbf1f4;
  color: #806b73;
}

.app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-add-mode-button {
  border-color: rgba(180,85,118,.26);
  background: #fffafb;
  color: #94425f;
  box-shadow: 0 9px 22px rgba(92,53,67,.1);
}

.app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-add-mode-button.active {
  border-color: #9d4765;
  background: linear-gradient(135deg,#91415e,#c86d8d);
  color: #fff;
}

.app-shell.schedule-mode[data-itinerary-type="attraction"] .map-panel {
  border-color: rgba(137,84,103,.22);
  border-radius: 24px;
  background: #eadfe1;
  box-shadow: 0 16px 38px rgba(92,53,67,.13);
}

.app-shell.schedule-mode[data-itinerary-type="attraction"] .location-map-search input,
.app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-map-filters button {
  border-color: rgba(137,84,103,.22);
  background: rgba(255,252,251,.96);
  color: #654a54;
}

.app-shell.schedule-mode[data-itinerary-type="attraction"] .location-map-search button {
  border-color: #a84e6e;
  background: #a84e6e;
}

.app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-map-filters button:hover,
.app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-map-filters button:focus-visible,
.app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-map-filters button.active {
  border-color: #c87592;
  background: #f7e4ea;
  color: #94425f;
}

.chat-title {
  justify-self: start;
  background: transparent;
  font-weight: 800;
}

.trip-title-editable {
  max-width: min(540px, 72vw);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  cursor: text;
}

.trip-title-editable:hover,
.trip-title-editable:focus-visible {
  outline: 0;
  color: #dff7ff;
}

.trip-title-input {
  width: min(540px, 72vw);
  min-height: 42px;
  padding: 0 14px;
  border: 1px solid #4a5962;
  border-radius: 999px;
  outline: 0;
  background: #202226;
  color: var(--text);
  font-weight: 800;
}

.conversation {
  display: grid;
  align-content: start;
  gap: 20px;
  overflow-y: auto;
  padding: clamp(28px, 9vh, 120px) min(7vw, 72px) 22px;
}

.welcome {
  display: grid;
  justify-items: center;
  gap: 14px;
  margin: auto 0 10px;
  text-align: center;
}

.stamp {
  display: grid;
  place-items: end center;
  width: 130px;
  height: 104px;
  border-radius: 54% 46% 42% 58% / 48% 47% 53% 52%;
  background:
    radial-gradient(circle at 68% 34%, #ff4a61 0 5px, transparent 6px),
    linear-gradient(165deg, #d4ffe0 0%, #c1ffdc 48%, #eeeeec 49%, #dedbd7 100%);
  box-shadow: 0 18px 45px rgba(109, 239, 161, 0.16);
}

.stamp span {
  width: 86px;
  height: 52px;
  margin-bottom: -3px;
  border-radius: 9px 9px 0 0;
  background:
    linear-gradient(90deg, transparent 0 9px, rgba(0, 0, 0, 0.35) 10px 12px, transparent 13px),
    linear-gradient(135deg, #d0ad85, #f0d8bd);
}

.welcome h1 {
  margin: 0;
  font-size: clamp(32px, 4vw, 40px);
  line-height: 1.05;
  letter-spacing: 0;
}

.welcome p {
  max-width: 560px;
  margin: 0;
  color: #f0f0f2;
  font-size: 18px;
  line-height: 1.55;
}

.messages {
  display: grid;
  gap: 14px;
}

.message {
  display: grid;
  gap: 6px;
  max-width: 690px;
  padding: 14px 16px;
  border: 1px solid #2b2c31;
  border-radius: 16px;
  background: #18191b;
}

.message.user {
  justify-self: end;
  background: #22272b;
  border-color: #38424a;
}

.message strong {
  color: #ffffff;
  font-size: 13px;
}

.message p {
  margin: 0;
  color: #e7e8eb;
  line-height: 1.55;
}

.chat-weather-metadata {
  display: block;
  margin-top: 5px;
  padding-top: 9px;
  border-top: 1px solid rgba(143, 208, 255, 0.18);
  color: #9ecddd;
  font-size: 11px;
  line-height: 1.45;
}

.app-shell:has(.nav-item[data-page="create-trip"].active) .chat-weather-metadata {
  border-top-color: rgba(137, 84, 103, 0.16);
  color: #8f596d;
}

.message-link {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  margin-top: 8px;
  margin-right: 12px;
  color: #8fd0ff;
  font-weight: 700;
  text-decoration: none;
}

.message-link:hover,
.message-link:focus-visible {
  text-decoration: underline;
}

.question-card {
  display: grid;
  gap: 14px;
  margin: 0 min(7vw, 72px) 14px;
  padding: 16px;
  border: 1px solid #2c2e33;
  border-radius: 18px;
  background: rgba(24, 25, 27, 0.96);
}

.eyebrow {
  margin: 0 0 6px;
  color: var(--accent);
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
}

.question-card h2 {
  margin: 0;
  font-size: 18px;
  letter-spacing: 0;
}

.option-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}

.option-grid button {
  min-height: 46px;
  padding: 8px 10px;
  border: 1px solid #353940;
  border-radius: 12px;
  background: #202226;
  color: var(--text);
  font-weight: 800;
}

.option-grid button:hover,
.option-grid button:focus-visible {
  border-color: var(--accent);
  outline: 0;
}

.guided-answer {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
}

.guided-answer input {
  min-height: 46px;
  width: 100%;
  border: 1px solid #353940;
  border-radius: 12px;
  background: #202226;
  color: var(--text);
  font: inherit;
  font-weight: 700;
  padding: 0 14px;
  outline: 0;
}

.guided-answer input:focus {
  border-color: var(--accent);
}

.guided-answer button {
  min-height: 46px;
  border: 0;
  border-radius: 12px;
  background: var(--accent);
  color: #151718;
  font-weight: 900;
  padding: 0 18px;
}

.composer-dock {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 44px;
  align-items: center;
  gap: 12px;
  margin: 0 min(7vw, 72px) 24px;
}

.composer {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 38px;
  align-items: center;
  gap: 8px;
  min-height: 86px;
  margin: 0;
  padding: 12px 14px;
  border: 1px solid #42444b;
  border-radius: 24px;
  background: #111213;
}

.composer input {
  min-width: 0;
  height: 40px;
  border: 0;
  outline: 0;
  background: transparent;
  color: var(--text);
  font-size: 16px;
}

.icon-btn,
.trip-create-btn,
.send-btn {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border: 0;
  border-radius: 50%;
  background: #25272b;
  color: #ffffff;
  font-size: 21px;
}

.icon-btn.ghost {
  background: transparent;
  color: #d8d9dd;
  font-size: 17px;
}

.trip-create-btn {
  width: 44px;
  height: 44px;
  background: #1f3c4a;
  color: #9fe4ff;
  font-size: 17px;
  font-weight: 900;
  box-shadow: 0 10px 24px rgba(0, 0, 0, 0.28);
}

.trip-create-btn:hover,
.trip-create-btn:focus-visible {
  outline: 0;
  background: #28546a;
  color: #ffffff;
}

.send-btn {
  width: 38px;
  height: 38px;
  background: #777a80;
  color: #121314;
  font-weight: 900;
}

.send-btn:disabled {
  cursor: wait;
  opacity: 0.62;
}

.schedule-page {
  display: grid;
  grid-template-columns: minmax(300px, 34%) minmax(360px, 1fr);
  gap: 28px;
  min-height: 0;
  padding: 26px 28px 32px;
  overflow: hidden;
  background: #101011;
}

.admin-places-page {
  display: grid;
  grid-template-columns: minmax(320px, 420px) minmax(360px, 1fr);
  gap: 28px;
  min-height: 0;
  padding: 26px 28px 32px;
  overflow: hidden;
  background: #101011;
}

.admin-place-panel,
.admin-place-list-panel {
  min-width: 0;
  min-height: 0;
}

.admin-place-list-panel {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  overflow: hidden;
}

.admin-place-panel {
  overflow-y: auto;
}

.admin-place-help {
  margin: 0;
  color: #b9c4ce;
  font-size: 13px;
  line-height: 1.5;
}

.admin-place-form {
  display: grid;
  gap: 14px;
}

.admin-place-form label {
  display: grid;
  gap: 7px;
  color: #dce5ee;
  font-size: 13px;
  font-weight: 800;
}

.admin-place-form input,
.admin-place-form textarea {
  width: 100%;
  border: 1px solid #394049;
  border-radius: 8px;
  padding: 10px 12px;
  background: #202328;
  color: #ffffff;
  font: inherit;
}

.admin-place-form textarea {
  resize: vertical;
}

.admin-place-form input[readonly] {
  color: #b9c7d4;
  background: #1a1d22;
}

.admin-place-submit {
  min-height: 38px;
  border: 1px solid #62bde5;
  border-radius: 8px;
  background: #d9edf7;
  color: #135f81;
  font-weight: 900;
}

.admin-place-status {
  min-height: 20px;
  margin: 0;
  color: #b9c4ce;
  font-size: 13px;
}

.admin-place-list {
  display: grid;
  align-content: start;
  gap: 12px;
  height: 100%;
  min-height: 0;
  padding-right: 4px;
  overflow-y: auto;
}

.admin-place-item {
  display: grid;
  grid-template-columns: 76px minmax(0, 1fr);
  align-items: start;
  gap: 12px;
  padding: 13px 14px;
  border: 1px solid #355365;
  background: #f4fbff;
  color: #14202a;
}

.admin-place-thumbnail {
  display: grid;
  place-items: center;
  width: 76px;
  aspect-ratio: 1;
  overflow: hidden;
  border: 1px solid #c6d9e4;
  background: #dce8ef;
  color: #52616d;
  font-size: 12px;
  font-weight: 900;
}

.admin-place-thumbnail img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.admin-place-copy {
  display: grid;
  gap: 5px;
  min-width: 0;
}

.admin-place-item p,
.admin-place-item small {
  margin: 0;
  color: #52616d;
}

.admin-place-item a {
  color: #176f9f;
  font-size: 13px;
  font-weight: 900;
  text-decoration: none;
}

.admin-google-place-id {
  word-break: break-all;
}

.admin-place-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}

.admin-image-refresh {
  justify-self: start;
  min-height: 30px;
  padding: 0 10px;
  border: 1px solid #1976a6;
  border-radius: 6px;
  background: #1976a6;
  color: #ffffff;
  font-size: 12px;
  font-weight: 900;
}

.admin-image-refresh:disabled {
  cursor: wait;
  opacity: 0.65;
}

.schedule-list-panel {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  min-width: 0;
  min-height: 0;
}

.schedule-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-height: 44px;
  margin-bottom: 12px;
}

.schedule-title-group {
  display: grid;
  gap: 8px;
  min-width: 0;
}

.composer-mode-label {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

.composer-mode {
  width: 106px;
  height: 38px;
  padding: 0 28px 0 12px;
  border: 1px solid #3b3e43;
  border-radius: 999px;
  outline: 0;
  background: #202226;
  color: #f3f4f5;
  font: inherit;
  font-size: 12px;
  font-weight: 800;
  cursor: pointer;
}

.composer.place-search-mode {
  border-color: #2582a0;
}

.composer.place-search-mode .composer-mode {
  border-color: #2582a0;
  background: #173542;
  color: #b9edff;
}

.chat-place-results {
  display: grid;
  gap: 8px;
  margin-top: 12px;
}

.chat-place-result {
  display: grid;
  gap: 4px;
  width: 100%;
  padding: 12px 14px;
  border: 1px solid #383b40;
  border-radius: 12px;
  background: #202226;
  color: #f4f5f6;
  text-align: left;
}

.chat-place-result:hover,
.chat-place-result:focus-visible {
  border-color: #2582a0;
  background: #1a3039;
}

.chat-place-result strong { font-size: 13px; }
.chat-place-result span { color: #9ba4aa; font-size: 11px; line-height: 1.45; }
.chat-place-result .chat-place-reason { color: #d9dde0; font-size: 12px; line-height: 1.55; }
.chat-place-result b { margin-top: 3px; color: #79cce7; font-size: 10px; }

.app-shell:has(.nav-item[data-page="create-trip"].active) .message .chat-place-results {
  gap: 10px;
  margin-top: 16px;
}

.app-shell:has(.nav-item[data-page="create-trip"].active) .message .chat-place-result {
  position: relative;
  gap: 9px;
  padding: 15px 16px 13px;
  overflow: hidden;
  border: 1px solid #ead5dc;
  border-radius: 16px;
  background: linear-gradient(145deg, #fff 0%, #fff9fb 100%);
  color: #49323b;
  box-shadow: 0 5px 16px rgba(116, 66, 84, .08);
  transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
}

.app-shell:has(.nav-item[data-page="create-trip"].active) .message .chat-place-result::before {
  position: absolute;
  inset: 0 auto 0 0;
  width: 4px;
  background: linear-gradient(#cc7896, #8d5369);
  content: "";
}

.app-shell:has(.nav-item[data-page="create-trip"].active) .message .chat-place-result:hover,
.app-shell:has(.nav-item[data-page="create-trip"].active) .message .chat-place-result:focus-visible {
  border-color: #cf8ca4;
  background: #fff;
  box-shadow: 0 10px 24px rgba(116, 66, 84, .15);
  transform: translateY(-2px);
  outline: 0;
}

.chat-place-heading { display:flex; align-items:center; gap:9px; min-width:0; }
.chat-place-heading i {
  flex:0 0 auto;
  color:#b86885;
  font-size:10px;
  font-style:normal;
  font-weight:800;
  letter-spacing:.08em;
}
.app-shell:has(.nav-item[data-page="create-trip"].active) .message .chat-place-heading strong {
  overflow:hidden;
  color:#3f2932;
  font-size:14px;
  line-height:1.35;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.chat-place-heading em {
  flex:0 0 auto;
  margin-left:auto;
  padding:4px 7px;
  border-radius:999px;
  background:#f7e7ed;
  color:#98536d;
  font-size:9px;
  font-style:normal;
  font-weight:700;
}
.app-shell:has(.nav-item[data-page="create-trip"].active) .message .chat-place-address {
  padding-left:19px;
  color:#8a737c;
  font-size:10px;
}
.chat-place-address::before { margin-left:-19px; margin-right:6px; content:"⌖"; color:#bc718b; }
.app-shell:has(.nav-item[data-page="create-trip"].active) .message .chat-place-reason {
  color:#604a53;
  font-size:12px;
  line-height:1.6;
}
.chat-place-footer {
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:5px;
  padding-top:3px;
  border-top:1px solid #f3e7eb;
}
.app-shell:has(.nav-item[data-page="create-trip"].active) .message .chat-place-footer b,
.app-shell:has(.nav-item[data-page="create-trip"].active) .message .chat-place-footer span {
  margin:0;
  color:#a55572;
  font-size:10px;
  font-weight:800;
}

.location-map-search[hidden] {
  display: none !important;
}

.chat-area > .question-card {
  display: none !important;
}

.sidebar-toggle {
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  width: 24px;
  height: 24px;
  margin: 0;
  border: 1px solid #303134;
  border-radius: 8px;
  background: #1d1e20;
  color: #d8dadd;
  font-size: 20px;
  line-height: 1;
}

.sidebar-toggle:hover,
.sidebar-toggle:focus-visible {
  outline: 0;
  border-color: #4b4d52;
  background: #292a2d;
}

.app-shell.sidebar-collapsed .sidebar-toggle {
  width: 22px;
  height: 22px;
}

.app-shell.sidebar-collapsed .sidebar-header {
  gap: 2px;
}

@media (prefers-reduced-motion: reduce) {
  .app-shell,
  .embedded-artifact-page {
    transition-duration: 0ms;
  }
}

/* Keep sidebar labels at their final width while the rail expands. */
@media (min-width: 761px) {
  .sidebar { transition: width 260ms cubic-bezier(.2,.8,.2,1); }
  .brand span:last-child,
  .nav-item span:last-child,
  .account-copy,
  .more {
    opacity: 1;
    visibility: visible;
    transform: translateX(0);
    transition: opacity 120ms ease 135ms, transform 180ms ease 110ms, visibility 0s linear 0s;
  }
  .brand span:last-child { flex:0 0 150px; width:150px; white-space:nowrap; }
  .nav-item span:last-child { flex:0 0 154px; width:154px; white-space:nowrap; }
  .account-copy { grid-template-columns:154px; width:154px; }
  .more { flex:0 0 20px; width:20px; }
  .app-shell.sidebar-collapsed .brand span:last-child,
  .app-shell.sidebar-collapsed .nav-item span:last-child,
  .app-shell.sidebar-collapsed .account-copy,
  .app-shell.sidebar-collapsed .more {
    display:grid;
    position:absolute;
    opacity:0;
    visibility:hidden;
    transform:translateX(-6px);
    pointer-events:none;
    transition:opacity 70ms ease, transform 100ms ease, visibility 0s linear 100ms;
  }
  .app-shell.sidebar-collapsed .brand span:last-child,
  .app-shell.sidebar-collapsed .nav-item span:last-child { display:block; }
  .app-shell.sidebar-collapsed .brand,
  .app-shell.sidebar-collapsed .nav-item,
  .app-shell.sidebar-collapsed .account-panel { position:relative; }
}

.schedule-toolbar-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex: 0 0 auto;
}

.schedule-toolbar h1 {
  margin: 0;
  font-size: 22px;
  letter-spacing: 0;
}

.schedule-title-group .trip-title-editable {
  max-width: 100%;
}

.schedule-title-group .trip-title-input {
  width: min(420px, 100%);
  border-radius: 8px;
  font-size: 22px;
}

.day-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  max-width: min(280px, 48vw);
}

.day-tab {
  min-height: 30px;
  padding: 0 12px;
  border: 1px solid #394049;
  border-radius: 999px;
  background: #202328;
  color: #cfd6de;
  font-size: 12px;
  font-weight: 900;
}

.day-tab:hover,
.day-tab:focus-visible {
  border-color: #62bde5;
  outline: 0;
}

.day-tab.active {
  border-color: #62bde5;
  background: #d9edf7;
  color: #135f81;
}

.schedule-scroll {
  display: grid;
  align-content: start;
  gap: 0;
  min-height: 0;
  overflow-y: auto;
  padding-right: 8px;
}

.plan-step-group {
  display: grid;
  gap: 8px;
}

.schedule-empty {
  margin: 0;
  padding: 18px;
  border: 1px dashed #5f7681;
  border-radius: 16px;
  background: #f4fbff;
  color: #52616d;
  line-height: 1.6;
}

.plan-card {
  display: grid;
  grid-template-columns: 38px 1fr 76px;
  align-items: center;
  gap: 12px;
  min-height: 70px;
  padding: 12px 14px;
  border: 1px solid #355365;
  background: #f4fbff;
  color: #14202a;
  box-shadow: inset -8px 0 0 #16739c;
  cursor: pointer;
}

.plan-card.active {
  border-color: #62bde5;
  background: #ffffff;
}

.plan-card:hover,
.plan-card:focus-visible {
  border-color: #1687b8;
  outline: 0;
}

.plan-order {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: #d9edf7;
  color: #135f81;
  font-size: 12px;
  font-weight: 900;
}

.plan-card strong {
  display: block;
  font-size: 16px;
}

.plan-card p {
  margin: 4px 0 0;
  color: #52616d;
  font-size: 13px;
}

.plan-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
}

.plan-action {
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border: 1px solid #b8c9d3;
  border-radius: 50%;
  background: #ffffff;
  color: #1b3b4d;
  font-size: 17px;
  font-weight: 900;
  line-height: 1;
}

.plan-action.edit,
.plan-action.delete {
  opacity: 0;
  pointer-events: none;
  transform: translateX(6px);
  transition:
    opacity 160ms ease,
    transform 160ms ease;
}

.plan-card:hover .plan-action.edit,
.plan-card:hover .plan-action.delete,
.plan-card:focus-within .plan-action.edit,
.plan-card:focus-within .plan-action.delete {
  opacity: 1;
  pointer-events: auto;
  transform: translateX(0);
}

.plan-route-connector {
  display: grid;
  grid-template-columns: 38px minmax(0, 1fr);
  align-items: center;
  gap: 12px;
  padding: 0 14px;
}

.plan-route-line {
  display: grid;
  place-items: center;
  width: 34px;
  min-height: 42px;
  border-left: 3px dashed #98b9c8;
  color: #1976a6;
  font-size: 18px;
  font-weight: 900;
}

.plan-route-panel {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  min-width: 0;
  padding: 9px 10px 9px 12px;
  border: 1px solid #c7dde8;
  border-radius: 999px;
  background: #ffffff;
  color: #1b3b4d;
  box-shadow: 0 8px 18px rgba(15, 35, 45, 0.1);
}

.plan-route-copy {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.plan-route-copy strong {
  overflow: hidden;
  color: #315161;
  font-size: 12px;
  font-weight: 900;
  line-height: 1.35;
  overflow-wrap: anywhere;
}

.plan-route-copy span {
  color: #66818f;
  font-size: 11px;
  line-height: 1.25;
}

.plan-route-actions {
  display: grid;
  grid-template-columns: repeat(3, 30px);
  gap: 5px;
  flex: 0 0 auto;
}

.plan-action:hover,
.plan-action:focus-visible {
  border-color: #16739c;
  outline: 0;
}

.plan-action.delete {
  color: #b42323;
}

.plan-action.route {
  color: #176f9f;
  font-size: 12px;
}

.route-icon {
  position: relative;
  display: block;
  width: 18px;
  height: 18px;
}

.route-icon-car::before {
  position: absolute;
  content: "";
  left: 2px;
  right: 2px;
  top: 6px;
  height: 7px;
  border: 2px solid currentColor;
  border-radius: 5px 5px 3px 3px;
}

.route-icon-car::after {
  position: absolute;
  content: "";
  left: 4px;
  bottom: 2px;
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: currentColor;
  box-shadow: 7px 0 0 currentColor;
}

.route-icon-transit::before {
  position: absolute;
  content: "";
  left: 3px;
  right: 3px;
  top: 2px;
  bottom: 2px;
  border: 2px solid currentColor;
  border-radius: 4px;
}

.route-icon-transit::after {
  position: absolute;
  content: "";
  left: 6px;
  top: 6px;
  width: 2px;
  height: 2px;
  background: currentColor;
  box-shadow:
    4px 0 0 currentColor,
    -1px 6px 0 currentColor,
    5px 6px 0 currentColor;
}

.route-icon-walk::before,
.route-icon-walk::after {
  position: absolute;
  content: "";
  width: 6px;
  height: 10px;
  border-radius: 60% 60% 45% 45%;
  background: currentColor;
}

.route-icon-walk::before {
  left: 4px;
  top: 3px;
  transform: rotate(-24deg);
}

.route-icon-walk::after {
  right: 3px;
  bottom: 2px;
  transform: rotate(22deg);
  opacity: 0.82;
}

.plan-action.route:hover,
.plan-action.route:focus-visible {
  border-color: #1976a6;
  background: #eef9fd;
}

.plan-action.route-car {
  color: #1d4ed8;
}

.plan-action.route-transit {
  color: #047857;
}

.plan-action.route-walk {
  color: #b45309;
}

.plan-action:disabled {
  cursor: default;
  opacity: 0.42;
}

.plan-action.delete:hover,
.plan-action.delete:focus-visible {
  border-color: #d45050;
  background: #fff5f5;
}

.map-panel {
  position: relative;
  min-width: 0;
  min-height: 420px;
  overflow: hidden;
  border: 1px solid #5f7681;
  background:
    linear-gradient(rgba(255, 255, 255, 0.78), rgba(255, 255, 255, 0.78)),
    linear-gradient(135deg, #d8e4da, #eef2e7 38%, #d9e7ef 39%, #f5f0dc);
  color: #13242e;
}

.schedule-naver-map {
  position: absolute;
  inset: 0;
  z-index: 1;
  width: 100%;
  height: 100%;
  background: #eef2f5;
}

.schedule-add-mode-button {
  min-height: 38px;
  padding: 0 13px;
  border: 1px solid rgba(19, 36, 46, 0.2);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.96);
  color: #13242e;
  font-size: 13px;
  font-weight: 900;
  box-shadow: 0 10px 24px rgba(0, 0, 0, 0.16);
}

.schedule-add-mode-button.active {
  border-color: #0a6b8e;
  background: #0f85b4;
  color: #ffffff;
}

.location-map-search {
  position: absolute;
  top: 14px;
  left: 14px;
  z-index: 4;
  display: grid;
  grid-template-columns: minmax(180px, 280px) auto;
  gap: 7px;
  width: min(420px, calc(100% - 28px));
}

.location-map-search input {
  min-width: 0;
  height: 38px;
  border: 1px solid rgba(19, 36, 46, 0.22);
  border-radius: 8px;
  padding: 0 12px;
  background: rgba(255, 255, 255, 0.96);
  color: #13242e;
  font: inherit;
  font-weight: 800;
  box-shadow: 0 10px 24px rgba(0, 0, 0, 0.16);
}

.location-map-search > button[type="submit"] {
  height: 38px;
  border: 1px solid #1976a6;
  border-radius: 8px;
  padding: 0 13px;
  background: #1976a6;
  color: #ffffff;
  font-weight: 900;
  box-shadow: 0 10px 24px rgba(0, 0, 0, 0.16);
}

.location-map-search-results {
  grid-column: 1 / -1;
  display: grid;
  gap: 6px;
  max-height: min(330px, calc(100vh - 240px));
  overflow-y: auto;
  padding: 7px;
  border: 1px solid rgba(19, 36, 46, 0.18);
  border-radius: 13px;
  background: rgba(250, 247, 248, 0.98);
  box-shadow: 0 18px 34px rgba(0, 0, 0, 0.2);
}

.plan-time {
  display: block;
  margin-bottom: 3px;
  color: #16739c;
  font-size: 12px;
  font-weight: 800;
}

.plan-card.meal-placeholder {
  grid-template-columns: 38px minmax(0, 1fr);
  border: 1px dashed #d58b32;
  background: #fffaf0;
  box-shadow: inset -8px 0 0 #e2a447;
  cursor: pointer;
  transition: border-color .16s ease, box-shadow .16s ease, transform .16s ease;
}

.plan-card.meal-placeholder:hover,
.plan-card.meal-placeholder:focus-visible {
  border-color: #bd6d20;
  outline: none;
  box-shadow: inset -8px 0 0 #dc9131, 0 10px 22px rgba(161, 91, 25, .15);
  transform: translateY(-1px);
}

.meal-placeholder-cta {
  display: inline-flex;
  align-items: center;
  width: max-content;
  max-width: 100%;
  margin-top: 7px;
  color: #a85b24;
  font-size: 11px;
  font-weight: 850;
  line-height: 1.25;
}

.plan-card.meal-placeholder .plan-order {
  background: #fff0cf;
  color: #9a5b00;
}

.plan-card.timeline-anchor {
  grid-template-columns: 38px minmax(0, 1fr);
  min-height: 60px;
  border-color: #8ba8b8;
  background: #eef7fb;
  box-shadow: inset -8px 0 0 #7899aa;
  cursor: default;
}

.plan-card.timeline-anchor.start .plan-order {
  background: #d8f1e4;
  color: #176b42;
}

.plan-card.timeline-anchor.end .plan-order {
  background: #e5e0f7;
  color: #59459a;
}

.plan-card.timeline-anchor.unresolved {
  border-style: dashed;
  border-color: #d58b32;
  background: #fffaf0;
  box-shadow: inset -8px 0 0 #e2a447;
}

.plan-route-copy .plan-transit-summary {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 5px 8px;
  margin-top: 7px;
  color: #5f6672;
  font-size: 12px;
  line-height: 1.45;
}

.plan-route-copy .plan-transit-summary b {
  padding: 2px 6px;
  border-radius: 999px;
  background: #eaf3ff;
  color: #1769aa;
  font-size: 10px;
  letter-spacing: .02em;
}

.plan-route-copy .plan-transit-summary strong {
  color: #1f2937;
  font-size: 13px;
}

.plan-route-copy .plan-transit-summary.walking b {
  background: #edf8ee;
  color: #27763a;
}

.plan-route-copy .plan-transit-directions {
  flex-basis: 100%;
  margin-top: 2px;
  color: #4b5563;
}

.plan-route-copy .plan-transit-directions summary {
  overflow: hidden;
  color: #1769aa;
  cursor: pointer;
  font-size: 11px;
  font-weight: 700;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.plan-route-copy .plan-transit-directions ol {
  display: grid;
  gap: 7px;
  margin: 8px 0 2px;
  padding: 0;
  list-style: none;
}

.plan-route-copy .plan-transit-directions li {
  position: relative;
  display: grid;
  gap: 1px;
  padding-left: 16px;
}

.plan-route-copy .plan-transit-directions li::before {
  position: absolute;
  top: 5px;
  left: 2px;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #1769aa;
  content: "";
}

.plan-route-copy .plan-transit-directions li[data-traffic-type="3"]::before {
  background: #d58b32;
}

.plan-route-copy .plan-transit-directions li strong {
  color: #283444;
  font-size: 11px;
}

.plan-route-copy .plan-transit-directions li span {
  color: #737b87;
  font-size: 11px;
}

.plan-route-copy .plan-transit-summary.loading,
.plan-route-copy .plan-transit-summary.unavailable {
  color: #8a9099;
}

.location-map-search-results[hidden] {
  display: none;
}

.create-recommendations > .create-place-search {
  position: relative;
  top: auto;
  left: auto;
  z-index: 3;
  grid-template-columns: minmax(0, 1fr) auto;
  width: auto;
  margin: 0 3px 14px;
  padding: 12px;
  border: 1px solid rgba(137,84,103,.18);
  border-radius: 15px;
  background: rgba(255,255,255,.68);
}

.create-recommendations > .create-place-search input {
  border-color: rgba(137,84,103,.22);
  background: #fff;
  box-shadow: none;
}

.create-recommendations > .create-place-search > button[type="submit"] {
  border-color: #a95070;
  background: #a95070;
  box-shadow: none;
}

.schedule-day-section {
  position:relative;
  display:grid;
  gap:10px;
  padding:0 0 26px;
}

.schedule-day-section::before {
  content:"";
  position:absolute;
  top:44px;
  bottom:-2px;
  left:30px;
  width:2px;
  background:linear-gradient(#78b9cf,#b8d5df);
  pointer-events:none;
}

.schedule-day-section:last-child::before {
  bottom:24px;
}

.schedule-day-heading {
  position:relative;
  z-index:2;
  display:grid;
  grid-template-columns:auto 1fr auto;
  align-items:center;
  gap:10px;
  min-height:44px;
  padding:5px 12px 5px 6px;
  border-bottom:1px solid #315060;
  background:#101011;
}

.schedule-day-heading > span {
  display:grid;
  place-items:center;
  min-width:58px;
  height:28px;
  border-radius:999px;
  background:#d9edf7;
  color:#135f81;
  font-size:10px;
  font-weight:900;
  letter-spacing:.08em;
}

.schedule-day-heading h2 {
  margin:0;
  color:#f4f8fa;
  font-size:16px;
}

.schedule-day-heading small {
  color:#8ea4ae;
  font-size:11px;
  font-weight:800;
}

.schedule-day-empty {
  position:relative;
  z-index:1;
  margin:0 0 0 48px;
  padding:12px 14px;
  border:1px dashed #6d8792;
  border-radius:12px;
  background:#eef7fa;
  color:#607780;
  font-size:12px;
}

.schedule-day-section .plan-step-group {
  position:relative;
  z-index:1;
}

.schedule-day-section .plan-card {
  border-radius:16px;
}

.schedule-map-filters {
  position: absolute;
  top: 62px;
  left: 14px;
  z-index: 3;
  display: flex;
  gap: 8px;
}

.schedule-map-filters button {
  min-height: 36px;
  border: 1px solid rgba(19, 36, 46, 0.18);
  border-radius: 999px;
  padding: 0 14px;
  background: rgba(255, 255, 255, 0.96);
  color: #263640;
  font-weight: 900;
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.14);
}

.schedule-map-filters button span {
  margin-right: 5px;
  color: #72838d;
}

.schedule-map-filters button:hover,
.schedule-map-filters button:focus-visible,
.schedule-map-filters button.active {
  border-color: #1598c6;
  outline: 0;
  background: #eaf8fd;
  color: #0879a3;
}

.schedule-map-filters button.active span {
  color: #13a7d7;
}

.map-search-result {
  position: relative;
  display: grid;
  gap: 5px;
  min-height: 62px;
  border: 1px solid #eadde2;
  border-radius: 11px;
  padding: 10px 38px 10px 12px;
  background: #ffffff;
  color: #33232a;
  text-align: left;
  box-shadow: 0 3px 10px rgba(82, 47, 60, .05);
  transition: border-color .16s ease, box-shadow .16s ease, transform .16s ease, background .16s ease;
}

.map-search-result::after {
  content: "›";
  position: absolute;
  top: 50%;
  right: 13px;
  color: #b15476;
  font-size: 22px;
  font-weight: 700;
  transform: translateY(-52%);
}

.map-search-result:hover,
.map-search-result:focus-visible {
  border-color: #bd6686;
  outline: 0;
  background: #fffafb;
  box-shadow: 0 7px 17px rgba(132, 65, 90, .13);
  transform: translateY(-1px);
}

.map-search-result strong {
  overflow: hidden;
  color: #34242a;
  font-size: 13px;
  line-height: 1.25;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.map-search-result span,
.map-search-empty {
  margin: 0;
  color: #806b73;
  font-size: 10px;
  line-height: 1.4;
}

.map-search-empty {
  padding: 20px 14px;
  border-radius: 9px;
  background: #fff;
  text-align: center;
}

.naver-plan-marker {
  --marker-radius: 13px 13px 13px 4px;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border: 3px solid #ffffff;
  border-radius: var(--marker-radius);
  background: #1976a6;
  color: #ffffff;
  box-shadow: 0 10px 22px rgba(0, 0, 0, 0.32);
  font-size: 13px;
  font-weight: 900;
  transform: rotate(-10deg);
}

.naver-plan-marker span,
.naver-catalog-marker span {
  position: relative;
  z-index: 1;
}

.naver-plan-marker span {
  display: grid;
  place-items: center;
  width: 21px;
  height: 21px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.95);
  color: #162530;
  transform: rotate(10deg);
}

.naver-plan-marker em,
.naver-catalog-marker em {
  position: absolute;
  right: -8px;
  bottom: -7px;
  z-index: 2;
  display: grid;
  place-items: center;
  min-width: 20px;
  height: 20px;
  padding: 0 4px;
  border: 2px solid #ffffff;
  border-radius: 999px;
  background: #111827;
  color: #ffffff;
  font-size: 10px;
  font-style: normal;
  line-height: 1;
  transform: rotate(10deg);
}

.naver-catalog-marker {
  --marker-radius: 10px 10px 10px 3px;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border: 2px solid #ffffff;
  border-radius: var(--marker-radius);
  background: #4b5563;
  color: #ffffff;
  box-shadow: 0 8px 16px rgba(0, 0, 0, 0.28);
  font-size: 10px;
  font-weight: 900;
  line-height: 1;
  transform: rotate(-10deg);
}

.naver-catalog-marker span {
  transform: rotate(10deg);
}

.naver-catalog-marker em {
  display: none;
}

.naver-place-pin {
  position:relative;
  display:grid;
  place-items:center;
  width:36px;
  height:36px;
  border:2px solid rgba(255,255,255,.98);
  border-radius:52% 52% 52% 7px;
  background:linear-gradient(145deg,#39b9e8,#087da9 68%);
  color:#087da9;
  box-shadow:inset 2px 2px 5px rgba(255,255,255,.34),inset -2px -3px 6px rgba(7,45,62,.14),0 10px 22px rgba(8,31,43,.3),0 2px 5px rgba(8,31,43,.18);
  transform:rotate(-45deg);
  cursor:pointer;
  pointer-events:auto;
  transition:filter .16s ease,box-shadow .16s ease;
}

.naver-place-marker-shell {
  display:flex;
  align-items:flex-start;
  justify-content:center;
  width:44px;
  height:44px;
  overflow:visible;
  cursor:pointer;
  pointer-events:auto;
}

.naver-place-pin::before {
  content:"";
  position:absolute;
  inset:5px;
  border-radius:50%;
  background:linear-gradient(145deg,#fff,#f2f8fa);
  box-shadow:inset 0 0 0 1px rgba(15,35,44,.08),0 2px 5px rgba(7,43,58,.2);
}

.naver-place-pin > span {
  position:relative;
  z-index:1;
  display:grid;
  place-items:center;
  width:19px;
  height:19px;
  transform:rotate(45deg);
}

.naver-place-pin svg {
  width:17px;
  height:17px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.9;
  stroke-linecap:round;
  stroke-linejoin:round;
}

.naver-place-pin em {
  position:absolute;
  right:-8px;
  top:-7px;
  z-index:3;
  display:grid;
  place-items:center;
  min-width:18px;
  height:18px;
  padding:0 4px;
  border:1.5px solid #fff;
  border-radius:999px;
  background:linear-gradient(145deg,#203b47,#0d222b);
  color:#fff;
  box-shadow:0 3px 8px rgba(8,31,43,.3);
  font-size:9px;
  font-style:normal;
  font-weight:900;
  transform:rotate(45deg);
}

.naver-place-pin-compact { width:32px; height:32px; }
.naver-place-pin:hover,.naver-marker-wrap:hover .naver-place-pin { filter:saturate(1.08) brightness(1.04); transform:rotate(-45deg); box-shadow:inset 2px 2px 5px rgba(255,255,255,.38),0 13px 25px rgba(8,31,43,.34); }
.naver-place-pin.naver-place-pin-selected {
  filter: saturate(1.18) brightness(1.08);
  transform: rotate(-45deg) scale(1.18) translate(3px, -3px);
  box-shadow:
    inset 2px 2px 5px rgba(255,255,255,.46),
    0 0 0 5px rgba(255,255,255,.92),
    0 0 0 9px rgba(190,91,125,.32),
    0 16px 30px rgba(70,31,47,.38);
}
.naver-place-pin.marker-attraction { background:linear-gradient(145deg,#38bdf8,#0284c7 68%); color:#0277ad; }
.naver-place-pin.marker-restaurant { background:linear-gradient(145deg,#fb7185,#e24455 68%); color:#d93649; }
.naver-place-pin.marker-korean { background:linear-gradient(145deg,#f59e62,#d75b35 68%); color:#c84b28; }
.naver-place-pin.marker-chinese { background:linear-gradient(145deg,#ef5350,#b91c1c 68%); color:#aa1717; }
.naver-place-pin.marker-japanese { background:linear-gradient(145deg,#ec87a5,#b43a68 68%); color:#a72e5b; }
.naver-place-pin.marker-western { background:linear-gradient(145deg,#8b9cf5,#5366c9 68%); color:#4757b4; }
.naver-place-pin.marker-cafe { background:linear-gradient(145deg,#d6a06e,#95613e 68%); color:#855334; }
.naver-place-pin.marker-bar { background:linear-gradient(145deg,#a77bd8,#6d3c9d 68%); color:#62338f; }

.naver-marker-wrap .naver-marker-label {
  max-width:100px;
  margin-top:1px;
  padding:3px 7px;
  border-color:rgba(31,64,76,.12);
  background:rgba(255,255,255,.96);
  color:#17313c;
  box-shadow:0 5px 14px rgba(15,41,52,.16);
  font-size:9px;
  letter-spacing:-.01em;
}

.naver-photo-marker {
  position: relative;
  width: 38px;
  height: 38px;
  overflow: hidden;
  border: 3px solid #ffffff;
  border-radius: 13px 13px 13px 4px;
  background: #ffffff;
  box-shadow: 0 10px 22px rgba(0, 0, 0, 0.32);
  transform: rotate(-8deg);
}

.plan-order {
  cursor: grab;
  touch-action: none;
  user-select: none;
}

.plan-order:active {
  cursor: grabbing;
}

.plan-sort-ghost {
  opacity: 0.35;
}

.plan-sort-chosen .plan-card,
.plan-card.plan-sort-chosen {
  border-color: #2fb7e9;
  box-shadow: 0 10px 28px rgba(47, 183, 233, 0.2);
}

.plan-sort-drag {
  opacity: 0.96;
  transform: rotate(0.6deg);
}

.schedule-list.sorting .plan-route-panel {
  pointer-events: none;
}

.naver-plan-photo-wrap {
  position: relative;
  width: 38px;
  height: 38px;
  cursor: pointer;
  pointer-events: auto;
}

.naver-route-order {
  position: absolute;
  top: -7px;
  right: -8px;
  z-index: 3;
  display: grid;
  place-items: center;
  min-width: 19px;
  height: 19px;
  padding: 0 4px;
  border: 2px solid #ffffff;
  border-radius: 999px;
  background: #1976a6;
  color: #ffffff;
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3);
  font-size: 10px;
  font-weight: 900;
  line-height: 1;
}

.naver-plan-photo-wrap:hover .naver-photo-marker {
  filter: brightness(1.06);
  transform: rotate(-8deg) translateY(-2px);
}

.naver-photo-marker-wrap,
.naver-marker-wrap {
  display: grid;
  justify-items: center;
  gap: 4px;
  width: 92px;
  transform: translateX(-27px);
  cursor: pointer;
  pointer-events: auto;
}

.naver-marker-wrap {
  transform: translateX(-32px);
}

.naver-photo-marker img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: rotate(8deg) scale(1.16);
}

.naver-photo-marker-wrap:hover .naver-photo-marker,
.naver-marker-wrap:hover .naver-catalog-marker {
  filter: brightness(1.06);
  transform: rotate(-8deg) translateY(-2px);
}

.naver-marker-wrap:hover .naver-catalog-marker {
  transform: rotate(-10deg) translateY(-2px);
}

.naver-photo-marker::before {
  position: absolute;
  content: "";
  inset: 0;
  z-index: 1;
  box-shadow: inset 0 0 0 1px rgba(17, 24, 39, 0.16);
  pointer-events: none;
}

.naver-photo-marker::after {
  display: none;
}

.naver-photo-marker-wrap strong,
.naver-marker-label {
  display: block;
  max-width: 92px;
  overflow: hidden;
  border: 1px solid rgba(17, 24, 39, 0.16);
  border-radius: 999px;
  padding: 3px 7px;
  background: rgba(255, 255, 255, 0.94);
  color: #162530;
  box-shadow: 0 6px 14px rgba(0, 0, 0, 0.18);
  font-size: 11px;
  font-weight: 900;
  line-height: 1.2;
  text-align: center;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.naver-plan-marker::after,
.naver-catalog-marker::after {
  position: absolute;
  content: "";
  inset: -5px;
  border-radius: inherit;
  background: currentColor;
  opacity: 0.14;
}

.marker-food {
  --marker-radius: 50%;
  background: #e0523f;
  color: #fff8f5;
}

.marker-restaurant {
  --marker-radius: 50%;
  background: #e0523f;
  color: #fff8f5;
}

.marker-cafe {
  --marker-radius: 50% 50% 42% 42%;
  background: #8a5a3c;
  color: #fff7ed;
}

.marker-attraction {
  --marker-radius: 50% 50% 14px 14px;
  background: #1684ad;
  color: #f0f9ff;
}

.marker-stay {
  --marker-radius: 8px 8px 14px 14px;
  background: #4f46e5;
  color: #eef2ff;
}

.marker-shop {
  --marker-radius: 8px 18px 18px 8px;
  background: #c026d3;
  color: #fdf4ff;
}

.marker-culture {
  --marker-radius: 6px;
  background: #0f766e;
  color: #ecfeff;
}

.marker-nature {
  --marker-radius: 70% 14% 70% 14%;
  background: #2f855a;
  color: #f0fff4;
}

.marker-transport {
  --marker-radius: 10px 10px 4px 4px;
  background: #2563eb;
  color: #eff6ff;
}

.marker-landmark {
  --marker-radius: 50% 50% 14px 14px;
  background: #b45309;
  color: #fff7ed;
}

.marker-etc {
  --marker-radius: 8px;
  background: #4b5563;
  color: #f8fafc;
}

.naver-search-marker {
  position: relative;
  width: 34px;
  height: 34px;
  border: 3px solid #ffffff;
  border-radius: 50% 50% 50% 6px;
  background: #0ea5e9;
  box-shadow: 0 10px 22px rgba(0, 0, 0, 0.32);
  transform: rotate(-45deg);
}

.naver-search-marker span {
  position: absolute;
  inset: 8px;
  border-radius: 50%;
  background: #ffffff;
}

.schedule-map-status {
  position: absolute;
  left: 18px;
  right: 18px;
  bottom: 18px;
  z-index: 2;
  margin: 0;
  padding: 12px 14px;
  border-radius: 14px;
  background: rgba(16, 17, 18, 0.78);
  color: #ffffff;
  font-size: 13px;
  line-height: 1.5;
  pointer-events: none;
}

.map-panel.map-ready .schedule-map-status {
  display: none;
}

.map-panel.schedule-add-mode .schedule-map-status {
  display: block;
}

.map-image-preview {
  position: absolute;
  z-index: 6;
  display: grid;
  width: 160px;
  overflow: hidden;
  border: 1px solid rgba(17, 24, 39, 0.18);
  border-radius: 8px;
  background: #ffffff;
  color: #162530;
  box-shadow: 0 12px 24px rgba(0, 0, 0, 0.22);
  pointer-events: none;
}

.map-image-preview[hidden] {
  display: none;
}

.map-image-preview img {
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  background: #dce8ef;
}

.map-image-preview strong {
  padding: 7px 8px 1px;
  font-size: 12px;
  line-height: 1.25;
}

.map-image-preview span {
  min-height: 16px;
  padding: 0 8px 7px;
  color: #5b6a75;
  font-size: 11px;
  line-height: 1.25;
}

.map-grid {
  position: absolute;
  inset: 0;
  opacity: 0.45;
  background-image:
    linear-gradient(#b8c7cf 1px, transparent 1px),
    linear-gradient(90deg, #b8c7cf 1px, transparent 1px);
  background-size: 54px 54px;
}

.route-line {
  position: absolute;
  top: 31%;
  left: 25%;
  width: 48%;
  height: 32%;
  border: 4px solid #1976a6;
  border-right-color: transparent;
  border-bottom-color: transparent;
  border-radius: 44% 48% 0 0;
  transform: rotate(-8deg);
}

.map-pin {
  position: absolute;
  display: grid;
  place-items: center;
  width: 28px;
  height: 28px;
  border-radius: 50% 50% 50% 0;
  background: #e54545;
  color: #ffffff;
  font-size: 12px;
  font-weight: 900;
  transform: rotate(-45deg);
}

.map-pin::before {
  display: block;
  color: #ffffff;
  transform: rotate(45deg);
  content: attr(data-label);
}

.map-pin.pin-one {
  top: 28%;
  left: 24%;
}

.map-pin.pin-two {
  top: 46%;
  left: 52%;
  background: #16739c;
}

.map-pin.pin-three {
  top: 63%;
  left: 72%;
  background: #2f9b67;
}

.map-pin.active-pin {
  z-index: 3;
  box-shadow:
    0 0 0 8px rgba(229, 69, 69, 0.18),
    0 10px 22px rgba(23, 41, 51, 0.22);
  transform: rotate(-45deg) scale(1.18);
}

.map-placeholder {
  position: absolute;
  inset: 0;
  display: grid;
  place-content: center;
  justify-items: center;
  gap: 8px;
  padding: 24px;
  text-align: center;
}

.map-placeholder strong {
  font-size: 20px;
}

.map-placeholder span,
.map-placeholder p {
  margin: 0;
  color: #263943;
  font-weight: 800;
}

.map-placeholder p {
  color: #5a6b74;
  font-size: 14px;
  font-weight: 700;
}

.place-chat-panel {
  position: absolute;
  top: 22px;
  right: 22px;
  bottom: 22px;
  width: min(56%, 520px);
  z-index: 4;
  display: grid;
  grid-template-rows: auto 150px auto auto auto minmax(92px, 1fr) auto;
  min-height: 0;
  overflow: hidden;
  border: 1px solid #607985;
  background: rgba(255, 255, 255, 0.96);
  color: #172833;
  box-shadow: 0 18px 42px rgba(13, 24, 31, 0.2);
}

.place-chat-panel::before {
  position: absolute;
  top: 44%;
  left: -12px;
  width: 22px;
  height: 22px;
  border-left: 1px solid #607985;
  border-bottom: 1px solid #607985;
  background: rgba(255, 255, 255, 0.96);
  transform: rotate(45deg);
  content: "";
}

.map-panel.detail-open .map-placeholder {
  opacity: 0.22;
}

.place-back {
  justify-self: start;
  margin: 8px 0 4px 10px;
  padding: 3px 9px;
  border: 1px solid #607985;
  background: #ffffff;
  color: #172833;
  font-size: 13px;
  font-weight: 800;
}

.place-hero {
  margin: 0 18px;
  border: 1px solid #d1dde3;
  background: linear-gradient(135deg, #9f7657, #e8d1b5);
}

.place-copy {
  display: grid;
  gap: 6px;
  padding: 14px 18px 8px;
}

.place-copy .eyebrow {
  margin: 0;
}

.place-copy h2 {
  margin: 0;
  font-size: 22px;
  letter-spacing: 0;
}

.place-copy p:last-child {
  margin: 0;
  color: #445764;
  line-height: 1.45;
}

.place-actions {
  padding: 0 18px 10px;
}

.place-add-button {
  width: 100%;
  min-height: 42px;
  border: 1px solid #1976a6;
  border-radius: 8px;
  background: #1976a6;
  color: #ffffff;
  font-weight: 900;
}

.place-add-button:disabled {
  border-color: #c9d5dc;
  background: #eef3f6;
  color: #667986;
}

.recommend-section {
  display: grid;
  gap: 8px;
  padding: 8px 18px 12px;
}

.recommend-list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}

.recommend-chip {
  min-height: 42px;
  border: 1px solid #cad7dd;
  background: #f6fafc;
  color: #203542;
  font-size: 13px;
  font-weight: 800;
}

.place-chat-log {
  display: grid;
  align-content: end;
  gap: 8px;
  min-height: 0;
  overflow-y: auto;
  padding: 0 18px 14px;
}

.place-chat-log p {
  max-width: 78%;
  margin: 0;
  padding: 9px 11px;
  border: 1px solid #d3e0e6;
  border-radius: 8px;
  background: #f7fbfd;
  color: #334956;
  font-size: 13px;
  line-height: 1.45;
}

.place-chat-log .user-query {
  justify-self: end;
  background: #e8f4fa;
  border-color: #b9d8e8;
}

.place-search {
  display: grid;
  grid-template-columns: 1fr 84px;
  border-top: 1px solid #607985;
}

.place-search input {
  min-width: 0;
  height: 46px;
  border: 0;
  padding: 0 14px;
  outline: 0;
  background: #ffffff;
  color: #172833;
}

.place-search button {
  border: 0;
  border-left: 1px solid #607985;
  background: #ffffff;
  color: #172833;
  font-weight: 900;
}

.attractions-page {
  display: grid;
  grid-template-columns: minmax(520px, 2fr) minmax(280px, 1fr);
  gap: 28px;
  min-height: 0;
  padding: 26px 28px 32px;
  overflow: hidden;
  background: #101011;
}

.attraction-list-panel,
.attraction-detail-panel {
  min-width: 0;
  min-height: 0;
}

.attraction-list-panel {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
}

.attraction-toolbar {
  display: grid;
  grid-template-columns: 1fr auto auto;
  align-items: end;
  gap: 12px;
  min-height: 32px;
  margin-bottom: 14px;
}

.attraction-toolbar h1 {
  margin: 0;
  font-size: 22px;
  letter-spacing: 0;
}

.attraction-toolbar span {
  justify-self: end;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.attraction-back {
  justify-self: end;
  min-height: 32px;
  padding: 0 12px;
  border: 1px solid #37424a;
  border-radius: 999px;
  background: #202328;
  color: #eef6fa;
  font-size: 13px;
  font-weight: 900;
}

.attraction-back:hover,
.attraction-back:focus-visible {
  border-color: #36a7d5;
  outline: 0;
  color: #ffffff;
}

.attraction-category-list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-content: start;
  gap: 12px;
  overflow-y: auto;
  padding-right: 8px;
}

.attraction-category {
  display: grid;
  grid-template-columns: 34px 1fr;
  align-items: center;
  gap: 10px;
  min-height: 76px;
  padding: 12px;
  border: 1px solid #2d3942;
  background: #181b1f;
  color: var(--text);
  text-align: left;
}

.attraction-category:hover,
.attraction-category:focus-visible,
.attraction-category.active {
  border-color: #36a7d5;
  outline: 0;
  background: #20272d;
}

.attraction-place {
  background: #151d23;
}

.attraction-number {
  display: grid;
  place-items: center;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: #243746;
  color: #9fe4ff;
  font-size: 12px;
  font-weight: 900;
}

.attraction-category-copy {
  display: grid;
  gap: 4px;
  min-width: 0;
}

.attraction-category-copy strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: normal;
}

.attraction-category-copy small {
  color: var(--muted);
  font-weight: 800;
}

.attraction-detail-panel {
  display: grid;
  grid-template-rows: 140px auto auto;
  align-content: start;
  overflow: hidden;
  border: 1px solid #34424b;
  background: #17191c;
}

.attraction-visual {
  position: relative;
  min-height: 140px;
  background: linear-gradient(135deg, #7b5b45, #d8b58d);
}

.attraction-visual::after {
  position: absolute;
  inset: 0;
  content: "";
  background:
    radial-gradient(circle at 28% 32%, rgba(255, 255, 255, 0.22) 0 12%, transparent 13%),
    linear-gradient(transparent, rgba(0, 0, 0, 0.38));
}

.attraction-copy {
  display: grid;
  gap: 8px;
  padding: 22px 24px 12px;
}

.attraction-copy h2 {
  margin: 0;
  font-size: 28px;
  letter-spacing: 0;
}

.attraction-copy p:last-child {
  max-width: 720px;
  margin: 0;
  color: #d7d9dd;
  line-height: 1.6;
}

.attraction-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 4px 24px 18px;
}

.attraction-meta span,
.attraction-spots span {
  min-height: 34px;
  padding: 8px 12px;
  border: 1px solid #37424a;
  border-radius: 999px;
  background: #202328;
  color: #eef6fa;
  font-size: 13px;
  font-weight: 800;
}

.attraction-spots {
  display: none;
  align-content: start;
  flex-wrap: wrap;
  gap: 10px;
  min-height: 0;
  overflow-y: auto;
  padding: 0 24px 24px;
}

.attraction-spots span {
  border-radius: 10px;
  background: #111f27;
  color: #9fe4ff;
}

.attraction-list-panel {
  grid-template-rows: auto auto minmax(0, 1fr);
}

.attraction-toolbar {
  align-items: center;
  grid-template-columns: 1fr auto;
  margin-bottom: 16px;
}

.attraction-toolbar .eyebrow {
  margin: 0 0 3px;
}

.attraction-controls {
  display: grid;
  gap: 12px;
  margin-bottom: 20px;
}

.attraction-search {
  display: grid;
  grid-template-columns: 36px 1fr;
  align-items: center;
  min-height: 46px;
  border: 1px solid #33434d;
  border-radius: 12px;
  background: #181b1f;
  color: #8fa4b0;
}

.attraction-search > span {
  text-align: center;
  font-size: 20px;
}

.attraction-search input {
  min-width: 0;
  height: 44px;
  border: 0;
  outline: 0;
  background: transparent;
  color: #f4f4f5;
}

.attraction-filter-list {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  padding-bottom: 3px;
  scrollbar-width: none;
}

.attraction-filter-list::-webkit-scrollbar { display: none; }

.attraction-filter {
  flex: 0 0 auto;
  min-height: 36px;
  border: 1px solid #36454f;
  border-radius: 999px;
  padding: 0 14px;
  background: #181b1f;
  color: #bac6cd;
  font-size: 13px;
  font-weight: 850;
}

.attraction-filter:hover,
.attraction-filter:focus-visible,
.attraction-filter.active {
  border-color: #2fb7e9;
  outline: 0;
  background: #153747;
  color: #dff7ff;
}

.attraction-list-panel .attraction-category-list {
  display: block;
  overflow-y: auto;
  padding: 0 8px 24px 0;
}

.attraction-group + .attraction-group {
  margin-top: 30px;
}

.attraction-group > header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
}

.attraction-group > header > div {
  display: flex;
  align-items: baseline;
  gap: 9px;
}

.attraction-group h2 {
  margin: 0;
  font-size: 18px;
  letter-spacing: -0.02em;
}

.attraction-group header span {
  color: #85939c;
  font-size: 12px;
  font-weight: 800;
}

.attraction-group header button {
  border: 0;
  background: transparent;
  color: #75d8fa;
  font-size: 12px;
  font-weight: 900;
}

.attraction-place-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 11px;
}

.attraction-place-card {
  min-width: 0;
  overflow: hidden;
  border: 1px solid #2d3942;
  border-radius: 12px;
  padding: 0;
  background: #181b1f;
  color: #f4f4f5;
  text-align: left;
  transition: border-color 160ms ease, transform 160ms ease, box-shadow 160ms ease;
}

.attraction-place-card:hover,
.attraction-place-card:focus-visible,
.attraction-place-card.active {
  border-color: #36a7d5;
  outline: 0;
  box-shadow: 0 12px 24px rgba(0, 0, 0, 0.22);
  transform: translateY(-2px);
}

.attraction-card-visual {
  position: relative;
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  background: linear-gradient(135deg, #344955, #18242c);
}

.attraction-card-badge {
  position: absolute;
  top: 9px;
  left: 9px;
  max-width: calc(100% - 18px);
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.2);
  border-radius: 999px;
  padding: 4px 8px;
  background: rgba(9, 18, 24, 0.7);
  color: #ffffff;
  font-size: 10px;
  font-weight: 900;
  text-overflow: ellipsis;
  white-space: nowrap;
  backdrop-filter: blur(6px);
}

.attraction-card-copy {
  display: grid;
  gap: 5px;
  min-height: 78px;
  padding: 11px;
}

.attraction-card-copy strong {
  overflow: hidden;
  font-size: 14px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.attraction-card-copy small {
  display: -webkit-box;
  overflow: hidden;
  color: #9eabb3;
  font-size: 11px;
  line-height: 1.4;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.attraction-card-copy em {
  color: #70c9e8;
  font-size: 11px;
  font-style: normal;
  font-weight: 800;
}

.attraction-no-results {
  margin: 40px 0;
  color: #9eabb3;
  text-align: center;
}

@media (max-width: 1300px) {
  .attraction-place-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 620px) {
  .attraction-place-grid { grid-template-columns: 1fr; }
}

.shared-trips-page {
  display: grid;
  grid-template-columns: minmax(520px, 2fr) minmax(280px, 1fr);
  gap: 28px;
  min-height: 0;
  padding: 26px 28px 32px;
  overflow: hidden;
  background: #101011;
}

.shared-list-panel {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  min-width: 0;
  min-height: 0;
}

.shared-toolbar {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: end;
  gap: 12px;
  min-height: 32px;
  margin-bottom: 14px;
}

.shared-toolbar h1 {
  margin: 0;
  font-size: 22px;
  letter-spacing: 0;
}

.shared-toolbar span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.shared-trip-list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-content: start;
  gap: 12px;
  overflow-y: auto;
  padding-right: 8px;
}

.shared-trip-card {
  display: grid;
  grid-template-columns: 38px 1fr;
  align-items: center;
  gap: 10px;
  min-height: 82px;
  padding: 12px;
  border: 1px solid #2d3942;
  background: #181b1f;
  color: var(--text);
  text-align: left;
}

.shared-trip-card:hover,
.shared-trip-card:focus-visible,
.shared-trip-card.active {
  border-color: #36a7d5;
  outline: 0;
  background: #20272d;
}

.shared-avatar {
  display: grid;
  place-items: center;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: #284252;
  color: #9fe4ff;
  font-weight: 900;
}

.shared-card-copy {
  display: grid;
  gap: 4px;
  min-width: 0;
}

.shared-card-copy strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: normal;
}

.shared-card-copy small {
  color: var(--muted);
  font-weight: 800;
}

.shared-detail-panel {
  display: grid;
  grid-template-rows: 140px auto auto minmax(0, 1fr);
  min-width: 0;
  min-height: 0;
  overflow: hidden;
  border: 1px solid #34424b;
  background: #17191c;
}

.shared-visual {
  min-height: 140px;
  background: linear-gradient(135deg, #455f73, #c7a27a);
}

.shared-copy {
  display: grid;
  gap: 8px;
  padding: 22px 24px 12px;
}

.shared-copy h2 {
  margin: 0;
  font-size: 26px;
  letter-spacing: 0;
}

.shared-copy p:last-child {
  margin: 0;
  color: #d7d9dd;
  line-height: 1.6;
}

.shared-meta,
.shared-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 4px 24px 18px;
}

.shared-tags {
  align-content: start;
  overflow-y: auto;
  padding-top: 0;
  padding-bottom: 24px;
}

.shared-meta span,
.shared-tags span {
  min-height: 34px;
  padding: 8px 12px;
  border: 1px solid #37424a;
  border-radius: 999px;
  background: #202328;
  color: #eef6fa;
  font-size: 13px;
  font-weight: 800;
}

.shared-trip-detail-page {
  display: grid;
  grid-template-columns: minmax(300px, 34%) minmax(360px, 1fr);
  gap: 28px;
  min-height: 0;
  padding: 26px 28px 32px;
  overflow: hidden;
  background: #101011;
}

.shared-back {
  min-height: 32px;
  padding: 0 12px;
  border: 1px solid #394049;
  border-radius: 999px;
  background: #202328;
  color: #ffffff;
  font-size: 13px;
  font-weight: 900;
}

.shared-plan-card {
  grid-template-columns: 38px 1fr;
  cursor: default;
}

.import-trip-button {
  min-height: 46px;
  margin-top: 16px;
  border: 0;
  border-radius: 12px;
  background: #ffffff;
  color: #101011;
  font-weight: 900;
}

.import-trip-button:disabled {
  cursor: default;
  background: #294b37;
  color: #baf4ce;
}

.discover {
  display: grid;
  align-content: start;
  gap: 28px;
  min-height: 100vh;
  padding: 38px 16px 28px 28px;
  overflow-y: auto;
  background: var(--panel);
  border-left: 1px solid #222326;
}

.location-panel {
  align-content: stretch;
}

.live-map-section {
  display: grid;
  grid-template-rows: minmax(420px, 1fr);
  gap: 0;
  min-height: calc(100vh - 66px);
}

.live-map-section .section-row {
  align-items: start;
}

.live-map-card {
  position: relative;
  min-height: 420px;
  overflow: hidden;
  border: 1px solid #303134;
  border-radius: 28px;
  background:
    linear-gradient(rgba(255, 255, 255, 0.72), rgba(255, 255, 255, 0.72)),
    linear-gradient(135deg, #d8e4da, #eef2e7 38%, #d9e7ef 39%, #f5f0dc);
}

.naver-map {
  width: 100%;
  height: 100%;
  min-height: 420px;
}

.map-loading {
  position: absolute;
  inset: 18px;
  display: grid;
  place-content: center;
  gap: 8px;
  border: 1px dashed rgba(20, 25, 30, 0.26);
  border-radius: 22px;
  background: rgba(15, 17, 20, 0.68);
  color: #ffffff;
  text-align: center;
  pointer-events: none;
}

.map-loading span {
  color: #d9dde5;
  font-size: 14px;
}

.map-loading.ready {
  opacity: 0;
}

.map-status {
  margin: 0;
  padding: 14px 16px;
  border: 1px solid #303134;
  border-radius: 18px;
  background: #202123;
  color: var(--muted);
  line-height: 1.55;
}

.map-status.error {
  border-color: #633434;
  background: #3a2020;
  color: #ffc0c0;
}

.panel-section {
  display: grid;
  gap: 14px;
}

.panel-section h2,
.section-row h2 {
  margin: 0;
  font-size: 19px;
  letter-spacing: 0;
}

.hero-cards,
.inspire-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.feature-card,
.place-card,
.story-card {
  position: relative;
  display: flex;
  align-items: end;
  min-height: 142px;
  overflow: hidden;
  border-radius: 12px;
  background: #24262a;
  isolation: isolate;
}

.feature-card::before,
.place-card::before,
.story-card::before {
  position: absolute;
  inset: 0;
  z-index: -2;
  content: "";
  background-position: center;
  background-size: cover;
}

.feature-card::after,
.place-card::after,
.story-card::after {
  position: absolute;
  inset: 34% 0 0;
  z-index: -1;
  content: "";
  background: linear-gradient(transparent, rgba(0, 0, 0, 0.78));
}

.feature-card span,
.place-card strong,
.place-card span,
.story-card strong {
  padding: 0 16px;
}

.feature-card span,
.place-card strong,
.story-card strong {
  margin-bottom: 18px;
  font-weight: 900;
}

.feature-card.blue::before {
  background:
    radial-gradient(circle at 62% 30%, #ff9dc6 0 10%, transparent 11%),
    radial-gradient(circle at 70% 32%, #122638 0 8%, transparent 9%),
    linear-gradient(145deg, #22a8dd, #36cff1);
}

.feature-card.amber::before {
  background:
    radial-gradient(circle at 80% 14%, #ffe0b8 0 14%, transparent 15%),
    linear-gradient(100deg, #f3b400 0 44%, #27394b 45% 56%, #f4af00 57%);
}

.section-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.section-row button {
  min-height: 32px;
  padding: 0 13px;
  border: 1px solid #3a3b3f;
  border-radius: 999px;
  background: transparent;
  color: #ffffff;
  font-weight: 800;
}

.place-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}

.place-card {
  min-height: 208px;
  align-content: end;
  flex-direction: column;
  align-items: start;
  justify-content: end;
  padding-bottom: 16px;
}

.place-card strong {
  margin-bottom: 2px;
}

.place-card span {
  color: #eceef2;
  font-size: 12px;
  font-weight: 800;
}

.place-card.hotel::before {
  background-image:
    linear-gradient(135deg, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.25)),
    url("./assets/images/hotel.jpg");
}

.place-card.museum::before {
  background-image: linear-gradient(135deg, #465f70, #202326);
}

.place-card.bakery::before {
  background-image: linear-gradient(135deg, #8b6244, #23201d);
}

.story-card {
  min-height: 208px;
}

.story-card.night::before {
  background-image: linear-gradient(135deg, #1d6f88, #17191d);
}

.story-card.sunset::before {
  background-image: linear-gradient(135deg, #a86f57, #1c1b20);
}

@media (max-width: 1180px) {
  .app-shell {
    grid-template-columns: 88px minmax(420px, 1fr) 360px;
  }

  .create-recommendations {
    display: none;
  }

  .app-shell.schedule-mode {
    grid-template-columns: 88px minmax(0, 1fr);
  }

  .app-shell.schedule-drawer-open {
    grid-template-columns: 64px minmax(420px, 1fr) 360px;
  }

  .app-shell.chat-drawer-open {
    grid-template-columns: 64px minmax(420px, 1fr) 360px;
  }

  .app-shell.schedule-mode.schedule-drawer-open {
    grid-template-columns: 64px minmax(0, 1fr);
  }

  .app-shell.schedule-mode.chat-drawer-open {
    grid-template-columns: 64px minmax(0, 1fr);
  }

  .schedule-drawer {
    left: 88px;
    width: min(320px, calc(100vw - 88px));
  }

  .chat-history-drawer {
    left: 64px;
    width: min(340px, calc(100vw - 64px));
  }

  .schedule-page {
    grid-template-columns: minmax(280px, 36%) minmax(320px, 1fr);
    gap: 20px;
    padding-inline: 22px;
  }

  .attractions-page {
    grid-template-columns: minmax(460px, 2fr) minmax(260px, 1fr);
    gap: 20px;
    padding-inline: 22px;
  }

  .shared-trips-page {
    grid-template-columns: minmax(460px, 2fr) minmax(260px, 1fr);
    gap: 20px;
    padding-inline: 22px;
  }

  .shared-trip-detail-page {
    grid-template-columns: minmax(280px, 36%) minmax(320px, 1fr);
    gap: 20px;
    padding-inline: 22px;
  }

  .brand span:last-child,
  .nav-item span:last-child,
  .account-copy,
  .more {
    display: none;
  }

  .brand,
  .nav-item,
  .account-panel {
    justify-content: center;
  }

  .account-panel {
    grid-template-columns: 34px;
  }

  .history-dropdown {
    left: 0;
  }

}

@media (max-width: 900px) {
  .app-shell {
    grid-template-columns: 72px 1fr;
  }

  .app-shell.schedule-mode {
    grid-template-columns: 72px minmax(0, 1fr);
  }

  .app-shell.schedule-drawer-open,
  .app-shell.schedule-mode.schedule-drawer-open,
  .app-shell.chat-drawer-open {
    grid-template-columns: 64px minmax(0, 1fr);
  }

  .schedule-drawer {
    left: 72px;
    width: min(320px, calc(100vw - 72px));
  }

  .chat-history-drawer {
    left: 64px;
    width: min(330px, calc(100vw - 64px));
  }

  .discover {
    display: none;
  }

  .schedule-page {
    grid-template-columns: 1fr;
    overflow-y: auto;
  }

  .attractions-page {
    grid-template-columns: 1fr;
    overflow-y: auto;
  }

  .shared-trips-page,
  .shared-trip-detail-page {
    grid-template-columns: 1fr;
    overflow-y: auto;
  }

  .attraction-category-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    overflow: visible;
    padding-right: 0;
  }

  .shared-trip-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    overflow: visible;
    padding-right: 0;
  }

  .map-panel {
    min-height: 360px;
  }

  .place-chat-panel {
    top: 64px;
    right: 12px;
    bottom: 12px;
    width: min(76%, 430px);
    grid-template-rows: auto 110px auto auto minmax(74px, 1fr) auto;
  }

  .plan-actions {
    opacity: 1;
    pointer-events: auto;
    transform: none;
  }

  .conversation {
    padding-inline: 24px;
  }

  .question-card,
  .composer-dock {
    margin-inline: 24px;
  }

  .option-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 620px) {
  .app-shell {
    display: block;
  }

  .sidebar {
    position: fixed;
    inset: auto 0 0;
    z-index: 10;
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    min-height: 62px;
    padding: 6px 8px;
    border-top: 1px solid #292b2f;
    border-right: 0;
  }

  .brand,
  .sidebar-spacer {
    display: none;
  }

  .side-nav {
    display: contents;
  }

  .history-nav {
    display: grid;
    place-items: center;
  }

  .history-dropdown {
    top: auto;
    right: 8px;
    bottom: 58px;
    left: auto;
    width: min(300px, calc(100vw - 24px));
  }

  .nav-item {
    justify-content: center;
    min-height: 50px;
  }

  .account-panel {
    align-self: center;
    justify-self: center;
    width: 44px;
    margin: 0;
  }

  .chat-area {
    min-height: 100svh;
    padding-bottom: 70px;
  }

  .chat-area.schedule-active {
    padding-bottom: 70px;
  }

  .topbar {
    padding-inline: 14px;
  }

  .welcome p {
    font-size: 16px;
  }

  .conversation {
    padding: 24px 16px 16px;
  }

  .schedule-page {
    padding: 18px 12px;
  }

  .attractions-page {
    padding: 18px 12px;
  }

  .shared-trips-page,
  .shared-trip-detail-page {
    padding: 18px 12px;
  }

  .attraction-category-list {
    grid-template-columns: 1fr;
  }

  .shared-trip-list {
    grid-template-columns: 1fr;
  }

  .schedule-drawer,
  .app-shell.schedule-drawer-open .schedule-drawer,
  .chat-history-drawer {
    right: 0;
    bottom: 62px;
    left: 0;
    width: 100%;
  }

  .transport-page {
    padding: 18px 12px;
  }

  .transport-search-form {
    grid-template-columns: 1fr;
  }

  .transport-result-card {
    grid-template-columns: 1fr;
  }

  .attraction-detail-panel {
    grid-template-rows: 140px auto auto;
  }

  .attraction-copy {
    padding-inline: 16px;
  }

  .attraction-meta,
  .attraction-spots {
    padding-inline: 16px;
  }

  .plan-card {
    grid-template-columns: 34px 1fr 68px;
    min-height: 64px;
  }

  .question-card,
  .composer-dock {
    margin-inline: 12px;
  }

  .option-grid {
    grid-template-columns: 1fr;
  }

  .guided-answer {
    grid-template-columns: 1fr;
  }
}

/* Create-trip workspace polish */
.app-shell:not(.schedule-mode) {
  background: #0d0f10;
}

.app-shell:not(.schedule-mode) .chat-area {
  grid-template-rows: 56px minmax(0, 1fr) auto auto;
  border-right: 1px solid #25282b;
  background:
    radial-gradient(circle at 50% 0%, rgba(39, 111, 139, 0.09), transparent 34%),
    #0f1112;
}

.app-shell:not(.schedule-mode) .topbar {
  min-height: 56px;
  padding: 0 22px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.055);
  background: rgba(15, 17, 18, 0.88);
  backdrop-filter: blur(14px);
}

.app-shell:not(.schedule-mode) .chat-title {
  color: #f5f8f9;
  font-size: 15px;
  letter-spacing: -0.01em;
}

.app-shell:not(.schedule-mode) .conversation {
  gap: 12px;
  padding: 24px clamp(18px, 3vw, 38px) 18px;
  scrollbar-width: thin;
  scrollbar-color: #3b4246 transparent;
}

.app-shell:not(.schedule-mode) .message {
  max-width: min(92%, 620px);
  padding: 13px 15px;
  border-color: #2b3033;
  border-radius: 16px 16px 16px 5px;
  background: #191c1e;
  box-shadow: 0 8px 22px rgba(0, 0, 0, 0.12);
}

.app-shell:not(.schedule-mode) .message.user {
  border-color: #315b6a;
  border-radius: 16px 16px 5px 16px;
  background: #18313b;
}

.app-shell:not(.schedule-mode) .message p {
  font-size: 14px;
}

.app-shell:not(.schedule-mode) .composer-dock {
  gap: 10px;
  margin: 0 clamp(16px, 2.8vw, 34px) 18px;
}

.app-shell:not(.schedule-mode) .composer {
  min-height: 66px;
  padding: 8px 10px;
  border-color: #383e42;
  border-radius: 20px;
  background: rgba(21, 24, 26, 0.98);
  box-shadow: 0 14px 36px rgba(0, 0, 0, 0.24);
}

.app-shell:not(.schedule-mode) .composer:focus-within {
  border-color: #2d8cab;
  box-shadow: 0 0 0 3px rgba(45, 140, 171, 0.11), 0 14px 36px rgba(0, 0, 0, 0.24);
}

.app-shell:not(.schedule-mode) .composer input {
  font-size: 14px;
}

.app-shell:not(.schedule-mode) .composer-mode {
  background-color: #262a2d;
}

.app-shell:not(.schedule-mode) .trip-create-btn {
  width: 46px;
  height: 46px;
  background: linear-gradient(145deg, #2787a7, #195b73);
  color: #fff;
  box-shadow: 0 10px 24px rgba(25, 91, 115, 0.34);
}

.app-shell:not(.schedule-mode) .create-recommendations {
  padding: 26px 18px 18px;
  border-left: 0;
  border-right: 1px solid #dfe5e7;
  background: #f5f7f7;
}

.app-shell:not(.schedule-mode) .create-recommendations-header {
  align-items: center;
  padding: 0 4px 10px;
}

.app-shell:not(.schedule-mode) .create-recommendations-header h2 {
  font-size: 24px;
}

.app-shell:not(.schedule-mode) .create-recommendations-header > span {
  min-width: 34px;
  height: 34px;
  box-shadow: inset 0 0 0 1px rgba(37, 130, 160, 0.08);
}

.app-shell:not(.schedule-mode) .create-recommendations-summary {
  margin-bottom: 12px;
  padding-bottom: 12px;
  border-bottom: 1px solid #e2e7e8;
}

.app-shell:not(.schedule-mode) .create-recommendation-filters {
  margin-bottom: 14px;
}

.app-shell:not(.schedule-mode) .create-recommendation-filter {
  min-height: 30px;
  border-color: #d7e0e2;
  background: rgba(255, 255, 255, 0.86);
}

.app-shell:not(.schedule-mode) .create-recommendations-list {
  gap: 10px;
  height: auto;
  min-height: 0;
  padding: 1px 4px 14px;
}

.app-shell:not(.schedule-mode) .create-recommendation-card {
  grid-template-columns: 68px minmax(0, 1fr) 24px;
  gap: 11px;
  min-height: 88px;
  padding: 9px;
  border-color: #dde4e5;
  border-radius: 16px;
  box-shadow: 0 4px 14px rgba(25, 55, 66, 0.045);
}

.app-shell:not(.schedule-mode) .create-recommendation-image {
  width: 68px;
  height: 68px;
  border-radius: 12px;
}

.app-shell:not(.schedule-mode) .create-recommendation-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 25px rgba(30, 65, 76, 0.11);
}

.app-shell:not(.schedule-mode) .discover.location-panel {
  padding: 14px;
  overflow: hidden;
  border-left: 0;
  background: #edf1f1;
}

.app-shell:not(.schedule-mode) .live-map-section {
  min-height: calc(100vh - 28px);
}

.app-shell:not(.schedule-mode) .live-map-card {
  min-height: calc(100vh - 28px);
  border-color: #d5dddf;
  border-radius: 22px;
  background: #e7eceb;
  box-shadow: 0 14px 34px rgba(22, 47, 57, 0.13);
}

.app-shell:not(.schedule-mode) .naver-map {
  min-height: calc(100vh - 28px);
}

@media (min-width: 1260px) {
  .app-shell:not(.schedule-mode) {
    grid-template-columns: 224px minmax(340px, 0.9fr) minmax(310px, 0.76fr) minmax(420px, 1.15fr);
  }

  .app-shell:not(.schedule-mode).sidebar-collapsed {
    grid-template-columns: 64px minmax(340px, 0.9fr) minmax(310px, 0.76fr) minmax(420px, 1.15fr);
  }
}

/* Create-trip color system */
.app-shell:not(.schedule-mode) {
  --create-ink: #102a35;
  --create-navy: #0c2029;
  --create-navy-soft: #132c36;
  --create-teal: #1686a5;
  --create-teal-deep: #0e6f8b;
  --create-sky: #dff2f6;
  --create-cream: #faf8f2;
  --create-card: #fffefa;
  --create-line: #dce6e6;
  background: #dfe9ea;
}

.app-shell:not(.schedule-mode) .sidebar {
  border-right-color: #1b3944;
  background:
    radial-gradient(circle at 50% 0%, rgba(41, 153, 184, 0.18), transparent 28%),
    var(--create-navy);
}

.app-shell:not(.schedule-mode) .sidebar-toggle {
  border-color: #31505b;
  background: #15313c;
  color: #d9f5fc;
}

.app-shell:not(.schedule-mode) .nav-item:hover,
.app-shell:not(.schedule-mode) .nav-item:focus-visible {
  background: rgba(88, 190, 216, 0.11);
  color: #eafaff;
}

.app-shell:not(.schedule-mode) .nav-item.active {
  background: linear-gradient(135deg, rgba(35, 151, 183, 0.3), rgba(35, 151, 183, 0.12));
  color: #8fe2f4;
  box-shadow: inset 3px 0 0 #45b8d5;
}

.app-shell:not(.schedule-mode) .chat-area {
  border-right-color: #23404a;
  background:
    radial-gradient(circle at 52% -8%, rgba(38, 150, 181, 0.2), transparent 34%),
    linear-gradient(165deg, #0d2028 0%, #0b171d 72%);
}

.app-shell:not(.schedule-mode) .topbar {
  border-bottom-color: rgba(133, 210, 228, 0.11);
  background: rgba(11, 28, 35, 0.86);
}

.app-shell:not(.schedule-mode) .chat-title {
  color: #f2fbfd;
}

.app-shell:not(.schedule-mode) .message {
  border-color: #29434d;
  background: #142b34;
}

.app-shell:not(.schedule-mode) .message strong {
  color: #8edff1;
}

.app-shell:not(.schedule-mode) .message p {
  color: #e8f2f4;
}

.app-shell:not(.schedule-mode) .message.user {
  border-color: #287d97;
  background: linear-gradient(145deg, #17657d, #155267);
}

.app-shell:not(.schedule-mode) .message.user strong,
.app-shell:not(.schedule-mode) .message.user p {
  color: #ffffff;
}

.app-shell:not(.schedule-mode) .composer {
  border-color: #31505b;
  background: #102730;
}

.app-shell:not(.schedule-mode) .composer input {
  color: #f2fafc;
}

.app-shell:not(.schedule-mode) .composer input::placeholder {
  color: #86a1aa;
}

.app-shell:not(.schedule-mode) .composer-mode {
  border-color: #385862;
  background-color: #19333d;
  color: #dff6fb;
}

.app-shell:not(.schedule-mode) .send-btn {
  background: #d5e9ed;
  color: #12303b;
}

.app-shell:not(.schedule-mode) .send-btn:hover,
.app-shell:not(.schedule-mode) .send-btn:focus-visible {
  background: #ffffff;
}

.app-shell:not(.schedule-mode) .trip-create-btn {
  background: linear-gradient(145deg, #25a1c2, #11758f);
  box-shadow: 0 10px 26px rgba(17, 117, 143, 0.42);
}

.app-shell:not(.schedule-mode) .create-recommendations {
  border-right-color: var(--create-line);
  background:
    radial-gradient(circle at 100% 0%, rgba(62, 171, 197, 0.1), transparent 24%),
    var(--create-cream);
  color: var(--create-ink);
}

.app-shell:not(.schedule-mode) .create-recommendations-header p {
  color: var(--create-teal-deep);
}

.app-shell:not(.schedule-mode) .create-recommendations-header h2 {
  color: var(--create-ink);
}

.app-shell:not(.schedule-mode) .create-recommendations-header > span {
  background: var(--create-sky);
  color: var(--create-teal-deep);
}

.app-shell:not(.schedule-mode) .create-recommendations-summary {
  border-bottom-color: #e2e6e2;
  color: #65777d;
}

.app-shell:not(.schedule-mode) .create-recommendation-filter {
  border-color: #d7e1e1;
  background: var(--create-card);
  color: #5f737a;
}

.app-shell:not(.schedule-mode) .create-recommendation-filter[aria-pressed="true"] {
  border-color: #65b8ca;
  background: var(--create-sky);
  color: #0d6e88;
}

.app-shell:not(.schedule-mode) .selected-only-filter {
  border-color: rgba(169,80,112,.38);
  color: #94425f;
}

.app-shell:not(.schedule-mode) .selected-only-filter[aria-pressed="true"] {
  border-color: #a95070;
  background: #a95070;
  color: #fff;
}

.app-shell:not(.schedule-mode) .create-recommendation-card {
  border-color: #dfe7e5;
  background: var(--create-card);
  color: var(--create-ink);
}

.app-shell:not(.schedule-mode) .create-recommendation-card:hover {
  border-color: #71bdce;
}

.app-shell:not(.schedule-mode) .create-recommendation-card.selected {
  border-color: var(--create-teal);
  background: #eaf7f9;
}

.app-shell:not(.schedule-mode) .create-recommendation-card.selected > b {
  background: var(--create-teal);
}

.app-shell:not(.schedule-mode) .create-recommendation-copy small {
  color: var(--create-teal-deep);
}

.app-shell:not(.schedule-mode) .create-recommendation-copy span {
  color: #77868a;
}

.app-shell:not(.schedule-mode) .discover.location-panel {
  background:
    linear-gradient(145deg, rgba(224, 239, 241, 0.95), rgba(211, 226, 229, 0.95));
}

.app-shell:not(.schedule-mode) .live-map-card {
  border-color: #b9cfd3;
  background: #dce9eb;
  box-shadow: 0 16px 38px rgba(25, 70, 82, 0.17);
}

.app-shell:not(.schedule-mode) .chat-place-result {
  border-color: #31505b;
  background: #17313b;
}

.app-shell:not(.schedule-mode) .chat-place-result:hover,
.app-shell:not(.schedule-mode) .chat-place-result:focus-visible {
  border-color: #43a8c2;
  background: #193c48;
}

/* Explore pages: use the same pink ink-wash language as itinerary pages. */
.app-shell:has(.nav-item[data-page="attractions"].active) .sidebar,
.app-shell:has(.nav-item[data-page="restaurants"].active) .sidebar {
  border-right-color: #4c303a;
  background:
    radial-gradient(ellipse at 50% 0%, rgba(190,91,125,.2), transparent 30%),
    linear-gradient(180deg, #35252b, #241b1f 72%);
}

.app-shell:has(.nav-item[data-page="attractions"].active) .nav-item:hover,
.app-shell:has(.nav-item[data-page="attractions"].active) .nav-item:focus-visible,
.app-shell:has(.nav-item[data-page="restaurants"].active) .nav-item:hover,
.app-shell:has(.nav-item[data-page="restaurants"].active) .nav-item:focus-visible {
  background: rgba(211,116,148,.11);
  color: #fff0f5;
}

.app-shell:has(.nav-item[data-page="attractions"].active) .nav-item.active,
.app-shell:has(.nav-item[data-page="restaurants"].active) .nav-item.active {
  background: linear-gradient(135deg, rgba(196,95,125,.32), rgba(196,95,125,.1));
  color: #f3b7ca;
  box-shadow: inset 3px 0 0 #d77e9b;
}

:is(#attractionsPage, #restaurantsPage) {
  gap: 22px;
  padding: 22px;
  color: #382b31;
  background:
    radial-gradient(ellipse at 8% 10%, rgba(226,151,174,.2), transparent 30%),
    radial-gradient(ellipse at 82% 92%, rgba(190,105,135,.1), transparent 28%),
    repeating-linear-gradient(8deg, rgba(88,57,68,.018) 0 1px, transparent 1px 8px),
    #fbf7f6;
}

:is(#attractionsPage, #restaurantsPage) .attraction-list-panel {
  padding: 20px;
  overflow: hidden;
  border: 1px solid rgba(137,84,103,.16);
  border-radius: 24px;
  background: rgba(255,252,251,.76);
  box-shadow: 0 16px 38px rgba(92,53,67,.09);
  backdrop-filter: blur(10px);
}

:is(#attractionsPage, #restaurantsPage) .attraction-toolbar {
  min-height: 58px;
  margin-bottom: 16px;
  padding-bottom: 14px;
  border-bottom: 1px solid rgba(137,84,103,.14);
}

:is(#attractionsPage, #restaurantsPage) .attraction-toolbar .eyebrow {
  color: #a44767;
  font-weight: 900;
  letter-spacing: .16em;
}

:is(#attractionsPage, #restaurantsPage) .attraction-toolbar h1 {
  color: #382b31;
  font-size: 25px;
  letter-spacing: -.035em;
}

:is(#attractionsPage, #restaurantsPage) .attraction-toolbar > span {
  padding: 6px 10px;
  border-radius: 999px;
  background: #f1dce3;
  color: #94425f;
}

:is(#attractionsPage, #restaurantsPage) .attraction-controls {
  gap: 10px;
  margin-bottom: 18px;
}

:is(#attractionsPage, #restaurantsPage) .attraction-search {
  border-color: rgba(137,84,103,.2);
  border-radius: 15px;
  background: rgba(255,255,255,.82);
  color: #a04b69;
  box-shadow: 0 7px 18px rgba(92,53,67,.05);
}

:is(#attractionsPage, #restaurantsPage) .attraction-search input {
  color: #4a353d;
}

:is(#attractionsPage, #restaurantsPage) .attraction-search input::placeholder {
  color: #9a818a;
}

:is(#attractionsPage, #restaurantsPage) .attraction-filter {
  border-color: rgba(137,84,103,.2);
  background: rgba(255,255,255,.78);
  color: #806b73;
}

:is(#attractionsPage, #restaurantsPage) .attraction-filter:hover,
:is(#attractionsPage, #restaurantsPage) .attraction-filter:focus-visible,
:is(#attractionsPage, #restaurantsPage) .attraction-filter.active {
  border-color: #c87592;
  background: #f3dfe6;
  color: #8f405d;
  box-shadow: 0 5px 14px rgba(143,64,93,.1);
}

:is(#attractionsPage, #restaurantsPage) .attraction-list-panel .attraction-category-list {
  padding-right: 6px;
  scrollbar-color: #d79aaf transparent;
}

:is(#attractionsPage, #restaurantsPage) .attraction-group + .attraction-group {
  margin-top: 26px;
}

:is(#attractionsPage, #restaurantsPage) .attraction-group > header {
  margin-bottom: 11px;
  padding-bottom: 9px;
  border-bottom: 1px solid rgba(137,84,103,.12);
}

:is(#attractionsPage, #restaurantsPage) .attraction-group h2 {
  color: #49343c;
}

:is(#attractionsPage, #restaurantsPage) .attraction-group header span {
  color: #99838b;
}

:is(#attractionsPage, #restaurantsPage) .attraction-group header button {
  color: #a84e6e;
}

:is(#attractionsPage, #restaurantsPage) .attraction-place-card {
  border-color: rgba(137,84,103,.17);
  border-radius: 16px;
  background: rgba(255,254,253,.94);
  color: #382b31;
  box-shadow: 0 7px 18px rgba(92,53,67,.06);
}

:is(#attractionsPage, #restaurantsPage) .attraction-place-card:hover,
:is(#attractionsPage, #restaurantsPage) .attraction-place-card:focus-visible,
:is(#attractionsPage, #restaurantsPage) .attraction-place-card.active {
  border-color: #c87592;
  background: #fff;
  box-shadow: 0 0 0 2px rgba(200,117,146,.12), 0 12px 26px rgba(105,53,73,.12);
}

:is(#attractionsPage, #restaurantsPage) .attraction-card-badge {
  border-color: rgba(255,255,255,.38);
  background: rgba(91,45,62,.76);
}

:is(#attractionsPage, #restaurantsPage) .attraction-card-copy strong {
  color: #382b31;
}

:is(#attractionsPage, #restaurantsPage) .attraction-card-copy small {
  color: #8d7981;
}

:is(#attractionsPage, #restaurantsPage) .attraction-card-copy em {
  color: #a84e6e;
}

:is(#attractionsPage, #restaurantsPage) .attraction-detail-panel {
  border-color: rgba(137,84,103,.2);
  border-radius: 24px;
  background: rgba(255,252,251,.84);
  box-shadow: 0 16px 38px rgba(92,53,67,.12);
  backdrop-filter: blur(10px);
}

:is(#attractionsPage, #restaurantsPage) .attraction-visual {
  min-height: 180px;
}

:is(#attractionsPage, #restaurantsPage) .attraction-copy .eyebrow {
  color: #a44767;
  font-weight: 900;
  letter-spacing: .16em;
}

:is(#attractionsPage, #restaurantsPage) .attraction-copy h2 {
  color: #382b31;
}

:is(#attractionsPage, #restaurantsPage) .attraction-copy p:last-child {
  color: #806b73;
}

:is(#attractionsPage, #restaurantsPage) .attraction-meta span,
:is(#attractionsPage, #restaurantsPage) .attraction-spots span {
  border-color: rgba(137,84,103,.18);
  background: #f5e7eb;
  color: #843b56;
}

:is(#attractionsPage, #restaurantsPage) .attraction-no-results {
  color: #907b83;
}

@media (max-width: 900px) {
  :is(#attractionsPage, #restaurantsPage) {
    gap: 16px;
    padding: 18px 12px;
  }

  :is(#attractionsPage, #restaurantsPage) .attraction-list-panel {
    padding: 16px;
  }
}

@media (max-width: 620px) {
  :is(#attractionsPage, #restaurantsPage) {
    padding-bottom: 80px;
  }

  :is(#attractionsPage, #restaurantsPage) .attraction-detail-panel {
    border-radius: 19px;
  }
}

/* Mobile application layout */
@media (max-width: 620px) {
  :root { --mobile-nav-height: 56px; }

  html,
  body { height: 100dvh; overscroll-behavior: none; }

  button,
  input,
  select,
  textarea { font-size: 16px; }

  .app-shell,
  .chat-area { min-height: 100dvh; height: 100dvh; }

  .app-shell { overflow: hidden; }

  .sidebar {
    inset: auto 0 0;
    z-index: 80;
    display: flex;
    flex-direction: row;
    align-items: stretch;
    gap: 2px;
    height: calc(var(--mobile-nav-height) + env(safe-area-inset-bottom));
    min-height: 0;
    padding: 5px 6px calc(5px + env(safe-area-inset-bottom));
    overflow: hidden;
    border-top: 1px solid rgba(255,255,255,.12);
    background: rgba(20,22,24,.96);
    box-shadow: 0 -8px 24px rgba(0,0,0,.18);
    backdrop-filter: blur(16px);
  }

  .sidebar-header,
  .sidebar-spacer { display: none; }

  .side-nav {
    display: flex;
    flex-direction: row;
    align-items: stretch;
    flex: 1 1 auto;
    gap: 2px;
    min-width: 0;
    overflow-x: auto;
    overflow-y: hidden;
    scrollbar-width: none;
    scroll-snap-type: x proximity;
  }

  .side-nav::-webkit-scrollbar { display: none; }

  .side-nav > .nav-item,
  .history-nav {
    flex: 0 0 56px;
    min-width: 56px;
    scroll-snap-align: center;
  }

  .history-nav { display: flex; }

  .history-nav > .nav-item { flex: 1 1 auto; }

  .nav-item {
    display: grid;
    place-items: center;
    min-height: 54px;
    padding: 5px;
    border-radius: 13px;
  }

  .nav-item .icon { font-size: 19px; }

  .nav-item.active {
    background: rgba(255,255,255,.12);
    box-shadow: inset 0 2px 0 currentColor;
  }

  .nav-item span:last-child { display: none; }

  .account-panel {
    flex: 0 0 48px;
    width: 48px;
    min-height: 54px;
    padding: 5px;
    border-left: 1px solid rgba(255,255,255,.1);
  }

  .history-dropdown {
    position: fixed;
    right: 8px;
    bottom: calc(var(--mobile-nav-height) + env(safe-area-inset-bottom) + 6px);
    left: 8px;
    width: auto;
    max-height: min(55dvh, 420px);
    overflow-y: auto;
  }

  .chat-area,
  .chat-area.schedule-active {
    padding-bottom: calc(var(--mobile-nav-height) + env(safe-area-inset-bottom));
    overflow: hidden;
  }

  .topbar {
    min-height: 54px;
    padding: env(safe-area-inset-top) 14px 0;
  }

  .chat-title { max-width: calc(100vw - 28px); }

  .conversation {
    padding: 18px 13px 12px;
    min-height: 0;
    scroll-padding-bottom: 110px;
  }

  .conversation.has-chat-history {
    padding-top: 10px;
    padding-bottom: 18px;
  }

  .conversation.has-chat-history .messages {
    align-content: start;
    min-height: min-content;
  }

  .message { max-width: 92%; }

  .question-card {
    max-height: 42dvh;
    margin: 0 10px 8px;
    padding: 14px;
    overflow-y: auto;
    border-radius: 17px;
  }

  .composer-dock,
  .app-shell:not(.schedule-mode) .composer-dock,
  .app-shell:has(.nav-item[data-page="create-trip"].active) .composer-dock {
    margin: 0 10px 10px;
  }

  .composer { min-height: 56px; border-radius: 18px; }
  .composer input { min-width: 0; }
  .send-btn { flex: 0 0 42px; width: 42px; height: 42px; }

  .itinerary-flow-nav {
    top: 0;
    right: 0;
    left: 0;
    z-index: 30;
    display: flex;
    justify-content: center;
    gap: 6px;
    width: 100%;
    height: 54px;
    padding: 7px 10px;
    overflow-x: auto;
    border-radius: 0 0 14px 14px;
    scrollbar-width: none;
  }

  .itinerary-flow-nav::-webkit-scrollbar { display: none; }
  .itinerary-flow-nav button { flex: 0 0 auto; min-height: 38px; }
  .itinerary-flow-nav button > strong { display: none; font-size: 11px; white-space: nowrap; }
  .itinerary-flow-nav button.current > strong { display: block; }
  .itinerary-flow-nav i { display: none; }

  .chat-area.flow-guide-active,
  .chat-area.schedule-active.flow-guide-active {
    grid-template-rows: 54px minmax(0, 1fr) auto auto;
  }

  .chat-area.schedule-active.flow-guide-active {
    grid-template-rows: 54px minmax(0, 1fr);
  }

  .chat-area.schedule-active.flow-guide-active > .schedule-page {
    grid-row: 2;
    min-height: 0;
  }

  .chat-area.flow-guide-active > .topbar { display: none; }

  .app-shell.sidebar-collapsed .itinerary-flow-nav { left: 0; }

  .schedule-page,
  .attractions-page,
  .shared-trips-page,
  .shared-trip-detail-page,
  .transport-page,
  .admin-page,
  .account-page {
    height: 100%;
    min-height: 0;
    padding: 12px 10px calc(18px + var(--mobile-nav-height));
    overflow-x: hidden;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }

  .schedule-page { display: grid; grid-template-rows: auto minmax(360px, 52dvh); gap: 12px; }
  .schedule-list-panel { min-height: 320px; overflow: visible; }
  .schedule-toolbar { align-items: flex-start; gap: 10px; padding: 12px; }
  .schedule-title-group { min-width: 0; }
  .schedule-toolbar-actions { flex: 0 0 auto; }
  .schedule-add-mode-button { min-height: 42px; padding-inline: 11px; }
  .day-tabs { max-width: calc(100vw - 150px); overflow-x: auto; flex-wrap: nowrap; }
  .schedule-scroll { max-height: none; overflow: visible; }
  .map-panel { min-height: 360px; height: 52dvh; border-radius: 18px; overflow: hidden; }
  .schedule-map-search { right: 8px; left: 8px; width: auto; }
  .schedule-map-filters { right: 8px; left: 8px; overflow-x: auto; }

  .schedule-drawer,
  .app-shell.schedule-drawer-open .schedule-drawer,
  .chat-history-drawer {
    top: max(8px, env(safe-area-inset-top));
    bottom: calc(var(--mobile-nav-height) + env(safe-area-inset-bottom));
    border-radius: 20px 20px 0 0;
  }

  #placeChatPanel,
  #placeChatPanel.location-map-detail,
  .place-chat-panel {
    position: fixed;
    inset: max(8px, env(safe-area-inset-top)) 0 calc(var(--mobile-nav-height) + env(safe-area-inset-bottom));
    z-index: 100;
    width: 100%;
    max-width: none;
    height: auto;
    border: 0;
    border-radius: 20px 20px 0 0;
    box-shadow: 0 -12px 38px rgba(15,35,44,.3);
  }

  #placeChatPanel .place-detail-header { min-height: 58px; }
  #placeChatPanel .place-hero { min-height: 120px; max-height: 26dvh; }
  #placeChatPanel .place-detail-tabs { padding: 10px; }
  #placeChatPanel .place-detail-scroll { padding: 0 14px 22px; overscroll-behavior: contain; }
  #placeChatPanel .place-facts > div { grid-template-columns: 24px minmax(0, 1fr); }

  #placeChatPanel.mobile-list-detail {
    inset: auto 0 calc(var(--mobile-nav-height) + env(safe-area-inset-bottom));
    height: min(55dvh, 560px);
    border-radius: 20px 20px 0 0;
    animation: mobile-place-detail-rise .28s cubic-bezier(.22,.8,.24,1);
  }

  @keyframes mobile-place-detail-rise {
    from { opacity: 0; transform: translateY(100%); }
    to { opacity: 1; transform: translateY(0); }
  }

  :is(#attractionsPage, #restaurantsPage) { gap: 12px; }
  :is(#attractionsPage, #restaurantsPage) .attraction-list-panel { padding: 13px; border-radius: 18px; }
  :is(#attractionsPage, #restaurantsPage) .attraction-toolbar { align-items: flex-start; }
  :is(#attractionsPage, #restaurantsPage) .attraction-controls { display: grid; }
  :is(#attractionsPage, #restaurantsPage) .attraction-filter-list { flex-wrap: nowrap; overflow-x: auto; padding-bottom: 4px; }
  :is(#attractionsPage, #restaurantsPage) .attraction-category-list { gap: 12px; }
  :is(#attractionsPage, #restaurantsPage) .attraction-detail-panel { min-height: 420px; }
  :is(#attractionsPage, #restaurantsPage) .attraction-visual { min-height: 150px; }

  .transport-toolbar,
  .shared-toolbar,
  .attraction-toolbar { flex-wrap: wrap; }

  .trip-basics-header {
    width: calc(100% - 28px);
    padding: max(14px, env(safe-area-inset-top)) 0 10px;
  }

  .trip-basics-main { width: calc(100% - 28px); margin: 8px auto 44px; }
  .trip-basics-section { grid-template-columns: 34px minmax(0, 1fr); gap: 10px; padding: 18px 0 22px; }
  .trip-basics-number { width: 32px; height: 32px; }
  .trip-date-grid { grid-template-columns: 1fr; }
  .trip-date-grid > span { display: none; }
  .trip-companion-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .trip-basics-submit { width: 100%; min-width: 0; }

  .landing-page { overflow-y: auto; }
  .landing-header { padding: max(14px, env(safe-area-inset-top)) 16px 10px; }
  .landing-nav { gap: 7px; }
  .landing-text-button,
  .landing-signup-button { padding-inline: 10px; }
  .landing-start-button-small { display: none; }
  .landing-hero { grid-template-columns: 1fr; min-height: auto; padding: 24px 18px 30px; }
  .landing-copy h1 { font-size: clamp(36px, 11vw, 52px); }
  .landing-visual { min-height: 330px; }
  .landing-footer { padding: 14px 18px calc(14px + env(safe-area-inset-bottom)); }
}

@media (max-width: 390px) {
  .landing-signup-button { display: none; }
  .landing-brand > span:last-child { display: none; }
  .trip-basics-header .landing-brand > span:last-child { display: inline; }
  .place-detail-header h2 { font-size: 18px; }
  .schedule-page { padding-inline: 8px; }
  .plan-card { grid-template-columns: 30px minmax(0, 1fr) 58px; gap: 7px; }
  .attraction-copy h2 { font-size: 22px; }
}

/* Keep the final-itinerary composition above legacy schedule theme rules. */
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-page {
  width:min(100%,1680px);
  margin-inline:auto;
  grid-template-columns:minmax(390px,480px) minmax(0,1fr);
  grid-template-rows:auto minmax(0,1fr);
  gap:0;
  padding:0 24px 18px;
  background:#fbf4f5;
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"],
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .chat-area,
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-page {
  --night:#071326;
  --night-soft:#0e213d;
  --blue:#b64e73;
  --blue-soft:#f9dce6;
  --ink:#10192a;
  --muted:#687386;
  --line:#e6eaf0;
  --paper:#fbf4f5;
  --white:#fff;
  color:var(--ink);
  background:var(--paper) !important;
  background-color:var(--paper) !important;
  background-image:none !important;
  font-family:Pretendard,"Noto Sans KR",sans-serif;
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .chat-area::before {
  content:none !important;
  display:none !important;
  opacity:0 !important;
  background:none !important;
}
body:has(.app-shell.schedule-mode[data-itinerary-type="attraction"]) {
  background:#fbf4f5 !important;
  background-image:none !important;
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] :is(
  .schedule-page,
  .schedule-page button,
  .schedule-page input,
  .schedule-page textarea,
  .schedule-page select
) {
  font-family:Pretendard,"Noto Sans KR",sans-serif;
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-route-day-tabs {
  width:100%;
  max-width:none;
  flex-wrap:nowrap;
  gap:0;
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-route-day-tab {
  flex:0 0 clamp(210px,26vw,310px);
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-list-panel {
  padding:30px;
  border:1px solid #eadde1;
  border-right:0;
  border-radius:18px 0 0 18px;
  background:#fffaf9;
  box-shadow:0 16px 44px rgba(83,40,56,.08);
  backdrop-filter:none;
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .map-panel {
  border:1px solid #eadde1;
  border-radius:0 18px 18px 0;
  background:#dbe3e8;
  box-shadow:0 16px 44px rgba(83,40,56,.08);
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-toolbar {
  min-height:0;
  margin:0;
  padding:0 0 23px;
  border-bottom:1px solid var(--line);
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-title-group { gap:0; }
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-route-day-label {
  margin:0 0 8px;
  color:var(--blue);
  font-size:12px;
  font-weight:800;
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-toolbar h1 {
  max-width:none;
  margin:0;
  color:var(--ink);
  font-size:22px;
  line-height:1.35;
  letter-spacing:-.03em;
  cursor:text;
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-toolbar-actions { align-items:flex-start; gap:6px; }
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-route-count {
  padding:6px 9px;
  border-radius:6px;
  background:#f2f4f7;
  color:var(--muted);
  font-size:10px;
  font-weight:800;
  white-space:nowrap;
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-add-mode-button {
  width:28px;
  min-width:28px;
  min-height:28px;
  padding:0;
  border-color:#eadde1;
  border-radius:50%;
  font-size:0;
  box-shadow:none;
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-add-mode-button::before { content:"+"; font-size:16px; }
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-day-heading { display:none; }
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-scroll {
  min-height:0;
  margin:5px -10px 5px 0;
  padding:0 10px 0 0;
  overflow-x:hidden;
  overflow-y:auto;
  scrollbar-width:thin;
  scrollbar-color:#d28aa3 #f8eaee;
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-day-section {
  position:relative;
  padding:0;
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-day-section::before {
  left:35px;
  top:32px;
  bottom:20px;
  width:0;
  border-left:2px dashed #d8aec0;
  background:none;
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-step-group {
  position:relative;
  padding:10px 0 0;
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-card {
  position:relative;
  min-height:86px;
  padding:0;
  display:grid;
  grid-template-columns:72px minmax(0,1fr);
  gap:14px;
  align-items:start;
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
  overflow:visible;
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-card:hover,
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-card:focus-visible,
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-card.active {
  border:0;
  background:transparent;
  box-shadow:none;
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-order {
  z-index:2;
  justify-self:center;
  align-self:start;
  width:40px;
  height:40px;
  display:grid;
  place-items:center;
  border:4px solid var(--blue-soft);
  outline:1px solid #aec3ff;
  border-radius:50%;
  background:var(--blue);
  color:#fff;
  font-size:14px;
  font-weight:800;
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-card.timeline-anchor .plan-order {
  background:#59434d;
  border-color:#eee2e6;
  outline-color:#d2bdc5;
  font-size:12px;
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-card.meal-placeholder .plan-order {
  background:#fff8f0;
  border-color:#f7d4b5;
  outline-color:#efc7a4;
  color:#a85b24;
  font-size:15px;
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-card-copy {
  position:relative;
  min-width:0;
  min-height:86px;
  padding:17px 104px 17px 18px;
  display:flex;
  flex-direction:column;
  justify-content:center;
  border:1px solid #dfc5d0;
  border-radius:15px;
  background:#fff;
  box-shadow:0 4px 12px rgba(67,37,49,.07);
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-card.timeline-anchor .plan-card-copy { background:#f8f5f6; border-color:#eadde2; }
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-card.meal-placeholder .plan-card-copy { background:#fffaf4; border-color:#f2d5b9; }
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-card.meal-placeholder:hover .plan-card-copy,
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-card.meal-placeholder:focus-visible .plan-card-copy { border-color:#dcad80; box-shadow:0 7px 16px rgba(161,91,25,.13); }
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-card-copy > strong { margin:0 0 8px; font-size:16px; line-height:1.35; }
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-card-copy > p {
  min-width:0;
  margin:0;
  overflow:hidden;
  color:#86737c;
  font-size:11px;
  line-height:1.4;
  text-overflow:ellipsis;
  white-space:nowrap;
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-time {
  position:absolute;
  top:50%;
  right:16px;
  min-width:76px;
  margin:0;
  padding:8px 10px;
  display:flex;
  flex-direction:column;
  align-items:center;
  border-radius:8px;
  background:#f9edf1;
  color:#9f4264;
  font-size:12px;
  font-weight:800;
  line-height:1.2;
  transform:translateY(-50%);
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-time i { height:10px; color:#c298a8; font-size:9px; font-style:normal; line-height:10px; }
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .meal-placeholder .plan-time { color:#a85b24; background:#fff0e1; }
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-actions {
  position:absolute;
  z-index:5;
  right:102px;
  top:18px;
  opacity:0;
  transition:opacity 140ms ease;
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-card:hover .plan-actions,
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-card:focus-within .plan-actions { opacity:1; }
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-route-connector {
  position:relative;
  z-index:3;
  min-height:50px;
  margin:0 0 0 86px;
  display:grid;
  grid-template-columns:minmax(14px,1fr) auto minmax(14px,1fr);
  align-items:center;
  gap:8px;
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-route-line {
  width:auto;
  height:1px;
  border:0;
  background:#eadde2;
  color:transparent;
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-route-connector::after {
  content:"";
  height:1px;
  background:#eadde2;
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-route-pill {
  padding:6px 10px;
  border:1px solid #ecd5dd;
  border-radius:999px;
  background:#f8edf1;
  color:#9f4264;
  font-size:11px;
  font-weight:700;
  white-space:nowrap;
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-route-panel {
  position:absolute;
  z-index:30;
  left:50%;
  bottom:calc(100% + 4px);
  width:min(330px,calc(100vw - 120px));
  visibility:hidden;
  opacity:0;
  transform:translate(-50%,6px);
  transition:opacity 140ms ease,transform 140ms ease,visibility 140ms ease;
  pointer-events:none;
}
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-route-connector:hover .plan-route-panel,
body .app-shell.schedule-mode[data-itinerary-type="attraction"] .plan-route-connector:focus-within .plan-route-panel {
  visibility:visible;
  opacity:1;
  transform:translate(-50%,0);
  pointer-events:auto;
}

@media (max-width: 900px) {
  body .app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-page {
    grid-template-columns:minmax(330px,42%) minmax(0,1fr);
    padding-inline:16px;
  }
}

@media (max-width: 620px) {
  body .app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-page {
    display:block;
    padding:8px;
    overflow-y:auto;
  }
  body .app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-route-day-tabs { margin-bottom:8px; }
  body .app-shell.schedule-mode[data-itinerary-type="attraction"] .schedule-list-panel,
  body .app-shell.schedule-mode[data-itinerary-type="attraction"] .map-panel {
    min-height:calc(100% - 94px);
    border:1px solid #eadde1;
    border-radius:16px;
  }
  .schedule-route-day-tab { flex-basis:190px; min-height:72px; padding:11px 14px; }
}

.mobile-detail-close { display: none; }
.mobile-workspace-nav,
.mobile-schedule-workspace-nav { display: none; }

@media (max-width: 620px) {
  .sidebar {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 46px;
    gap: 4px;
  }

  .side-nav {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 2px;
    overflow: visible;
  }

  .side-nav > .nav-item,
  .history-nav { min-width: 0; width: auto; }

  .side-nav > .nav-item[data-page="admin-places"] { display: none; }

  .nav-item { width: 100%; min-height: 54px; border-radius: 11px; }
  .nav-item .icon { width: auto; font-size: 17px; }

  .account-panel {
    width: 46px;
    min-width: 46px;
    border-left: 1px solid rgba(255,255,255,.1);
  }

  :is(#attractionsPage, #restaurantsPage) {
    display: block;
    padding: 10px 8px calc(var(--mobile-nav-height) + 12px);
  }

  :is(#attractionsPage, #restaurantsPage) .attraction-list-panel {
    min-height: calc(100dvh - 54px - var(--mobile-nav-height) - 22px);
    overflow: visible;
  }

  :is(#attractionsPage, #restaurantsPage) .attraction-category-list {
    max-height: none;
    overflow: visible;
  }

  :is(#attractionsPage, #restaurantsPage) .attraction-place-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }

  :is(#attractionsPage, #restaurantsPage) .attraction-place-card { min-height: 180px; }
  :is(#attractionsPage, #restaurantsPage) .attraction-card-visual { min-height: 104px; }

  :is(#attractionsPage, #restaurantsPage) .attraction-detail-panel {
    position: fixed;
    right: 0;
    bottom: calc(var(--mobile-nav-height) + env(safe-area-inset-bottom));
    left: 0;
    z-index: 90;
    display: grid !important;
    width: 100%;
    height: min(55dvh, 560px);
    min-height: 0;
    overflow-x: hidden;
    overflow-y: auto;
    border: 0;
    border-radius: 20px 20px 0 0;
    background: #fffafa;
    box-shadow: 0 -18px 48px rgba(35,20,26,.32), 0 -100vh 0 rgba(20,12,16,.18);
    opacity: 0;
    pointer-events: none;
    transform: translateY(calc(100% + 18px));
    visibility: hidden;
    transition:
      transform .3s cubic-bezier(.22,.8,.24,1),
      opacity .2s ease,
      visibility 0s linear .3s;
    will-change: transform;
  }

  :is(#attractionsPage, #restaurantsPage) .attraction-detail-panel.mobile-open {
    display: grid !important;
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0);
    visibility: visible;
    transition-delay: 0s;
  }

  :is(#attractionsPage, #restaurantsPage) .attraction-detail-panel .attraction-visual {
    min-height: 128px;
    max-height: 145px;
  }

  :is(#attractionsPage, #restaurantsPage) .attraction-detail-panel .attraction-copy {
    padding-top: 15px;
    padding-bottom: 10px;
  }

  :is(#attractionsPage, #restaurantsPage) .attraction-detail-panel .attraction-meta {
    padding-bottom: 18px;
  }

  .mobile-detail-close {
    position: absolute;
    top: 10px;
    right: 10px;
    z-index: 4;
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    border: 1px solid rgba(0,0,0,.08);
    border-radius: 50%;
    background: rgba(255,255,255,.94);
    color: #4a353d;
    font-size: 25px;
    line-height: 1;
    box-shadow: 0 6px 18px rgba(40,24,30,.16);
  }

  .sidebar { align-items: center; }
  .side-nav { height: 100%; align-items: center; }
  .side-nav > .nav-item,
  .history-nav,
  .history-nav > .nav-item { height: 54px; align-self: center; }

  .account-panel {
    align-self: center;
    justify-self: stretch;
    display: grid;
    place-items: center;
    height: 54px;
    min-height: 54px;
    margin: 0;
    padding: 0;
    border-left: 0;
    border-radius: 11px;
    transform: translateY(8px);
  }

  .account-panel .avatar {
    width: 29px;
    height: 29px;
    font-size: 14px;
  }
}

@media (max-width: 620px) {
  .sidebar {
    padding: 0 6px env(safe-area-inset-bottom);
    align-items: stretch;
  }

  .side-nav {
    height: 100%;
    margin-top: 0;
    grid-auto-rows: 100%;
    align-items: stretch;
  }

  .side-nav > .nav-item,
  .history-nav,
  .history-nav > .nav-item {
    height: 100%;
    min-height: 0;
    align-self: stretch;
  }

  .side-nav .nav-item {
    padding-block: 0;
  }

  .side-nav .nav-item .icon {
    align-self: center;
    justify-self: center;
    line-height: 1;
    transform: none;
  }

  .account-panel {
    height: 42px;
    min-height: 42px;
    align-self: end;
    transform: none;
  }

  .app-shell:not(.schedule-mode) .mobile-workspace-nav {
    position: fixed;
    top: 58px;
    right: 10px;
    left: 10px;
    z-index: 46;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 4px;
    height: 44px;
    padding: 4px;
    border: 1px solid rgba(137,84,103,.16);
    border-radius: 14px;
    background: rgba(255,250,249,.94);
    box-shadow: 0 7px 20px rgba(92,53,67,.12);
    backdrop-filter: blur(14px);
  }

  .app-shell:has(.nav-item[data-page="attractions"].active) :is(.mobile-workspace-nav, .mobile-schedule-workspace-nav),
  .app-shell:has(.nav-item[data-page="restaurants"].active) :is(.mobile-workspace-nav, .mobile-schedule-workspace-nav) {
    display: none;
  }

  .app-shell.schedule-mode .mobile-schedule-workspace-nav {
    position: fixed;
    top: 58px;
    right: 10px;
    left: 10px;
    z-index: 46;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 4px;
    height: 44px;
    padding: 4px;
    border: 1px solid rgba(137,84,103,.16);
    border-radius: 14px;
    background: rgba(255,250,249,.94);
    box-shadow: 0 7px 20px rgba(92,53,67,.12);
    backdrop-filter: blur(14px);
  }

  .app-shell.schedule-mode.calendar-artifact-mode .mobile-schedule-workspace-nav {
    display: none;
  }

  .mobile-workspace-nav button,
  .mobile-schedule-workspace-nav button {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    min-width: 0;
    border: 0;
    border-radius: 10px;
    background: transparent;
    color: #806b73;
    font-size: 12px;
    font-weight: 850;
  }

  .mobile-workspace-nav button.active,
  .mobile-schedule-workspace-nav button.active {
    background: #a95070;
    color: #fff;
    box-shadow: 0 5px 12px rgba(143,64,93,.22);
  }

  .mobile-workspace-nav button strong,
  .mobile-schedule-workspace-nav button strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

  .app-shell.schedule-mode .schedule-page {
    position: fixed;
    inset: 102px 0 calc(var(--mobile-nav-height) + env(safe-area-inset-bottom));
    z-index: 20;
    display: block;
    width: 100%;
    min-height: 0;
    padding: 8px;
    overflow: hidden;
  }

  .app-shell.schedule-mode .schedule-list-panel,
  .app-shell.schedule-mode .map-panel {
    display: none;
  }

  .app-shell.schedule-mode[data-mobile-schedule-pane="list"] .schedule-list-panel {
    display: grid;
    grid-template-rows: auto minmax(0, 1fr);
    width: 100%;
    height: 100%;
    min-height: 0;
    overflow: hidden;
  }

  .app-shell.schedule-mode[data-mobile-schedule-pane="list"] .schedule-scroll {
    min-height: 0;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }

  .app-shell.schedule-mode[data-mobile-schedule-pane="map"] .map-panel {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 0;
    overflow: hidden;
  }

  .app-shell.schedule-mode[data-mobile-schedule-pane="map"] .schedule-naver-map {
    width: 100%;
    height: 100%;
    min-height: 0;
  }

  .app-shell.schedule-mode #finalRouteSpaPage .route-layout {
    display: block;
    height: calc(100dvh - 232px);
    min-height: 0;
  }

  .app-shell.schedule-mode[data-mobile-schedule-pane="list"] #finalRouteSpaPage .route-panel {
    display: flex;
    width: 100%;
    height: 100%;
    max-height: none;
  }

  .app-shell.schedule-mode[data-mobile-schedule-pane="list"] #finalRouteSpaPage .map-wrap {
    display: none;
  }

  .app-shell.schedule-mode[data-mobile-schedule-pane="map"] #finalRouteSpaPage .route-panel {
    display: none;
  }

  .app-shell.schedule-mode[data-mobile-schedule-pane="map"] #finalRouteSpaPage .map-wrap,
  .app-shell.schedule-mode[data-mobile-schedule-pane="map"] #finalRouteSpaPage .map,
  .app-shell.schedule-mode[data-mobile-schedule-pane="map"] #finalRouteSpaPage .map-placeholder {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 0;
  }

  .app-shell:not(.schedule-mode) .chat-area.flow-guide-active {
    grid-template-rows: 108px minmax(0, 1fr) auto auto;
  }

  .app-shell:not(.schedule-mode) .chat-area.flow-guide-active > .conversation {
    grid-row: 2;
  }

  .app-shell:not(.schedule-mode) .chat-area.flow-guide-active > .question-card {
    grid-row: 3;
  }

  .app-shell:not(.schedule-mode) .chat-area.flow-guide-active > .composer-dock {
    grid-row: 4;
  }

  .app-shell:not(.schedule-mode)[data-mobile-pane="list"] .chat-area,
  .app-shell:not(.schedule-mode)[data-mobile-pane="map"] .chat-area {
    display: none;
  }

  .app-shell:not(.schedule-mode) .create-recommendations,
  .app-shell:not(.schedule-mode) .discover.location-panel {
    display: none !important;
  }

  .app-shell:not(.schedule-mode)[data-mobile-pane="list"] .create-recommendations {
    position: fixed;
    inset: 102px 0 calc(var(--mobile-nav-height) + env(safe-area-inset-bottom));
    z-index: 20;
    display: flex !important;
    flex-direction: column;
    width: 100%;
    min-width: 0;
    padding: 4px 12px 10px;
    overflow: hidden;
    border: 0;
  }

  .app-shell:has(.chat-area.flow-guide-active):not(.schedule-mode)[data-mobile-pane="list"] .create-recommendations {
    padding-top: 10px;
  }

  .app-shell:not(.schedule-mode)[data-mobile-pane="list"] .create-recommendations-list {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }

  .app-shell:not(.schedule-mode)[data-mobile-pane="list"] .create-place-search {
    flex: 0 0 auto;
  }

  .app-shell:not(.schedule-mode)[data-mobile-pane="map"] .discover.location-panel {
    position: fixed;
    inset: 102px 0 calc(var(--mobile-nav-height) + env(safe-area-inset-bottom));
    z-index: 20;
    display: block !important;
    width: 100%;
    min-width: 0;
    padding: 0 8px 8px;
    overflow: hidden;
    border: 0;
  }

  .app-shell:has(.chat-area.flow-guide-active):not(.schedule-mode)[data-mobile-pane="map"] .discover.location-panel {
    padding-top: 8px;
  }

  .app-shell:not(.schedule-mode)[data-mobile-pane="map"] .live-map-section,
  .app-shell:not(.schedule-mode)[data-mobile-pane="map"] .live-map-card,
  .app-shell:not(.schedule-mode)[data-mobile-pane="map"] .naver-map {
    width: 100%;
    min-height: 0;
    height: 100%;
  }

  .app-shell:not(.schedule-mode)[data-mobile-pane="map"] .live-map-card {
    border-radius: 18px;
  }
}

@media (prefers-reduced-motion: reduce) and (max-width: 620px) {
  :is(#attractionsPage, #restaurantsPage) .attraction-detail-panel {
    transition: none;
  }
}

@media (max-width: 390px) {
  :is(#attractionsPage, #restaurantsPage) .attraction-place-grid {
    grid-template-columns: 1fr;
  }
}

/* Mobile attraction schedule: keep the flow controls and workspace tabs in separate rows. */
@media (max-width: 620px) {
  .itinerary-flow-nav:has(:is([data-flow-step="1"], [data-flow-step="2"], [data-flow-step="5"]).current) {
    justify-content: space-between;
    gap: 6px;
    padding-inline: 10px;
  }

  .itinerary-flow-nav:has(:is([data-flow-step="1"], [data-flow-step="5"]).current) .flow-edge-navigation,
  .itinerary-flow-nav:has(:is([data-flow-step="1"], [data-flow-step="2"], [data-flow-step="5"]).current) [data-flow-step="3"],
  .itinerary-flow-nav:has(:is([data-flow-step="1"], [data-flow-step="2"], [data-flow-step="5"]).current) [data-flow-step="4"] {
    display: none;
  }

  .itinerary-flow-nav:has(:is([data-flow-step="1"], [data-flow-step="2"], [data-flow-step="5"]).current) :is([data-flow-step="1"], [data-flow-step="2"], [data-flow-step="5"]) {
    flex: 1 1 0;
    justify-content: center;
    min-width: 0;
    padding-inline: 7px;
  }

  .itinerary-flow-nav:has(:is([data-flow-step="1"], [data-flow-step="2"], [data-flow-step="5"]).current) :is([data-flow-step="1"], [data-flow-step="2"], [data-flow-step="5"]) > strong {
    display: block;
    overflow: hidden;
    font-size: 10px;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .itinerary-flow-nav:has([data-flow-step="2"].current) {
    padding-inline: 52px;
  }

  .itinerary-flow-nav:has([data-flow-step="2"].current) .flow-edge-navigation {
    width: 44px;
    min-width: 44px;
    padding-inline: 5px;
  }

  .itinerary-flow-nav:has([data-flow-step="2"].current) .flow-edge-navigation.previous {
    left: 4px;
  }

  .itinerary-flow-nav:has([data-flow-step="2"].current) .flow-edge-navigation.next {
    right: 4px;
  }

  .itinerary-flow-nav:has([data-flow-step="2"].current) .flow-edge-navigation > strong {
    font-size: 9px;
  }

  .app-shell.schedule-mode #finalRouteSpaPage .planner {
    padding-top: 110px;
  }

  .app-shell.schedule-mode #finalRouteSpaPage .route-layout {
    height: calc(100dvh - 264px);
  }

  .app-shell.schedule-mode #finalRouteSpaPage .day-tabs {
    justify-content: flex-start;
  }

  .app-shell.schedule-mode #finalRouteSpaPage .day-tab {
    flex: 0 0 88px;
    min-width: 88px;
    grid-template-columns: 1fr;
    grid-template-rows: auto auto auto;
    justify-items: center;
    row-gap: 2px;
    text-align: center;
  }

  .app-shell.schedule-mode #finalRouteSpaPage .day-tab > span {
    grid-column: 1;
    grid-row: 1;
    justify-self: center;
  }

  .app-shell.schedule-mode #finalRouteSpaPage .day-tab > strong {
    grid-column: 1;
    grid-row: 2;
    justify-self: center;
  }

  .app-shell.schedule-mode #finalRouteSpaPage .day-tab > small {
    grid-column: 1;
    grid-row: 3;
    justify-self: center;
  }
}

/* schedule-edit-spa:start */
@scope (#scheduleEditSpaPage) {
:scope{--pink:#b64e73;--pink-dark:#913653;--ink:#241820;--muted:#81757b;--line:#e8dde1;--hour-height:72px;font-family:Pretendard,"Noto Sans KR",sans-serif;color:var(--ink)}
:scope main .editor-shell .event.has-note:hover>.event-note.event-note,:scope main .editor-shell .event.has-note.menu-open>.event-note.event-note{display:block!important;max-height:68px!important;padding-right:5px;overflow-x:hidden!important;overflow-y:auto!important;white-space:pre-wrap!important;scrollbar-width:thin;scrollbar-color:#d49aaa transparent}:scope main .editor-shell .event.has-note:hover>.event-note.event-note::-webkit-scrollbar,:scope main .editor-shell .event.has-note.menu-open>.event-note.event-note::-webkit-scrollbar{width:5px}:scope main .editor-shell .event.has-note:hover>.event-note.event-note::-webkit-scrollbar-thumb,:scope main .editor-shell .event.has-note.menu-open>.event-note.event-note::-webkit-scrollbar-thumb{background:#d49aaa;border-radius:999px}
:scope main .editor-shell .event.hover-note-only:not(:hover):not(.menu-open)>.event-note{display:none!important}
:scope main .editor-shell .event.compact-event.has-note:not(:hover):not(.menu-open)>.event-note{display:none!important}
:scope main .editor-shell .event.name-only-event.has-note:not(.readable-event)>.event-note{display:none!important}:scope main .editor-shell .event.name-only-event.has-note.readable-event{display:grid!important;grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto auto;align-items:center;column-gap:5px;row-gap:2px}:scope main .editor-shell .event.name-only-event.has-note.readable-event>.event-top{grid-column:1;grid-row:1}:scope main .editor-shell .event.name-only-event.has-note.readable-event>strong{grid-column:2;grid-row:1}:scope main .editor-shell .event.name-only-event.has-note.readable-event>.event-note{grid-column:1/-1;grid-row:2;display:-webkit-box!important;max-height:14px!important;margin:0!important;-webkit-line-clamp:1;line-clamp:1}:scope main .editor-shell .event.name-only-event.has-note.readable-event:hover,:scope main .editor-shell .event.name-only-event.has-note.readable-event.menu-open{display:block!important}:scope main .editor-shell .event.name-only-event.has-note.readable-event:hover>.event-note,:scope main .editor-shell .event.name-only-event.has-note.readable-event.menu-open>.event-note{display:block!important;max-height:none!important;margin-top:7px!important}
:scope{background:#fffdfd!important}:scope .calendar-grid{grid-template-rows:90px calc(var(--hours)*var(--hour-height))!important}
:scope .day-header{height:90px;padding:8px;text-align:center}:scope .day-header>span,:scope .day-header>b,:scope .day-header>small{display:block}:scope .day-header>span{color:#8c858a;font-size:12px;font-weight:700}:scope .day-header>b{width:30px;height:30px;margin:2px auto;display:grid;place-items:center;color:#171725;background:#f1edef;border-radius:50%;font-size:14px}:scope .day-header>small{font-size:11px;font-weight:600}:scope .day-header.active{color:inherit!important;background:#fff!important;box-shadow:inset 0 -3px #b64e73!important}:scope .event.type-spot{color:#642d42!important;background:#f8dfe8!important;border-color:#ead2db!important;border-left:4px solid #b64e73!important}:scope .event.type-food{color:#7c481f!important;background:#fff0de!important;border-color:#f1d5b9!important;border-left:4px solid #ed8a37!important}:scope .event.type-palace{color:#5d3686!important;background:#f2e9ff!important;border-color:#dfcef4!important;border-left:4px solid #8a4fd1!important}:scope .event.type-park{color:#315f3d!important;background:#e7f6eb!important;border-color:#cce8d3!important;border-left:4px solid #4e9a61!important}:scope .event.type-shopping,:scope .event.type-popup{color:#315d91!important;background:#e8f2ff!important;border-color:#ccdef3!important;border-left:4px solid #4d83c5!important}:scope .event.type-transit{color:#496678!important;background:#eaf3f8!important;border-color:#d3e5ee!important;border-left:4px solid #6a9db9!important}:scope .event>strong{font-size:14px!important;line-height:1.25}:scope .event>small{font-size:10px!important}:scope .event>time{font-size:10px!important}.type-food .category-badge{color:#b55e1f!important;background:rgba(255,255,255,.55)!important}.type-palace .category-badge{color:#7440b4!important;background:rgba(255,255,255,.5)!important}.type-park .category-badge{color:#397c4a!important;background:rgba(255,255,255,.5)!important}.type-shopping .category-badge,.type-popup .category-badge{color:#386eaf!important;background:rgba(255,255,255,.52)!important}.type-spot .category-badge{color:#9b4264!important;background:rgba(255,255,255,.5)!important}
.event.menu-open .quick-actions{display:flex}
:scope main .editor-shell .event.has-note{overflow:hidden!important}:scope main .editor-shell .event.has-note>.event-note{display:-webkit-box!important;max-height:32px;margin-top:5px;overflow:hidden!important;white-space:pre-wrap!important;overflow-wrap:anywhere;text-overflow:ellipsis;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2}:scope main .editor-shell .event.has-note:hover,:scope main .editor-shell .event.has-note.menu-open{overflow:visible!important}:scope main .editor-shell .event.has-note:hover>.event-note,:scope main .editor-shell .event.has-note.menu-open>.event-note{display:block!important;max-height:none!important;overflow:visible!important;white-space:pre-wrap!important;-webkit-line-clamp:unset;line-clamp:unset}
.inline-note-editor{position:relative;z-index:8;margin-top:8px;padding:10px;background:#fffdf7;border:1px solid #f1d58c;border-radius:10px;box-shadow:0 8px 20px rgba(95,66,25,.12)}.inline-note-editor label{display:block;margin-bottom:6px;color:#795b22;font-size:9px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.inline-note-editor textarea{width:100%;min-height:72px;padding:8px;resize:vertical;color:#342d25;background:#fff;border:1px solid #e6d7b5;border-radius:7px;font:11px/1.45 inherit;outline:none}.inline-note-editor textarea:focus{border-color:#d49a3c;box-shadow:0 0 0 3px rgba(236,178,82,.18)}.inline-note-editor>div{margin-top:7px;display:flex;justify-content:flex-end;gap:6px}.inline-note-editor button{padding:6px 10px;border:1px solid #e4d7bd;border-radius:7px;color:#715f43;background:#fff;font-size:9px;font-weight:800;cursor:pointer}.inline-note-editor .inline-note-save{color:#fff;background:#b64e73;border-color:#b64e73}:scope main .editor-shell .event.note-editing{height:auto!important;min-height:230px!important;overflow:visible!important}:scope main .editor-shell .event.note-editing>.event-note{display:none!important}:scope main .editor-shell .event.note-editing>.quick-actions{position:static!important;margin-top:8px;display:flex!important}
:scope main .editor-shell .event:not(.type-transit):hover,:scope main .editor-shell .event:not(.type-transit).menu-open{height:auto!important;min-height:max(128px,var(--event-height))!important;overflow:visible!important}:scope main .editor-shell .event:not(.type-transit):hover>.quick-actions,:scope main .editor-shell .event:not(.type-transit).menu-open>.quick-actions{position:static!important;left:auto!important;right:auto!important;bottom:auto!important;margin-top:8px;display:flex!important;flex-wrap:wrap}:scope main .editor-shell .event:not(.type-transit):hover>.event-note,:scope main .editor-shell .event:not(.type-transit).menu-open>.event-note{position:static;margin-top:7px;white-space:normal;overflow-wrap:anywhere}:scope main .editor-shell .event.compact-event:hover,:scope main .editor-shell .event.compact-event.menu-open{height:auto!important;min-height:max(128px,var(--event-height))!important}
:scope main .editor-shell .event.name-only-event{display:flex;align-items:center;gap:5px;padding:2px 8px!important}:scope main .editor-shell .event.name-only-event>.event-top{display:flex!important;flex:none;margin:0!important}:scope main .editor-shell .event.name-only-event>.event-top .drag-handle,:scope main .editor-shell .event.name-only-event>.event-top .more-button{display:none!important}:scope main .editor-shell .event.name-only-event>.event-top .category-badge{padding:2px 5px;font-size:8px;white-space:nowrap}:scope main .editor-shell .event.name-only-event>strong{min-width:0;flex:1;margin:0!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:scope main .editor-shell .event.name-only-event:hover,:scope main .editor-shell .event.name-only-event.menu-open{display:block;align-items:initial;padding:10px 11px!important}:scope main .editor-shell .event.name-only-event:hover>.event-top,:scope main .editor-shell .event.name-only-event.menu-open>.event-top{margin-bottom:6px!important}
:scope .editor-shell .event.name-only-event.readable-event{display:flex;align-items:center;padding:6px 10px!important}:scope .editor-shell .event.name-only-event.readable-event>strong{font-size:14px!important;line-height:18px!important}:scope .editor-shell .event.name-only-event.readable-event:hover,:scope .editor-shell .event.name-only-event.readable-event.menu-open{display:block;align-items:initial}
:scope .hour-label.first{transform:translateY(7px)!important}
:scope .event.type-transit{cursor:default!important}
:scope .editor-shell .event{min-height:12px!important}
:scope .editor-shell .event.name-only-event{min-height:18px!important;padding:2px 8px!important}:scope .editor-shell .event.name-only-event>.event-top,:scope .editor-shell .event.name-only-event>small,:scope .editor-shell .event.name-only-event>time,:scope .editor-shell .event.name-only-event>.event-note,:scope .editor-shell .event.name-only-event>.quick-actions{display:none!important}:scope .editor-shell .event.name-only-event>strong{display:block!important;margin:0!important;overflow:hidden;font-size:11px!important;line-height:14px!important;text-overflow:ellipsis;white-space:nowrap}:scope .editor-shell .event.name-only-event:hover,:scope .editor-shell .event.name-only-event.menu-open{padding:10px 11px!important}:scope .editor-shell .event.name-only-event:hover>.event-top,:scope .editor-shell .event.name-only-event.menu-open>.event-top{display:flex!important}:scope .editor-shell .event.name-only-event:hover>small,:scope .editor-shell .event.name-only-event:hover>time,:scope .editor-shell .event.name-only-event:hover>.event-note,:scope .editor-shell .event.name-only-event:hover>.quick-actions,:scope .editor-shell .event.name-only-event.menu-open>small,:scope .editor-shell .event.name-only-event.menu-open>time,:scope .editor-shell .event.name-only-event.menu-open>.event-note,:scope .editor-shell .event.name-only-event.menu-open>.quick-actions{display:flex!important}:scope .editor-shell .event.name-only-event:hover>small,:scope .editor-shell .event.name-only-event:hover>time,:scope .editor-shell .event.name-only-event.menu-open>small,:scope .editor-shell .event.name-only-event.menu-open>time{display:block!important}
:scope .event{touch-action:none}:scope .event.pointer-drag-ghost{position:fixed!important;z-index:9999!important;right:auto!important;margin:0!important;pointer-events:none!important;opacity:.58!important;transform:none!important;transition:none!important;box-shadow:0 18px 38px rgba(45,24,34,.3)!important}
:scope .editor-shell .event{transition:none!important}
:scope .editor-shell .event:not(.compact-event):not(.type-transit){overflow:visible!important}
:scope .editor-shell .event{overflow:hidden!important}:scope .editor-shell .event.compact-event>small,:scope .editor-shell .event.compact-event>time,:scope .editor-shell .event.compact-event>.event-note,:scope .editor-shell .event.compact-event>.quick-actions{display:none}:scope .editor-shell .event.compact-event:hover,:scope .editor-shell .event.compact-event.menu-open{z-index:40;height:128px!important;overflow:visible!important;box-shadow:0 16px 32px rgba(45,24,34,.22)!important}:scope .editor-shell .event.compact-event:hover>small,:scope .editor-shell .event.compact-event:hover>time,:scope .editor-shell .event.compact-event:hover>.event-note,:scope .editor-shell .event.compact-event:hover>.quick-actions,:scope .editor-shell .event.compact-event.menu-open>small,:scope .editor-shell .event.compact-event.menu-open>time,:scope .editor-shell .event.compact-event.menu-open>.event-note,:scope .editor-shell .event.compact-event.menu-open>.quick-actions{display:flex}:scope .editor-shell .event.compact-event:hover>small,:scope .editor-shell .event.compact-event:hover>time,:scope .editor-shell .event.compact-event.menu-open>small,:scope .editor-shell .event.compact-event.menu-open>time{display:block}
.calendar-pane{display:flex;flex-direction:column}.calendar-pager{flex:none;height:42px;padding:6px 10px;display:flex;align-items:center;justify-content:flex-end;gap:8px;background:#fff;border-bottom:1px solid #e2e8f0}.calendar-pager button{width:30px;height:30px;padding:0;color:#475569;background:#fff;border:1px solid #cbd5e1;border-radius:50%;font-size:22px;line-height:1;cursor:pointer;transition:opacity .18s ease,visibility .18s ease,background .18s ease}.calendar-pager button:hover:not(:disabled){color:#fff;background:#ef5d7d;border-color:#ef5d7d}.calendar-pager button:disabled{opacity:0;visibility:hidden;pointer-events:none;cursor:default}.calendar-pager span{min-width:72px;color:#475569;font-size:10px;font-weight:800;text-align:center}.calendar-pane .calendar-scroll{flex:1;height:auto}.editor-shell{grid-template-columns:minmax(700px,62%) minmax(0,1fr)!important}.calendar-grid{min-width:700px!important;grid-template-columns:60px repeat(var(--days),minmax(120px,1fr))!important}
:scope .event.type-transit{min-height:18px!important;padding:6px 9px!important;overflow:hidden!important}:scope .event.type-transit .event-top{margin:0;height:100%;align-items:center}:scope .event.type-transit>strong,:scope .event.type-transit>small,:scope .event.type-transit>time,:scope .event.type-transit .quick-actions,:scope .event.type-transit .resize-handle{display:none}.type-transit .category-badge{padding:3px 7px;font-size:9px}
@media(max-width:700px){:scope .calendar-grid{min-width:100%!important;grid-template-columns:64px minmax(250px,1fr)!important}:scope .day-header:not(.active),:scope .day-column:not(.mobile-active){display:none}:scope .editor-shell{grid-template-columns:1fr!important;grid-template-rows:620px 390px}:scope .header-actions{flex-wrap:wrap}:scope #save-status{display:none}}
:scope{background:#f8fafc;color:#172033}:scope .editor-shell{border-color:#e2e8f0;background:#fff;box-shadow:0 18px 50px rgba(15,23,42,.08)}:scope .day-header{background:#fff;border-color:#e2e8f0}:scope .day-header.active{color:#172033;background:#fff;box-shadow:inset 0 -3px #f05f82}:scope .day-header small{color:#64748b;opacity:1}:scope .day-column{background:repeating-linear-gradient(to bottom,#fff 0,#fff calc(var(--hour-height) - 1px),#e8edf3 calc(var(--hour-height) - 1px),#e8edf3 var(--hour-height))}:scope .event{position:absolute!important;z-index:4;left:7px!important;right:7px!important;top:var(--event-top)!important;width:auto!important;height:var(--event-height)!important;min-height:58px;margin:0!important;padding:10px 11px!important;transform:none!important;color:#172033!important;background:#fff!important;border:1px solid #e2e8f0!important;border-left:1px solid #e2e8f0!important;border-radius:13px!important;box-shadow:0 3px 10px rgba(15,23,42,.08)!important;overflow:visible!important;cursor:grab;transition:transform .16s ease,box-shadow .16s ease}:scope .event:hover{z-index:20;transform:translateY(-2px)!important;box-shadow:0 13px 28px rgba(15,23,42,.16)!important}:scope .event.drag-source{opacity:.3}.event-top{display:flex;align-items:center;gap:5px;margin-bottom:6px}.category-badge{padding:3px 6px;border-radius:999px;background:#f1f5f9;color:#475569;font-size:8px;font-weight:900;letter-spacing:.06em}.type-food .category-badge{color:#c45c15;background:#fff1e7}.type-palace .category-badge{color:#7440b4;background:#f4edff}.type-popup .category-badge,.type-shopping .category-badge{color:#b52d72;background:#fff0f6}.type-transit .category-badge{color:#2d718f;background:#eaf7fc}.drag-handle{margin-left:auto;color:#a8b1bf;font-size:10px}.more-button{padding:0 2px!important;color:#94a3b8!important;background:none!important;border:0!important;font-size:10px;cursor:pointer}:scope .event>strong{font-size:12px;color:#0f172a}:scope .event>small{display:block;margin-top:2px;overflow:hidden;color:#64748b;font-size:9px;text-overflow:ellipsis;white-space:nowrap}:scope .event>time{display:block;margin-top:4px;color:#64748b;font-size:9px;font-weight:700}.event-note{margin:6px 0 0;padding:5px 7px;overflow:hidden;color:#92400e;background:#fffbeb;border:1px solid #fde68a;border-radius:6px;font-size:9px;text-overflow:ellipsis;white-space:nowrap}.quick-actions{position:absolute;z-index:6;left:8px;right:8px;bottom:7px;display:none;gap:3px}.event:hover .quick-actions{display:flex}.quick-actions button{padding:3px 5px;color:#475569;background:#fff;border:1px solid #e2e8f0;border-radius:5px;font-size:8px;font-weight:800;cursor:pointer}.quick-actions button.danger{color:#dc2626;background:#fff7f7}.resize-handle{position:absolute;left:12px;right:12px;bottom:-5px;height:11px;padding:0;background:transparent;border:0;cursor:ns-resize}.resize-handle span{display:block;width:38px;height:3px;margin:auto;background:#cbd5e1;border-radius:5px}.event:hover .resize-handle span{background:#fb7185}.transit-gap{position:absolute;z-index:3;left:50%;padding:3px 7px;color:#64748b;background:#f8fafc;border:1px dashed #cbd5e1;border-radius:999px;font-size:8px;font-weight:800;white-space:nowrap;transform:translateX(-50%)}:scope .drop-time-guide{position:absolute;z-index:30;left:3px;right:3px;height:2px;background:#fb7185;pointer-events:none}:scope .drop-time-guide::before{content:attr(data-time);position:absolute;right:3px;bottom:4px;padding:3px 6px;color:#fff;background:#e85d7f;border-radius:5px;font-size:9px;font-weight:900}:scope .header-actions .primary{background:#ef5d7d;border-color:#ef5d7d}:scope #add-place-button{color:#334155;border-color:#cbd5e1}
:scope .event{position:absolute!important;z-index:2;left:7px!important;right:7px!important;top:var(--event-top)!important;width:auto!important;height:var(--event-height)!important;min-height:34px;margin:0!important;transform:none!important;transition:top 180ms ease,box-shadow 160ms ease}:scope .event.drag-source{opacity:.28}:scope .day-column.drop-active{background-color:#fff4f7}.drop-time-guide{position:absolute;z-index:9;left:3px;right:3px;height:2px;background:var(--pink);pointer-events:none}.drop-time-guide::before{content:attr(data-time);position:absolute;right:4px;bottom:4px;padding:3px 6px;color:#fff;background:var(--pink-dark);border-radius:5px;font-size:10px;font-weight:800}

.event-editor-backdrop[hidden]{display:none!important}.event-editor-backdrop{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;padding:20px;background:rgba(15,23,42,.28);backdrop-filter:blur(2px)}.event-editor-dialog{width:min(430px,calc(100vw - 28px));max-height:calc(100vh - 32px);overflow:auto;background:#fff;border:1px solid #e2e8f0;border-radius:18px;box-shadow:0 24px 70px rgba(15,23,42,.28)}.event-editor-dialog form>header{position:sticky;top:0;z-index:2;padding:18px 20px 14px;display:flex;align-items:flex-start;justify-content:space-between;background:rgba(255,255,255,.96);border-bottom:1px solid #eef2f6}.event-editor-dialog header small{display:block;margin-bottom:3px;color:#d64e73;font-size:9px;font-weight:900;letter-spacing:.14em}.event-editor-dialog h2{margin:0;color:#172033;font-size:18px}.event-editor-close{width:30px;height:30px;padding:0;color:#64748b;background:#f8fafc;border:1px solid #e2e8f0;border-radius:50%;font-size:21px;line-height:1;cursor:pointer}.event-editor-grid{padding:16px 20px;display:grid;grid-template-columns:1fr 1fr;gap:12px}.event-editor-grid label{min-width:0;display:block}.event-editor-grid label>span{display:block;margin:0 0 5px;color:#475569;font-size:10px;font-weight:800}.event-editor-grid input,.event-editor-grid select,.event-editor-grid textarea{width:100%;padding:9px 10px;color:#172033;background:#fff;border:1px solid #dbe2ea;border-radius:9px;font:12px/1.4 inherit;outline:none}.event-editor-grid input,.event-editor-grid select{height:38px}.event-editor-grid textarea{min-height:82px;resize:vertical;white-space:pre-wrap}.event-editor-grid input:focus,.event-editor-grid select:focus,.event-editor-grid textarea:focus{border-color:#ef5d7d;box-shadow:0 0 0 3px rgba(239,93,125,.12)}.event-editor-wide{grid-column:1/-1}.event-editor-dialog footer{position:sticky;bottom:0;padding:12px 20px 16px;display:flex;justify-content:flex-end;gap:8px;background:rgba(255,255,255,.96);border-top:1px solid #eef2f6}.event-editor-dialog footer button{height:38px;padding:0 15px;color:#475569;background:#fff;border:1px solid #dbe2ea;border-radius:9px;font-size:11px;font-weight:800;cursor:pointer}.event-editor-dialog footer .event-editor-save{color:#fff;background:#ef5d7d;border-color:#ef5d7d}@media(max-width:520px){.event-editor-backdrop{padding:10px}.event-editor-grid{grid-template-columns:1fr}.event-editor-wide{grid-column:auto}.event-editor-dialog{max-height:calc(100vh - 20px)}}
.event-editor-grid .event-time-selects{display:grid;grid-template-columns:1.15fr .85fr .85fr;gap:5px}.event-editor-grid .event-time-selects select{min-width:0;padding:7px 5px;text-align:center}.event-editor-grid input[type="hidden"]{display:none}
/* Preserve the card's visible starting shape while pointer-resizing rerenders it. */
:scope main .editor-shell .event.resizing-event{
  height:var(--resize-start-height)!important;
  min-height:var(--resize-start-height)!important;
  overflow:visible!important;
}

.schedule-drawer-trip.history-drawer-trip {
  grid-template-columns: minmax(0, 1fr);
}

.history-drawer-trip .schedule-drawer-item {
  position: relative;
  min-height: 64px;
  padding-right: 34px;
}

.history-drawer-trip .schedule-drawer-item::after {
  position: absolute;
  top: 50%;
  right: 12px;
  color: #9da2a9;
  content: "→";
  transform: translateY(-50%);
}

.history-drawer-trip .schedule-drawer-item:hover::after,
.history-drawer-trip .schedule-drawer-item:focus-visible::after {
  color: #f3b7ca;
  transform: translate(2px, -50%);
}

/* Schedule editor scrollbars share the editor's rose palette. */
.event-overlap-warning{margin:0;padding:10px 12px;color:#9a3412;background:#fff7ed;border:1px solid #fdba74;border-radius:9px;font-size:11px;font-weight:700;line-height:1.5}.event-overlap-warning::before{content:"⚠ ";color:#ea580c}.event-overlap-warning[hidden]{display:none!important}
:scope .page-header,:scope .header-actions,:scope .calendar-toolbar,:scope .event-editor-header-actions{min-width:0}:scope .header-actions button,:scope .calendar-toolbar button,:scope .event-editor-header-actions button,:scope .add-place-options button{white-space:normal;line-height:1.3}:scope .db-picker-detail,:scope .db-result-copy,:scope .event-editor-dialog{word-break:normal;overflow-wrap:anywhere}:scope .db-detail-info dd span{line-height:1.55}:scope[lang="en"] .header-actions{gap:7px}:scope[lang="en"] #save-status{max-width:230px;line-height:1.3}:scope[lang="en"] .event-editor-dialog{width:min(470px,calc(100vw - 28px))}:scope[lang="ja"] .event-editor-dialog,:scope[lang="zh"] .event-editor-dialog,:scope[lang="zh-TW"] .event-editor-dialog{width:min(450px,calc(100vw - 28px))}:scope:not([lang="ko"]) .quick-actions button{padding-inline:6px;font-size:8px}:scope:not([lang="ko"]) .db-detail-info dd strong{min-width:92px}:scope[lang="ja"] .db-place-result strong,:scope[lang="zh"] .db-place-result strong,:scope[lang="zh-TW"] .db-place-result strong{line-height:1.45}

:scope .calendar-scroll,
:scope #db-place-results,
:scope .db-picker-detail,
:scope .db-picker-filters,
:scope textarea {
  color-scheme: light;
  scrollbar-width: thin;
  scrollbar-color: #c45f83 #f9e9ef;
}

:scope .calendar-scroll::-webkit-scrollbar,
:scope #db-place-results::-webkit-scrollbar,
:scope .db-picker-detail::-webkit-scrollbar,
:scope .db-picker-filters::-webkit-scrollbar,
:scope textarea::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}

:scope .calendar-scroll::-webkit-scrollbar-track,
:scope #db-place-results::-webkit-scrollbar-track,
:scope .db-picker-detail::-webkit-scrollbar-track,
:scope .db-picker-filters::-webkit-scrollbar-track,
:scope textarea::-webkit-scrollbar-track {
  background: #f9e9ef;
  border-radius: 999px;
}

:scope .calendar-scroll::-webkit-scrollbar-thumb,
:scope #db-place-results::-webkit-scrollbar-thumb,
:scope .db-picker-detail::-webkit-scrollbar-thumb,
:scope .db-picker-filters::-webkit-scrollbar-thumb,
:scope textarea::-webkit-scrollbar-thumb {
  background: #c45f83;
  border: 2px solid #f8eaef;
  border-radius: 999px;
}

:scope .calendar-scroll::-webkit-scrollbar-thumb:hover,
:scope #db-place-results::-webkit-scrollbar-thumb:hover,
:scope .db-picker-detail::-webkit-scrollbar-thumb:hover,
:scope .db-picker-filters::-webkit-scrollbar-thumb:hover,
:scope textarea::-webkit-scrollbar-thumb:hover {
  background: #a93d65;
}
:scope main .editor-shell .event.resizing-event>.quick-actions{
  position:static!important;
  left:auto!important;
  right:auto!important;
  bottom:auto!important;
  margin-top:8px;
  display:flex!important;
  flex-wrap:wrap;
}
:scope main .editor-shell .event.resizing-event>.event-note{
  position:static;
  margin-top:7px;
  white-space:normal;
  overflow-wrap:anywhere;
}
.calendar-pane{position:relative}.calendar-pane .calendar-pager{position:absolute!important;inset:0 0 auto 0!important;z-index:40!important;height:0!important;padding:0!important;background:transparent!important;border:0!important;pointer-events:none}.calendar-pane .calendar-pager span{display:none!important}.calendar-pane .calendar-pager button{position:absolute;top:23px;width:32px;height:32px;pointer-events:auto;box-shadow:0 3px 10px rgba(15,23,42,.12)}.calendar-pane .calendar-pager #previous-days{left:66px}.calendar-pane .calendar-pager #next-days{right:8px}.calendar-pane .calendar-scroll{flex:1!important;height:100%!important}@media(max-width:700px){.calendar-pane .calendar-pager #previous-days{left:69px}.calendar-pane .calendar-pager #next-days{right:7px}}

.add-place-choice-dialog{position:relative;width:min(460px,calc(100vw - 28px));padding:24px;background:#fff;border:1px solid #e2e8f0;border-radius:20px;box-shadow:0 24px 70px rgba(15,23,42,.25)}.add-place-choice-dialog>small,.db-place-picker header small{color:#d64e73;font-size:9px;font-weight:900;letter-spacing:.14em}.add-place-choice-dialog h2{margin:5px 0 6px;color:#172033;font-size:20px}.add-place-choice-dialog>p{margin:0;color:#64748b;font-size:12px}.choice-close{position:absolute;right:16px;top:15px;width:30px;height:30px;color:#64748b;background:#f8fafc;border:1px solid #e2e8f0;border-radius:50%;font-size:20px;cursor:pointer}.add-place-options{margin-top:20px;display:grid;grid-template-columns:1fr 1fr;gap:10px}.add-place-options button{min-height:105px;padding:16px;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-end;color:#172033;background:#fff;border:1px solid #dbe2ea;border-radius:14px;text-align:left;cursor:pointer}.add-place-options button:hover{border-color:#ef5d7d;background:#fff7f9;box-shadow:0 8px 22px rgba(239,93,125,.12)}.add-place-options b{font-size:14px}.add-place-options span{margin-top:5px;color:#64748b;font-size:10px}.db-place-picker-backdrop[hidden]{display:none!important}.db-place-picker-backdrop{position:fixed;inset:0;z-index:10000;padding:24px;display:grid;place-items:center;background:rgba(15,23,42,.42);backdrop-filter:blur(3px)}.db-place-picker{width:min(1080px,calc(100vw - 32px));height:min(720px,calc(100vh - 32px));display:grid;grid-template-rows:68px minmax(0,1fr);overflow:hidden;background:#fff;border-radius:20px;box-shadow:0 28px 80px rgba(15,23,42,.34)}.db-place-picker>header{padding:14px 20px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e8edf3}.db-place-picker h2{margin:2px 0 0;color:#172033;font-size:19px}.db-place-picker>header button{width:32px;height:32px;color:#64748b;background:#f8fafc;border:1px solid #e2e8f0;border-radius:50%;font-size:21px;cursor:pointer}.db-picker-columns{min-height:0;display:grid;grid-template-columns:210px minmax(300px,1fr) minmax(300px,38%)}.db-picker-filters,.db-picker-list,.db-picker-detail{min-width:0;min-height:0}.db-picker-filters{padding:18px;background:#f8fafc;border-right:1px solid #e2e8f0}.db-picker-filters label span{display:block;margin-bottom:6px;color:#475569;font-size:10px;font-weight:800}.db-picker-filters input{width:100%;height:38px;padding:0 10px;border:1px solid #dbe2ea;border-radius:9px;font:11px inherit;outline:none}.db-picker-filters input:focus{border-color:#ef5d7d}.db-picker-filters nav{margin-top:15px;display:grid;gap:6px}.db-picker-filters nav button{padding:9px 10px;color:#475569;background:transparent;border:0;border-radius:8px;font-size:11px;font-weight:800;text-align:left;cursor:pointer}.db-picker-filters nav button.active,.db-picker-filters nav button:hover{color:#b7355b;background:#fce8ee}.db-picker-list{padding:16px;display:grid;grid-template-rows:auto minmax(0,1fr);border-right:1px solid #e2e8f0}.db-picker-list>#db-place-count{padding:0 3px 10px;color:#64748b;font-size:10px;font-weight:800}.db-picker-list>#db-place-results{overflow:auto;display:grid;align-content:start;gap:8px}.db-place-result{padding:11px 12px;display:grid;gap:4px;color:#172033;background:#fff;border:1px solid #e2e8f0;border-radius:11px;text-align:left;cursor:pointer}.db-place-result:hover,.db-place-result.active{border-color:#ef5d7d;background:#fff8fa}.db-place-result strong{font-size:12px}.db-place-result span{overflow:hidden;color:#64748b;font-size:9px;text-overflow:ellipsis;white-space:nowrap}.db-picker-detail{padding:20px;overflow:auto}.db-detail-empty{height:100%;display:grid;place-content:center;gap:5px;color:#94a3b8;text-align:center}.db-detail-empty b{color:#475569;font-size:14px}.db-detail-card{display:grid;gap:12px}.db-detail-card img{width:100%;height:180px;object-fit:cover;background:#f1f5f9;border-radius:13px}.db-detail-card small{color:#d64e73;font-size:9px;font-weight:900}.db-detail-card h3{margin:0;color:#172033;font-size:20px}.db-detail-card p{margin:0;color:#64748b;font-size:11px;line-height:1.55}.db-detail-address{padding:10px;color:#475569!important;background:#f8fafc;border-radius:9px}.db-detail-card button{height:42px;color:#fff;background:#ef5d7d;border:0;border-radius:10px;font-size:12px;font-weight:900;cursor:pointer}.db-picker-message{padding:30px;color:#64748b;font-size:12px;text-align:center}@media(max-width:780px){.db-place-picker-backdrop{padding:8px}.db-place-picker{height:calc(100vh - 16px)}.db-picker-columns{grid-template-columns:1fr;grid-template-rows:auto minmax(220px,1fr) minmax(220px,1fr)}.db-picker-filters{padding:10px;border-right:0;border-bottom:1px solid #e2e8f0}.db-picker-filters nav{display:flex;overflow:auto}.db-picker-filters nav button{white-space:nowrap}.db-picker-list{border-right:0;border-bottom:1px solid #e2e8f0}.add-place-options{grid-template-columns:1fr}}
*{box-sizing:border-box}:scope{margin:0;background:#fbf5f6}.side-rail{position:fixed;inset:0 auto 0 0;z-index:30;width:48px;display:flex;flex-direction:column;align-items:center;background:#261b21}.side-rail a{width:48px;height:50px;display:grid;place-items:center;color:#fff;text-decoration:none;font-size:18px;font-weight:800}.side-rail a:hover{background:#3d2833}main{height:100vh;margin-left:48px;padding:22px 26px 26px;display:flex;flex-direction:column;min-width:0}.page-header{flex:none;display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:16px}.page-header p{margin:0 0 4px;color:var(--pink);font-size:10px;font-weight:900;letter-spacing:.16em}.page-header h1{margin:0;font-size:27px}.page-header h1 span{margin-left:7px;color:var(--muted);font-size:14px;font-weight:600}.header-actions{display:flex;align-items:center;gap:8px}.header-actions>span{margin-right:8px;color:var(--muted);font-size:12px}.header-actions button{height:40px;padding:0 16px;color:#765a65;background:#fff;border:1px solid #e4cdd6;border-radius:9px;font-weight:800;cursor:pointer}.header-actions .primary{color:#fff;background:var(--pink);border-color:var(--pink)}.editor-shell{min-height:0;flex:1;display:grid;grid-template-columns:minmax(520px,46%) minmax(0,1fr);overflow:hidden;background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:0 16px 42px rgba(72,34,49,.1)}.calendar-pane,.calendar-scroll{min-width:0;min-height:0;height:100%}.calendar-scroll{overflow:auto}.calendar-grid{position:relative;min-width:720px;display:grid;grid-template-columns:68px repeat(var(--days),minmax(180px,1fr));grid-template-rows:78px calc(var(--hours)*var(--hour-height))}.corner,.day-header{position:sticky;top:0;z-index:12;background:#fff;border-bottom:1px solid var(--line)}.corner{left:0;border-right:1px solid var(--line)}.day-header{padding:12px;text-align:center;border-right:1px solid var(--line);cursor:pointer}.day-header.active{color:#fff;background:linear-gradient(135deg,#c45c80,#993b5d)}.day-header strong,.day-header small{display:block}.day-header strong{font-size:16px}.day-header small{margin-top:5px;font-size:11px;opacity:.72}.time-axis{position:sticky;left:0;z-index:8;background:#fff;border-right:1px solid var(--line)}.hour-label{position:absolute;right:9px;color:#766b70;font-size:11px;font-weight:700;transform:translateY(-7px)}.day-column{position:relative;border-right:1px solid var(--line);background:repeating-linear-gradient(to bottom,#fff 0,#fff calc(var(--hour-height) - 1px),#eee5e8 calc(var(--hour-height) - 1px),#eee5e8 var(--hour-height))}.event{position:relative!important;left:auto!important;top:auto!important;width:auto!important;height:auto!important;min-height:58px;margin:4px 7px;padding:9px 10px 8px 14px;overflow:hidden;color:#6d3047;background:#f8dfe8;border-left:4px solid var(--pink);border-radius:8px;box-shadow:0 3px 10px rgba(81,40,55,.11);cursor:grab;transform:translateY(var(--event-top))}.event.restaurant{color:#80501f;background:#fff0de;border-left-color:#ed8a37}.event.anchor{color:#54484e;background:#efebed;border-left-color:#65545c}.event strong,.event span{display:block}.event strong{overflow:hidden;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.event span{margin-top:4px;font-size:10px;font-weight:700;opacity:.75}.event::before{content:"⋮⋮";position:absolute;left:3px;top:50%;font-size:9px;opacity:.45;transform:translateY(-50%)}.event.sortable-ghost{opacity:.28}.event.sortable-chosen{cursor:grabbing;box-shadow:0 12px 28px rgba(77,31,49,.28)}.day-column.drop-active{background:#fff4f7}.map-pane{position:relative;min-width:0;background:#e5eaed}.map{width:100%;height:100%}.map-placeholder{width:100%;height:100%;display:grid;place-content:center;text-align:center;color:#6d7881;background:linear-gradient(145deg,#edf1f2,#dce5e8)}.map-placeholder strong{font-size:25px}.map-placeholder p{font-size:12px}.map-overlay{position:absolute;z-index:10;left:18px;top:18px;padding:11px 14px;display:flex;gap:9px;align-items:center;background:rgba(255,255,255,.95);border-radius:9px;box-shadow:0 5px 18px rgba(24,43,66,.16)}.map-overlay strong{color:var(--pink-dark);font-size:13px}.map-overlay span{color:var(--muted);font-size:11px}.naver-marker{width:34px;height:42px;display:grid;place-items:start center;padding-top:7px;color:#fff;background:var(--pink);border:3px solid #fff;border-radius:50% 50% 50% 4px;box-shadow:0 3px 9px rgba(14,34,60,.3);transform:rotate(-45deg);font-weight:800}.naver-marker span{transform:rotate(45deg)}.naver-marker.anchor-marker{background:#59434d}@media(max-width:950px){main{height:auto;min-height:100vh;padding:18px 14px}.editor-shell{grid-template-columns:1fr;grid-template-rows:620px 430px}.header-actions>span{display:none}}@media(max-width:620px){.side-rail,.side-rail a{width:42px}main{margin-left:42px}.page-header{align-items:flex-start;flex-direction:column}.header-actions{width:100%}.header-actions button{flex:1}.editor-shell{grid-template-rows:560px 360px}}

/* Final visual layer for the calendar editor. */
:scope {
  --editor-accent: #b5446e;
  --editor-accent-hover: #a63b62;
  --editor-soft-pink: #f8e8ee;
  --editor-pale-pink: #fdfbfb;
  --editor-rose-border: #f0e6eb;
  --editor-grid-line: #eee6e9;
}

/* Match the standalone editor shell to the main Naelo application. */
:scope,
:scope,
:scope > main {
  background: #fbf7f6 !important;
  background-color: #fbf7f6 !important;
  background-image: none !important;
}

.side-rail { display: none !important; }

:scope > main {
  margin-left: 0 !important;
  padding: 18px 8px !important;
  background: #fbf7f6 !important;
}

/* Match the shared map marker used throughout the main application. */
.naver-place-marker-shell { width:44px; height:44px; display:flex; align-items:flex-start; justify-content:center; overflow:visible; pointer-events:auto; }
.naver-place-pin { position:relative; width:38px; height:38px; display:grid; place-items:center; border:3px solid #fff; border-radius:50% 50% 50% 7px; color:#0277ad; background:linear-gradient(145deg,#38bdf8,#0284c7 68%); box-shadow:inset 2px 2px 5px rgba(255,255,255,.38),0 10px 22px rgba(8,31,43,.3); transform:rotate(-45deg); }
.naver-place-pin::before { content:""; position:absolute; inset:5px; border-radius:50%; background:#fff; box-shadow:inset 0 0 0 1px rgba(15,35,44,.08),0 2px 5px rgba(7,43,58,.2); }
.naver-place-pin > span { position:relative; z-index:1; width:19px; height:19px; display:grid; place-items:center; transform:rotate(45deg); }
.naver-place-pin svg { width:17px; height:17px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.naver-place-pin em { position:absolute; z-index:3; right:-8px; top:-7px; width:20px; height:20px; display:grid; place-items:center; border:2px solid #fff; border-radius:50%; color:#fff; background:#183847; box-shadow:0 3px 7px rgba(12,32,42,.3); font-size:9px; font-style:normal; font-weight:900; transform:rotate(45deg); }
.naver-place-pin.marker-restaurant { color:#d93649; background:linear-gradient(145deg,#fb7185,#e24455 68%); }

:scope > main > .page-header,
:scope > main > .editor-shell {
  margin-left: 0 !important;
}

/* The app shell already owns the sidebar; never reserve the legacy rail gutter. */
:scope,
:scope {
  margin: 0 !important;
  padding: 0 !important;
  background: #fbf7f6 !important;
  background-image: none !important;
}

:scope .page-header { padding: 0 2px; }
:scope .editor-shell { border-color: #eadde1; border-radius: 18px; background: #fffaf9; box-shadow: 0 16px 44px rgba(83,40,56,.08); }

/* Keep the editor flush with the app rail and give the timetable more room. */
:scope .calendar-grid {
  grid-template-columns: 52px repeat(var(--days), minmax(120px, 1fr)) !important;
}

:scope .calendar-pane .calendar-pager #previous-days {
  left: 58px !important;
}

@media (max-width: 760px) {
  :scope > main { margin-left: 0 !important; padding: 12px 8px 16px !important; }
}

:scope,
button,
input,
select,
textarea {
  font-family: Pretendard, Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

/* Schedule cards */
:scope .editor-shell .event {
  color: #2c2c2e !important;
  background: var(--editor-pale-pink) !important;
  border-color: var(--editor-rose-border) !important;
  border-radius: 12px !important;
  border-left-width: 4px !important;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04) !important;
}

:scope .editor-shell .event:hover,
:scope .editor-shell .event.menu-open {
  box-shadow: 0 7px 18px rgba(15, 23, 42, 0.09) !important;
}

:scope .editor-shell .event::before {
  content: none !important;
}

:scope .editor-shell .event.type-spot {
  color: #563d47 !important;
  background: #fbf0f4 !important;
  border-color: #eadde2 !important;
  border-left-color: #c97794 !important;
}

:scope .editor-shell .event.type-food {
  color: #5f4a32 !important;
  background: #fdf6ea !important;
  border-color: #eee2d0 !important;
  border-left-color: #d99a55 !important;
}

:scope .editor-shell .event.type-palace {
  color: #4d425d !important;
  background: #f4f0fa !important;
  border-color: #e4dced !important;
  border-left-color: #8e70b6 !important;
}

:scope .editor-shell .event.type-park {
  color: #3f5747 !important;
  background: #eef7f1 !important;
  border-color: #dceade !important;
  border-left-color: #69a579 !important;
}

:scope .editor-shell .event.type-shopping,
:scope .editor-shell .event.type-popup {
  color: #40526a !important;
  background: #eff5fb !important;
  border-color: #dce6f0 !important;
  border-left-color: #6f98c2 !important;
}

:scope .editor-shell .event.type-transit {
  color: #49616e !important;
  background: #eff6f8 !important;
  border-color: #dce8ec !important;
  border-left-color: #78a2b4 !important;
}

:scope .editor-shell .event > strong {
  color: #2c2c2e !important;
  font-size: 15.5px !important;
  font-weight: 700 !important;
  line-height: 1.3 !important;
}

:scope .editor-shell .event.name-only-event:not(.readable-event) > strong {
  font-size: 12px !important;
  line-height: 14px !important;
}

:scope .editor-shell .event.name-only-event.readable-event > strong {
  font-size: 15px !important;
  font-weight: 700 !important;
  line-height: 18px !important;
}

:scope .editor-shell .event > small,
:scope .editor-shell .event > time {
  color: #8a8a8e !important;
  font-size: 11.5px !important;
  font-weight: 600 !important;
}


:scope .editor-shell .category-badge {
  font-size: 10px !important;
  font-weight: 700 !important;
  letter-spacing: 0.5px !important;
}

:scope .editor-shell .event.type-palace .category-badge {
  color: #7440b4 !important;
  background: rgba(255, 255, 255, 0.56) !important;
}

:scope .editor-shell .event.type-spot .category-badge {
  color: #9b4264 !important;
  background: rgba(255, 255, 255, 0.56) !important;
}

:scope .editor-shell .event.type-food .category-badge {
  color: #b55e1f !important;
  background: rgba(255, 255, 255, 0.58) !important;
}

:scope .editor-shell .event.type-park .category-badge {
  color: #397c4a !important;
  background: rgba(255, 255, 255, 0.56) !important;
}

:scope .editor-shell .event.type-shopping .category-badge,
:scope .editor-shell .event.type-popup .category-badge {
  color: #386eaf !important;
  background: rgba(255, 255, 255, 0.58) !important;
}

:scope .editor-shell .event.type-transit .category-badge {
  color: #2d718f !important;
  background: rgba(255, 255, 255, 0.58) !important;
}

/* Shared itinerary categories */
:scope .editor-shell .event.type-history_culture { color:#4d425d!important; background:#f2e9ff!important; border-color:#e4dced!important; border-left-color:#8a4fd1!important; }
:scope .editor-shell .event.type-art_culture { color:#61384a!important; background:#fdeaf2!important; border-color:#efd8e2!important; border-left-color:#c75582!important; }
:scope .editor-shell .event.type-nature_healing { color:#3f5747!important; background:#e7f6eb!important; border-color:#d6eadb!important; border-left-color:#4e9a61!important; }
:scope .editor-shell .event.type-k_culture { color:#653653!important; background:#fce8f7!important; border-color:#efd5e8!important; border-left-color:#d44aa7!important; }
:scope .editor-shell .event.type-shopping { color:#40526a!important; background:#e8f2ff!important; border-color:#d7e5f4!important; border-left-color:#4d83c5!important; }
:scope .editor-shell .event.type-food_local { color:#624b22!important; background:#fff4d9!important; border-color:#eee0bd!important; border-left-color:#d99b2b!important; }
:scope .editor-shell .event.type-night_view { color:#44467b!important; background:#e9e9fb!important; border-color:#dadaef!important; border-left-color:#5d60ba!important; }
:scope .editor-shell .event.type-experience_activity { color:#315b57!important; background:#e5f6f4!important; border-color:#d1e9e6!important; border-left-color:#31998e!important; }
:scope .editor-shell .event.type-restaurant { color:#5f4a32!important; background:#fff0de!important; border-color:#eee0cf!important; border-left-color:#ed8a37!important; }
:scope .editor-shell .event.type-cafe { color:#5b4433!important; background:#f5eadf!important; border-color:#e7d8c9!important; border-left-color:#a96f43!important; }

:scope .editor-shell .event.type-history_culture .category-badge { color:#7440b4!important; }
:scope .editor-shell .event.type-art_culture .category-badge { color:#a43d67!important; }
:scope .editor-shell .event.type-nature_healing .category-badge { color:#397c4a!important; }
:scope .editor-shell .event.type-k_culture .category-badge { color:#b52d8c!important; }
:scope .editor-shell .event.type-shopping .category-badge { color:#386eaf!important; }
:scope .editor-shell .event.type-food_local .category-badge { color:#a86d10!important; }
:scope .editor-shell .event.type-night_view .category-badge { color:#494b99!important; }
:scope .editor-shell .event.type-experience_activity .category-badge { color:#25796f!important; }
:scope .editor-shell .event.type-restaurant .category-badge { color:#b55e1f!important; }
:scope .editor-shell .event.type-cafe .category-badge { color:#80502d!important; }

/* Timeline axis and dashed hour guides */
:scope .editor-shell .hour-label {
  color: #a0a0a0 !important;
  font-size: 12px !important;
  font-weight: 600 !important;
}

:scope .editor-shell .day-column {
  background: #ffffff !important;
}

:scope .editor-shell .day-column.mobile-active {
  background: #fffbfc !important;
}

:scope .editor-shell .day-column::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background: repeating-linear-gradient(
    to bottom,
    transparent 0,
    transparent calc(var(--hour-height) - 1px),
    var(--editor-grid-line) calc(var(--hour-height) - 1px),
    var(--editor-grid-line) var(--hour-height)
  );
  -webkit-mask-image: repeating-linear-gradient(to right, #000 0 6px, transparent 6px 11px);
  mask-image: repeating-linear-gradient(to right, #000 0 6px, transparent 6px 11px);
}

/* Header and actions */
:scope .header-actions button {
  border-radius: 10px !important;
}

:scope .header-actions button:focus-visible {
  border-color: var(--editor-accent) !important;
  outline: 3px solid rgba(181, 68, 110, 0.18) !important;
  outline-offset: 2px;
}

:scope .header-actions .primary {
  color: #ffffff !important;
  background: var(--editor-accent) !important;
  border-color: var(--editor-accent) !important;
}

:scope .header-actions .primary:hover {
  background: var(--editor-accent-hover) !important;
  border-color: var(--editor-accent-hover) !important;
}

:scope #add-place-button {
  color: #8f3658 !important;
  background: #ffffff !important;
  border-color: #e7cad5 !important;
}

:scope #add-place-button:hover {
  color: var(--editor-accent) !important;
  background: #fff7fa !important;
  border-color: var(--editor-accent) !important;
}

/* Separate calendar and map surfaces */
:scope .editor-shell {
  gap: 12px !important;
  overflow: visible !important;
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}

:scope .calendar-pane,
:scope .map-pane {
  min-width: 0;
  overflow: hidden !important;
  background: #ffffff !important;
  border: 1px solid var(--editor-rose-border) !important;
  border-radius: 16px !important;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.04) !important;
}

/* Day column headers */
:scope .calendar-grid {
  grid-template-rows: 84px calc(var(--hours) * var(--hour-height)) !important;
}

:scope .day-header {
  padding: 13px 10px 14px !important;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  color: #4b5563 !important;
  background: #ffffff !important;
}

:scope .day-header > span {
  font-size: 11px;
  font-weight: 700;
}

:scope .day-header > b {
  font-size: 15px;
  line-height: 1;
}

:scope .day-header > small {
  margin-top: 1px !important;
  color: #8e8e93 !important;
  font-size: 11px !important;
}

:scope .day-header.active {
  color: #8d3f58 !important;
  background: #fff4f7 !important;
  box-shadow: inset 0 -3px var(--editor-accent) !important;
}

:scope .calendar-pane .calendar-pager button {
  top: 26px !important;
}

.event-editor-header-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}

.event-editor-db {
  height: 30px;
  padding: 0 11px;
  color: #a13f64;
  background: #fff7fa;
  border: 1px solid #e8c5d2;
  border-radius: 8px;
  font-size: 10px;
  font-weight: 800;
  cursor: pointer;
}

.event-editor-db:hover,
.event-editor-db:focus-visible {
  color: #ffffff;
  background: #b5446e;
  border-color: #b5446e;
  outline: none;
}

:scope .editor-shell .event.draft-event {
  opacity: .72;
  border-style: dashed !important;
  box-shadow: 0 8px 22px rgba(181, 68, 110, .15) !important;
  pointer-events: none;
}

:scope .editor-shell .event.draft-event::after {
  content: "미리보기";
  position: absolute;
  right: 8px;
  top: 7px;
  padding: 2px 5px;
  color: #a13f64;
  background: rgba(255, 255, 255, .86);
  border-radius: 999px;
  font-size: 8px;
  font-weight: 800;
}

:scope.new-place-editor-open #event-editor-backdrop {
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

:scope.db-picker-open .calendar-pane {
  pointer-events: none;
  user-select: none;
}

:scope .calendar-toolbar {
  position: relative;
  z-index: 35;
  flex: none;
  height: 44px;
  padding: 0 12px 0 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  background: #fffdfd;
  border-bottom: 1px solid #f0e6eb;
}

:scope .calendar-toolbar > span {
  color: #8d7e84;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .04em;
}

:scope .calendar-toolbar #add-place-button {
  height: 32px;
  padding: 0 12px;
  color: #a13f64 !important;
  background: #fff7fa !important;
  border: 1px solid #e8c5d2 !important;
  border-radius: 9px;
  font-size: 10px;
  font-weight: 800;
  cursor: pointer;
}

:scope .calendar-toolbar #add-place-button:hover,
:scope .calendar-toolbar #add-place-button:focus-visible {
  color: #fff !important;
  background: #b5446e !important;
  border-color: #b5446e !important;
  outline: none;
}

:scope .calendar-pane > .calendar-scroll {
  min-height: 0;
  height: auto !important;
}

:scope .calendar-pane .calendar-pager button {
  top: 70px !important;
}

/* DB place picker */
:scope .db-place-picker-backdrop {
  padding: 0;
  place-items: initial;
  background: transparent;
  backdrop-filter: none;
  pointer-events: auto;
}

:scope .db-place-picker {
  position: fixed;
  left: var(--db-picker-left, 64px);
  top: var(--db-picker-top, 84px);
  width: var(--db-picker-width, min(1160px, calc(100vw - 440px)));
  height: var(--db-picker-height, min(760px, calc(100vh - 40px)));
  grid-template-rows: 84px minmax(0, 1fr);
  border: 1px solid #f0e4e9;
  border-radius: 22px;
  pointer-events: auto;
}

:scope .db-place-picker > header {
  padding: 14px 22px;
  background: #fffdfd;
  border-color: #f0e6eb;
  cursor: grab;
  user-select: none;
  touch-action: none;
}

:scope .db-place-picker.is-dragging > header {
  cursor: grabbing;
}

:scope .db-place-picker > header button {
  cursor: pointer;
}

:scope .db-place-picker > header h2 {
  color: #25232a;
  font-size: 20px;
}

:scope #db-place-picker-description {
  margin: 3px 0 0;
  color: #8a8186;
  font-size: 10px;
}

:scope .db-picker-columns {
  grid-template-columns: 180px minmax(280px, 1fr) minmax(250px, 34%);
}

:scope .db-picker-filters {
  padding: 20px 16px;
  background: #fcf8fa;
  border-color: #f0e6eb;
}

:scope .db-picker-filters input {
  height: 42px;
  padding: 0 12px;
  background: #fff;
  border-color: #eadde3;
  border-radius: 11px;
}

:scope .db-picker-filters nav button {
  display: flex;
  justify-content: space-between;
  border-radius: 10px;
}

:scope .db-picker-filters nav button span {
  color: #a99ba1;
  font-size: 9px;
}

:scope .db-picker-filters .db-place-groups {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 7px;
  padding-bottom: 12px;
  border-bottom: 1px solid #eadde3;
}

:scope .db-picker-filters .db-place-groups .db-group-button {
  min-width: 0;
  min-height: 52px;
  padding: 9px 10px;
  display: grid;
  align-content: center;
  justify-items: start;
  gap: 3px;
  color: #71646a;
  background: #fff;
  border: 1px solid #eadde3;
}

:scope .db-picker-filters .db-place-groups .db-group-button.active {
  color: #a9335c;
  background: #fce8ee;
  border-color: #e8a9bf;
}

:scope .db-picker-filters .db-place-groups .db-group-button b {
  max-width: 100%;
  font-size: 12px;
  line-height: 1.25;
  overflow-wrap: anywhere;
}

:scope:not([lang="ko"]) .db-picker-filters .db-place-groups .db-group-button {
  padding-inline: 6px;
}

:scope:not([lang="ko"]) .db-picker-filters .db-place-groups .db-group-button b {
  font-size: 10px;
  letter-spacing: -.02em;
}

@media (min-width: 781px) {
  :scope:not([lang="ko"]) .db-picker-columns {
    grid-template-columns: 190px minmax(260px, 1fr) minmax(270px, 34%);
  }
}

:scope .db-picker-filters .db-place-subcategories {
  margin-top: 10px;
  display: grid;
  gap: 4px;
}

:scope .db-picker-list {
  padding: 18px;
  background: #fff;
  border-color: #f0e6eb;
}

:scope .db-picker-list > #db-place-results {
  gap: 10px;
  padding-right: 5px;
}

:scope .db-place-result {
  min-height: 82px;
  padding: 8px;
  display: grid;
  grid-template-columns: 68px minmax(0, 1fr);
  align-items: center;
  gap: 11px;
  border-color: #eee4e8;
  border-radius: 13px;
  box-shadow: 0 2px 8px rgba(40, 22, 30, 0.03);
}

:scope .db-place-result:hover,
:scope .db-place-result.active {
  border-color: #d886a3;
  background: #fff8fa;
  box-shadow: 0 5px 16px rgba(181, 68, 110, 0.09);
}

:scope .db-place-result.active {
  box-shadow: inset 3px 0 #b5446e, 0 5px 16px rgba(181, 68, 110, 0.09);
}

:scope .db-result-media {
  width: 68px;
  height: 64px;
  display: grid;
  place-items: center;
  overflow: hidden;
  color: #b5446e;
  background: #f8e8ee;
  border-radius: 10px;
  font-size: 21px;
}

:scope .db-result-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

:scope .db-place-result .db-result-copy {
  min-width: 0;
  display: grid;
  gap: 4px;
}

:scope .db-place-result .db-result-labels {
  display: flex;
  align-items: center;
  gap: 6px;
}

:scope .db-result-labels em,
:scope .db-result-labels i {
  padding: 3px 6px;
  color: #a44c6d;
  background: #f8e8ee;
  border-radius: 999px;
  font-size: 8px;
  font-style: normal;
  font-weight: 800;
  letter-spacing: .04em;
}

:scope .db-result-labels i {
  color: #fff;
  background: #b5446e;
}

:scope .db-place-result strong {
  overflow: hidden;
  color: #29262c;
  font-size: 13px;
  line-height: 1.25;
  text-overflow: ellipsis;
  white-space: nowrap;
}

:scope .db-place-result .db-result-address {
  overflow: hidden;
  color: #8b8387;
  font-size: 9px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

:scope .db-picker-detail {
  padding: 20px;
  background: #fdfbfb;
}

:scope .db-detail-card {
  min-height: 100%;
  display: flex;
  flex-direction: column;
  gap: 9px;
}

:scope .db-detail-hero {
  width: 100%;
  height: 176px;
  display: grid;
  place-items: center;
  overflow: hidden;
  color: #b5446e;
  background: linear-gradient(145deg, #f9e9ef, #fff7fa);
  border-radius: 14px;
  font-size: 38px;
}

:scope .db-detail-hero img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

:scope .db-detail-heading {
  display: flex;
  align-items: center;
  gap: 7px;
  margin-top: 3px;
}

:scope .db-detail-heading small,
:scope .db-detail-heading span {
  padding: 4px 7px;
  color: #a44c6d;
  background: #f8e8ee;
  border-radius: 999px;
  font-size: 8px;
  font-weight: 800;
}

:scope .db-detail-heading span {
  color: #fff;
  background: #b5446e;
}

:scope .db-detail-card h3 {
  font-size: 21px;
  line-height: 1.25;
}

:scope .db-detail-card .db-detail-local-name {
  color: #9a9095;
  font-size: 10px;
}

:scope .db-detail-card .db-detail-address {
  display: flex;
  align-items: flex-start;
  gap: 6px;
  padding: 9px 10px;
  color: #5f565b !important;
  background: #fff;
  border: 1px solid #eee4e8;
}

:scope .db-detail-description {
  max-height: 52px;
  overflow: auto;
  color: #71676c !important;
  line-height: 1.6 !important;
}

:scope .db-detail-info { margin:6px 1px 10px; display:grid; gap:14px; }
:scope .db-detail-info > div { min-width:0; display:grid; grid-template-columns:25px minmax(0,1fr); gap:9px; align-items:start; }
:scope .db-detail-info dt { color:#b5446e; font-size:19px; font-weight:800; line-height:1.25; text-align:center; }
:scope .db-detail-info dd { min-width:0; margin:0; color:#655b60; font-size:12.5px; line-height:1.55; }
:scope .db-detail-info dd strong { display:block; margin-bottom:3px; color:#3f373b; font-size:11px; }
:scope .db-detail-info dd span { display:block; overflow-wrap:anywhere; }

:scope .db-detail-bottom {
  width: 100%;
  align-self: stretch;
  display: grid;
  gap: 9px;
  margin-top: auto;
  position: sticky;
  z-index: 5;
  bottom: -20px;
  padding: 14px 0 20px;
  background: linear-gradient(to bottom, rgba(253,251,251,0), #fdfbfb 14px);
}

:scope .db-detail-bottom > button {
  width: 100%;
}

:scope .db-preview-pin {
  position: relative;
  width: 36px;
  height: 36px;
  display: grid;
  place-items: center;
  background: #b5446e;
  border: 3px solid #ffffff;
  border-radius: 50% 50% 50% 6px;
  box-shadow: 0 4px 12px rgba(92, 34, 56, .32);
  transform: rotate(-45deg);
}

:scope .db-preview-pin span {
  width: 9px;
  height: 9px;
  background: #ffffff;
  border-radius: 50%;
}

:scope .db-preview-pin b {
  position: absolute;
  left: 31px;
  top: 27px;
  width: max-content;
  padding: 5px 8px;
  color: #8f3457;
  background: rgba(255, 255, 255, .96);
  border: 1px solid #e8c5d2;
  border-radius: 7px;
  box-shadow: 0 3px 9px rgba(50, 27, 36, .14);
  font-size: 9px;
  font-weight: 800;
  transform: rotate(45deg);
}

:scope .db-detail-preserve {
  color: #9a6177 !important;
  font-size: 9px !important;
  text-align: center;
}

:scope .db-detail-card button {
  flex: none;
  background: #b5446e;
  border-radius: 10px;
}

:scope .db-detail-mobile-close {
  display: none;
}

@media (max-width: 900px) {
  :scope .db-picker-columns {
    grid-template-columns: 170px minmax(300px, 1fr) minmax(270px, 35%);
  }
}

@media (max-width: 780px) {
  :scope .db-place-picker-backdrop {
    padding: 8px;
    display: grid;
    place-items: center;
    background: rgba(15, 23, 42, .42);
    backdrop-filter: blur(3px);
    pointer-events: auto;
  }

  :scope .db-place-picker {
    position: static;
    width: calc(100vw - 16px);
    height: calc(100vh - 16px);
    grid-template-rows: 76px minmax(0, 1fr);
  }

  :scope .db-picker-columns {
    grid-template-columns: 1fr;
    grid-template-rows: auto minmax(230px, 1fr) minmax(260px, 1fr);
  }

  :scope .db-picker-filters nav {
    margin-top: 9px;
  }

  :scope .db-detail-hero {
    height: 130px;
  }
}


}
@scope (#scheduleEditSpaPage) {
  :scope .event.note-editing-upward > .inline-note-editor {
    position:absolute;
    left:0;
    right:0;
    bottom:calc(100% + 6px);
    margin:0;
    z-index:50;
    box-shadow:0 -10px 24px rgba(95,66,25,.16);
  }
}
/* schedule-edit-spa:end */

/* Attractions & restaurants discovery refresh */
.app-shell:has(.nav-item[data-page="attractions"].active) .chat-area,
.app-shell:has(.nav-item[data-page="restaurants"].active) .chat-area {
  grid-template-rows: minmax(0, 1fr) auto auto;
}

.app-shell:has(.nav-item[data-page="attractions"].active) .topbar,
.app-shell:has(.nav-item[data-page="restaurants"].active) .topbar {
  display: none;
}

:is(#attractionsPage, #restaurantsPage) {
  --place-accent: #c34b76;
  --place-accent-dark: #8f3153;
  --place-accent-soft: #fbe6ed;
  --place-surface: rgba(255, 253, 252, .92);
  gap: 24px;
  padding: 24px;
  background:
    radial-gradient(circle at 5% 4%, color-mix(in srgb, var(--place-accent) 16%, transparent), transparent 30%),
    radial-gradient(circle at 96% 92%, color-mix(in srgb, var(--place-accent) 10%, transparent), transparent 28%),
    linear-gradient(145deg, #fffaf9, #f8f2f3 58%, #fffaf8);
}

#restaurantsPage {
  --place-accent: #dc7459;
  --place-accent-dark: #9a4634;
  --place-accent-soft: #fff0e9;
}

:is(#attractionsPage, #restaurantsPage) .attraction-list-panel,
:is(#attractionsPage, #restaurantsPage) .attraction-detail-panel {
  border: 1px solid color-mix(in srgb, var(--place-accent) 20%, #ffffff);
  background: var(--place-surface);
  box-shadow: 0 20px 55px rgba(92, 53, 67, .11);
}

:is(#attractionsPage, #restaurantsPage) .attraction-list-panel {
  padding: 22px 22px 0;
  border-radius: 28px;
}

:is(#attractionsPage, #restaurantsPage) .attraction-toolbar {
  position: relative;
  min-height: 68px;
  margin-bottom: 16px;
  padding: 0 2px 16px;
  border-bottom-color: color-mix(in srgb, var(--place-accent) 17%, transparent);
}

:is(#attractionsPage, #restaurantsPage) .attraction-toolbar::after {
  position: absolute;
  bottom: -1px;
  left: 0;
  width: 58px;
  height: 3px;
  border-radius: 99px;
  background: linear-gradient(90deg, var(--place-accent), color-mix(in srgb, var(--place-accent) 35%, transparent));
  content: "";
}

:is(#attractionsPage, #restaurantsPage) .attraction-toolbar .eyebrow {
  margin-bottom: 5px;
  color: var(--place-accent-dark);
  font-size: 11px;
}

:is(#attractionsPage, #restaurantsPage) .attraction-toolbar h1 {
  font-size: clamp(24px, 2vw, 31px);
  line-height: 1.12;
}

:is(#attractionsPage, #restaurantsPage) .attraction-toolbar > span {
  padding: 7px 12px;
  border: 1px solid color-mix(in srgb, var(--place-accent) 16%, transparent);
  background: var(--place-accent-soft);
  color: var(--place-accent-dark);
  font-variant-numeric: tabular-nums;
}

:is(#attractionsPage, #restaurantsPage) .attraction-controls {
  gap: 12px;
  margin-bottom: 20px;
}

:is(#attractionsPage, #restaurantsPage) .attraction-search {
  min-height: 50px;
  border-color: color-mix(in srgb, var(--place-accent) 20%, #ddd4d6);
  border-radius: 16px;
  background: #fff;
  color: var(--place-accent);
  box-shadow: 0 7px 22px rgba(85, 47, 60, .055);
  transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}

:is(#attractionsPage, #restaurantsPage) .attraction-search:focus-within {
  border-color: var(--place-accent);
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--place-accent) 12%, transparent), 0 10px 24px rgba(85, 47, 60, .08);
  transform: translateY(-1px);
}

.itinerary-flow-nav [data-flow-step]:disabled {
  cursor: default;
  opacity: 1;
}

.itinerary-flow-nav [data-flow-step]:disabled:hover {
  border-color: rgba(137,84,103,.18);
  color: #806b73;
  transform: none;
}

.itinerary-flow-nav [data-flow-step].current:disabled:hover {
  border-color: #b95b7b;
  color: #fff;
}

:is(#attractionsPage, #restaurantsPage) .attraction-search > span {
  font-size: 24px;
  transform: translateY(-1px);
}

:is(#attractionsPage, #restaurantsPage) .attraction-filter-list {
  gap: 7px;
  padding: 2px 1px 5px;
}

:is(#attractionsPage, #restaurantsPage) .attraction-filter {
  min-height: 38px;
  padding: 0 15px;
  border-color: color-mix(in srgb, var(--place-accent) 15%, #ded7d8);
  background: rgba(255,255,255,.84);
  transition: color .16s ease, background .16s ease, border-color .16s ease, transform .16s ease;
}

:is(#attractionsPage, #restaurantsPage) .attraction-filter:hover,
:is(#attractionsPage, #restaurantsPage) .attraction-filter:focus-visible {
  border-color: color-mix(in srgb, var(--place-accent) 58%, #fff);
  background: var(--place-accent-soft);
  color: var(--place-accent-dark);
  transform: translateY(-1px);
}

:is(#attractionsPage, #restaurantsPage) .attraction-filter.active {
  border-color: var(--place-accent);
  background: var(--place-accent);
  color: #fff;
  box-shadow: 0 7px 18px color-mix(in srgb, var(--place-accent) 24%, transparent);
}

:is(#attractionsPage, #restaurantsPage) .attraction-list-panel .attraction-category-list {
  padding: 2px 8px 26px 1px;
  scrollbar-color: color-mix(in srgb, var(--place-accent) 50%, #e7dfe1) transparent;
  scrollbar-width: thin;
}

:is(#attractionsPage, #restaurantsPage) .attraction-list-panel .attraction-category-list::-webkit-scrollbar {
  width: 7px;
}

:is(#attractionsPage, #restaurantsPage) .attraction-list-panel .attraction-category-list::-webkit-scrollbar-thumb {
  border: 2px solid transparent;
  border-radius: 99px;
  background: color-mix(in srgb, var(--place-accent) 45%, #eadfe2);
  background-clip: padding-box;
}

:is(#attractionsPage, #restaurantsPage) .attraction-group + .attraction-group {
  margin-top: 30px;
}

:is(#attractionsPage, #restaurantsPage) .attraction-group > header {
  margin-bottom: 13px;
  padding: 0 2px 10px;
}

:is(#attractionsPage, #restaurantsPage) .attraction-group h2 {
  font-size: 18px;
}

:is(#attractionsPage, #restaurantsPage) .attraction-group header button {
  padding: 6px 9px;
  border-radius: 999px;
  color: var(--place-accent-dark);
}

:is(#attractionsPage, #restaurantsPage) .attraction-group header button:hover,
:is(#attractionsPage, #restaurantsPage) .attraction-group header button:focus-visible {
  outline: 0;
  background: var(--place-accent-soft);
}

:is(#attractionsPage, #restaurantsPage) .attraction-place-grid {
  gap: 13px;
}

:is(#attractionsPage, #restaurantsPage) .attraction-place-card {
  position: relative;
  border-color: rgba(128, 84, 98, .14);
  border-radius: 18px;
  background: #fff;
  box-shadow: 0 8px 22px rgba(84, 48, 60, .07);
  transform: translateZ(0);
}

:is(#attractionsPage, #restaurantsPage) .attraction-place-card::after {
  position: absolute;
  inset: 0;
  border: 2px solid transparent;
  border-radius: inherit;
  pointer-events: none;
  content: "";
  transition: border-color .18s ease;
}

:is(#attractionsPage, #restaurantsPage) .attraction-place-card:hover,
:is(#attractionsPage, #restaurantsPage) .attraction-place-card:focus-visible {
  border-color: color-mix(in srgb, var(--place-accent) 62%, #fff);
  box-shadow: 0 15px 30px rgba(94, 48, 65, .14);
  transform: translateY(-4px);
}

:is(#attractionsPage, #restaurantsPage) .attraction-place-card.active {
  border-color: var(--place-accent);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--place-accent) 12%, transparent), 0 16px 32px rgba(94, 48, 65, .15);
  transform: translateY(-3px);
}

:is(#attractionsPage, #restaurantsPage) .attraction-place-card.active::after {
  border-color: color-mix(in srgb, var(--place-accent) 28%, transparent);
}

:is(#attractionsPage, #restaurantsPage) .attraction-card-visual {
  overflow: hidden;
  aspect-ratio: 16 / 10;
  transition: filter .2s ease, transform .3s ease;
}

:is(#attractionsPage, #restaurantsPage) .attraction-place-card:hover .attraction-card-visual,
:is(#attractionsPage, #restaurantsPage) .attraction-place-card.active .attraction-card-visual {
  filter: saturate(1.08) contrast(1.02);
}

:is(#attractionsPage, #restaurantsPage) .attraction-card-badge {
  top: 10px;
  left: 10px;
  padding: 5px 9px;
  border-color: rgba(255,255,255,.5);
  background: rgba(54, 28, 37, .7);
  box-shadow: 0 4px 14px rgba(20,10,14,.18);
}

#restaurantsPage .attraction-card-badge {
  background: rgba(113, 50, 35, .74);
}

:is(#attractionsPage, #restaurantsPage) .attraction-card-copy {
  gap: 6px;
  min-height: 88px;
  padding: 13px 14px 14px;
}

:is(#attractionsPage, #restaurantsPage) .attraction-card-copy strong {
  font-size: 15px;
  line-height: 1.3;
}

:is(#attractionsPage, #restaurantsPage) .attraction-card-copy small {
  min-height: 30px;
  color: #89747c;
  line-height: 1.45;
}

:is(#attractionsPage, #restaurantsPage) .attraction-card-copy em {
  color: var(--place-accent-dark);
}

:is(#attractionsPage, #restaurantsPage) .attraction-detail-panel {
  position: relative;
  grid-template-rows: minmax(210px, 34%) auto auto minmax(0, 1fr);
  align-content: stretch;
  overflow: hidden auto;
  border-radius: 28px;
  scrollbar-color: color-mix(in srgb, var(--place-accent) 48%, #eadfe2) transparent;
  scrollbar-width: thin;
}

:is(#attractionsPage, #restaurantsPage) .attraction-detail-panel::before {
  position: absolute;
  z-index: 2;
  top: 18px;
  right: 18px;
  width: 10px;
  height: 10px;
  border: 4px solid rgba(255,255,255,.9);
  border-radius: 50%;
  background: var(--place-accent);
  box-shadow: 0 4px 12px rgba(39,19,26,.22);
  content: "";
}

:is(#attractionsPage, #restaurantsPage) .attraction-visual {
  min-height: 210px;
  border-bottom: 1px solid color-mix(in srgb, var(--place-accent) 16%, transparent);
}

:is(#attractionsPage, #restaurantsPage) .attraction-visual::after {
  background: linear-gradient(180deg, transparent 38%, rgba(34, 17, 23, .48));
}

:is(#attractionsPage, #restaurantsPage) .attraction-copy {
  gap: 10px;
  padding: 24px 26px 14px;
}

:is(#attractionsPage, #restaurantsPage) .attraction-copy .eyebrow {
  width: fit-content;
  margin: 0;
  padding: 5px 9px;
  border-radius: 999px;
  background: var(--place-accent-soft);
  color: var(--place-accent-dark);
  font-size: 10px;
}

:is(#attractionsPage, #restaurantsPage) .attraction-copy h2 {
  font-size: clamp(25px, 2.2vw, 34px);
  line-height: 1.16;
  letter-spacing: -.04em;
}

:is(#attractionsPage, #restaurantsPage) .attraction-copy p:last-child {
  color: #755f68;
  font-size: 14px;
  line-height: 1.72;
}

:is(#attractionsPage, #restaurantsPage) .attraction-meta {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 9px;
  padding: 6px 26px 24px;
}

:is(#attractionsPage, #restaurantsPage) .attraction-meta span {
  display: flex;
  align-items: center;
  min-width: 0;
  min-height: 44px;
  padding: 10px 12px;
  border-color: color-mix(in srgb, var(--place-accent) 16%, #e9dfe1);
  border-radius: 13px;
  background: color-mix(in srgb, var(--place-accent-soft) 62%, #fff);
  color: #684c56;
  line-height: 1.35;
  overflow-wrap: anywhere;
}

:is(#attractionsPage, #restaurantsPage) .attraction-meta span::before {
  flex: 0 0 auto;
  margin-right: 7px;
  color: var(--place-accent);
  content: "•";
  font-size: 18px;
  line-height: 1;
}

:is(#attractionsPage, #restaurantsPage) .attraction-meta span:last-child:nth-child(odd) {
  grid-column: 1 / -1;
}

@media (max-width: 1100px) {
  :is(#attractionsPage, #restaurantsPage) {
    grid-template-columns: minmax(440px, 1.45fr) minmax(290px, 1fr);
    gap: 16px;
    padding: 16px;
  }

  :is(#attractionsPage, #restaurantsPage) .attraction-list-panel {
    padding: 18px 18px 0;
  }
}

@media (max-width: 620px) {
  :is(#attractionsPage, #restaurantsPage) {
    padding: 10px 8px calc(var(--mobile-nav-height) + 12px);
  }

  :is(#attractionsPage, #restaurantsPage) .attraction-list-panel {
    padding: 16px 14px 0;
    border-radius: 22px;
  }

  :is(#attractionsPage, #restaurantsPage) .attraction-toolbar h1 {
    font-size: 25px;
  }

  :is(#attractionsPage, #restaurantsPage) .attraction-place-grid {
    gap: 10px;
  }

  :is(#attractionsPage, #restaurantsPage) .attraction-card-copy {
    min-height: 84px;
    padding: 11px;
  }

  :is(#attractionsPage, #restaurantsPage) .attraction-detail-panel {
    border-radius: 22px 22px 0 0;
  }

  :is(#attractionsPage, #restaurantsPage) .attraction-detail-panel::before {
    display: none;
  }

  :is(#attractionsPage, #restaurantsPage) .attraction-copy {
    padding: 18px 20px 12px;
  }

  :is(#attractionsPage, #restaurantsPage) .attraction-meta {
    padding: 4px 20px 20px;
  }
}

@media (prefers-reduced-motion: reduce) {
  :is(#attractionsPage, #restaurantsPage) .attraction-place-card,
  :is(#attractionsPage, #restaurantsPage) .attraction-filter,
  :is(#attractionsPage, #restaurantsPage) .attraction-search {
    transition: none;
  }
}

/* Mobile schedule editor: use the shared list/map switch as real panes. */
@media (max-width: 620px) {
  .app-shell.schedule-edit-artifact-mode:has(#event-editor-backdrop:not([hidden])) .mobile-schedule-workspace-nav,
  .app-shell.schedule-edit-artifact-mode:has(#add-place-choice:not([hidden])) .mobile-schedule-workspace-nav,
  .app-shell.schedule-edit-artifact-mode:has(#db-place-picker:not([hidden])) .mobile-schedule-workspace-nav {
    display: none !important;
  }

  .app-shell.schedule-edit-artifact-mode #scheduleEditSpaPage,
  .app-shell.schedule-edit-artifact-mode.sidebar-collapsed #scheduleEditSpaPage {
    inset-inline: 0 !important;
    left: 0 !important;
    right: 0 !important;
    width: auto !important;
    height: auto !important;
    bottom: calc(var(--mobile-nav-height) + env(safe-area-inset-bottom)) !important;
  }

  .app-shell.schedule-edit-artifact-mode[data-mobile-schedule-pane="list"] #scheduleEditSpaPage .calendar-pane {
    display: flex !important;
  }

  .app-shell.schedule-edit-artifact-mode[data-mobile-schedule-pane="list"] #scheduleEditSpaPage .map-pane,
  .app-shell.schedule-edit-artifact-mode[data-mobile-schedule-pane="map"] #scheduleEditSpaPage .calendar-pane {
    display: none !important;
  }

  .app-shell.schedule-edit-artifact-mode[data-mobile-schedule-pane="map"] #scheduleEditSpaPage .map-pane {
    display: block !important;
  }
}

@scope (#scheduleEditSpaPage) {
  @media (max-width: 620px) {
    :scope > main {
      width: 100%;
      height: 100% !important;
      min-height: 0 !important;
      margin: 0 !important;
      padding: 108px 8px 8px !important;
      overflow: hidden;
    }

    :scope .page-header {
      flex: none;
      min-height: 66px;
      margin: 0 0 8px !important;
      padding: 0 2px !important;
      display: grid;
      grid-template-columns: minmax(0, 1fr) auto;
      align-items: end;
      gap: 6px 10px;
    }

    :scope .page-header > div:first-child {
      min-width: 0;
    }

    :scope .page-header p {
      margin-bottom: 2px;
      font-size: 8px;
      letter-spacing: .11em;
      white-space: nowrap;
    }

    :scope .page-header h1 {
      overflow: hidden;
      font-size: 20px;
      line-height: 1.15;
      text-overflow: ellipsis;
      white-space: nowrap;
    }

    :scope .page-header h1 span {
      margin-left: 4px;
      font-size: 11px;
    }

    :scope .header-actions {
      width: auto;
      display: grid;
      grid-template-columns: repeat(2, minmax(54px, auto));
      gap: 6px;
    }

    :scope .header-actions button {
      width: auto;
      min-width: 54px;
      height: 34px;
      padding: 0 11px;
      font-size: 11px;
    }

    :scope .editor-shell {
      min-height: 0;
      height: auto;
      flex: 1;
      display: block !important;
      overflow: hidden !important;
    }

    :scope .calendar-pane,
    :scope .map-pane {
      width: 100%;
      height: 100%;
      min-height: 0;
      border-radius: 14px !important;
    }

    :scope .calendar-toolbar {
      min-height: 42px;
      padding: 5px 8px;
    }

    :scope .calendar-pane > .calendar-scroll {
      width: 100%;
      min-width: 0;
      overflow-x: auto !important;
      overflow-y: auto !important;
      overscroll-behavior: contain;
      scroll-snap-type: x proximity;
      -webkit-overflow-scrolling: touch;
    }

    :scope .calendar-grid {
      width: max(100%, var(--mobile-grid-width, 226px)) !important;
      min-width: var(--mobile-grid-width, 226px) !important;
      grid-template-columns: 76px repeat(var(--days), minmax(150px, 1fr)) !important;
      grid-template-rows: 90px calc(var(--hours) * var(--hour-height)) !important;
    }

    :scope .corner {
      grid-column: 1 !important;
      grid-row: 1 !important;
    }

    :scope .day-header,
    :scope .day-header:not(.active) {
      display: flex !important;
      min-width: 150px;
      height: 90px;
      padding: 10px 8px 8px !important;
      scroll-snap-align: start;
    }

    :scope .day-header > span {
      font-size: 12px;
    }

    :scope .day-header > b {
      width: 32px;
      height: 32px;
      margin: 1px auto;
      display: grid;
      place-items: center;
      border-radius: 50%;
      background: #f1edef;
      font-size: 16px;
    }

    :scope .day-header.active > b {
      color: #fff;
      background: #b5446e;
    }

    :scope .time-axis {
      width: 76px;
      grid-column: 1 !important;
      grid-row: 2 !important;
    }

    :scope .day-column,
    :scope .day-column:not(.mobile-active) {
      display: block !important;
      min-width: 150px;
      scroll-snap-align: start;
    }

    :scope .hour-label {
      right: 9px;
      color: #6e696c !important;
      font-size: 11px !important;
      font-weight: 700 !important;
    }

    :scope .editor-shell .event {
      left: 5px !important;
      right: 5px !important;
      max-width: none;
      padding-inline: 9px !important;
    }

    :scope .calendar-pane .calendar-pager #previous-days {
      left: 82px !important;
    }

    :scope .calendar-pane .calendar-pager #next-days {
      right: 5px !important;
    }

    :scope .map-pane .map,
    :scope .map-pane .map-placeholder {
      width: 100%;
      height: 100%;
      min-height: 0;
    }

    :scope .map-overlay {
      top: 10px;
      left: 10px;
      padding: 8px 10px;
    }

    :scope .db-place-picker-backdrop {
      bottom: calc(var(--mobile-nav-height) + env(safe-area-inset-bottom)) !important;
      padding: 0;
      overflow: hidden;
    }

    :scope .db-place-picker {
      position: relative;
      inset: auto !important;
      top: auto !important;
      right: auto !important;
      bottom: auto !important;
      left: auto !important;
      width: 100%;
      height: 100%;
      max-height: none;
      grid-template-rows: 70px minmax(0, 1fr);
      border-radius: 18px;
    }

    :scope .db-place-picker > header {
      min-width: 0;
      padding: 10px 14px;
    }

    :scope .db-place-picker > header > div {
      min-width: 0;
    }

    :scope .db-place-picker > header h2 {
      overflow: hidden;
      font-size: 17px;
      text-overflow: ellipsis;
      white-space: nowrap;
    }

    :scope .db-place-picker > header p {
      overflow: hidden;
      font-size: 9px;
      text-overflow: ellipsis;
      white-space: nowrap;
    }

    :scope .db-picker-columns {
      position: relative;
      display: flex;
      flex-direction: column;
      min-height: 0;
      overflow: hidden;
      overscroll-behavior: contain;
      scrollbar-width: thin;
      scrollbar-color: #c45f83 #f9e9ef;
      -webkit-overflow-scrolling: touch;
    }

    :scope .db-picker-filters {
      height: 198px;
      flex: 0 0 198px;
      padding: 12px 10px 10px;
      overflow: visible;
      background: #fcf8fa;
      border-right: 0;
      border-bottom: 1px solid #f0e6eb;
    }

    :scope .db-picker-filters input {
      height: 40px;
      font-size: 12px;
    }

    :scope .db-picker-filters nav {
      margin-top: 9px;
      display: block;
      overflow: visible;
    }

    :scope .db-picker-filters .db-place-groups {
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 7px;
      padding-bottom: 9px;
    }

    :scope .db-picker-filters .db-place-groups .db-group-button {
      min-height: 46px;
      padding: 7px 10px;
    }

    :scope .db-picker-filters .db-place-subcategories {
      margin: 8px -2px 0;
      padding: 0 2px 3px;
      display: flex;
      gap: 6px;
      overflow-x: auto;
      scroll-snap-type: x proximity;
      scrollbar-width: none;
    }

    :scope .db-picker-filters .db-place-subcategories::-webkit-scrollbar {
      display: none;
    }

    :scope .db-picker-filters .db-place-subcategories button {
      flex: 0 0 auto;
      min-height: 32px;
      padding: 7px 10px;
      border: 1px solid #eadde3;
      border-radius: 999px;
      background: #fff;
      font-size: 10px;
      scroll-snap-align: start;
    }

    :scope .db-picker-list {
      min-height: 0;
      height: auto;
      flex: 1 1 auto;
      padding: 12px 10px;
      display: grid;
      grid-template-rows: auto minmax(0, 1fr);
      border-right: 0;
      border-bottom: 1px solid #f0e6eb;
    }

    :scope .db-picker-list > #db-place-count {
      padding-bottom: 8px;
      font-size: 10px;
    }

    :scope .db-place-result {
      min-height: 72px;
      grid-template-columns: 58px minmax(0, 1fr);
      gap: 9px;
    }

    :scope .db-result-media {
      width: 58px;
      height: 56px;
    }

    :scope .db-place-result strong {
      font-size: 12px;
    }

    :scope .db-picker-detail {
      position: absolute;
      top: 198px;
      right: 0;
      bottom: 0;
      left: 0;
      z-index: 20;
      width: 100%;
      height: auto;
      min-height: 0;
      padding: 14px 12px 18px;
      overflow-x: hidden;
      overflow-y: auto;
      background: #fff;
      border: 0;
      border-radius: 22px 22px 0 0;
      box-shadow: 0 -18px 48px rgba(35, 20, 26, .3);
      opacity: 0;
      pointer-events: none;
      visibility: hidden;
      transform: translateY(calc(100% + 18px));
      transition: transform .3s cubic-bezier(.22, .8, .24, 1), opacity .2s ease, visibility 0s linear .3s;
      will-change: transform;
    }

    :scope .db-picker-detail.mobile-open {
      opacity: 1;
      pointer-events: auto;
      visibility: visible;
      transform: translateY(0);
      transition-delay: 0s;
    }

    :scope .db-detail-empty {
      min-height: 240px;
    }

    :scope .db-detail-card {
      position: relative;
      min-height: 100%;
      gap: 10px;
    }

    :scope .db-detail-mobile-close {
      position: absolute;
      top: 8px;
      right: 8px;
      z-index: 5;
      width: 40px;
      height: 40px;
      padding: 0;
      display: grid;
      place-items: center;
      color: #4a353d;
      background: rgba(255, 255, 255, .94);
      border: 1px solid rgba(0, 0, 0, .08);
      border-radius: 50%;
      box-shadow: 0 6px 18px rgba(40, 24, 30, .16);
      font-size: 24px;
      line-height: 1;
    }

    :scope .db-detail-hero {
      height: 180px;
      flex: none;
    }

    :scope .db-detail-card h3 {
      font-size: 20px;
    }

    :scope .db-detail-bottom {
      position: sticky;
      bottom: -18px;
      z-index: 4;
      padding: 10px 0 18px;
      margin-top: auto;
      background: linear-gradient(to bottom, rgba(255, 255, 255, 0), #fff 10px);
    }

    :scope .db-detail-bottom > button {
      position: static;
      min-height: 44px;
      margin: 0;
      box-shadow: 0 8px 20px rgba(181, 68, 110, .18);
    }

    :scope .db-detail-card .db-detail-mobile-close {
      position: absolute;
      bottom: auto;
      left: auto;
      margin: 0;
      min-height: 40px;
      box-shadow: 0 6px 18px rgba(40, 24, 30, .16);
    }
  }
}

/* Keep the history/schedule drawer mobile when it is opened from a narrow itinerary view. */
@media (max-width: 900px) {
  .app-shell.schedule-drawer-open { display: block; }

  .app-shell.schedule-drawer-open .sidebar {
    position: fixed;
    inset: auto 0 0;
    z-index: 80;
    display: grid;
    grid-template-columns: minmax(0, 1fr) 46px;
    align-items: stretch;
    gap: 4px;
    width: 100%;
    height: calc(var(--mobile-nav-height) + env(safe-area-inset-bottom));
    min-height: 0;
    padding: 0 6px env(safe-area-inset-bottom);
    overflow: hidden;
    border-top: 1px solid rgba(255,255,255,.12);
    border-right: 0;
  }

  .app-shell.schedule-drawer-open .sidebar-header,
  .app-shell.schedule-drawer-open .sidebar-spacer { display: none; }

  .app-shell.schedule-drawer-open .side-nav {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    grid-auto-rows: 100%;
    align-items: stretch;
    gap: 2px;
    height: 100%;
    min-width: 0;
    margin-top: 0;
    overflow: hidden;
  }

  .app-shell.schedule-drawer-open .side-nav > .nav-item,
  .app-shell.schedule-drawer-open .history-nav,
  .app-shell.schedule-drawer-open .history-nav > .nav-item {
    width: 100%;
    min-width: 0;
    height: 100%;
    min-height: 0;
    align-self: stretch;
  }

  .app-shell.schedule-drawer-open .history-nav { display: flex; }

  .app-shell.schedule-drawer-open .side-nav .nav-item {
    display: grid;
    place-items: center;
    padding: 0;
    border-radius: 11px;
  }

  .app-shell.schedule-drawer-open .side-nav .nav-item span:last-child { display: none; }

  .app-shell.schedule-drawer-open .account-panel {
    display: grid;
    grid-template-columns: 34px;
    place-items: center;
    align-self: end;
    width: 46px;
    min-width: 46px;
    height: 42px;
    min-height: 42px;
    margin: 0;
    padding: 0;
    border-left: 1px solid rgba(255,255,255,.1);
  }

  .app-shell.schedule-drawer-open .account-copy,
  .app-shell.schedule-drawer-open .account-panel .more { display: none; }

  .app-shell.schedule-drawer-open .schedule-drawer {
    top: max(8px, env(safe-area-inset-top));
    right: 0;
    bottom: calc(var(--mobile-nav-height) + env(safe-area-inset-bottom));
    left: 0;
    width: 100%;
    border-radius: 20px 20px 0 0;
  }
}
