:root {
  --planner-bg: #f3efe7;
  --paper: #fffdf9;
  --ink: #13251d;
  --muted: #657068;
  --line: #d9d0c3;
  --accent: #d7a24d;
  --accent-soft: #f6ead5;
  --green-soft: #e7efe9;
  --holiday: #9e3f2e;
  --shadow: 0 20px 50px rgba(35, 42, 36, 0.08);
  --radius: 22px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body.planner-page { margin: 0; background: var(--planner-bg); color: var(--ink); font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
a { color: inherit; }
button, input, select { font: inherit; }
button { cursor: pointer; }

.planner-shell { width: min(1220px, calc(100% - 40px)); margin-inline: auto; }
.planner-header { min-height: 78px; padding: 18px max(22px, calc((100vw - 1220px)/2)); display:flex; align-items:center; justify-content:space-between; gap:24px; border-bottom:1px solid rgba(19,37,29,.09); background:rgba(243,239,231,.94); position:sticky; top:0; z-index:20; backdrop-filter: blur(12px); }
.planner-brand { text-decoration:none; display:flex; flex-direction:column; font-weight:800; letter-spacing:.11em; font-size:.84rem; }
.planner-brand small { margin-top:3px; font-weight:500; letter-spacing:.03em; color:var(--muted); font-size:.69rem; }
.planner-header nav { display:flex; gap:20px; align-items:center; }
.planner-header nav a { text-decoration:none; font-size:.86rem; font-weight:650; }

.planner-hero { padding: 76px 0 48px; }
.hero-grid { display:grid; grid-template-columns:minmax(0,1.5fr) minmax(280px,.7fr); gap:42px; align-items:end; }
.eyebrow,.micro-label { color:#b37f32; letter-spacing:.18em; font-weight:800; font-size:.72rem; text-transform:uppercase; }
.planner-hero h1 { font-family: Georgia, "Times New Roman", serif; font-size:clamp(3rem,6vw,6.1rem); line-height:.92; letter-spacing:-.055em; max-width:880px; margin:12px 0 22px; font-weight:500; }
.hero-lead { max-width:780px; font-size:1.18rem; line-height:1.65; color:#33433b; }
.hero-badges { display:flex; flex-wrap:wrap; gap:10px; margin-top:28px; }
.hero-badges span { border:1px solid var(--line); background:rgba(255,255,255,.45); border-radius:999px; padding:9px 13px; font-size:.78rem; font-weight:700; }
.hero-tip-card { background:var(--ink); color:#fff; border-radius:var(--radius); padding:28px; box-shadow:var(--shadow); }
.tip-kicker { color:#f0c67b; font-size:.69rem; font-weight:800; letter-spacing:.17em; display:block; margin-bottom:12px; }
.hero-tip-card strong { font-family:Georgia,serif; font-size:1.7rem; font-weight:500; line-height:1.15; display:block; }
.hero-tip-card p { color:#cad4ce; line-height:1.55; margin-bottom:0; }

.planner-controls { display:grid; grid-template-columns:1.35fr .65fr; gap:22px; margin-bottom:22px; }
.control-block,.card-panel { background:rgba(255,253,249,.92); border:1px solid rgba(178,166,148,.35); border-radius:var(--radius); box-shadow:var(--shadow); }
.control-block { padding:24px; }
.control-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:18px; }
.control-heading h2,.smart-panel h2,.travel-section h2,.plan-summary h2 { font-family:Georgia,serif; font-weight:500; margin:5px 0 0; letter-spacing:-.025em; }
.selected-country { padding:8px 12px; background:var(--green-soft); border-radius:999px; font-size:.78rem; font-weight:800; }
.country-buttons { display:flex; flex-wrap:wrap; gap:8px; margin-top:20px; max-height:142px; overflow:auto; padding-right:4px; }
.country-btn { border:1px solid var(--line); background:#fff; color:var(--ink); border-radius:999px; padding:8px 11px; font-size:.74rem; font-weight:700; transition:.15s ease; }
.country-btn:hover { transform:translateY(-1px); border-color:#baa06e; }
.country-btn.active { background:var(--ink); color:#fff; border-color:var(--ink); }
.country-btn.featured { border-color:#d4aa63; }

.calendar-nav-block { display:flex; flex-direction:column; justify-content:space-between; }
.month-nav { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.icon-btn { width:42px; height:42px; border-radius:50%; border:1px solid var(--line); background:#fff; font-size:1.1rem; }
.month-title-wrap { text-align:center; }
.month-title { border:0; background:transparent; color:var(--ink); font-family:Georgia,serif; font-size:1.55rem; }
.month-subtitle { display:block; margin-top:4px; color:var(--muted); font-size:.75rem; }
.year-controls { display:grid; grid-template-columns:1fr 1fr auto; gap:9px; margin-top:24px; align-items:end; }
.year-controls label { font-size:.68rem; font-weight:800; color:var(--muted); text-transform:uppercase; letter-spacing:.08em; }
select,input { width:100%; border:1px solid var(--line); background:#fff; color:var(--ink); border-radius:12px; padding:11px 12px; outline:none; }
select:focus,input:focus { border-color:#b88a44; box-shadow:0 0 0 3px rgba(215,162,77,.15); }
.soft-btn,.primary-btn { border-radius:999px; padding:11px 16px; font-size:.76rem; font-weight:800; letter-spacing:.02em; border:1px solid var(--line); }
.soft-btn { background:#fff; color:var(--ink); }
.primary-btn { background:var(--accent); color:#111; border-color:#a8752b; }
.link-btn { text-decoration:none; display:inline-flex; align-items:center; justify-content:center; }

.main-grid { display:grid; grid-template-columns:minmax(0,1.6fr) minmax(300px,.55fr); gap:22px; }
.calendar-panel { padding:20px; overflow:hidden; }
.calendar-actions { display:flex; justify-content:flex-end; gap:8px; margin-bottom:14px; }
.calendar-scroll { overflow-x:auto; }
.calendar-head,.calendar-grid { min-width:760px; display:grid; grid-template-columns:50px repeat(7,1fr); }
.calendar-head { border:1px solid var(--line); border-bottom:0; border-radius:15px 15px 0 0; overflow:hidden; background:#f6f1e9; }
.calendar-head div { padding:11px 8px; text-align:center; color:#59645e; font-size:.7rem; font-weight:800; text-transform:uppercase; letter-spacing:.06em; border-right:1px solid var(--line); }
.calendar-head div:last-child { border-right:0; }
.calendar-grid { border-left:1px solid var(--line); border-top:1px solid var(--line); }
.calendar-cell,.week-cell { min-height:112px; border-right:1px solid var(--line); border-bottom:1px solid var(--line); background:#fff; padding:10px; position:relative; }
.week-cell { display:flex; align-items:flex-start; justify-content:center; padding-top:13px; background:#f6f1e9; min-height:112px; font-size:.72rem; font-weight:800; color:#7a817d; }
.calendar-cell.weekend { background:#fbf8f3; }
.calendar-cell.outside { color:#b0b3b1; background:#faf8f4; }
.calendar-cell.today { box-shadow: inset 0 0 0 2px var(--accent); }
.day-number { font-weight:800; font-size:.8rem; }
.holiday-pill { margin-top:8px; display:block; border-left:3px solid var(--holiday); background:#f9e9e5; color:#753024; padding:6px 7px; border-radius:6px; font-size:.67rem; line-height:1.25; font-weight:700; }
.calendar-legend { display:flex; flex-wrap:wrap; gap:18px; margin-top:16px; color:var(--muted); font-size:.72rem; }
.dot { width:8px; height:8px; display:inline-block; border-radius:50%; margin-right:6px; }
.holiday-dot { background:var(--holiday); }.today-dot { background:var(--accent); }.weekend-dot { background:#d9d3c8; }

.smart-panel { padding:26px; }
.smart-panel h2 { font-size:2rem; line-height:1.05; }
.muted { color:var(--muted); line-height:1.55; }
.smart-results { display:grid; gap:12px; margin-top:22px; }
.smart-result { border:1px solid var(--line); border-radius:16px; padding:16px; background:#fff; }
.smart-result.best { border-color:#d8a451; background:#fff9ef; }
.smart-result .smart-days { font-family:Georgia,serif; font-size:1.5rem; }
.smart-result .smart-meta { margin-top:7px; color:var(--muted); font-size:.74rem; line-height:1.45; }
.smart-empty { padding:18px; border-radius:14px; background:#f5f2ec; color:var(--muted); font-size:.8rem; line-height:1.5; }

.travel-section { padding:72px 0 26px; }
.section-heading-row h2 { font-size:clamp(2.3rem,4vw,4rem); }
.section-copy { color:var(--muted); max-width:700px; line-height:1.6; }
.destination-search { display:grid; grid-template-columns:1fr auto; gap:10px; margin:28px 0 8px; }
.destination-search input { padding:14px 16px; font-size:.92rem; }
.destination-status { min-height:24px; color:var(--muted); font-size:.76rem; padding:4px 2px 12px; }
.travel-grid { display:grid; grid-template-columns:1fr 1fr; gap:22px; }
.weather-card,.map-card,.season-card,.flight-card { padding:24px; }
.weather-topline { display:flex; justify-content:space-between; gap:18px; align-items:flex-start; }
.weather-card h3,.map-card h3,.season-card h3,.flight-card h3 { font-family:Georgia,serif; font-size:1.55rem; font-weight:500; margin:5px 0 0; }
.current-temp { font-family:Georgia,serif; font-size:3rem; line-height:1; }
.weather-summary { margin:20px 0; font-size:.9rem; color:#435149; }
.forecast-strip { display:grid; grid-template-columns:repeat(5,1fr); gap:8px; }
.forecast-day { text-align:center; background:#f6f1e9; border-radius:13px; padding:11px 5px; }
.forecast-day strong { display:block; font-size:.76rem; }
.forecast-day span { display:block; font-size:.68rem; margin-top:4px; color:var(--muted); }
.data-note { color:#858a87; font-size:.64rem; line-height:1.4; margin:18px 0 0; }
.map-card iframe { width:100%; height:300px; border:0; border-radius:15px; background:#eee; margin-top:18px; }
.advice-list { display:grid; gap:10px; margin-top:18px; }
.advice-item { display:grid; grid-template-columns:26px 1fr; gap:10px; align-items:start; padding:11px 0; border-bottom:1px solid #ece5dc; }
.advice-item:last-child { border-bottom:0; }
.advice-icon { font-size:1rem; }
.advice-item strong { display:block; font-size:.8rem; }
.advice-item span { display:block; color:var(--muted); font-size:.74rem; line-height:1.45; margin-top:2px; }
.flight-actions { margin-top:18px; }

.plan-summary { margin-top:26px; margin-bottom:70px; padding:28px; }
.summary-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:24px; }
.summary-heading h2 { font-size:2.2rem; }
.summary-actions { display:flex; gap:9px; }
.summary-content { margin-top:22px; display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }
.summary-stat { background:#f6f1e9; border-radius:16px; padding:17px; }
.summary-stat small { color:var(--muted); font-size:.67rem; text-transform:uppercase; letter-spacing:.08em; font-weight:800; }
.summary-stat strong { display:block; margin-top:6px; font-family:Georgia,serif; font-size:1.35rem; font-weight:500; }

.planner-footer { display:grid; grid-template-columns:1fr auto 1fr; gap:20px; padding:30px max(22px,calc((100vw - 1220px)/2)); border-top:1px solid rgba(19,37,29,.12); color:#667068; font-size:.75rem; }
.planner-footer div:last-child { text-align:right; }
.planner-footer a { text-decoration:none; }

.toast { position:fixed; right:22px; bottom:22px; background:var(--ink); color:#fff; padding:12px 16px; border-radius:12px; font-size:.78rem; z-index:100; box-shadow:var(--shadow); opacity:0; transform:translateY(10px); pointer-events:none; transition:.2s; }
.toast.show { opacity:1; transform:translateY(0); }

@media (max-width: 900px) {
  .hero-grid,.planner-controls,.main-grid,.travel-grid { grid-template-columns:1fr; }
  .hero-tip-card { max-width:600px; }
  .summary-content { grid-template-columns:1fr 1fr; }
  .planner-footer { grid-template-columns:1fr; }
  .planner-footer div:last-child { text-align:left; }
}

@media (max-width: 620px) {
  .planner-shell { width:min(100% - 24px,1220px); }
  .planner-header { padding-inline:14px; }
  .planner-header nav a:first-child { display:none; }
  .planner-hero { padding-top:48px; }
  .planner-hero h1 { font-size:3.25rem; }
  .year-controls { grid-template-columns:1fr 1fr; }
  .year-controls .soft-btn { grid-column:1/-1; }
  .destination-search { grid-template-columns:1fr; }
  .forecast-strip { grid-template-columns:repeat(5,minmax(70px,1fr)); overflow-x:auto; }
  .summary-heading { align-items:flex-start; flex-direction:column; }
  .summary-content { grid-template-columns:1fr; }
  .country-buttons { max-height:180px; }
}

@media print {
  .planner-header,.planner-hero,.planner-controls,.no-print,.planner-footer,.destination-search,.destination-status { display:none !important; }
  body.planner-page { background:#fff; }
  .planner-shell { width:100%; }
  .main-grid,.travel-grid { display:block; }
  .card-panel { box-shadow:none; border:1px solid #bbb; break-inside:avoid; margin-bottom:16px; }
  .calendar-panel { padding:10px; }
  .calendar-head,.calendar-grid { min-width:0; }
  .calendar-cell,.week-cell { min-height:78px; }
  .smart-panel,.travel-section,.plan-summary { margin-top:16px; padding-top:0; }
  .map-card { display:none; }
  .plan-summary { margin-bottom:0; }
}
