:root{
  --primary:#2f80ed;
  --primary-400:#5aa9ff;
  --ink:#0f172a;
  --gray-700:#334155;
  --muted:#617085;
  --info:#94a3b8;
  --line:#e7edf5;
  --surface:#f1f5f9;
  --white:#fdfdfd;
  --calm:#22c55e;
  --normal:#f59e0b;
  --busy:#ef4444;
  --ok:#22c55e;
  --mid:#f59e0b;
  --hot:#ef4444;
  --radius:4px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;background:var(--white)}
body{min-width:280px;background:var(--white);color:var(--ink);font-family:Pretendard,"Pretendard Variable",Inter,-apple-system,BlinkMacSystemFont,"Noto Sans KR","Malgun Gothic",sans-serif;line-height:1.45;word-break:keep-all;overflow-wrap:anywhere}
button,input,select,textarea{font:inherit;color:inherit}
button{border:0;background:none;cursor:pointer}
img{display:block;max-width:100%}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.app-shell{width:100%;max-width:1080px;min-height:100vh;margin:0 auto;background:var(--white)}
.view{display:none}.view.on{display:block}
.loading{grid-column:1/-1;padding:48px 12px;text-align:center;color:var(--muted);font-size:12px}.loading.compact{padding:24px 0}

/* Header */
.topbar{position:sticky;top:0;z-index:30;width:100%;height:70px;padding:24px 20px 6px;background:rgba(253,253,253,.97);display:flex;align-items:center;justify-content:flex-start}
.brand{display:flex;align-items:center;gap:4px;text-align:left}
.brand-weather{width:37px;height:40px;display:flex;align-items:center;justify-content:center;font-size:32px;line-height:1;filter:drop-shadow(0 2px 1px rgba(0,0,0,.25))}
.brand-copy{display:flex;flex-direction:column;line-height:1}
.brand-copy b{font-size:12px;line-height:18px;letter-spacing:-.03px}
.brand-copy small{font-size:8px;line-height:12px;font-weight:600;color:#64748b;letter-spacing:-.02px}
.top-action{width:20px;height:20px;display:grid;place-items:center}
.top-action img{width:16px;height:16px}
.top-action img[src*="bc712baa"],.top-action img[src*="90ea754a"]{width:15px;height:15px}

/* Main */
#main{padding-bottom:54px}
.traveler-hero{padding:36px 20px 8px}
.traveler-hero h1{display:flex;flex-wrap:wrap;gap:0 2px;font:600 18px/20px Inter,Pretendard,sans-serif;letter-spacing:-.414px}
.traveler-hero h1 strong{color:var(--primary)}
.traveler-hero p{margin-top:4px;color:var(--muted);font-size:12px;line-height:16px;letter-spacing:-.03px}
.finder{padding:8px 16px 4px}
.search-field{height:28px;display:flex;align-items:center;padding:0 9px;border-radius:3px;background:var(--surface)}
.search-field input{flex:1;min-width:0;height:100%;border:0;outline:0;background:transparent;font-size:11px;color:var(--ink)}
.search-field input::placeholder{color:var(--info)}
.search-field img{width:12px;height:12px}
.filter-row{display:flex;align-items:center;gap:6px;margin-top:12px}
.select-field{position:relative;flex:0 1 auto;display:flex;align-items:stretch;height:22px;line-height:0}
.select-field select{display:block;box-sizing:border-box;height:22px;min-width:67px;padding:0 20px 0 8px;border:1px solid var(--primary-400);border-radius:4px;background:var(--white) url('/static/figma/777bd5a8-f022-4364-835c-338f90c6c9bd.svg') right 7px center/7px 4px no-repeat;color:var(--primary);font-size:9px;line-height:20px;appearance:none;outline:0}
.metro-toggle{box-sizing:border-box;height:22px;display:flex;align-items:center;padding:0 10px;border:1px solid var(--primary);border-radius:4px;color:var(--primary);font-size:9px;line-height:20px;cursor:pointer}
.metro-toggle input{position:absolute;opacity:0;pointer-events:none}
.metro-toggle:has(input:checked){background:var(--primary);color:#fff}
.forecast-legend{display:flex;align-items:center;gap:10px;padding:21px 16px 12px;color:#6b7a90;font-size:7px;line-height:10px;white-space:nowrap}
.forecast-legend span{display:flex;align-items:center;gap:3px}
.legend-dot{width:11px;height:6px;border-radius:99px;background:var(--info)}
.legend-dot.calm{background:var(--calm)}.legend-dot.normal{background:var(--normal)}.legend-dot.busy{background:var(--busy)}

/* Festival cards */
.festival-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 8px;padding:0 16px}
.fcard{min-width:0;overflow:hidden;border:1px solid #d9e2ee;border-radius:4px;background:#fff;text-align:left;box-shadow:0 1px 2px rgba(15,23,42,.06)}
.fcard .thumb{position:relative;width:100%;aspect-ratio:2.2;background:var(--surface);overflow:hidden}
.fcard .thumb-link{position:absolute;inset:0;width:100%;height:100%;display:block}
.fcard .thumb img{width:100%;height:100%;object-fit:cover}
.fcard .thumb .noimg{width:100%;height:100%;display:grid;place-items:center;font-size:20px}
.poster-hint{position:absolute;right:4px;bottom:4px;padding:2px 5px;border-radius:99px;background:rgba(15,23,42,.72);color:#fff;font-size:6px;line-height:9px;opacity:0;transition:opacity .15s}
.fcard:hover .poster-hint,.fcard:focus-visible .poster-hint{opacity:1}
.card-heart{position:absolute;right:6px;top:6px;z-index:2;width:24px;height:24px;display:grid;place-items:center;border-radius:50%;background:rgba(15,23,42,.8);color:#fff}.card-heart svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.card-heart.on{background:rgba(255,255,255,.92);color:#ef4444}.card-heart.on svg{fill:#ef4444;stroke:none}
.fcard .body{width:100%;min-height:82px;padding:9px 8px 8px;display:flex;flex-direction:column;text-align:left;color:inherit}
.fcard .badge{position:static;display:block;overflow:hidden;margin-bottom:3px;background:none!important;box-shadow:none;color:var(--calm);font-size:8px;line-height:12px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}
.fcard .badge.b-보통{color:var(--normal)}.fcard .badge.b-붐빔{color:var(--busy)}.fcard .badge.b-na{color:var(--info)}
.fcard .t{min-height:12px;display:block;overflow:hidden;font-size:11px;line-height:12px;font-weight:700;letter-spacing:-.02px;text-overflow:ellipsis;white-space:nowrap}
.fcard .d{margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:8px;line-height:12px}
.fcard .foot{min-width:0;margin-top:auto;padding-top:5px;display:flex;align-items:center;gap:3px;overflow:hidden;color:var(--calm);font-size:8px;line-height:12px;white-space:nowrap}
.fcard .calm-icon{width:8px;height:8px;flex:none}
.fcard .no-data-calm{display:none}
.fcard .wish-n{margin-left:auto;display:flex;align-items:center;gap:2px;color:var(--muted)}
.fcard .wish-n img{width:8px;height:8px}
.more-button{width:calc(100% - 32px);height:28px;margin:18px 16px 28px;border-radius:999px;background:var(--surface);color:var(--muted);font-size:9px}

/* Trending and footer */
.trending-section{padding:28px 16px 25px;background:#eef3f9;border-top:1px solid #e7edf5}
.section-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.section-heading h2{display:flex;align-items:center;gap:8px;font-size:14px;line-height:18px}
.section-heading h2 span{color:var(--busy);font-size:18px}
.section-heading p{color:var(--info);font-size:9px}
.trend-list{display:flex;flex-direction:column;gap:12px}
.trend-item{display:grid;grid-template-columns:16px 42px 1fr auto;align-items:center;gap:8px;min-width:0}
.trend-rank{font:700 16px/20px Inter,sans-serif}
.trend-thumb{width:42px;height:42px;border-radius:50%;object-fit:cover;background:#dce7f3}
.trend-copy{min-width:0}
.trend-copy b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:15px}
.trend-copy span{display:block;color:var(--muted);font-size:9px;line-height:13px}
.trend-signal{display:flex;align-items:center;gap:2px;color:var(--muted);font-size:10px}.trend-signal img{width:11px;height:10px}
.service-footer{padding:28px 16px 30px;border-top:1px solid #dbe4ef;background:var(--white);color:var(--muted)}
.service-footer h2{margin-bottom:2px;color:var(--ink);font-size:10px;line-height:14px}.service-footer h2 span{font-size:8px}.service-footer p{font-size:8px;line-height:11px}.service-footer p:last-child{margin-top:14px}

/* Bottom navigation */
.bottom-nav{position:fixed;left:50%;bottom:0;z-index:45;width:min(100%,1080px);height:54px;padding-bottom:0;transform:translateX(-50%);display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid #dfe7f1;background:rgba(253,253,253,.98)}
.bottom-nav button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding-bottom:0;color:#b1c0d2;font-size:7px;line-height:10px}
.bottom-nav button span{display:block}
.bottom-nav button.on{color:var(--primary)}
.bottom-nav button:nth-child(1) img{width:23px;height:23px}
.bottom-nav button:nth-child(2) img{width:21px;height:22px}
.bottom-nav button:nth-child(3) img{width:21px;height:21px}

/* Dashboard */
.dashboard-view{padding-top:12px}
.dashboard-form{padding:8px 20px 28px}
.page-title h1,.page-title h2{font-size:16px;line-height:20px;letter-spacing:-.37px}
.page-title p{margin-top:8px;color:var(--muted);font-size:11px;line-height:15px;letter-spacing:-.025px}
.dashboard-form textarea{width:100%;height:90px;margin-top:12px;padding:10px;border:0;border-radius:4px;resize:vertical;outline-color:var(--primary);background:var(--surface);font-size:10px;line-height:16px}
.dashboard-form textarea::placeholder{color:var(--info)}
.small-primary{height:24px;margin-top:8px;padding:0 10px;border-radius:4px;background:var(--primary);color:white;font-size:10px;font-weight:700}
.form-note{display:block;min-height:12px;margin-top:5px;color:var(--muted);font-size:8px}
.form-stack{display:flex;flex-direction:column;gap:14px;margin-top:24px}
.form-stack label{display:flex;flex-direction:column;gap:7px;color:var(--gray-700);font-size:10px;font-weight:600}
.form-stack input,.form-stack select{width:100%;height:28px;padding:0 9px;border:0;border-radius:3px;outline:1px solid transparent;background:var(--surface);color:var(--muted);font-size:10px;font-weight:400}
.form-stack input:focus,.form-stack select:focus{outline-color:var(--primary)}
.form-stack select{appearance:none;background:var(--surface) url('/static/figma/af81a6d4-8ea5-415d-b7b1-1ea04019291e.svg') right 9px center/7px 4px no-repeat}
.form-pair{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.forecast-button{height:32px;margin-top:12px;border-radius:4px;background:var(--primary);color:#fff;font-size:12px;font-weight:700}
.forecast-button:disabled,.small-primary:disabled{opacity:.55;cursor:wait}
.forecast-result{padding:0 16px;background:#f8fafc}
.interest-section{padding:28px 20px 32px;border-top:8px solid #f5f7fa}
.interest-title{margin-bottom:22px}.interest-title h2{font-size:14px}.interest-title p{margin-top:1px;font-size:9px}
.int-sum{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:18px}
.int-sum .k{color:var(--muted);font-size:9px}.int-sum .k b{height:27px;margin-top:6px;display:grid;place-items:center;border-radius:3px;background:#edf3fa;color:var(--muted);font-size:11px;font-weight:500}
.int-row{min-height:36px;display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:5px;border-bottom:1px solid var(--line);font-size:9px}.int-row b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.int-row .region{color:var(--info);font-size:7px}.int-row .r{color:var(--muted);font-size:9px;white-space:nowrap}.interest-source{margin-top:18px;color:var(--muted);font-size:7px;line-height:11px}.interest-source b{display:block;color:var(--primary);font-size:8px}

/* Forecast output retained from the existing service */
.card{margin:12px 0;padding:14px;border:1px solid var(--line);border-radius:6px;background:#fff}.card h3{margin-bottom:7px;font-size:13px}.mut{color:var(--muted)}.small{font-size:9px}
.fore-hero{position:relative;margin:12px 0;padding:18px;border-radius:6px;overflow:hidden;background:linear-gradient(145deg,#183f7f,var(--primary));color:#fff}.fore-hero:after{content:'⛅';position:absolute;right:-8px;top:-18px;font-size:88px;opacity:.13}.fore-kicker{font-size:9px;opacity:.8}.fore-num{font-size:32px;font-weight:800}.fore-num small{font-size:13px}.fore-range{font-size:10px}.fore-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:9px}.tag{padding:3px 7px;border:1px solid rgba(255,255,255,.3);border-radius:99px;background:rgba(255,255,255,.12);font-size:8px}.tag.warn{background:rgba(239,68,68,.25)}
.unpred{padding:10px;border:1px solid #f1d6aa;border-radius:5px;background:#fff7ed;color:#7c4b08;font-size:10px}
svg.chart{width:100%;height:auto}.axis{font-size:10px;fill:var(--muted)}
.scen{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}.sc{padding:10px;border:1px solid var(--line);border-radius:5px;background:#fbfdff}.sc .lb{font-size:10px;font-weight:700}.sc .dt{color:var(--muted);font-size:8px}.sc .dl{font-size:12px;font-weight:700}.up{color:var(--calm)}.dn{color:var(--busy)}
table{width:100%;border-collapse:collapse}table.bench,table.vt{font-size:9px}table th,table td{padding:6px;border-bottom:1px solid var(--line);text-align:left}table td.num{text-align:right}.hl{background:#eaf3ff;color:var(--primary);font-weight:700}
.btn{padding:7px 10px;border-radius:4px;background:var(--surface);font-size:10px;font-weight:700}.btn.primary{background:var(--primary);color:#fff}.report-md{margin-top:9px;padding:12px;border-radius:5px;background:#f8fafc;font-size:10px}.report-md h2{margin:8px 0 3px;font-size:11px}.report-md ul{padding-left:16px}.src-note{margin-top:7px;color:var(--muted);font-size:8px}.rt-box{margin-top:10px;padding:10px;border-radius:5px;background:#f7faff}.rt-line{margin:3px 0;font-size:9px}

/* Research */
.research-intro{padding:24px 20px 14px}
.research-intro .page-title h2{margin-top:2px;color:var(--primary);font-size:14px;line-height:16px}
.research-intro>p{margin-top:14px;color:var(--muted);font-size:10px;line-height:14px}
.validation-summary{padding:8px 20px 20px}
.vgrid{display:grid;grid-template-columns:1fr 1fr;gap:4px}
.vk{min-height:68px;padding:10px;border-radius:4px;background:var(--surface)}
.vk b{display:block;color:var(--ink);font-size:15px;line-height:20px}.vk span{display:block;margin-top:2px;color:var(--muted);font-size:7px;line-height:9px}.vk small{display:block;margin-top:6px;color:var(--muted);font-size:5px;line-height:7px}
.validation-note{margin-top:14px;color:var(--muted);font-size:8px;line-height:11px}.validation-note b{display:block;color:var(--primary)}
.evidence-section{padding:28px 20px 32px;border-top:8px solid #f5f7fa}
.evidence-section h2{font-size:14px}.figure-key{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0 22px;color:var(--muted);font-size:7px;line-height:9px}.figure-key b{display:block;color:var(--primary)}
.evidence-section figure+figure{margin-top:24px}.evidence-section figcaption{display:flex;flex-direction:column;margin-bottom:8px;font-size:8px;line-height:11px}.evidence-section figcaption strong{color:var(--primary)}.evidence-section figcaption small{margin-top:2px;color:var(--muted);font-size:6px;line-height:8px}.evidence-section figure img{width:100%;height:auto}
.research-footer{margin-top:8px;background:#f8fafc}

/* Full-screen festival detail */
.detail-overlay{position:fixed;inset:0;z-index:80;overflow:auto;background:var(--white)}
.detail-overlay[hidden]{display:none}
.detail-page{width:100%;max-width:640px;min-height:100vh;margin:0 auto;padding-bottom:54px;background:var(--white)}
.detail-topbar{position:sticky;top:0;z-index:4;height:44px;padding:20px 10px 8px;display:grid;grid-template-columns:20px 1fr 20px;align-items:center;background:rgba(253,253,253,.97)}
.detail-topbar button{width:20px;height:20px;display:grid;place-items:center}.detail-topbar img{width:15px;height:15px}.detail-topbar .back-icon{width:12.5px;height:8.1px;transform:rotate(90deg)}
.detail-topbar h1{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center;font-size:10px;line-height:14px}
.detail-topbar-spacer{width:20px;height:20px}
.detail-cover-button{position:relative;width:100%;display:block;overflow:hidden;background:var(--surface)}
.detail-cover{width:100%;height:153px;object-fit:cover;background:var(--surface)}
.detail-cover-hint{position:absolute;right:10px;bottom:9px;padding:4px 8px;border-radius:99px;background:rgba(15,23,42,.72);color:#fff;font-size:8px;line-height:12px}
.detail-info{padding:18px 14px 12px;border-bottom:4px solid #f4f6f9}
.detail-title-row{display:flex;align-items:center;gap:10px}.detail-title-row h2{flex:1;font-size:16px;line-height:22px}.detail-wish{display:flex;align-items:center;gap:2px;color:var(--info);font-size:11px}.detail-wish img{width:22px;height:22px}.detail-meta{margin-top:5px;color:var(--muted);font-size:9px;line-height:14px}
.detail-section{padding:18px 14px;border-bottom:4px solid #f4f6f9}.detail-section h3{font-size:12px;line-height:16px}.detail-section .subhead{display:block;margin-top:1px;color:var(--muted);font-size:7px;font-weight:400}
.recommend-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0 18px}.recommend-grid div{font-size:8px;color:var(--muted)}.recommend-grid b{display:block;margin-top:2px;font-size:11px}.recommend-grid .normal-text{color:var(--normal)}.recommend-grid .calm-text{color:var(--calm)}
.daybar{display:flex;gap:10px;align-items:end;overflow-x:auto;padding:3px 2px 0}.daybar .db{min-width:20px;flex:1;text-align:center;color:var(--muted);font-size:7px}.daybar .bar{width:18px;min-height:8px;margin:0 auto 5px;border-radius:10px 10px 3px 3px}.daybar .db.calm .lab{color:var(--calm);font-weight:700}.forecast-explain{margin-top:12px;color:var(--muted);font-size:7px;line-height:12px}.forecast-explain b{color:var(--primary)}
.near{display:flex;flex-direction:column;margin-top:10px}.near a{min-height:48px;display:grid;grid-template-columns:36px 1fr auto;align-items:center;gap:8px;padding:5px 0;border-bottom:1px solid var(--line);color:inherit;text-decoration:none}.near img{width:36px;height:36px;border-radius:50%;object-fit:cover}.near .nm{font-size:9px;font-weight:700}.near .ds{margin-top:2px;color:var(--muted);font-size:6px}.near .dist{color:var(--primary);font-size:6px}.cn-chip{display:inline-block;margin-left:3px;padding:1px 4px;border-radius:99px;background:#fff1d6;color:#9c6506;font-size:5px;font-weight:600}
.horizontal-scroll{display:flex;gap:8px;overflow-x:auto;margin-top:10px;padding-bottom:2px}.calm-chip{min-width:112px;height:24px;padding:0 9px;display:flex;align-items:center;justify-content:space-between;border-radius:4px;background:var(--surface);font-size:7px}.calm-chip span{color:var(--primary)}
.course-card{min-width:70px;color:inherit;text-decoration:none}.course-card img{width:70px;height:47px;border-radius:3px;object-fit:cover}.course-card b{display:block;margin-top:4px;font-size:7px}.course-card span{display:block;color:var(--primary);font-size:6px}
.detail-source{padding:18px 14px 20px;color:var(--muted);font-size:7px;line-height:11px}.detail-source b{display:block;color:var(--ink);font-size:8px}.wish-signal{margin-top:16px}.wish-signal b{color:var(--ink)}
.detail-bottom{position:fixed;left:50%;bottom:0;z-index:85;width:min(100%,640px);transform:translateX(-50%)}
.wx-strip{margin-top:10px;padding-top:8px;border-top:1px dashed var(--line);font-size:8px;line-height:13px}

/* Poster viewer */
.image-viewer{position:fixed;inset:0;z-index:120;display:grid;place-items:center;padding:48px 18px 24px;background:rgba(2,6,23,.92)}
.image-viewer[hidden]{display:none}
.image-viewer figure{max-width:min(94vw,900px);max-height:88vh;display:flex;flex-direction:column;align-items:center;gap:10px}
.image-viewer figure img{max-width:100%;max-height:calc(88vh - 34px);object-fit:contain;border-radius:4px;background:#111827;box-shadow:0 16px 44px rgba(0,0,0,.45)}
.image-viewer figcaption{max-width:88vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#fff;font-size:13px;line-height:18px}
.image-viewer-close{position:fixed;top:max(14px,env(safe-area-inset-top));right:14px;width:36px;height:36px;display:grid;place-items:center;border-radius:50%;background:rgba(255,255,255,.14);color:#fff;font-size:18px}

/* Mobile UI — validation content intentionally excluded */
@media(max-width:899px){
  .loading{font-size:14px;line-height:20px}
  .fcard .no-data-calm{display:block;filter:grayscale(1) brightness(1.25);opacity:.78}
  .brand-copy b{font-size:14px;line-height:22px}.brand-copy small{font-size:10px;line-height:16px}
  .traveler-hero{padding:44px 20px 12px}.traveler-hero h1{font-size:20px;line-height:24px}.traveler-hero p{margin-top:6px;font-size:14px;line-height:20px}
  .finder{padding:10px 16px 6px}.search-field{height:34px;padding:0 11px}.search-field input{font-size:13px;line-height:17px}.search-field img{width:14px;height:14px}
  .filter-row{gap:8px;margin-top:14px}.select-field{height:28px}.select-field select{height:28px;min-width:78px;padding:0 24px 0 9px;background-position:right 9px center;font-size:11px;line-height:24px}.metro-toggle{height:28px;padding:0 12px;font-size:11px;line-height:24px}
  .forecast-legend{gap:12px;padding:24px 16px 16px;font-size:9px;line-height:14px}.forecast-legend span{gap:4px}

  .section-heading{margin-bottom:18px}.section-heading h2{gap:9px;font-size:16px;line-height:22px}.section-heading h2 span{font-size:20px}.section-heading p{font-size:11px;line-height:15px}.trending-section{padding:32px 16px 30px}.trend-list{gap:14px}.trend-item{grid-template-columns:18px 48px minmax(0,1fr) auto;gap:10px;text-align:left}.trend-rank{font-size:18px;line-height:24px}.trend-thumb{width:48px;height:48px}.trend-copy{text-align:left}.trend-copy b{overflow:visible;font-size:13px;line-height:19px;text-overflow:clip;white-space:normal}.trend-copy span{font-size:11px;line-height:17px}.trend-signal{font-size:12px;line-height:16px}.trend-signal img{width:13px;height:12px}
  #v-traveler .service-footer{padding:32px 16px 36px}#v-traveler .service-footer h2{font-size:12px;line-height:18px}#v-traveler .service-footer h2 span{font-size:10px}#v-traveler .service-footer p{font-size:10px;line-height:15px}

  .dashboard-view{padding-top:16px}.dashboard-form{padding:10px 20px 34px}.dashboard-view .page-title h1,.dashboard-view .page-title h2{font-size:18px;line-height:24px}.dashboard-view .page-title p{margin-top:10px;font-size:13px;line-height:19px}.dashboard-form textarea{height:104px;margin-top:16px;padding:12px;font-size:12px;line-height:20px}.small-primary{height:28px;margin-top:10px;padding:0 12px;font-size:12px;line-height:16px}.form-note{min-height:16px;margin-top:7px;font-size:10px;line-height:14px}.form-stack{gap:18px;margin-top:28px}.form-stack label{gap:9px;font-size:12px;line-height:16px}.form-stack input,.form-stack select{height:34px;padding:0 11px;font-size:12px;line-height:16px}.form-pair{gap:16px}.forecast-button{height:38px;margin-top:14px;font-size:14px;line-height:18px}.forecast-result{padding:0 16px}
  .interest-section{padding:34px 20px 38px}.interest-title{margin-bottom:26px}.interest-title h2{font-size:16px;line-height:20px}.interest-title p{margin-top:3px;font-size:11px;line-height:15px}.int-sum{gap:18px;margin-bottom:22px}.int-sum .k{font-size:11px;line-height:15px}.int-sum .k b{height:33px;margin-top:8px;font-size:13px;line-height:17px}.int-row{min-height:44px;display:flex;align-items:center;gap:5px;font-size:11px;line-height:15px}.int-row b{flex:0 1 auto;min-width:0;overflow:visible;text-overflow:clip;white-space:normal}.int-row .region{flex:none;font-size:9px;line-height:13px}.int-row .r{margin-left:auto;display:flex;flex:none;gap:5px;font-size:11px;line-height:15px}.interest-source{margin-top:22px;font-size:9px;line-height:15px}.interest-source b{font-size:10px;line-height:14px}
  .dashboard-view .card{margin:16px 0;padding:16px}.dashboard-view .card h3{margin-bottom:9px;font-size:15px;line-height:19px}.dashboard-view .small{font-size:11px;line-height:15px}.dashboard-view .fore-hero{margin:16px 0;padding:21px}.dashboard-view .fore-kicker{font-size:11px;line-height:15px}.dashboard-view .fore-num{font-size:34px;line-height:40px}.dashboard-view .fore-num small{font-size:15px;line-height:19px}.dashboard-view .fore-range{font-size:12px;line-height:16px}.dashboard-view .tag{font-size:10px;line-height:14px}.dashboard-view .unpred{font-size:12px;line-height:16px}.dashboard-view .axis{font-size:12px}.dashboard-view .sc .lb{font-size:12px;line-height:16px}.dashboard-view .sc .dt{font-size:10px;line-height:14px}.dashboard-view .sc .dl{font-size:14px;line-height:18px}.dashboard-view table.bench,.dashboard-view table.vt{font-size:11px;line-height:15px}.dashboard-view .btn{font-size:12px;line-height:16px}.dashboard-view .report-md{font-size:12px;line-height:16px}.dashboard-view .report-md h2{font-size:13px;line-height:17px}.dashboard-view .src-note{font-size:10px;line-height:14px}.dashboard-view .rt-line{font-size:11px;line-height:15px}

  .detail-topbar{height:auto;min-height:64px;padding:28px 10px 16px;display:flex;align-items:center;justify-content:center}.detail-topbar button,.detail-topbar-spacer{flex:0 0 20px}.detail-topbar h1{width:auto;flex:1;overflow:visible;font-size:13px;line-height:18px;text-overflow:clip;white-space:normal}.detail-cover-hint{font-size:10px;line-height:16px}.detail-info{padding:22px 14px 16px}.detail-title-row h2{font-size:18px;line-height:26px}.detail-wish{font-size:13px;line-height:17px}.detail-meta{margin-top:7px;font-size:11px;line-height:18px}.detail-section{padding:22px 14px}.detail-section h3{font-size:14px;line-height:20px}.detail-section .subhead{margin-top:3px;font-size:9px;line-height:13px}.recommend-grid{gap:10px;margin:16px 0 22px}.recommend-grid div{font-size:10px;line-height:14px}.recommend-grid b{margin-top:4px;font-size:13px;line-height:17px}.daybar .db{font-size:9px;line-height:13px}.forecast-explain{margin-top:16px;font-size:9px;line-height:16px}.near{margin-top:14px}.near a{min-height:56px;gap:10px;padding:7px 0}.near .nm{font-size:11px;line-height:15px}.near .ds{margin-top:4px;font-size:8px;line-height:12px}.near .dist{font-size:8px;line-height:12px}.cn-chip{margin-left:4px;padding:2px 5px;font-size:7px;line-height:11px}.horizontal-scroll{gap:10px;margin-top:14px}.calm-chip{min-width:126px;height:30px;padding:0 11px;font-size:9px;line-height:13px}.course-card{min-width:75px}.course-card b{max-width:75px;margin-top:5px;overflow:hidden;font-size:9px;line-height:13px;text-overflow:ellipsis;white-space:nowrap}.course-card span{font-size:8px;line-height:12px}.detail-source{padding:22px 14px 26px;font-size:9px;line-height:15px}.detail-source b{font-size:10px;line-height:14px}.wish-signal{margin-top:20px}.wx-strip{margin-top:14px;padding-top:10px;font-size:10px;line-height:17px}
  .image-viewer figcaption{font-size:15px;line-height:22px}
}

/* Desktop UI — mobile rules above remain unchanged */
@media(min-width:900px){
  body{background:#fdfdfd}
  .app-shell{max-width:1280px;box-shadow:none}
  #main{padding-bottom:0}

  .topbar{height:120px;padding:80px 0 10px 48px;border-bottom:0}
  .brand{gap:10px}.brand-weather{width:48px;height:48px;font-size:40px}.brand-copy b{font-size:18px;line-height:24px}.brand-copy small{font-size:12px;line-height:17px}
  .top-action{width:34px;height:34px}.top-action img{width:23px;height:23px}.top-action img[src*="bc712baa"],.top-action img[src*="90ea754a"]{width:22px;height:22px}

  .traveler-hero{padding:96px 48px 15px}.traveler-hero h1{gap:0 6px;font-size:40px;line-height:48px;letter-spacing:-.7px}.traveler-hero p{margin-top:7px;font-size:20px;line-height:28px}
  .finder{padding:12px 48px 7px}.search-field{height:46px;padding:0 15px;border-radius:8px}.search-field input{font-size:14px}.search-field img{width:19px;height:19px}
  .filter-row{gap:10px;margin-top:14px}.select-field{height:36px}.select-field select{height:36px;min-width:112px;padding:0 34px 0 13px;border-radius:7px;background-position:right 13px center;background-size:10px 6px;font-size:13px;line-height:34px}.metro-toggle{height:36px;padding:0 17px;border-radius:7px;font-size:13px;line-height:34px}
  .forecast-legend{gap:18px;padding:25px 48px 18px;font-size:16px;line-height:22px}.forecast-legend span{gap:6px}.legend-dot{width:27px;height:9px}

  .festival-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px 16px;padding:0 48px}.fcard{border-radius:10px;box-shadow:0 3px 12px rgba(15,23,42,.08);transition:transform .15s,box-shadow .15s}.fcard:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(15,23,42,.13)}
  .fcard .thumb{aspect-ratio:2.2}.card-heart{display:none}.fcard .body{min-height:136px;padding:13px 16px 20px}.fcard .badge{margin-bottom:5px;font-size:14px;line-height:22px}.fcard .t{min-height:44px;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;font-size:19px;line-height:22px;white-space:normal}.fcard .d{margin-top:7px;font-size:14px;line-height:22px}.fcard .foot{padding-top:8px;gap:5px;font-size:13px;line-height:19px}.fcard .calm-icon,.fcard .wish-n img{width:16px;height:16px}.fcard .wish-n{gap:3px}.poster-hint{right:9px;bottom:9px;padding:4px 9px;font-size:10px;line-height:14px}
  .more-button{width:calc(100% - 96px);height:42px;margin:24px 48px 36px;color:#94a3b8;font-size:16px}

  .trending-section{padding:32px 48px;background:#eef3f9}.section-heading{margin-bottom:22px}.section-heading h2{gap:10px;font-size:22px;line-height:28px}.section-heading h2 span{font-size:25px}.section-heading p{font-size:14px}.trend-list{display:grid;grid-template-columns:1fr 1fr;gap:12px 18px}.trend-item{grid-template-columns:16px 62px 1fr auto;gap:12px;padding:12px 20px;border:1px solid #dfe7f1;border-radius:10px;background:#fff;text-align:left}.trend-rank{font-size:21px;line-height:26px}.trend-thumb{width:55px;height:55px}.trend-copy b{font-size:18px;line-height:24px}.trend-copy span{font-size:14px;line-height:22px}.trend-signal{gap:4px;font-size:16px}.trend-signal img{width:18px;height:17px}
  .service-footer{padding:38px 48px 44px}.service-footer h2{margin-bottom:5px;font-size:20px;line-height:24px}.service-footer h2 span{font-size:14px}.service-footer p{font-size:14px;line-height:18px}.service-footer p:last-child{margin-top:18px}

  .topbar>.bottom-nav{position:static;left:auto;bottom:auto;z-index:auto;width:auto;height:52px;margin-left:auto;margin-right:48px;padding:4px;transform:none;display:flex;grid-template-columns:none;align-items:center;border:1px solid #dfe7f1;border-radius:999px;background:#f1f5f9}
  .topbar>.bottom-nav button{height:42px;min-width:106px;flex-direction:row;justify-content:center;gap:0;padding:0 18px;border-radius:999px;color:#617085;font-size:14px;line-height:20px;font-weight:600;white-space:nowrap}
  .topbar>.bottom-nav button img{display:none}.topbar>.bottom-nav button span{display:inline}.topbar>.bottom-nav button.on{background:var(--primary);color:#fff;box-shadow:0 2px 6px rgba(47,128,237,.28)}
  .detail-bottom{display:none}

  .dashboard-view,.research-view{max-width:980px;margin:0 auto}.dashboard-view{padding-top:32px}.dashboard-form{padding:96px 48px 48px}.page-title h1,.page-title h2{font-size:36px;line-height:44px}.page-title p{max-width:760px;margin-top:12px;font-size:18px;line-height:26px}.dashboard-form textarea{height:150px;margin-top:24px;padding:20px;border-radius:8px;font-size:16px;line-height:22px}.small-primary{height:38px;margin-top:12px;padding:0 28px;border-radius:7px;font-size:16px}.form-note{min-height:18px;margin-top:8px;font-size:12px}.form-stack{gap:32px;margin-top:20px}.form-stack label{gap:8px;font-size:18px}.form-stack input,.form-stack select{height:44px;padding:0 14px;border-radius:7px;font-size:16px}.form-stack select{background-position:right 14px center;background-size:10px 6px}.form-pair{gap:20px}.forecast-button{height:48px;margin-top:16px;border-radius:8px;font-size:18px}
  .forecast-result{padding:0 48px}.interest-section{padding:44px 48px 54px}.interest-title{margin-bottom:28px}.interest-title h2{font-size:28px}.interest-title p{margin-top:4px;font-size:20px}.int-sum{gap:20px;margin-bottom:26px}.int-sum .k{font-size:18px}.int-sum .k b{height:42px;margin-top:8px;border-radius:7px;font-size:16px}.int-row{min-height:54px;gap:20px;font-size:18px}.int-row .region{font-size:16px}.int-row .r{font-size:16px}.interest-source{margin-top:32px;font-size:16px;line-height:24px}.interest-source b{font-size:16px}

  .card{margin:18px 0;padding:22px;border-radius:10px}.card h3{margin-bottom:11px;font-size:18px}.small{font-size:13px}.fore-hero{margin:18px 0;padding:28px;border-radius:10px}.fore-kicker{font-size:13px}.fore-num{font-size:46px}.fore-num small{font-size:18px}.fore-range{font-size:14px}.fore-tags{gap:8px;margin-top:14px}.tag{padding:5px 10px;font-size:12px}.unpred{padding:16px;font-size:14px}.axis{font-size:12px}.scen{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px}.sc{padding:16px}.sc .lb{font-size:14px}.sc .dt{font-size:12px}.sc .dl{font-size:17px}table.bench,table.vt{font-size:13px}table th,table td{padding:10px}.btn{padding:10px 15px;font-size:13px}.report-md{margin-top:14px;padding:18px;font-size:14px}.report-md h2{margin:12px 0 5px;font-size:17px}.src-note{margin-top:11px;font-size:11px}.rt-box{margin-top:14px;padding:15px}.rt-line{margin:5px 0;font-size:13px}

  .research-intro{padding:96px 48px 24px}.research-intro .page-title h2{margin-top:8px;font-size:28px;line-height:32px}.research-intro>p{margin-top:20px;font-size:18px;line-height:24px}.validation-summary{padding:16px 48px 36px}.vgrid{grid-template-columns:repeat(4,1fr);gap:12px}.vk{min-height:130px;padding:20px;border-radius:9px}.vk b{font-size:30px;line-height:32px}.vk span{margin-top:6px;font-size:16px;line-height:17px}.vk small{margin-top:24px;font-size:14px;line-height:20px}.validation-note{margin-top:22px;font-size:16px;line-height:20px}.evidence-section{padding:44px 48px 52px}.evidence-section h2{font-size:28px}.figure-key{gap:32px;margin:18px 0 52px;font-size:18px;line-height:26px}.evidence-section figure+figure{margin-top:38px}.evidence-section figcaption{margin-bottom:13px;font-size:20px;line-height:26px}.evidence-section figcaption small{margin-top:4px;font-size:14px;line-height:20px}.research-footer h2{font-size:18px;line-height:22px}.research-footer h2 span{font-size:14px}.research-footer p{font-size:14px;line-height:18px}

  .detail-overlay{background:rgba(15,23,42,.18)}.detail-page{max-width:960px;padding-bottom:0;box-shadow:0 0 36px rgba(15,23,42,.18)}.detail-topbar{height:88px;padding:15px 24px;display:flex;align-items:center;justify-content:center}.detail-topbar button,.detail-topbar-spacer{width:34px;height:34px;flex:0 0 34px}.detail-topbar img{width:23px;height:23px}.detail-topbar .back-icon{width:20px;height:14px}.detail-topbar h1{width:auto;flex:1;font-size:24px;line-height:30px}.detail-cover{height:410px}.detail-cover-hint{right:18px;bottom:16px;padding:7px 12px;font-size:12px;line-height:17px}.detail-info{padding:30px 36px 32px}.detail-title-row{gap:18px}.detail-title-row h2{font-size:36px;line-height:38px}.detail-wish{gap:4px;font-size:22px}.detail-wish img{width:34px;height:34px}.detail-meta{margin-top:14px;font-size:20px;line-height:28px}
  .detail-section{padding:40px 36px}.detail-section h3{font-size:24px;line-height:27px}.detail-section .subhead{margin-top:4px;font-size:16px;line-height:22px}.recommend-grid{gap:18px;margin:20px 0 28px}.recommend-grid div{font-size:20px}.recommend-grid b{margin-top:4px;font-size:22px}.daybar{gap:16px;padding-top:6px}.daybar .db{min-width:42px;font-size:16px}.daybar .bar{width:20px;min-height:8px;margin:0 auto 5px;border-radius:20px 20px 18px 18px}.forecast-explain{margin-top:18px;font-size:14px;line-height:22px}.wx-strip{margin-top:16px;padding-top:13px;font-size:13px;line-height:20px}
  .near{display:grid;grid-template-columns:1fr 1fr;gap:0 26px;margin-top:16px}.near a{min-height:82px;grid-template-columns:58px 1fr auto;gap:13px;padding:11px 0}.near img{width:58px;height:58px}.near .nm{font-size:16px}.near .ds{margin-top:6px;font-size:14px;line-height:14px}.near .dist{font-size:14px}.cn-chip{margin-left:6px;padding:3px 8px;font-size:12px}.horizontal-scroll{gap:16px;margin-top:17px;padding-bottom:5px}.calm-chip{min-width:192px;height:44px;padding:0 16px;border-radius:7px;font-size:15px}.course-card{min-width:80px}.course-card img{width:80px;height:47px;border-radius:3px}.course-card b{max-width:80px;margin-top:7px;overflow:hidden;font-size:15px;line-height:20px;text-overflow:ellipsis;white-space:nowrap}.course-card span{font-size:14px;line-height:18px}.detail-source{padding:28px 36px 48px;font-size:14px;line-height:20px}.detail-source b{font-size:16px}.wish-signal{margin-top:22px}.detail-bottom{width:min(100%,960px)}

  .image-viewer figcaption{font-size:16px;line-height:23px}.image-viewer-close{top:22px;right:24px;width:44px;height:44px;font-size:21px}
}

@media(min-width:1180px){.festival-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media print{.topbar,.bottom-nav,.detail-bottom{display:none!important}#main,.detail-page{padding-bottom:0}.view{display:none}.view.on{display:block}}
