.public-wrap{max-width:1360px;margin:auto;padding:20px clamp(16px,3vw,50px)}.public-top{display:flex;align-items:center;gap:22px;justify-content:space-between;flex-wrap:wrap;padding:12px 0 20px}.public-top .brand{font-family:Georgia,serif;font-size:1.35rem;color:#20394a}.public-top nav{display:flex;gap:18px;flex-wrap:wrap}.public-top nav a{color:#24475b;font-weight:600;text-decoration:none}.public-top nav a:hover,.public-place-list a:hover{text-decoration:underline}.public-mode{display:flex;justify-content:flex-end;margin-bottom:12px}.public-mode label,.public-day-nav label{font-size:.9rem;color:#52616a}.public-mode select,.public-day-nav select{margin-left:8px;padding:8px 12px;border:1px solid #b8c9ce;border-radius:12px;background:#fff;color:#20394a}.public-hero{min-height:440px}.public-hero>img{object-fit:cover}.public-section-head{margin:42px 0 18px}.public-section-head h2{font-family:Georgia,serif;font-size:clamp(2rem,3vw,3.1rem);margin:5px 0}.public-section-head p{max-width:60ch;color:#52616a}.public-wrap section{margin:36px 0 52px}.public-day-nav{display:flex;align-items:center;gap:12px;margin-bottom:18px}.public-day-nav button{border:1px solid #b8c9ce;background:#fff;border-radius:50%;height:44px;width:44px;cursor:pointer}.public-day-nav button:disabled{opacity:.4}.public-day-feature{display:grid;grid-template-columns:40% 1fr;gap:24px;background:#fff;border:1px solid #e4e8e5;border-radius:22px;overflow:hidden}.public-day-feature>img{width:100%;height:100%;min-height:255px;object-fit:cover}.public-day-feature>div{padding:24px 24px 24px 0}.public-day-feature h3{font-family:Georgia,serif;font-size:2rem;margin:8px 0}.public-day-feature p{line-height:1.6}.public-day-grid{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:8px;margin-top:16px}.public-day-chip{display:flex;flex-direction:column;gap:4px;align-items:center;padding:11px 6px;border-radius:12px;border:1px solid #e3e8e6;background:#fff;color:#24475b;cursor:pointer}.public-day-chip.active{background:#20394a;color:#fff}.public-place-grid,.public-weather-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.public-place-card{padding:0;overflow:hidden}.public-place-card>img{width:100%;aspect-ratio:16/8;object-fit:cover}.public-place-card>div{padding:18px}.public-place-card h3,.public-weather-card h3{font-family:Georgia,serif;font-size:1.5rem}.public-place-list{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 20px}.public-place-list a{border-radius:999px;background:#f3f5f1;padding:6px 10px;font-size:.82rem;color:#24475b;text-decoration:none}.public-weather-card{border-radius:18px;background:#eaf3f5;padding:20px}.public-weather-reading{display:flex;align-items:center;gap:12px;font-size:1.4rem}.public-weather-reading strong{font-size:1.8rem}.public-journal-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.public-moment{overflow:hidden;padding:0}.public-moment img{width:100%;aspect-ratio:4/3;object-fit:cover}.public-moment>div{padding:18px}.public-empty{padding:22px}.radio-stations{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.radio-station{padding:14px}.radio-station.favorite{border-color:#bc8062}.soundtrack-card{display:flex;align-items:center;gap:18px;padding:18px}.soundtrack-card img{width:96px;height:96px;object-fit:cover;border-radius:12px}.soundtrack-card>div{flex:1}.soundtrack-card p{font-size:.9rem}.public-actions{display:flex;gap:12px;flex-wrap:wrap}.friend-route{border-top:1px solid #e4e8e5;padding-top:10px}.public-top a:focus-visible,.public-wrap button:focus-visible,.public-wrap select:focus-visible{outline:3px solid #a45b3c;outline-offset:3px}
@media(max-width:950px){.public-day-grid{grid-template-columns:repeat(5,1fr)}.public-place-grid,.public-journal-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.radio-stations{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:650px){.public-wrap{padding:12px}.public-top{gap:12px}.public-top nav{width:100%;overflow:auto;flex-wrap:nowrap;white-space:nowrap;padding-bottom:5px}.public-hero{min-height:350px}.public-day-feature{grid-template-columns:1fr}.public-day-feature>img{min-height:180px;max-height:230px}.public-day-feature>div{padding:0 18px 20px}.public-day-grid{display:flex;overflow:auto;scroll-snap-type:x mandatory}.public-day-chip{min-width:75px;scroll-snap-align:start}.public-place-grid,.public-journal-grid,.public-weather-grid{grid-template-columns:1fr}.public-weather-grid{display:flex;overflow:auto;scroll-snap-type:x mandatory}.public-weather-card{min-width:230px;scroll-snap-align:start}.radio-stations{display:flex;overflow:auto;scroll-snap-type:x mandatory}.radio-station{min-width:160px;scroll-snap-align:start}.soundtrack-card{flex-wrap:wrap}.soundtrack-card>div{flex-basis:calc(100% - 115px)}}

/* Public journal interactions and travel guides. */
.public-hero{overflow:hidden}.public-hero>img{animation:public-hero-breathe 24s ease-in-out infinite alternate;transform-origin:center}.destination-card,.transit-link-card,.official-map-link,.public-place-list a,.public-day-chip,.public-top nav a{transition:transform .24s ease,box-shadow .24s ease,background-color .24s ease,color .24s ease}.destination-card:hover,.transit-link-card:hover{transform:translateY(-4px);box-shadow:0 16px 36px #20394a1d}.official-map-link:hover,.public-place-list a:hover{transform:translateY(-2px)}.public-day-chip:hover:not(:disabled){transform:translateY(-2px)}.reveal{opacity:0;transform:translateY(14px);transition:opacity .6s ease,transform .6s ease}.reveal.is-visible{opacity:1;transform:none}@keyframes public-hero-breathe{from{transform:scale(1)}to{transform:scale(1.045)}}
.transit-link-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.transit-link-card{display:block;position:relative;min-height:220px;padding:30px;border-radius:22px;text-decoration:none;background:linear-gradient(125deg,#e8f1ef,#f9f3e7);color:#20394a;border:1px solid #dce4df}.transit-link-card:nth-child(2){background:linear-gradient(125deg,#f7ecdc,#eef0eb)}.transit-link-card h3,.transit-guide h1,.transit-guide h2{font-family:Georgia,serif}.transit-link-card h3{font-size:clamp(1.45rem,2.4vw,2.15rem);margin:14px 0 10px}.transit-link-card p{max-width:32ch}.transit-link-card strong{color:#9a5739}.transit-mark{position:absolute;right:26px;top:22px;font-size:1.7rem;color:#9a5739}
.transit-guide{max-width:1180px;margin:24px auto 80px;color:#20394a}.transit-guide p{line-height:1.7}.transit-back{display:inline-block;margin-bottom:16px;color:#24475b}.transit-hero{display:flex;align-items:flex-end;min-height:350px;border-radius:24px;padding:clamp(28px,5vw,65px);color:#fff;background:linear-gradient(105deg,#122b3bee,#20394a99),url("https://commons.wikimedia.org/wiki/Special:FilePath/202112%20Renfe%20S-103-212%20as%20AVE2173%20at%20Madrid-Atocha.jpg?width=1280") center/cover}.transit-hero.metro-hero{background-image:linear-gradient(105deg,#122b3bee,#20394a99),url("https://commons.wikimedia.org/wiki/Special:FilePath/Madrid%20metro%20train.jpg?width=1280")}.transit-hero h1{font-size:clamp(2.7rem,6vw,5.4rem);line-height:1.08;margin:14px 0}.transit-hero p{max-width:40ch;font-size:1.15rem}.transit-editorial{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(250px,.85fr);gap:clamp(24px,5vw,80px);margin:45px 0}.transit-editorial .editorial-lead{font-size:clamp(1.28rem,2vw,1.7rem);line-height:1.55}.transit-note{padding:22px;background:#f6f1e9;border-left:3px solid #bf7553;border-radius:0 14px 14px 0}.transit-note ol{padding-left:22px;line-height:2}.transit-note small{color:#687881;margin-left:10px}.transit-photo{margin:25px 0 50px}.transit-photo img{display:block;width:100%;height:clamp(250px,42vw,485px);object-fit:cover;border-radius:20px;background:#e6ece9}.transit-photo figcaption{font-size:.73rem;color:#60727c;margin:9px 4px}.transit-photo figcaption a{color:inherit}.transit-chapters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin:52px 0}.transit-chapters section{border-top:1px solid #bdc8c5;padding-top:19px}.transit-chapters h2{font-size:1.8rem;line-height:1.2}.transit-chapters a,.transit-next a{color:#9a5739;font-weight:700}.transit-map-card{display:flex;justify-content:space-between;align-items:center;gap:25px;background:#e8f1ef;padding:clamp(24px,4vw,45px);border-radius:20px}.transit-map-card p{max-width:55ch}.transit-map-card .btn{white-space:nowrap}.transit-next{margin:35px 0}.metro-tabs{display:flex;gap:10px;flex-wrap:wrap;margin:40px 0 10px}.metro-tabs a{padding:10px 20px;border:1px solid #b8c9ce;border-radius:999px;color:#24475b;text-decoration:none;background:#fff}.metro-tabs a:hover{background:#e8f1ef}.metro-city{display:grid;grid-template-columns:1fr 1fr;gap:40px;padding:50px 0;border-top:1px solid #dae2df;scroll-margin-top:20px}.metro-city h2{font-size:clamp(2rem,3vw,2.8rem);margin:12px 0}.official-map-list{align-self:start;padding:20px;background:#f5f1e9;border-radius:20px}.official-map-link{display:flex;align-items:center;gap:15px;background:#fff;color:#20394a;text-decoration:none;border:1px solid #e2e8e5;border-radius:14px;padding:15px;margin-top:12px;min-height:72px}.official-map-link>span:first-child{font-size:1.5rem;color:#9a5739}.official-map-link>span:last-child{margin-left:auto;text-align:right;color:#9a5739;font-size:.85rem}
@media(max-width:800px){.transit-chapters{grid-template-columns:1fr;gap:15px}.transit-editorial{grid-template-columns:1fr}.transit-map-card{align-items:flex-start;flex-direction:column}.metro-city{grid-template-columns:1fr;gap:14px}}@media(max-width:650px){.transit-link-grid{grid-template-columns:1fr}.transit-link-card{min-height:175px;padding:23px}.transit-hero{min-height:315px;border-radius:18px}.transit-photo img{height:240px}.metro-city{padding:34px 0}.official-map-link{flex-wrap:wrap}.official-map-link>span:last-child{margin-left:0}.transit-guide{margin-top:10px}.public-top nav{gap:16px}}
@media(prefers-reduced-motion:reduce){.public-hero>img{animation:none}.reveal{opacity:1;transform:none;transition:none}.destination-card,.transit-link-card,.official-map-link,.public-place-list a,.public-day-chip,.public-top nav a{transition:none}.destination-card:hover,.transit-link-card:hover,.official-map-link:hover,.public-place-list a:hover,.public-day-chip:hover{transform:none}html{scroll-behavior:auto!important}}
