/* A quiet travel workspace: warm paper, evergreen actions, clear hierarchy. */
:root { --accent:#176b57; --accent-2:#c87643; --ink:#203b35; --text:#203b35; --muted:#697872; --line:#e0e6df; --border:#dbe2da; --bg:#f5f5ef; --surface:#fff; --surface-2:#f4f6f0; --card:#fff; --bg-gradient:#f5f5ef; --shadow:0 8px 28px #203b3508; --glass-blur:none; font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; }
* { box-sizing:border-box; }
[hidden] { display:none!important; }
button,input,select,textarea { font:inherit; }
button,a,input,select,textarea,summary { -webkit-tap-highlight-color:transparent; }
button:focus-visible,a:focus-visible,summary:focus-visible { outline:3px solid #bf8946; outline-offset:3px; }
button { box-shadow:none; }
button:hover { background:#125342; box-shadow:none; transform:none; }
button:disabled { cursor:not-allowed; }
input,select,textarea { border-color:var(--border); }
input:focus,select:focus,textarea:focus { outline:2px solid #176b5735; border-color:var(--accent); box-shadow:none; }
.eyebrow { color:#789087; font-size:10px; font-weight:750; letter-spacing:1.7px; }
.planner-page { background:var(--bg); }
.app-shell { height:100dvh; grid-template-rows:76px minmax(0,1fr); }
.topbar { padding:0 26px; background:#fff; border-bottom:1px solid var(--line); gap:18px; z-index:1100; }
.brand-block { min-width:205px; gap:12px; }
.brand-block h1 { font-size:19px; letter-spacing:-.7px; }
.brand-block p { margin-top:5px; font-size:11px; color:var(--muted); }
.brand-mark { width:34px; height:34px; border-color:var(--accent); background:var(--accent); border-radius:11px; transform:rotate(-9deg); }
.brand-mark:before { content:""; position:absolute; inset:5px 8px; background:#fff; clip-path:polygon(50% 0,100% 100%,50% 72%,0 100%); }
.brand-mark:after { display:none; }
.topbar-controls { gap:14px; }
.planning-mode-control { font-size:11px; }
.planning-mode-control select,.project-combo,.lang-select { background:#f5f6f1; border:1px solid var(--border); border-radius:9px; }
.account-avatar { background:#e3eee5; color:var(--accent); }
.workspace { grid-template-columns:250px minmax(300px,1fr) 350px; gap:16px; padding:20px; }
.planning-rail { background:#fff; border:1px solid var(--line); border-radius:16px; gap:0; }
.panel,.chat-panel { background:#fff; border:0; border-radius:14px; box-shadow:none; }
.panel:hover { box-shadow:none; }
.panel-heading { padding:18px 16px; }
.sidebar-tabs { display:grid; grid-template-columns:repeat(4,1fr); padding:9px 7px; gap:2px; border-bottom:1px solid var(--line); background:white; }
.sidebar-tabs .tab-btn { flex-direction:column; padding:9px 3px; gap:6px; border-radius:8px; font-size:10px; color:var(--muted); min-width:0; }
.sidebar-tabs .tab-btn.active { background:#edf3eb; color:var(--accent); }
.route-intro { padding:2px 18px 20px; }
.route-intro h3 { font-size:24px; line-height:1.15; letter-spacing:-1px; margin:9px 0; }
.route-intro p { font-size:12px; color:var(--muted); line-height:1.7; }
.stops-list { padding:0 14px; }
.stop-item { grid-template-columns:27px minmax(0,1fr); gap:10px; padding:14px 0; border:0; border-bottom:1px solid var(--line); background:white; box-shadow:none; border-radius:0; }
.stop-item strong { font-size:13px; }
.stop-item span,.stop-item small { font-size:11px; line-height:1.6; }
.stop-index { background:#e7f0e7; color:var(--accent); border:1px solid #cedecc; font-weight:700; border-radius:50%; width:26px; height:26px; }
.stop-actions { grid-column:2; display:flex; gap:5px; margin-top:5px; }
.stop-actions button { padding:4px 8px; min-height:28px; font-size:10px; background:#f4f5ef; color:var(--muted); border-radius:6px; }
.stop-actions button:hover { background:#e0ebdf; color:var(--accent); }
.add-stop-wide { margin:16px; width:calc(100% - 32px); border:1px dashed #b7c9bc; background:#f7faf4; color:var(--accent); min-height:43px; font-size:12px; }
.add-stop-wide:hover { background:#e8f1e5; }
.route-empty { list-style:none; padding:20px 5px; color:var(--muted); font-size:12px; line-height:1.7; }
.route-empty>span { display:block; font-size:48px; font-weight:700; color:#dce7d9; letter-spacing:-3px; margin-bottom:8px; }
.route-empty strong { color:var(--ink); font-size:13px; }
.route-empty p { margin-top:6px; }
.map-stage { border-radius:16px; background:white; box-shadow:none; border:1px solid var(--line); }
.map-toolbar { padding:15px 17px; min-height:66px; background:white; }
.map-toolbar strong { font-size:14px; }
.map-toolbar #mapProvider { font-size:10px; color:var(--muted); margin-top:4px; }
.map-actions { gap:8px; }
.map-actions button { box-shadow:none; }
.map-surface { flex:1 1 auto; min-height:180px; background:#e9eee3; }
.google-map { z-index:1; }
.map-status { background:#fbfcf8; border-top:1px solid var(--line); font-size:10px; line-height:1.5; padding:9px 14px; color:#607268; }
.data-panel { flex:0 0 145px; min-height:100px; }
.data-tabs { padding:7px 10px; }
.data-tabs button { font-size:11px; padding:6px 10px; min-height:30px; }
.data-tabs .is-active { background:#eaf2e8; color:var(--accent); }
.data-table { font-size:11px; }
.calendar-strip:empty { display:none; }
.chat-rail { display:flex; border:1px solid var(--line); border-radius:16px; overflow:hidden; background:white; }
.chat-panel { display:flex; flex-direction:column; flex:1; min-height:0; }
.chat-heading { border-bottom:1px solid var(--line); min-height:70px; padding:16px 18px; }
.chat-heading h2 { font-size:14px; }
.agent-activity { font-size:10px; color:var(--muted); }
.chat-log { flex:1; min-height:100px; padding:18px 14px; background:#fff; }
.message { background:#f2f5ed; border:1px solid #e7ece1; border-radius:2px 15px 15px; font-size:13px; line-height:1.75; padding:14px; }
.message.user { border-radius:15px 2px 15px 15px; background:#eaf3ef; border-color:#d7e8df; color:#234a3c; }
.chat-form { padding:14px; border-top:1px solid var(--line); background:#fcfcf9; }
.composer { border:1px solid #d5dfd2; border-radius:13px; box-shadow:0 3px 10px #203b3505; background:white; }
.composer textarea { min-height:80px; padding:12px; font-size:13px; }
.composer-options { gap:8px; }
.composer-options label { font-size:10px; color:var(--muted); }
.composer-options select { max-width:200px; font-size:11px; background:white; }
.composer-block { background:#f7efdb; color:#785d2f; font-size:11px; line-height:1.6; border:1px solid #e8daba; padding:10px 12px; border-radius:8px; }
.credit-explainer { font-size:10px; color:var(--muted); line-height:1.5; margin-bottom:10px; }
.credit-badge { background:#ecf3e7; color:#3e6745; border:1px solid #dbe7d4; font-size:11px; white-space:nowrap; }
.credit-badge.is-empty { background:#f7eedf; color:#866131; }
.prompt-suggestions { padding:0 14px 12px; display:flex; gap:6px; flex-wrap:wrap; }
.prompt-suggestions button { padding:6px 9px; min-height:30px; font-size:10px; color:var(--muted); background:#fff; border:1px solid var(--line); border-radius:7px; }
.prompt-suggestions button:hover { background:#f0f5eb; color:var(--accent); }
.roadtrip-pin { background:transparent; border:0; }
.roadtrip-pin span { display:grid; place-items:center; background:#176b57; color:#fff; border:3px solid white; border-radius:50% 50% 50% 3px; transform:rotate(-45deg); height:34px; width:34px; box-shadow:0 2px 8px #163d3533; font-size:12px; font-weight:700; }
.leaflet-control-zoom a { color:var(--ink); }
.leaflet-container { font-family:inherit; }
.leaflet-control-attribution { font-size:10px!important; }
.mobile-nav { display:none; }
.consent-banner { z-index:2000; background:#203f34; border:1px solid #446b54; color:white; box-shadow:0 8px 36px #122d3322; }
.consent-banner__text { font-size:11px; line-height:1.65; }
.consent-banner__btn { background:#e5edda; color:#284a35; white-space:nowrap; }
.stop-dialog { border:1px solid var(--line); border-radius:20px; padding:28px; width:min(520px,calc(100vw - 24px)); max-height:90dvh; color:var(--ink); box-shadow:0 24px 100px #142d3544; }
dialog::backdrop { background:#142e3866; backdrop-filter:blur(3px); }
.dialog-top { display:flex; justify-content:space-between; align-items:center; margin-bottom:22px; }
.dialog-top h2 { font-size:24px; letter-spacing:-.7px; margin-top:5px; }
.stop-dialog label { font-size:12px; display:block; margin:14px 0 7px; color:var(--muted); }
.stop-dialog input,.stop-dialog textarea { background:#fff; margin-top:5px; border:1px solid var(--border); }
.search-row { display:flex; gap:8px; align-items:center; }
.search-row input { min-width:0; }
.search-row button { height:42px; margin-top:5px; }
.search-results { margin-top:10px; font-size:12px; }
.search-results button { width:100%; margin:3px 0; padding:10px; text-align:left; flex-direction:column; align-items:flex-start; background:#f0f5eb; color:var(--ink); }
.search-results small { font-size:11px; color:var(--muted); }
.selection-note { color:var(--accent); font-size:12px; margin-top:12px; }
.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.dialog-actions { display:flex; justify-content:flex-end; gap:8px; margin:18px 0; }
#stopFeedback { color:#a4412d; font-size:12px; margin-top:10px; }
.stop-dialog small { color:var(--muted); font-size:10px; line-height:1.5; }
/* Authentication */
.auth-page { display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,1fr); min-height:100dvh; padding:24px; gap:30px; background:#f7f7f0; }
.auth-story { position:relative; display:flex; flex-direction:column; justify-content:space-between; align-self:stretch; padding:48px; border-radius:24px; overflow:hidden; background:#214c3e; color:#fafbef; min-height:650px; }
.auth-story .story-brand { font-size:16px; letter-spacing:-.5px; font-weight:700; z-index:1; }
.auth-story h2 { font-size:clamp(44px,5vw,76px); letter-spacing:-3px; font-weight:500; line-height:1.07; max-width:560px; margin:35px 0 20px; position:relative; z-index:1; }
.auth-story h2 em { color:#d7e5b7; font-family:Georgia,serif; font-weight:400; }
.auth-story p { color:#c8d7c8; line-height:1.8; font-size:14px; max-width:360px; position:relative; z-index:1; }
.story-foot { display:flex; justify-content:space-between; font-size:10px; text-transform:uppercase; letter-spacing:1.5px; color:#b4c7ac; z-index:1; }
.story-art { position:absolute; width:100%; height:48%; bottom:60px; left:0; opacity:.48; }
.auth-page .card { justify-self:center; width:min(410px,100%); max-width:410px; padding:28px 15px; background:transparent; border:0; backdrop-filter:none; box-shadow:none; border-radius:0; }
.auth-page .card-header { margin-bottom:22px; }
.auth-page h1 { font-size:23px; letter-spacing:-.6px; }
.auth-page .sub { font-size:14px; line-height:1.7; margin-bottom:25px; }
.auth-page .tabs { background:#e9ede4; padding:5px; border-radius:10px; margin-bottom:24px; }
.auth-page .tabs button { min-height:39px; }
.auth-page .tabs button:hover { color:var(--accent); background:#eef4e8; }
.auth-page .tabs button[aria-selected=true] { background:#fff; color:var(--accent); box-shadow:0 2px 5px #233c3410; }
.auth-page label { color:#52655c; font-size:12px; margin-top:16px; }
.auth-page input { background:white; padding:13px; border:1px solid #d7dfd2; border-radius:9px; }
.auth-page button.primary { background:var(--accent); min-height:48px; border-radius:9px; margin-top:8px; }
.auth-page .hint { font-size:12px; line-height:1.6; margin-top:18px; }
.auth-footnote { font-size:11px; color:var(--muted); line-height:1.7; margin-top:28px; padding-top:18px; border-top:1px solid var(--line); }
/* Admin: navigable sections, scannable forms and responsive tables. */
.admin-page { background:#f5f5ef; padding:30px 32px 70px; color:var(--ink); }
.admin-page .wrap { max-width:1200px; }
.admin-page header { padding:20px 0 30px; }
.admin-page h1 { font-size:30px; letter-spacing:-1px; }
.admin-page .sub { margin-top:8px; }
.admin-page section { padding:26px; border:1px solid var(--line); border-radius:16px; background:#fff; margin-top:20px; overflow-x:auto; scroll-margin-top:90px; }
.admin-page section h2 { font-size:20px; letter-spacing:-.5px; }
.admin-page h3 { font-size:14px; margin-top:24px; }
.admin-page p.empty { line-height:1.7; max-width:900px; }
.admin-page .user-form { background:#f7f9f3; border:1px solid #e6ebdf; padding:18px; border-radius:12px; }
.admin-page .user-form input,.admin-page .user-form select { padding:11px; border-color:#d9e2d4; }
.admin-page .user-form button { min-height:41px; background:var(--accent); }
.admin-page td,.admin-page th { padding:12px 10px; }
.admin-page th { font-size:10px; text-transform:uppercase; letter-spacing:.6px; background:#fafbf6; }
.admin-page .connection-actions button,.admin-page button.primary { border:1px solid var(--line); padding:9px 13px; border-radius:8px; }
.admin-page .connection-actions button.primary { color:white; background:var(--accent); }
.admin-nav { display:flex; gap:6px; position:sticky; top:0; z-index:20; padding:12px 0; background:#f5f5eff5; overflow:auto; border-bottom:1px solid var(--line); }
.admin-nav a { padding:10px 16px; border-radius:8px; font-size:12px; font-weight:600; color:var(--muted); text-decoration:none; white-space:nowrap; }
.admin-nav a:hover,.admin-nav a:focus { background:#e7efe1; color:var(--accent); }
.admin-welcome { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:24px; border:1px solid #dce7d1; background:#eaf1e2; border-radius:14px; }
.admin-welcome strong { display:block; font-size:18px; margin-bottom:6px; }
.admin-welcome p { font-size:12px; line-height:1.7; color:#617254; }
.admin-welcome a { font-size:12px; color:var(--accent); white-space:nowrap; }
@media(min-width:1081px) and (max-width:1250px) { .workspace { grid-template-columns:220px minmax(260px,1fr) 310px; padding:12px; gap:10px; } .topbar { padding:0 18px; } .topbar-controls { gap:8px; } .brand-block { min-width:180px; } }
@media(max-width:1080px) {
  .planner-page { overflow:hidden; }
  .app-shell { height:100dvh; min-height:0; grid-template-rows:auto 48px minmax(0,1fr); }
  .topbar { flex-direction:row; align-items:center; flex-wrap:wrap; padding:12px 16px; gap:12px; }
  .topbar-controls { flex-direction:row; align-items:center; gap:10px; flex:1; justify-content:flex-end; }
  .planning-mode-control { display:none; }
  .project-control { flex:1; max-width:230px; }
  .mobile-nav { display:flex; padding:5px 12px; gap:5px; background:white; border-bottom:1px solid var(--line); }
  .mobile-nav button { flex:1; color:var(--muted); background:white; font-size:12px; border-radius:8px; }
  .mobile-nav button[aria-pressed=true] { color:var(--accent); background:#eaf1e3; }
  .workspace { min-height:0; display:block; padding:10px; }
  .planning-rail,.map-stage,.chat-rail { height:100%; min-height:0; width:100%; }
  .planner-page[data-mobile-view=map] .planning-rail,.planner-page[data-mobile-view=map] .chat-rail,
  .planner-page[data-mobile-view=route] .map-stage,.planner-page[data-mobile-view=route] .chat-rail,
  .planner-page[data-mobile-view=chat] .map-stage,.planner-page[data-mobile-view=chat] .planning-rail { display:none; }
  .chat-panel { min-height:0; }
  .map-toolbar { flex-direction:row; align-items:center; }
  .map-actions { width:auto; }
  .map-surface { min-height:120px; }
  .data-panel { flex-basis:120px; }
  .today-mode-container.active { display:none; }
  .auth-story { padding:32px; min-height:600px; }
  .auth-story h2 { font-size:52px; }
}
@media(max-width:650px) {
  .brand-block { min-width:0; flex:1; }
  .brand-block h1 { font-size:16px; }
  .brand-block p { display:none; }
  .topbar { gap:10px; padding:10px 14px; }
  .topbar-controls { display:contents; }
  .project-control { order:6; flex:1 1 100%; max-width:none; }
  .project-combo { width:100%; }
  .credit-badge { font-size:10px; padding:5px 8px; }
  .lang-control { display:none; }
  .map-toolbar { padding:10px 12px; min-height:52px; }
  .data-panel { flex-basis:105px; }
  .map-status { font-size:9px; }
  .consent-banner { flex-direction:column; align-items:stretch; padding:15px; left:10px; right:10px; bottom:10px; }
  .auth-page { display:block; padding:20px; }
  .auth-story { min-height:230px; padding:25px; border-radius:18px; }
  .auth-story h2 { font-size:38px; margin:18px 0 8px; letter-spacing:-1.5px; }
  .auth-story p,.story-foot { display:none; }
  .story-art { height:100%; opacity:.2; bottom:-40px; }
  .auth-page .card { margin:20px auto 0; padding:15px 4px; }
  .auth-page .card-header { margin-bottom:15px; }
  .auth-page .card .brand-mark { display:none; }
  .admin-page { padding:15px 12px 50px; }
  .admin-page header { padding:12px 5px 20px; }
  .admin-page section { padding:18px 14px; }
  .admin-welcome { padding:18px; display:block; }
  .admin-welcome a { display:block; margin-top:12px; }
  .admin-nav a { padding:9px 11px; }
  .session-bar { flex-wrap:wrap; }
  .admin-page table { min-width:540px; }
  .admin-page .user-form { grid-template-columns:1fr; }
}
@media(prefers-reduced-motion:reduce) { *,*::before,*::after { animation:none!important; transition:none!important; scroll-behavior:auto!important; } }
/* Keep Leaflet's attribution readable and the route controls above its panes. */
.leaflet-control-attribution a { color:#176b57; }
