/* iVillas site styles - fonts + base + modern. Hosted at https://ivillas.org/style.css/ ; edit once, whole site updates. */ @import url('https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,500;12..96,600;12..96,700;12..96,800&family=Inter:wght@400;500;600&family=Space+Mono:wght@400;700&display=swap'); :root{color-scheme:light;--paper:#EFEBE0;--paper-2:#E7E2D4;--panel:#FBF9F3;--ink:#16213F;--ink-soft:#454E70;--cobalt:#23347A;--cobalt-d:#1A2760;--marigold:#F2A81D;--marigold-d:#D8900A;--teal:#147F6E;--closed:#9a8f7a;--text:#1A1712;--muted:#6B6558;--line:rgba(22,33,63,.14);--line-2:rgba(22,33,63,.09);--shadow:0 1px 0 rgba(22,33,63,.05),0 8px 24px -12px rgba(22,33,63,.28)} *{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth} body{font-family:'Inter',system-ui,sans-serif;background:var(--paper);color:var(--text);line-height:1.55;-webkit-font-smoothing:antialiased} .wrap{max-width:1180px;margin:0 auto;padding:0 22px}a{color:inherit;text-decoration:none} h1,h2,h3{font-family:'Bricolage Grotesque',sans-serif;line-height:1.05;letter-spacing:-.02em} .plaque{display:inline-flex;align-items:center;gap:8px;font-family:'Space Mono',monospace;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.14em;background:var(--cobalt);color:#fff;padding:7px 14px;border-radius:6px;position:relative;box-shadow:inset 0 1px 0 rgba(255,255,255,.22),inset 0 -2px 6px rgba(0,0,0,.28)} .plaque::before,.plaque::after{content:"";width:4px;height:4px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff,#8f9bc9 70%);position:absolute;top:50%;transform:translateY(-50%);opacity:.7}.plaque::before{left:5px}.plaque::after{right:5px} .btn{font-family:'Inter';font-weight:600;font-size:14px;border:none;cursor:pointer;border-radius:9px;padding:11px 18px;transition:.15s;display:inline-flex;align-items:center;gap:8px} .btn-ghost{background:var(--panel);color:var(--ink);border:1px solid var(--line)}.btn-ghost:hover{background:var(--paper-2)} .btn-solid{background:var(--marigold);color:#241a00;box-shadow:0 2px 0 var(--marigold-d)}.btn-solid:hover{transform:translateY(-1px);box-shadow:0 4px 0 var(--marigold-d)} .btn-cobalt{background:var(--cobalt);color:#fff}.btn-cobalt:hover{background:var(--cobalt-d)} header{position:sticky;top:0;z-index:40;background:rgba(239,235,224,.86);backdrop-filter:blur(10px);border-bottom:1px solid var(--line-2)} .nav{display:flex;align-items:center;gap:24px;height:64px} .brand{display:flex;align-items:center;gap:9px;font-family:'Bricolage Grotesque';font-weight:800;font-size:21px;letter-spacing:-.03em;color:var(--ink)}.brand .pin{width:26px;height:26px;flex:0 0 auto} .nav-links{display:flex;gap:22px;margin-left:8px;font-weight:500;font-size:15px;color:var(--ink-soft)} .nav-links a{padding:4px 0;border-bottom:2px solid transparent;transition:.15s}.nav-links a:hover{color:var(--ink);border-color:var(--marigold)} .nav-spacer{flex:1} @media (max-width:900px){ .nav{gap:12px;height:56px} .brand{font-size:18px;flex:0 0 auto}.brand .pin{width:22px;height:22px} .nav-spacer{display:none} .nav-links{margin-left:0;gap:18px;flex:1 1 auto;min-width:0;flex-wrap:nowrap; overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none; -webkit-overflow-scrolling:touch;scroll-snap-type:x proximity; mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent); -webkit-mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent)} .nav-links::-webkit-scrollbar{display:none} .nav-links a{white-space:nowrap;scroll-snap-align:start} } @media (max-width:560px){.nav-links{font-size:14px;gap:15px}} @media (max-width:900px){ .layout>*,.wrap>*,.side>*,.panel>*{min-width:0} .prose,.sec,.sh,.card-n,.dl dd,.faq-a{overflow-wrap:break-word} } .chip{font-family:'Inter';font-size:13.5px;font-weight:500;padding:8px 14px;border-radius:999px;border:1px solid var(--line);background:var(--panel);cursor:pointer;transition:.15s;color:var(--ink)} .chip:hover{border-color:var(--cobalt);color:var(--cobalt)}.chip.on{background:var(--cobalt);color:#fff;border-color:var(--cobalt)} footer{background:var(--cobalt-d);color:#c9d0ea;margin-top:56px;padding:48px 0 28px}footer .brand{color:#fff} .foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:30px} footer .fcol h4{font-family:'Space Mono';font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#8f9bc9;margin-bottom:14px} footer .fcol a{display:block;padding:5px 0;font-size:14px;color:#c9d0ea}footer .fcol a:hover{color:#fff} footer .tag{color:#8f9bc9;font-size:14px;margin-top:12px;max-width:32ch} .foot-bottom{border-top:1px solid rgba(255,255,255,.12);margin-top:34px;padding-top:20px;display:flex;justify-content:space-between;font-family:'Space Mono';font-size:11.5px;color:#8f9bc9;flex-wrap:wrap;gap:10px} :focus-visible{outline:3px solid var(--marigold);outline-offset:2px;border-radius:6px} @media (prefers-reduced-motion:reduce){*{transition:none!important}} img{max-width:100%;display:block}figure{margin:0} ol,ul{list-style:none} .skip{position:absolute;left:-9999px;top:0;z-index:100;background:var(--marigold);color:#241a00;padding:10px 16px;border-radius:0 0 8px 0;font-weight:600} .skip:focus{left:0} .nav-links a[aria-current="page"]{color:var(--ink);border-color:var(--marigold)} .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap} .card-go{display:block;color:inherit} .card-go:hover{transform:translateY(-2px);border-color:var(--accent)} .stop-go{color:inherit;transition:border-color .18s,transform .18s} .stop-go:hover{border-color:var(--accent);transform:translateX(2px)} .stop-go .stop-n{transition:color .18s} .stop-go:hover .stop-n{color:var(--accent)} #triptoggle.on{background:var(--ink);color:var(--bg);border-color:var(--ink)} .toast{position:fixed;left:50%;bottom:26px;z-index:90;transform:translate(-50%,14px); background:var(--ink);color:var(--bg);font-weight:700;font-size:.92rem; padding:11px 20px;border-radius:99px;box-shadow:0 10px 30px #14161c40; opacity:0;transition:opacity .22s,transform .22s;pointer-events:none} .toast.in{opacity:1;transform:translate(-50%,0)} @media (prefers-reduced-motion:reduce){ .toast{transition:none} .card-go:hover,.stop-go:hover{transform:none} } .stay{padding:clamp(22px,3vw,30px);border-radius:var(--r-xl); background:linear-gradient(150deg,color-mix(in srgb,var(--accent) 10%,var(--bg-2)),var(--bg-2)); border:1px solid var(--line)} .stay .sh{margin-bottom:8px} .stay-p{color:var(--ink-2);max-width:52ch;margin:0 0 16px;line-height:1.55} .btn-stay{font-size:1rem;padding:15px 26px} .stay-n{display:block;margin-top:12px;font-size:.82rem;color:var(--ink-3)} .facts-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:1px;margin:0;background:var(--line);border:1px solid var(--line); border-radius:var(--r-lg);overflow:hidden} .fx{background:var(--bg-2);padding:16px 18px} .fx dt{font-size:.71rem;text-transform:uppercase;letter-spacing:.09em; color:var(--ink-3);font-weight:800;margin-bottom:5px} .fx dd{margin:0;font-weight:750;letter-spacing:-.015em;line-height:1.35} .fx-site{margin-top:16px} .tip{margin-top:14px;padding:13px 16px;border-radius:var(--r); background:var(--accent-soft);font-size:.95rem;line-height:1.5} .hfacts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0; margin:clamp(26px,3.5vw,38px) 0 0;padding-top:26px;border-top:1px solid var(--line)} .hf{display:flex;flex-direction:column;align-items:center;justify-content:flex-start; gap:4px;padding:4px 14px;text-align:center; border-right:1px solid var(--line-2);min-width:0} .hf:last-child{border-right:0} .hf-i{font-size:.62rem;font-weight:800;letter-spacing:.12em;color:var(--accent); opacity:.6;font-variant-numeric:tabular-nums} .hf-v{margin:0;font-size:clamp(1rem,1.55vw,1.28rem);font-weight:800;letter-spacing:-.024em; line-height:1.3;color:var(--ink);text-wrap:balance; min-height:2.6em;display:flex;align-items:center;justify-content:center} .hf-k{font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-3); font-weight:800} @media (max-width:640px){ .hfacts{grid-template-columns:repeat(3,minmax(0,1fr))} .hf{border-bottom:0;padding:10px 6px} .hf-v{font-size:.9rem;line-height:1.25} .hf-k{font-size:.58rem;letter-spacing:.06em} .hf-i{font-size:.55rem} .smap{aspect-ratio:5/4} .cmap{height:100%;object-fit:cover} .sm-shot,.sm-shot img{height:100%} .sm-pin:not(.sm-keep){display:none} .sm-pin{width:64px} .sm-pin img{width:60px;height:60px;border-radius:14px;border-width:2.5px} .sm-pin b{display:none} .sm-foot{left:10px;right:10px;bottom:10px;gap:8px;padding:8px 8px 8px 14px} .sm-t{font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; min-width:0;flex:1 1 auto} .sm-c{flex:0 0 auto;font-size:.8rem;padding:6px 10px} } @media (max-width:400px){ .sm-t{display:none} .sm-foot{justify-content:center} } .kn dd b{color:var(--ink);font-weight:750} .card-m b{font-weight:800;color:var(--accent)} .block{padding:clamp(34px,4.5vw,58px) 0} .block.band{background:var(--bg-2);border-block:1px solid var(--line); padding:clamp(44px,5.5vw,72px) 0} .block.band + .block{padding-top:clamp(44px,5.5vw,68px)} .block + .block:not(.band){padding-top:clamp(20px,2.5vw,32px)} .home-hero{padding-bottom:clamp(36px,5vw,64px)} .card-d{font-size:.9rem;color:var(--ink-2);line-height:1.45;margin-top:6px; display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden} .card-m{font-size:.84rem;color:var(--ink-3);margin-top:10px;font-variant-numeric:tabular-nums} .card-t{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden} .wk-tag{font-size:.7rem;text-transform:uppercase;letter-spacing:.09em;font-weight:800; color:var(--ink-3)} .walk-day{background:var(--ink);border-color:var(--ink);color:var(--bg)} .walk-day .wk-tag{color:var(--amber)} .walk-day .wk-m{color:var(--amber)} .walk-day .wk-s{color:#ffffffa8} .walk-day:hover{border-color:var(--amber)} .hero-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.85fr); gap:clamp(28px,4vw,60px);align-items:center} @media (max-width:900px){.hero-grid{grid-template-columns:1fr}} .hero-text h1{font-size:clamp(2.3rem,5vw,3.9rem);max-width:14ch} .smap{display:block;border-radius:var(--r-xl);overflow:hidden;position:relative; border:1px solid var(--line);box-shadow:var(--shadow-lg);background:#eceadf} .sm-canvas{display:block;position:relative;width:100%;overflow:hidden} .sm-canvas img{position:absolute;max-width:none;display:block} .sm-drawn{display:block} .sm-live{position:absolute;inset:0;opacity:0;transition:opacity .45s ease} .sm-live.on{opacity:1} .sm-live .maplibregl-ctrl-attrib{font-size:9px;background:#ffffffcc} .sm-p{position:absolute;width:10px;height:10px;border-radius:50%;z-index:2; border:2px solid #fff;box-shadow:0 1px 4px #00000055;transform:translate(-50%,-50%)} .sm-tint{position:absolute;inset:0;z-index:1;pointer-events:none; background:linear-gradient(155deg,color-mix(in srgb,var(--accent) 13%,transparent), transparent 55%,color-mix(in srgb,var(--amber) 9%,transparent)); mix-blend-mode:multiply} .sm-drawn{position:relative;z-index:0;display:block;filter:saturate(.55)} .sm-shot{position:relative;z-index:0;display:block} .sm-shot + .sm-tint{display:none} .sm-shot img{display:block;width:100%;height:100%;object-fit:cover} .sm-pin{position:absolute;z-index:3;transform:translate(-50%,-50%); display:flex;flex-direction:column;align-items:center;gap:6px;width:76px} .sm-pin img{width:72px;height:72px;border-radius:16px;object-fit:cover; border:3px solid #fff;box-shadow:0 6px 18px #0000003d;background:var(--bg-2)} .sm-pin b{max-width:120px;text-align:center;font-size:.74rem;font-weight:750; letter-spacing:-.01em;line-height:1.2;color:#14161c;background:#fffffff0; padding:3px 8px;border-radius:99px;box-shadow:0 2px 6px #00000026} .cmap{display:block;width:100%;height:auto;aspect-ratio:1000/640} .cm-field{fill:#fff;opacity:.85} .cm-rings circle{fill:none;stroke:#8d8b7e;stroke-opacity:.34;stroke-width:1.4; stroke-dasharray:2 7;stroke-linecap:round} .cm-rl{font:600 15px/1 var(--font);fill:#8d8b7e;letter-spacing:.06em} .cm-tex{fill:#4a4d57;fill-opacity:.42} .cm-route{fill:none;stroke:#fff;stroke-width:9;stroke-opacity:.9; stroke-linecap:round;stroke-linejoin:round} .cm-route-in{fill:none;stroke:var(--amber);stroke-width:4.5; stroke-linecap:round;stroke-linejoin:round} .cm-node{fill:var(--amber);stroke:#fff;stroke-width:2.5} .cm-num{font:800 12px/1 var(--font);fill:#241a00} .cm-pin{stroke:#fff;stroke-width:2.5} .cm-l{font:700 19px/1 var(--font);fill:#2c2e35;paint-order:stroke; stroke:#f4f2ea;stroke-width:5px;stroke-linejoin:round;letter-spacing:-.01em} .smap::after{content:"";position:absolute;inset:0;pointer-events:none; background:linear-gradient(180deg,#0b0d1200 62%,#0b0d1233 84%,#0b0d1266 100%)} .sm-foot{position:absolute;left:14px;right:14px;bottom:14px;z-index:3;display:flex; align-items:center;justify-content:space-between;gap:12px;padding:10px 12px 10px 16px; color:#fff;background:#12141aec;border-radius:99px} .sm-t{font-weight:750;letter-spacing:-.018em;font-size:.97rem} .sm-c{font-weight:700;font-size:.85rem;background:#ffffff1f;border:1px solid #ffffff30; padding:6px 12px;border-radius:99px;white-space:nowrap;transition:background .2s} .smap:hover .sm-c{background:#ffffff36} .mapbox-home{height:clamp(320px,42vh,460px)} #hmap{position:absolute;inset:0} .walk-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px} .walk{display:flex;flex-direction:column;gap:8px;padding:20px;border-radius:var(--r-lg); background:var(--bg-2);border:1px solid var(--line);transition:.2s} .walk:hover{border-color:var(--accent);transform:translateY(-3px);box-shadow:var(--shadow)} .walk b{font-size:1.14rem;letter-spacing:-.022em;line-height:1.25} .wk-m{font-size:.87rem;color:var(--accent);font-weight:700;font-variant-numeric:tabular-nums} .wk-s{font-size:.88rem;color:var(--ink-3);line-height:1.5} .ev-rail{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px} .ev{display:flex;gap:14px;align-items:center;padding:15px 17px;border-radius:var(--r); background:var(--bg-2);border:1px solid var(--line);transition:.18s} .ev:hover{border-color:var(--accent)} .ev-d{font-size:1.5rem;font-weight:850;letter-spacing:-.03em;font-variant-numeric:tabular-nums} .ev-b b{display:block;letter-spacing:-.015em;line-height:1.3} .ev-b span{font-size:.85rem;color:var(--ink-3)} .know{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1px;margin:0} .kn{padding:16px 18px;background:var(--bg-2);border:1px solid var(--line); border-radius:var(--r)} .kn dt{font-size:.73rem;text-transform:uppercase;letter-spacing:.09em;color:var(--ink-3); font-weight:800;margin-bottom:6px} .kn dd{margin:0;line-height:1.5;color:var(--ink-2);font-size:.95rem} .prose-2{max-width:none;columns:2;column-gap:44px} .prose-2 p{break-inside:avoid;margin-bottom:1em} @media (max-width:820px){.prose-2{columns:1}} .faq-a a{color:var(--accent);font-weight:650;text-decoration:underline; text-underline-offset:3px;text-decoration-thickness:1.5px} .home-hero{padding:clamp(46px,7vw,92px) 0 clamp(30px,4vw,46px)} .home-hero h1{font-size:clamp(2.4rem,6vw,4.2rem);max-width:16ch} .home-hero .lead{color:var(--ink-2);font-size:clamp(1.05rem,2vw,1.28rem); max-width:58ch;margin-top:18px;line-height:1.55} .hstats{display:flex;flex-wrap:wrap;gap:clamp(22px,4vw,52px);margin-top:clamp(26px,4vw,40px); padding-top:26px;border-top:1px solid var(--line)} .hs b{display:block;font-size:clamp(1.6rem,3vw,2.2rem);font-weight:850;letter-spacing:-.035em; line-height:1;font-variant-numeric:tabular-nums} .hs span{display:block;font-size:.76rem;text-transform:uppercase;letter-spacing:.08em; color:var(--ink-3);font-weight:700;margin-top:7px} .block{padding:clamp(30px,4vw,50px) 0} .ctiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px} .ctile{display:flex;align-items:center;gap:12px;padding:15px 17px;border-radius:var(--r); background:var(--bg-2);border:1px solid var(--line);transition:.18s;font-weight:700} .ctile:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:var(--shadow)} .ct-g{width:34px;height:34px;flex:none;border-radius:10px;display:grid;place-items:center; background:var(--accent);color:#fff;font-size:1rem} .ct-n{letter-spacing:-.015em;line-height:1.25} .ct-c{margin-left:auto;color:var(--ink-3);font-variant-numeric:tabular-nums;font-size:.92rem} .c-rank{position:absolute;left:11px;top:11px;background:var(--amber);color:#241a00; font-weight:850;font-size:.82rem;padding:4px 10px;border-radius:99px; font-variant-numeric:tabular-nums;letter-spacing:-.01em} *,*::before,*::after{box-sizing:border-box} :root{ --ink:#12141a; --ink-2:#3d4350; --ink-3:#6c7280; --bg:#fbfaf8; --bg-2:#ffffff; --line:#e6e2db; --line-2:#f0ece5; --cobalt:#23347A; --amber:#F2A81D; --accent:#2B4C8C; --accent-soft:#2B4C8C14; --shadow:0 1px 2px #12141a08, 0 8px 24px -12px #12141a1f; --shadow-lg:0 2px 4px #12141a0a, 0 24px 48px -20px #12141a2e; --r:14px; --r-lg:22px; --r-xl:30px; --wrap:1180px; --gap:clamp(16px,3vw,28px); --fs-display:clamp(2.5rem,6.2vw,4.5rem); --font:-apple-system,BlinkMacSystemFont,"Segoe UI Variable","Segoe UI",Inter,system-ui,sans-serif; --mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,monospace; } html{-webkit-text-size-adjust:100%} body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font); font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased; font-feature-settings:"kern","liga","cv11";overflow-x:hidden} img{max-width:100%;display:block} a{color:inherit;text-decoration:none} h1,h2,h3,h4{margin:0;line-height:1.1;letter-spacing:-.022em;font-weight:800} p{margin:0 0 1em} .wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:clamp(16px,4vw,32px)} .skip{position:absolute;left:-9999px} .skip:focus{left:12px;top:12px;z-index:99;background:var(--bg-2);padding:10px 16px;border-radius:10px} :focus-visible{outline:2.5px solid var(--accent);outline-offset:3px;border-radius:6px} .top{position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--bg) 82%,transparent); backdrop-filter:blur(14px) saturate(1.6);border-bottom:1px solid transparent; transition:border-color .25s,background .25s} .top.stuck{border-bottom-color:var(--line)} .top-in{display:flex;align-items:center;gap:22px;height:62px} .brand{display:flex;align-items:center;gap:9px;font-weight:800;letter-spacing:-.03em;font-size:1.12rem} .brand-pin{width:22px;height:22px;flex:none} .tnav{display:flex;gap:2px;margin-left:auto;font-size:.94rem;font-weight:600} .tnav a{padding:8px 13px;border-radius:99px;color:var(--ink-2);transition:.18s} .tnav a:hover{background:var(--accent-soft);color:var(--ink)} .tnav a[aria-current]{background:var(--ink);color:var(--bg)} .lang{font:600 .84rem/1 var(--font);color:var(--ink-3);border:1px solid var(--line); background:none;padding:7px 11px;border-radius:99px;cursor:pointer} .hero{position:relative;isolation:isolate} .hero-media{position:relative;height:clamp(370px,54vh,580px);overflow:hidden; background:linear-gradient(150deg,var(--accent),color-mix(in srgb,var(--accent) 45%,#000))} .hero-media img{width:100%;height:100%;object-fit:cover; animation:heroIn 1.3s cubic-bezier(.16,1,.3,1) both} @keyframes heroIn{from{transform:scale(1.07)}to{transform:scale(1)}} .hero-media::after{content:"";position:absolute;inset:0; background:linear-gradient(178deg,#0b0d1233 0 28%,#0b0d1266 58%,#0b0d12e8 100%)} .hero-body{position:absolute;inset:auto 0 0 0;z-index:2;padding-bottom:clamp(22px,4vw,38px);color:#fff} .hero-body .wrap{display:grid;gap:14px} .crumb{display:flex;flex-wrap:wrap;gap:7px;align-items:center;font-size:.86rem; color:#ffffffbb;font-weight:600} .crumb a:hover{color:#fff;text-decoration:underline;text-underline-offset:3px} .crumb .sep{opacity:.45} .badges{display:flex;flex-wrap:wrap;gap:8px} .badge{display:inline-flex;align-items:center;gap:7px;font-size:.82rem;font-weight:700; padding:7px 13px;border-radius:99px;background:#ffffff1f;border:1px solid #ffffff2e; backdrop-filter:blur(8px);letter-spacing:-.01em} .badge-cat{background:#fff;color:#12141a;border-color:#fff} .badge-rank{background:var(--amber);border-color:var(--amber);color:#241a00} .badge .g{font-size:1em;line-height:1} h1.title{font-size:var(--fs-display);max-width:19ch; text-shadow:0 2px 30px #00000045;font-weight:850} .subline{display:flex;flex-wrap:wrap;gap:9px 16px;align-items:center; color:#ffffffdd;font-size:.98rem;font-weight:600} .subline .dot{width:4px;height:4px;border-radius:50%;background:#ffffff66} .hero-cta{display:flex;flex-wrap:wrap;gap:10px;margin-top:4px} .btn{display:inline-flex;align-items:center;justify-content:center;gap:8px; font:700 .95rem/1 var(--font);padding:13px 20px;border-radius:99px;cursor:pointer; border:1px solid transparent;transition:transform .16s,box-shadow .16s,background .16s; letter-spacing:-.01em;white-space:nowrap} .btn:hover{transform:translateY(-1.5px)} .btn:active{transform:translateY(0)} .btn-solid{background:var(--amber);color:#241a00;box-shadow:0 6px 20px -6px #f2a81d80} .btn-light{background:#fff;color:#12141a} .btn-glass{background:#ffffff1c;color:#fff;border-color:#ffffff33;backdrop-filter:blur(8px)} .btn-ghost{background:transparent;color:var(--ink);border-color:var(--line)} .btn-ghost:hover{background:var(--accent-soft)} .btn-block{width:100%} .facts{position:sticky;top:62px;z-index:30;background:var(--bg-2); border-bottom:1px solid var(--line);box-shadow:var(--shadow)} .facts-in{display:flex;gap:0;overflow-x:auto;scrollbar-width:none} .facts-in::-webkit-scrollbar{display:none} .fact{display:flex;align-items:center;gap:11px;padding:15px 22px 15px 0;margin-right:22px; border-right:1px solid var(--line-2);white-space:nowrap;flex:none} .fact:last-child{border-right:0;margin-right:0} .fact-i{width:36px;height:36px;flex:none;border-radius:11px;display:grid;place-items:center; background:var(--accent-soft);color:var(--accent);font-size:1.05rem} .fact-k{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em; color:var(--ink-3);font-weight:700;line-height:1.3} .fact-v{font-weight:750;font-size:1rem;letter-spacing:-.015em;line-height:1.25} .layout{display:grid;grid-template-columns:minmax(0,1fr) 336px;gap:clamp(28px,4vw,56px); padding:clamp(34px,5vw,60px) 0 70px;align-items:start} @media (max-width:980px){.layout{grid-template-columns:1fr}} .sec{margin:0 0 clamp(34px,5vw,54px)} .sec:last-child{margin-bottom:0} .eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:.74rem;font-weight:800; text-transform:uppercase;letter-spacing:.11em;color:var(--accent);margin-bottom:11px} .eyebrow::before{content:"";width:22px;height:2px;background:currentColor;border-radius:2px} h2.sh{font-size:clamp(1.5rem,3vw,2.05rem);margin-bottom:16px} .sh-row{display:flex;align-items:flex-end;justify-content:space-between;gap:18px; margin-bottom:18px;flex-wrap:wrap} .sh-row h2{margin:0} .more{font-weight:700;font-size:.93rem;color:var(--accent);white-space:nowrap} .more:hover{text-decoration:underline;text-underline-offset:4px} .lede{font-size:clamp(1.14rem,2.2vw,1.32rem);line-height:1.55;color:var(--ink); font-weight:500;letter-spacing:-.012em} .prose{color:var(--ink-2);max-width:66ch} /* a link inside running copy (e.g. "Home to Villa Kayu Raja...") was inheriting plain body colour with no underline — invisible as a link. Every in-content link needs to look clickable, not just be one. */ .prose a,.lede a,.tip a,.kn dd a{color:var(--accent);font-weight:650;text-decoration:underline; text-underline-offset:3px;text-decoration-thickness:1.5px} .gen{display:inline-flex;align-items:center;gap:6px;font-size:.72rem;font-weight:700; color:var(--ink-3);border:1px dashed var(--line);border-radius:8px;padding:3px 8px; text-transform:uppercase;letter-spacing:.06em;vertical-align:middle} .mapbox{position:relative;height:clamp(280px,38vh,400px);border-radius:var(--r-lg); overflow:hidden;border:1px solid var(--line);box-shadow:var(--shadow);background:var(--line-2)} #lmap{position:absolute;inset:0} .map-note{display:flex;gap:14px;flex-wrap:wrap;margin-top:12px;font-size:.86rem;color:var(--ink-3)} /* живі карти (MapLibre GL + OpenFreeMap, ліниво довантажується app.js через [data-iv-map]) */ .mapbox-home{position:relative;overflow:hidden;border-radius:var(--r-lg); border:1px solid var(--line);box-shadow:var(--shadow);background:var(--line-2)} .maplibregl-ctrl-attrib{font-size:9px;background:#ffffffcc} .maplibregl-ctrl-attrib a{color:var(--ink-3)} .maplibregl-ctrl-group{border-radius:var(--r)!important;box-shadow:var(--shadow)!important;overflow:hidden} .maplibregl-ctrl-group button+button{border-top:1px solid var(--line-2)} /* category/score pin: a plain coloured disc (icon or short text inside) */ .iv-pin{position:relative;display:flex;align-items:center;justify-content:center; width:28px;height:28px;border-radius:50%;background:var(--accent); border:2px solid #fff;box-shadow:0 2px 6px #12141a40;cursor:pointer} .iv-pin svg{width:15px;height:15px} .iv-pin b{color:#fff;font-size:10px;font-weight:800;letter-spacing:-.02em} /* "you are here" pin: a classic map teardrop, unmistakable at a glance */ .iv-pin.here{width:30px;height:30px;border-radius:50% 50% 50% 0;transform:rotate(-45deg); background:var(--amber);border:3px solid #fff;box-shadow:0 3px 8px #12141a4d} .iv-pin-dot{position:absolute;top:50%;left:50%;width:9px;height:9px;border-radius:50%; background:#fff;transform:translate(-50%,-50%) rotate(45deg)} .iv-pin-ring{position:absolute;inset:-11px;border-radius:50% 50% 50% 0;border:2px solid var(--amber); opacity:.5;animation:ivPulse 2.2s ease-out infinite} @keyframes ivPulse{0%{transform:scale(.5);opacity:.6}100%{transform:scale(1.6);opacity:0}} .iv-pop{font-family:var(--font);min-width:170px} .iv-pop b{display:block;font-size:13.5px;font-weight:750;color:var(--ink);margin-bottom:2px} .iv-pop-s{display:block;font-size:12px;color:var(--ink-3);margin-bottom:6px} .iv-pop a{font-weight:700;font-size:12.5px;color:var(--accent)} .maplibregl-popup-content{border-radius:var(--r);box-shadow:var(--shadow-lg);padding:11px 13px} .maplibregl-popup-close-button{font-size:16px;color:var(--ink-3)} /* auto-built legend under the map, matching the pins actually shown — tucked behind a toggle */ .map-leg-toggle{display:inline-flex;align-items:center;gap:6px;margin-top:10px;padding:0; background:none;border:none;font:inherit;font-size:.86rem;font-weight:600;color:var(--ink-3); cursor:pointer} .map-leg-toggle:hover{color:var(--accent)} .map-leg-i{display:inline-flex;font-size:15px;line-height:1} .map-leg-toggle.open .map-leg-i{color:var(--accent)} .map-note{margin-top:8px} .map-note[hidden]{display:none} .map-leg-ic{display:inline-flex;align-items:center;gap:6px;color:var(--ink-3)} .map-leg-ic svg{width:14px;height:14px;flex:none;color:var(--accent)} /* фотогалерея + лайтбокс (лінива ініціалізація в app.js через .gallery/.gal-item) */ .gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px} @media (min-width:520px){.gallery{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px}} .gal-item{position:relative;display:block;border:none;padding:0;margin:0;cursor:pointer; border-radius:var(--r);overflow:hidden;aspect-ratio:4/3;background:var(--line-2)} .gal-item img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s ease} .gal-item:hover img{transform:scale(1.06)} .gal-item::after{content:"";position:absolute;inset:0;pointer-events:none; background:linear-gradient(180deg,transparent 55%,#12141a4a 100%);opacity:0;transition:opacity .2s} .gal-item:hover::after,.gal-item:focus-visible::after{opacity:1} .gal-item:focus-visible{outline:2px solid var(--accent);outline-offset:2px} .gal-more{position:absolute;inset:0;display:flex;align-items:center;justify-content:center; background:#12141a80;color:#fff;font-weight:750;font-size:1.1rem;letter-spacing:-.01em} .iv-lightbox{position:fixed;inset:0;z-index:999;background:#0b0d12e6;display:flex; align-items:center;justify-content:center;padding:24px;animation:ivLbIn .15s ease} @keyframes ivLbIn{from{opacity:0}to{opacity:1}} .iv-lightbox img{max-width:min(92vw,1100px);max-height:78vh;object-fit:contain; border-radius:var(--r);box-shadow:var(--shadow-lg);background:#0b0d12} .iv-lb-cap{position:absolute;left:0;right:0;bottom:22px;text-align:center;color:#fff; font-size:.92rem;font-weight:650;text-shadow:0 1px 4px #00000080} .iv-lb-count{position:absolute;top:22px;left:24px;color:#ffffffb0;font-size:.8rem; font-family:var(--mono)} .iv-lb-close,.iv-lb-prev,.iv-lb-next{position:absolute;background:#ffffff1f; border:1px solid #ffffff30;color:#fff;border-radius:99px;cursor:pointer; display:flex;align-items:center;justify-content:center;transition:background .2s; font-size:20px;line-height:1;padding:0} .iv-lb-close:hover,.iv-lb-prev:hover,.iv-lb-next:hover{background:#ffffff36} .iv-lb-close{top:20px;right:20px;width:40px;height:40px} .iv-lb-prev,.iv-lb-next{top:50%;transform:translateY(-50%);width:48px;height:48px;font-size:24px} .iv-lb-prev{left:16px} .iv-lb-next{right:16px} @media (max-width:640px){ .iv-lb-prev,.iv-lb-next{width:38px;height:38px;font-size:19px} .iv-lb-prev{left:6px}.iv-lb-next{right:6px} } /* внутрішня розлінковка: сусідні вілли того ж міста + сайтовий футер (дані з scripts/pipeline/site_graph.json, рендер scripts/site_links.py — не прописувати вручну) */ .nearby{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px} .nearby-card{display:flex;align-items:center;justify-content:space-between;gap:12px; padding:14px 17px;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r); transition:.15s} .nearby-card:hover{border-color:var(--accent);box-shadow:var(--shadow)} .nearby-n{font-weight:700;font-size:14.5px;color:var(--ink);letter-spacing:-.01em} .nearby-p{font-size:12px;color:var(--ink-3);margin-top:2px} .nearby-s{font-weight:800;font-size:13px;color:var(--accent);flex:none} .site-foot{margin-top:8px;border-top:1px solid var(--line);padding:26px 0 34px} .site-foot-in{display:flex;flex-wrap:wrap;align-items:center;gap:14px 22px;justify-content:space-between} .site-foot-links{display:flex;gap:18px;flex-wrap:wrap} .site-foot-links a{font-weight:600;font-size:14px;color:var(--ink-2)} .site-foot-links a:hover{color:var(--accent)} .site-foot-c{font-size:12.5px;color:var(--ink-3);width:100%;order:3} @media(min-width:640px){.site-foot-c{width:auto;order:0;margin-left:auto}} .stops{display:grid;gap:9px;margin:0;padding:0;list-style:none} .stop{display:flex;align-items:center;gap:14px;padding:14px 17px;background:var(--bg-2); border:1px solid var(--line);border-radius:var(--r);transition:.18s} .stop:hover{border-color:var(--accent);box-shadow:var(--shadow)} .stop-i{width:38px;height:38px;flex:none;border-radius:11px;background:#1a1c22;color:#fff; display:grid;place-items:center;font-size:1rem;font-weight:800} .stop-n{font-weight:750;letter-spacing:-.015em} .stop-m{font-size:.85rem;color:var(--ink-3)} .stop-d{margin-left:auto;text-align:right;flex:none} .stop-d b{display:block;font-size:1.05rem;letter-spacing:-.02em;font-variant-numeric:tabular-nums} .stop-d span{font-size:.79rem;color:var(--ink-3)} .rail{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(232px,1fr);gap:15px; overflow-x:auto;padding-bottom:8px;scroll-snap-type:x mandatory;scrollbar-width:thin} .rail>*{scroll-snap-align:start} @media (min-width:700px){.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}} .card{display:flex;flex-direction:column;background:var(--bg-2);border:1px solid var(--line); border-radius:var(--r-lg);overflow:hidden;transition:.22s cubic-bezier(.16,1,.3,1)} .card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);border-color:var(--accent)} .card-ph{position:relative;aspect-ratio:16/11;overflow:hidden;background:var(--line-2)} .card-ph img{width:100%;height:100%;object-fit:cover;transition:transform .5s cubic-bezier(.16,1,.3,1)} .card:hover .card-ph img{transform:scale(1.06)} .card-ph-empty{display:grid;place-items:center;font-size:2.1rem;color:#ffffff9c} .rate{position:absolute;left:11px;bottom:11px;display:inline-flex;align-items:center;gap:5px; background:#0b0d12e0;color:#fff;font-weight:800;font-size:.83rem;padding:5px 10px; border-radius:99px;backdrop-filter:blur(6px);font-variant-numeric:tabular-nums} .rate .st{color:var(--amber)} .km{position:absolute;right:11px;top:11px;background:#ffffffec;color:#12141a; font-weight:800;font-size:.76rem;padding:4px 9px;border-radius:99px; font-variant-numeric:tabular-nums} .card-b{padding:14px 16px 16px;display:flex;flex-direction:column;flex:1} .card-m{margin-top:auto} .card-t{font-size:.71rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em; color:var(--accent);margin-bottom:5px} .card-n{font-weight:750;letter-spacing:-.018em;line-height:1.3;min-height:2.6em; display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden} .card-m{font-size:.85rem;color:var(--ink-3);margin-top:5px;font-variant-numeric:tabular-nums} .chips{display:flex;flex-wrap:wrap;gap:9px} .chip{display:inline-flex;align-items:center;gap:8px;padding:9px 15px;border-radius:99px; background:var(--bg-2);border:1px solid var(--line);font-weight:700;font-size:.9rem; transition:.18s;letter-spacing:-.01em} .chip:hover{border-color:var(--accent);background:var(--accent-soft);transform:translateY(-1.5px)} .chip b{font-variant-numeric:tabular-nums} .chip .g{opacity:.7} .route{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-lg); padding:clamp(20px,3vw,28px);box-shadow:var(--shadow)} .route-h{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:18px} .route-tot{display:flex;gap:22px;flex-wrap:wrap} .rt-n{font-size:1.55rem;font-weight:850;letter-spacing:-.03em;line-height:1; font-variant-numeric:tabular-nums} .rt-k{font-size:.73rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-3); font-weight:700;margin-top:4px} .tl{list-style:none;margin:0;padding:0;position:relative} .tl::before{content:"";position:absolute;left:15px;top:14px;bottom:22px;width:2px; background:linear-gradient(var(--accent),var(--line));border-radius:2px} .tl li{position:relative;padding:0 0 20px 46px} .tl li:last-child{padding-bottom:0} .tl-n{position:absolute;left:0;top:0;width:32px;height:32px;border-radius:50%; background:var(--accent);color:#fff;display:grid;place-items:center;font-weight:800; font-size:.88rem;box-shadow:0 0 0 4px var(--bg-2)} .tl-t{font-weight:750;letter-spacing:-.018em} .tl-m{font-size:.86rem;color:var(--ink-3)} .tl-w{font-size:.8rem;color:var(--ink-3);margin-top:7px;display:flex;align-items:center;gap:6px} .side{display:grid;gap:16px;position:sticky;top:132px} @media (max-width:980px){.side{position:static}} .panel{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-lg); padding:20px;box-shadow:var(--shadow)} .panel-h{font-size:.73rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em; color:var(--ink-3);margin-bottom:14px} .dl{margin:0;display:grid;gap:1px} .row{display:flex;gap:13px;padding:11px 0;border-bottom:1px solid var(--line-2)} .row:last-child{border-bottom:0} .row-i{width:26px;flex:none;color:var(--ink-3);text-align:center;font-size:1rem} .row dt{font-size:.74rem;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-3); font-weight:700;margin-bottom:2px} .row dd{margin:0;font-weight:650;letter-spacing:-.012em;line-height:1.4} .bigstat{text-align:center;padding:6px 0 2px} .bigstat b{display:block;font-size:2.6rem;font-weight:850;letter-spacing:-.045em;line-height:1; font-variant-numeric:tabular-nums; background:linear-gradient(160deg,var(--accent),color-mix(in srgb,var(--accent) 40%,var(--amber))); -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent} .bigstat span{font-size:.83rem;color:var(--ink-3);font-weight:650} .wx{display:flex;align-items:center;gap:11px;padding:13px 15px;border-radius:var(--r); background:var(--accent-soft);font-weight:650;font-size:.92rem;line-height:1.4} .wx .g{font-size:1.3rem;flex:none} /* FAQ — plain divs (not
: stays on the documented TinyMCE-safe tag list, same reasoning as the gallery tiles / map-legend toggle), JS-toggled in app.js the same way as those. */ .faq{display:grid;gap:9px} .faq-item{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r); overflow:hidden;transition:.18s} .faq-item.open{border-color:var(--accent)} .faq-q{cursor:pointer;padding:16px 19px;font-weight:750;letter-spacing:-.015em; display:flex;align-items:center;gap:12px} .faq-q::after{content:"+";margin-left:auto;font-size:1.35rem;font-weight:400; color:var(--ink-3);transition:transform .22s;line-height:1} .faq-item.open .faq-q::after{transform:rotate(45deg)} .faq-a{display:none;padding:0 19px 17px;color:var(--ink-2);max-width:64ch} .faq-item.open .faq-a{display:block} .dock{position:fixed;left:0;right:0;bottom:0;z-index:45;display:none;gap:10px;padding:11px 16px calc(11px + env(safe-area-inset-bottom));background:color-mix(in srgb,var(--bg) 90%,transparent); backdrop-filter:blur(16px);border-top:1px solid var(--line)} @media (max-width:700px){.dock{display:flex}.dock .btn{flex:1}body{padding-bottom:76px}} footer{border-top:1px solid var(--line);background:var(--bg-2);padding:44px 0 34px;margin-top:20px} .fgrid{display:grid;grid-template-columns:1.4fr repeat(2,1fr);gap:32px} @media (max-width:760px){.fgrid{grid-template-columns:1fr 1fr}} footer h4{font-size:.73rem;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-3); margin-bottom:13px;font-weight:800} .fcol{display:grid;gap:9px;font-size:.93rem;font-weight:600} .fcol a{color:var(--ink-2)} .fcol a:hover{color:var(--ink)} .fbot{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:34px; padding-top:20px;border-top:1px solid var(--line-2);font-size:.86rem;color:var(--ink-3)} .rv [data-rv]{transform:translateY(14px);transition:transform .6s cubic-bezier(.16,1,.3,1)} .rv [data-rv].in{transform:none} @media (prefers-reduced-motion:reduce){ *{animation-duration:.01ms!important;transition-duration:.01ms!important} .rv [data-rv]{transform:none} } .hub-hero{padding:clamp(44px,7vw,86px) 0 clamp(26px,4vw,40px);text-align:center} .hub-hero h1{font-size:clamp(2.3rem,5.6vw,4rem);max-width:22ch;margin-inline:auto} .hub-hero p{color:var(--ink-2);font-size:clamp(1.05rem,2vw,1.24rem);max-width:56ch; margin:16px auto 0} .hubgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(272px,1fr)); gap:clamp(14px,2vw,20px);padding-bottom:70px} .hcard{position:relative;display:flex;flex-direction:column;border-radius:var(--r-xl); overflow:hidden;background:var(--bg-2);border:1px solid var(--line);min-height:310px; transition:.26s cubic-bezier(.16,1,.3,1)} .hcard:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg)} .hc-ph{position:relative;height:158px;overflow:hidden;background:var(--accent)} .hc-ph img{width:100%;height:100%;object-fit:cover;opacity:.92; transition:transform .6s cubic-bezier(.16,1,.3,1)} .hcard:hover .hc-ph img{transform:scale(1.07)} .hc-ph::after{content:"";position:absolute;inset:0; background:linear-gradient(180deg,#0b0d1200,#0b0d1273)} .hc-g{position:absolute;left:16px;top:132px;width:52px;height:52px;border-radius:16px; background:var(--bg-2);border:1px solid var(--line);display:grid;place-items:center; font-size:1.5rem;z-index:3;box-shadow:var(--shadow);color:var(--accent)} .hc-n{position:absolute;right:14px;top:14px;background:#0b0d12d1;color:#fff;font-weight:800; font-size:.83rem;padding:5px 11px;border-radius:99px;backdrop-filter:blur(6px); font-variant-numeric:tabular-nums;z-index:2} .hc-b{padding:38px 20px 20px;display:flex;flex-direction:column;flex:1;gap:8px} .hc-b h3{font-size:1.26rem;letter-spacing:-.025em} .hc-b p{color:var(--ink-2);font-size:.93rem;margin:0;line-height:1.55; display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden} .hc-go{margin-top:auto;font-weight:750;font-size:.92rem;color:var(--accent); display:inline-flex;align-items:center;gap:7px} .hcard:hover .hc-go{gap:12px} .hc-go span{transition:transform .2s} .hcard:hover .hc-go span{transform:translateX(3px)} .cat-hero{padding:clamp(34px,5vw,62px) 0 clamp(20px,3vw,30px)} .cat-hero h1{font-size:clamp(2.1rem,5vw,3.4rem);max-width:24ch} .cat-hero p{color:var(--ink-2);max-width:62ch;font-size:clamp(1rem,1.8vw,1.15rem);margin-top:14px} .cat-stats{display:flex;gap:26px;flex-wrap:wrap;margin-top:22px} .cs b{display:block;font-size:1.7rem;font-weight:850;letter-spacing:-.035em;line-height:1; font-variant-numeric:tabular-nums} .cs span{font-size:.76rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-3); font-weight:700;margin-top:5px;display:block} .toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;padding:16px 0 24px; border-top:1px solid var(--line);margin-top:26px} .grid-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(258px,1fr)); gap:clamp(14px,2vw,19px);padding-bottom:70px} .pill{display:inline-flex;align-items:center;gap:7px;padding:9px 15px;border-radius:99px; border:1px solid var(--line);background:var(--bg-2);font-weight:700;font-size:.89rem; cursor:pointer;transition:.18s;color:var(--ink-2)} .pill:hover{border-color:var(--accent);color:var(--ink)} .pill.on{background:var(--ink);color:var(--bg);border-color:var(--ink)} .pill b{font-variant-numeric:tabular-nums;opacity:.6} .hide{display:none!important} .crumb-dark{color:var(--ink-3);margin-bottom:14px} .crumb-dark a:hover{color:var(--ink)} .hc-b{padding:38px 20px 20px} .sm-hero{padding:52px 0 8px} .sm-hero h1{margin:0 0 10px} .sm-hero p{color:var(--muted);max-width:62ch;margin:0} .sm-wrap{padding-bottom:64px} .sm-sec{border-top:1px solid var(--line);padding:22px 0} .sm-sec h2{font-size:1.05rem;margin:0 0 12px;display:flex;align-items:baseline;gap:8px} .sm-sec h2 a{color:inherit;text-decoration:none} .sm-sec h2 a:hover{color:var(--accent)} .sm-sec h2 span{font-family:'Space Mono';font-size:.72rem;font-weight:400;color:var(--muted)} .sm-list{list-style:none;margin:0;padding:0;columns:4;column-gap:26px;font-size:.92rem} .sm-list li{break-inside:avoid;margin:0 0 5px} .sm-list a{color:var(--ink);text-decoration:none} .sm-list a:hover{color:var(--accent);text-decoration:underline} @media(max-width:1000px){.sm-list{columns:2}} @media(max-width:560px){.sm-list{columns:1}} .foot-bottom a{color:#8f9bc9;text-decoration:none} .foot-bottom a:hover{color:#fff} /* iVillas data-viz (TinyMCE-safe: div+CSS, inline width/height only) */ /* review analytics: big score + horizontal sub-score bars */ .revhead{display:flex;align-items:flex-end;gap:20px;flex-wrap:wrap;margin:0 0 16px} .bigscore{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:54px;line-height:.86;letter-spacing:-.03em;color:var(--accent)} .bigscore .o{font-size:20px;font-weight:700;color:var(--ink-3)} .revsum{font-size:13.5px;line-height:1.5;color:var(--ink-2);max-width:34ch} .revsum b{color:var(--ink)} .scores{display:grid;grid-template-columns:1fr 1fr;gap:11px 30px;margin-top:4px} @media(max-width:620px){.scores{grid-template-columns:1fr}} .scorerow{display:grid;grid-template-columns:110px 1fr 40px;align-items:center;gap:12px} .scorerow .sl{font-size:13.5px;color:var(--ink-2)} .scorerow .st{height:8px;background:var(--line);border-radius:99px;overflow:hidden} .scorerow .st .bar{height:100%;background:var(--accent);border-radius:99px} .scorerow .sv{font-family:var(--mono);font-size:12.5px;font-weight:700;text-align:right;color:var(--ink);font-variant-numeric:tabular-nums} .scorerow.top .st .bar{background:var(--teal)} .scorerow.top .sv{color:var(--teal)} .scorerow.low .st .bar{background:var(--amber)} .scorerow.low .sv{color:var(--marigold-d)} /* seasonality: 12-month climate + crowd chart (bar height = rainfall; band = crowds) */ .climate{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--bg-2);padding:18px 18px 14px;box-shadow:var(--shadow);margin-bottom:16px} .clg{display:flex;gap:8px 16px;flex-wrap:wrap;font-family:var(--mono);font-size:10.5px;color:var(--ink-3);margin-bottom:14px} .clg span{display:flex;align-items:center;gap:6px} .clg .sw{width:10px;height:10px;border-radius:3px;flex:none} .mo-scroll{overflow-x:auto} @media (max-width:900px){ /* hint there's more to swipe on narrow screens, same fade pattern as .nav-links above */ .facts-in,.mo-scroll{mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent); -webkit-mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent)} } .months{display:grid;grid-template-columns:repeat(12,1fr);gap:7px;align-items:end;min-width:460px} .mo{display:flex;flex-direction:column;align-items:center} .mo .barwrap{height:86px;width:100%;display:flex;align-items:flex-end;justify-content:center} .mo .bar{width:62%;max-width:20px;border-radius:4px 4px 0 0;background:var(--accent);opacity:.85} .mo.dry .bar{opacity:.32} .mo .mlab{font-family:var(--mono);font-size:10.5px;color:var(--ink-3);margin-top:7px;padding-bottom:2px} .mo .crowd{width:100%;height:6px;border-radius:2px;margin-top:5px;background:var(--line)} .mo .crowd.quiet{background:var(--teal)} .mo .crowd.shoulder{background:var(--amber)} .mo .crowd.peak{background:#c9524a} .mo.sweet .mlab{color:var(--accent);font-weight:700;border-bottom:2px solid var(--accent)} /* benchmark: city-average marker on the score bars */ .scorerow .st{position:relative} .scorerow .st .avg{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--ink);opacity:.42;border-radius:2px} .scoreleg{font-family:var(--mono);font-size:11px;color:var(--ink-3);margin-top:11px;display:flex;align-items:center;gap:7px;flex-wrap:wrap} .scoreleg .mk{display:inline-block;width:2px;height:12px;background:var(--ink);opacity:.42;border-radius:2px;vertical-align:middle} /* location intelligence: walkability stat tiles */ .walkstats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;margin:6px 0 14px} @media(max-width:560px){.walkstats{grid-template-columns:repeat(2,1fr)}} .ws{background:var(--bg-2);padding:15px 12px;text-align:center} .ws b{display:block;font-family:'Bricolage Grotesque',sans-serif;font-size:30px;font-weight:800;color:var(--accent);line-height:1;letter-spacing:-.02em} .ws span{display:block;font-size:11.5px;color:var(--ink-3);margin-top:5px;text-transform:uppercase;letter-spacing:.05em} /* audience fit: "best suited for" meters, computed from location + price + amenities */ .fitgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:6px} @media(max-width:620px){.fitgrid{grid-template-columns:1fr}} .fit{border:1px solid var(--line);border-radius:var(--r);padding:13px 15px;background:var(--bg-2)} .fit-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:5px} .fit-h b{font-size:14px;color:var(--ink)} .meter{display:flex;gap:4px;flex:none} .meter i{width:9px;height:9px;border-radius:50%;background:var(--line);display:block} .meter i.on{background:var(--accent)} .fit.hi .meter i.on{background:var(--teal)} .fit.lo .meter i.on{background:var(--amber)} .fit p{margin:0;font-size:12.5px;color:var(--ink-2);line-height:1.45} /* getting around: address header + 3 columns of named POI (from our landmarks) */ .geo-head{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--bg-2);padding:15px 18px;display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:14px;box-shadow:var(--shadow)} .geo-head .addr b{font-family:'Bricolage Grotesque',sans-serif;font-size:16px;display:block;margin-bottom:2px;color:var(--ink)} .geo-head .addr span{font-family:var(--mono);font-size:12px;color:var(--ink-3)} .geo-head a{font-weight:600;font-size:13.5px;color:var(--accent);white-space:nowrap} .geo3{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px} .geocol{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--bg-2);padding:15px 18px} .geocol h3{font-family:'Bricolage Grotesque',sans-serif;font-size:15.5px;font-weight:800;margin:0 0 8px;color:var(--ink)} .geolist{list-style:none;margin:0;padding:0} .geoitem{display:flex;gap:11px;align-items:flex-start;padding:9px 0;border-top:1px solid var(--line-2)} .geoitem:first-child{border-top:0;padding-top:2px} .geoic{width:28px;height:28px;flex:none;border-radius:8px;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;font-size:13px} .geoic svg{width:15px;height:15px} .geoitem .nm{flex:1;min-width:0} .geoitem .nm b{font-weight:600;font-size:13.5px;color:var(--ink);display:block;line-height:1.25} .geoitem .nm small{font-size:11.5px;color:var(--ink-3)} .geoitem .dd{font-family:var(--mono);font-size:11.5px;color:var(--ink-2);text-align:right;white-space:nowrap;flex:none;line-height:1.3} /* iVillas MainText fixes: the pasted content has no site
above it, so header-relative sticky offsets misfire and inner grids can overflow the sticky sidebar. Neutralise for our pages. */ .facts{position:static;top:auto} /* don't pin the facts strip (nothing to offset from) */ .side{top:20px} /* keep the sidebar sticky, without the header offset */ .layout>div,.side,.geo3,.geocol,.scores,.walkstats,.facts-grid{min-width:0} /* let inner grids shrink, not overflow */ .geoitem .nm b,.geoitem .nm small{overflow-wrap:break-word} /* wrap long POI names at spaces, not mid-word */ /* brand mark: link to the site home from the hero top-left */ .hero{position:relative} .hero .brandmark{position:absolute;top:16px;left:22px;z-index:6;font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:20px;letter-spacing:-.02em;color:#fff;text-shadow:0 1px 10px rgba(0,0,0,.55);text-decoration:none} .hero .brandmark:hover{opacity:.85} /* ============ Hub pages (home / country / region) ============ Full-width themed-block layout for the site's upper tiers. See content_contract.md → "Hub pages". */ /* "coming soon" destination/region tile: gradient panel instead of a photo, amber status badge */ .hcard.up .hc-ph{background:linear-gradient(150deg,var(--accent),color-mix(in srgb,var(--accent) 45%,#000))} .hcard.up .hc-n{background:var(--amber);color:#241a00} /* grouped internal-link index: country → region → priority cities */ .browse-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(216px,1fr));gap:clamp(18px,2.6vw,30px);margin-top:22px} .branch{border-top:2px solid var(--accent);padding-top:13px} .branch.soon{border-top-color:var(--line)} .branch-c{display:inline-flex;align-items:center;gap:8px;font-weight:800;font-size:1.06rem;letter-spacing:-.02em;color:var(--ink)} .branch-c:hover{color:var(--accent)} .branch-c .tag{font:700 .6rem/1 var(--mono);text-transform:uppercase;letter-spacing:.1em;padding:3px 7px;border-radius:99px;background:var(--accent-soft);color:var(--accent)} .branch.soon .branch-c .tag{background:var(--line-2);color:var(--ink-3)} .branch-r{display:inline-flex;align-items:baseline;gap:7px;margin-top:6px;font-weight:750;font-size:.92rem;color:var(--accent)} .branch-r span{font-size:.68rem;font-weight:700;color:var(--ink-3);text-transform:uppercase;letter-spacing:.07em} .branch-cities{list-style:none;margin:11px 0 0;padding:0;display:grid;gap:2px} .branch-cities a{display:flex;justify-content:space-between;gap:10px;font-size:.93rem;color:var(--ink-2);padding:4px 0;border-bottom:1px solid var(--line-2)} .branch-cities li:last-child a{border-bottom:0} .branch-cities a:hover{color:var(--accent)} .branch-cities b{font-variant-numeric:tabular-nums;color:var(--ink-3);font-weight:800;font-size:.76rem} /* flagship-villa pill strip (compact villa deep-links, one per villa per page) */ .flagships{margin-top:clamp(28px,3.4vw,44px);border-top:1px solid var(--line);padding-top:22px} .flag-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:13px} .flag{display:inline-flex;align-items:center;gap:9px;padding:9px 13px 9px 9px;border-radius:99px;background:var(--bg-2);border:1px solid var(--line);font-weight:700;font-size:.92rem;letter-spacing:-.01em;transition:transform .16s,border-color .16s} .flag:hover{border-color:var(--accent);transform:translateY(-1.5px)} .flag i{font-style:normal;font-variant-numeric:tabular-nums;background:var(--accent);color:#fff;font-size:.78rem;font-weight:800;padding:3px 8px;border-radius:99px} .flag span{color:var(--ink-3);font-weight:600;font-size:.82rem} /* audience matcher (.stops): make the right-hand destination links read as links */ .stops .stop-d{max-width:46%} .stops .stop-d a{color:var(--accent);font-weight:700} .stops .stop-d a:hover{text-decoration:underline;text-underline-offset:3px}