
:root{
--pink:#d86487;--pink-d:#bf4f70;--pink-l:#eeaac3;--pink-w:#f7d9e3;
--blush:#f7ebe9;--blush-2:#f1dfdd;--cream:#fdfaf8;
--plum:#4a202a;--wine:#76162c;
--ink:#2b1a20;--ink-2:#5b4148;--muted:#8a6f76;
--line:#ead9d8;--line-2:#dfc8c7;--focus:#4a202a;
--sh-1:0 1px 2px rgba(118,22,44,.05);
--sh-2:0 2px 4px rgba(118,22,44,.05),0 16px 36px -18px rgba(118,22,44,.26);
--sh-3:0 2px 6px rgba(118,22,44,.06),0 46px 94px -40px rgba(118,22,44,.44);
--pad:clamp(20px,5vw,44px);--sp:clamp(84px,10vw,150px);
--fs-h2:clamp(31px,4.6vw,56px);--fs-h3:clamp(19px,1.5vw,22px);
--fs-lead:clamp(17.5px,1.55vw,21px);
--ease:cubic-bezier(.2,.7,.2,1);--z-head:40;
}
*{box-sizing:border-box;margin:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}
body{background:var(--cream);color:var(--ink);font-family:'Dilmuss','Montserrat',system-ui,sans-serif;
font-size:clamp(16px,1.1vw,17.5px);line-height:1.62;-webkit-font-smoothing:antialiased;
font-feature-settings:"kern" 1;overflow-x:hidden;position:relative}
body::after{content:"";position:fixed;inset:0;z-index:9;pointer-events:none;opacity:.055;
background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");mix-blend-mode:multiply}
img{max-width:100%;display:block}
a{color:inherit}
::selection{background:var(--pink);color:#fff}
:focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:5px}
.skip{position:absolute;left:-9999px;top:0;background:var(--plum);color:#fff;padding:13px 22px;z-index:100;border-radius:0 0 12px 0}
.skip:focus{left:0}
.wrap{max-width:1240px;margin-inline:auto;padding-inline:var(--pad)}
.tnum{font-variant-numeric:tabular-nums}
.vis-h{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
/* --- lockup --- */
.lock{display:flex;flex-direction:column;align-items:flex-start}
.lk{display:block;height:auto;width:100%;color:inherit}
.lk-bir{width:60.3%;margin-bottom:.6%}
.byrow{display:block;width:41.7%;margin-top:2.2%}
.lock.center .lk-bir,.lock.center .byrow{margin-inline:auto}
/* --- type --- */
.eyebrow{font-size:11.5px;letter-spacing:.26em;text-transform:uppercase;font-weight:700;color:var(--pink)}
h2{font-size:var(--fs-h2);font-weight:800;letter-spacing:-.032em;line-height:1.03;color:var(--plum);text-wrap:balance}
h3{font-size:var(--fs-h3);font-weight:700;letter-spacing:-.014em;color:var(--plum);text-wrap:balance}
p{text-wrap:pretty}
.lead{color:var(--ink-2);font-size:var(--fs-lead);line-height:1.56;max-width:52ch}
.rule{height:2px;width:64px;background:var(--pink);border-radius:2px}
/* --- buttons --- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;border:0;cursor:pointer;
text-decoration:none;font:inherit;font-weight:700;font-size:17px;border-radius:15px;padding:20px 42px;
transition:background .2s var(--ease),transform .2s var(--ease),box-shadow .2s var(--ease)}
.btn:hover{transform:translateY(-2px)}
.btn:active{transform:translateY(1px) scale(.99)}
.btn:disabled{opacity:.62;cursor:default;transform:none}
.btn-p{background:var(--pink-d);color:#fff;box-shadow:0 14px 32px -14px rgba(191,79,112,.8)}
.btn-p:hover{background:var(--pink-d);box-shadow:0 20px 44px -16px rgba(216,100,135,.9)}
.btn-w{background:#fff;color:var(--wine);box-shadow:0 14px 32px -14px rgba(58,14,26,.55)}
.btn-w:hover{background:#fff7f9}
/* --- header --- */
.hdr{position:absolute;inset-block-start:0;inset-inline:0;z-index:var(--z-head)}
.hdr .wrap{display:flex;align-items:center;justify-content:space-between;padding-block:26px}
.hdr img{height:19px;width:auto}
.lang{display:flex;gap:16px;font-size:12.5px;font-weight:700;letter-spacing:.06em}
.lang a{opacity:.5;text-decoration:none;transition:opacity .18s}
.lang a:hover{opacity:.85}
.lang a[aria-current]{opacity:1;border-bottom:2px solid currentColor;padding-bottom:3px}
/* --- shared --- */
.hero{position:relative;isolation:isolate}
.hero>.wrap{width:100%;min-width:0;box-sizing:border-box}
section{scroll-margin-top:20px}
.sec{padding-block:var(--sp)}
.sec-tint{background:var(--blush)}
/* --- form primitives --- */
.fg{display:grid;gap:19px;grid-template-columns:1fr}
@media(min-width:600px){.fg{grid-template-columns:1fr 1fr}.fg .w{grid-column:1/-1}}
.f label,.f .lbl{display:block;font-size:14px;font-weight:600;color:var(--plum);margin-bottom:8px}
.f input,.f select{display:block;width:100%;font:inherit;font-size:16.5px;color:var(--ink);
background:var(--cream);border:1.5px solid var(--line);border-radius:14px;padding:16px 18px;min-block-size:56px;
transition:border-color .18s,box-shadow .18s,background .18s;-webkit-appearance:none;appearance:none}
.f input::placeholder{color:#bfa3a9}
.f input:hover{border-color:var(--line-2)}
.f input:focus{outline:none;border-color:var(--pink);background:#fff;box-shadow:0 0 0 4px rgba(216,100,135,.15)}
.f .hint{font-size:12.5px;color:var(--muted);margin-top:8px}
.f .err{display:none;font-size:13px;font-weight:600;color:var(--wine);margin-top:8px}
.f.bad .err{display:block}
.f.bad input{border-color:var(--wine);background:#fff}
/* joy qidiruvi — xaritani ko'chirish uchun.
   Ataylab .f input dan KICHIKROQ va yengilroq: bu forma maydoni emas,
   xaritaning asbobi. Bir xil qilinsa odam uni ham to'ldirish shart deb
   o'ylaydi va to'ldirmaganini "xato" deb qabul qiladi. */
.msearch{position:relative;margin-bottom:10px}
.msearch .qin{display:block;width:100%;font:inherit;font-size:15px;color:var(--ink);
background:#fff;border:1.5px solid var(--line);border-radius:12px;padding:12px 15px;min-block-size:46px;
transition:border-color .18s,box-shadow .18s;-webkit-appearance:none;appearance:none}
.msearch .qin::placeholder{color:#bfa3a9}
.msearch .qin:hover{border-color:var(--line-2)}
.msearch .qin:focus{outline:none;border-color:var(--pink);box-shadow:0 0 0 4px rgba(216,100,135,.15)}
.qlist{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:30;margin:0;padding:5px;
list-style:none;background:#fff;border:1.5px solid var(--line);border-radius:14px;box-shadow:var(--sh-3);
/* Xarita 200px. Ro'yxat bundan baland bo'lsa "Shu joyni belgilash" tugmasi
   ustiga chiqib ketadi va ro'yxat qayerda tugashi ko'rinmay qoladi. */
max-block-size:196px;overflow-y:auto}
/* min-block-size — barmoq bilan bosish uchun eng kam o'lcham (44px).
   Ilgari bitta qatorli natija 40px edi. */
.qlist li{display:flex;gap:10px;align-items:center;padding:10px 12px;border-radius:9px;
cursor:pointer;font-size:14.5px;line-height:1.35;min-block-size:44px}
.qlist li:hover,.qlist li.on{background:var(--blush)}
.qlist .qn{font-weight:600;color:var(--plum)}
.qlist .qv{color:var(--muted);font-size:12.5px}
.qlist .qt{margin-left:auto;color:var(--muted);font-size:12px;white-space:nowrap}
.qlist .qbosh{display:block;padding:11px 12px;color:var(--muted);font-size:13.5px;cursor:default}
.qlist .qbosh:hover{background:none}
/* Telefonda nom + viloyat bir qatorga sig'maydi va so'zlar o'rtasidan
   sinib ketadi ("Toshkent / shahri"). Shuning uchun viloyatni ATAYLAB
   pastki qatorga tushiramiz: [nom ... tur] / [viloyat]. */
@media(max-width:560px){
 .qlist{max-block-size:182px}
 .qlist li{flex-wrap:wrap;row-gap:1px;padding:9px 11px}
 .qlist .qn{flex:0 1 auto}
 .qlist .qt{flex:0 0 auto}
 .qlist .qv{flex:1 0 100%;order:3}}
/* map (TZ 4.4) */
.mapbox{position:relative;block-size:200px;border-radius:16px;overflow:hidden;border:1.5px solid var(--line);
background:radial-gradient(circle at 1px 1px,rgba(74,32,42,.11) 1px,transparent 0) 0 0/17px 17px,var(--blush)}
.mapbox.set .pin{animation:drop .5s var(--ease) both}
@keyframes drop{0%{transform:rotate(-45deg) translateY(-26px) scale(.7);opacity:0}
60%{transform:rotate(-45deg) translateY(4px) scale(1.06)}100%{transform:rotate(-45deg) translateY(0) scale(1);opacity:1}}
.maddr{position:absolute;left:14px;top:14px;max-inline-size:calc(100% - 28px);background:#fff;color:var(--plum);
font-size:13px;font-weight:600;padding:9px 13px;border-radius:10px;box-shadow:var(--sh-2);
white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mapbox.set .maddr{color:var(--wine)}
.mapbox .pin{position:absolute;left:50%;top:44%;inline-size:20px;block-size:20px;margin:-10px 0 0 -10px;
background:var(--pink);border-radius:50% 50% 50% 0;transform:rotate(-45deg);
box-shadow:0 10px 20px -8px rgba(118,22,44,.6)}
.mapbox .pin::after{content:"";position:absolute;inset:6px;background:#fff;border-radius:50%}
.mapbox .ring{position:absolute;left:50%;top:44%;inline-size:52px;block-size:52px;margin:-26px 0 0 -26px;
border-radius:50%;border:2px solid var(--pink);opacity:.42;animation:ping 2.6s var(--ease) infinite}
@keyframes ping{0%{transform:scale(.55);opacity:.5}70%{transform:scale(1.25);opacity:0}100%{opacity:0}}
.mbtn{position:absolute;left:50%;bottom:15px;transform:translateX(-50%);background:#fff;color:var(--plum);
border:1px solid var(--line);border-radius:12px;padding:12px 20px;font:inherit;font-size:14.5px;font-weight:700;
cursor:pointer;box-shadow:var(--sh-2);transition:transform .18s var(--ease),box-shadow .18s}
.mbtn:hover{transform:translateX(-50%) translateY(-2px);box-shadow:var(--sh-3)}
.mbtn:active{transform:translateX(-50%) translateY(1px)}
@media(max-width:560px){.mapbox{block-size:186px}
 .mapbox .pin,.mapbox .ring{top:36%}
 .mbtn{left:12px;right:12px;bottom:12px;transform:none;padding:13px 14px;font-size:14px;white-space:nowrap}
 .mbtn:hover{transform:translateY(-2px)}.mbtn:active{transform:translateY(1px)}}
.consent{display:grid;grid-template-columns:24px 1fr;gap:13px;align-items:start;font-size:14.5px;
color:var(--ink-2);line-height:1.6;margin-block:26px 28px}
.consent input{inline-size:24px;block-size:24px;margin-top:2px;accent-color:var(--pink);cursor:pointer}
.consent a{color:var(--pink);font-weight:600;white-space:nowrap}
.consent.bad span{color:var(--wine)}
form .btn{width:100%}
.fine{grid-column:1/-1;font-size:13.5px;color:var(--muted);margin-top:17px;text-align:center;line-height:1.55}
.ok[hidden]{display:none}
.ok{display:grid;gap:10px;padding:34px 30px;border-radius:20px;background:var(--blush);
border:1.5px solid var(--pink-w);text-align:left}
.ok b{font-size:clamp(21px,2.4vw,27px);color:var(--plum);letter-spacing:-.02em;line-height:1.15}
.ok span{color:var(--ink-2);font-size:15.5px}
/* --- entrance + reveal --- */
@keyframes up{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}
.up{animation:up .8s var(--ease) both;animation-delay:calc(var(--i,0)*90ms)}
.rv-on [data-rv]{opacity:0;transform:translateY(22px)}
[data-rv]{transition:opacity .85s var(--ease),transform .85s var(--ease);transition-delay:calc(var(--i,0)*80ms)}
.rv-on [data-rv].in{opacity:1;transform:none}

.hero{min-block-size:100dvh;display:grid;align-items:center;position:relative;
background:var(--pink-w);color:var(--plum);overflow:hidden}
/* Tekis rang yassi ko'rinmasin: sarlavha ortida yorug'lik havzasi,
   pastki chekkada esa og'irlik — shundan bo'lim hajm oladi. */
.hero::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background:
radial-gradient(56% 50% at 50% 42%,rgba(255,255,255,.92),rgba(253,246,249,.5) 46%,rgba(255,255,255,0) 76%),
linear-gradient(180deg,rgba(238,170,195,0) 56%,rgba(238,170,195,.55) 100%)}
.hero .gul{position:absolute;inset-block-end:0;inset-inline-start:50%;
translate:-50% 0;inline-size:104%;min-inline-size:1180px;max-inline-size:none;
height:auto;z-index:0;pointer-events:none;opacity:.42}
@media(max-width:820px){.hero .gul{inline-size:215%;min-inline-size:0;opacity:.46}}
.hero .wrap{position:relative;z-index:1;padding-block:clamp(88px,12vh,130px);text-align:center}
.hero .lock{inline-size:min(90vw,560px);margin-block:0 34px;margin-inline:auto}

.f2{background:var(--pink)}
.f2 .p2{display:grid;gap:40px}
@media(min-width:980px){.f2 .p2{gap:clamp(40px,4vw,64px)}}
.f2 h2{color:#fff;margin-top:0}
.f2 .hd{text-align:center}
.f2 .fg{max-width:640px;margin-inline:auto;width:100%}
.f2 .f label,.f2 .f .lbl{color:#fff}
.f2 .f input{background:#fff;border-color:#fff;color:var(--ink)}
.f2 .f input::placeholder{color:#b39aa0}
.f2 .f input:focus{box-shadow:0 0 0 4px rgba(255,255,255,.4)}
.f2 .f .hint{color:rgba(255,255,255,.82)}
.f2 .f .err{color:#fff;font-weight:700}
.f2 .mapbox{border-color:rgba(255,255,255,.5);
background:radial-gradient(circle at 1px 1px,rgba(255,255,255,.35) 1px,transparent 0) 0 0/17px 17px,rgba(255,255,255,.14)}
.f2 .mapbox .pin{background:#fff}.f2 .mapbox .pin::after{background:var(--pink)}
.f2 .mapbox .ring{border-color:#fff}
.f2 .consent{color:rgba(255,255,255,.94)}.f2 .consent a{color:#fff}
.f2 .btn-p{background:#fff;color:var(--wine);box-shadow:0 16px 36px -14px rgba(58,14,26,.55)}
.f2 .btn-p:hover{background:#fff5f7}
.f2 .fine{color:rgba(255,255,255,.86)}
.f2 .ok{background:#fff;border-color:#fff}.v2{position:relative;isolation:isolate;padding-block:clamp(96px,14vw,190px);color:#fff;overflow:hidden}
.v2 img{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;object-position:50% 42%}
.v2::after{content:"";position:absolute;inset:0;z-index:-1;
background:linear-gradient(100deg,rgba(40,8,17,.88) 0%,rgba(40,8,17,.62) 46%,rgba(40,8,17,.28) 100%)}
.v2 h2{color:#fff;max-width:14ch;text-shadow:0 2px 24px rgba(30,6,13,.45)}.t2{background:#3a1220;color:#f4e3e6}
.t2 .top{display:grid;gap:24px;padding-block:52px 34px;justify-items:center;text-align:center}
.t2 img{height:18px;width:auto}
.t2 nav{display:grid;gap:13px;font-size:15px}
@media(min-width:560px){.t2 nav{display:flex;flex-wrap:wrap;justify-content:center;gap:12px 30px}}
.t2 a{text-decoration:none;border-bottom:1px solid transparent;transition:border-color .18s}
.t2 a:hover{border-color:var(--pink-l)}
.t2 .bot{border-top:1px solid rgba(255,255,255,.14);padding-block:20px 32px;font-size:13px;color:#c6a4ad;text-align:center}
/* --- staging eslatmasi va forma holatlari (1-sessiya) --- */
.stg{position:fixed;inset-inline:0;bottom:0;z-index:60;background:var(--plum);color:#fff;
font-size:13px;text-align:center;padding:9px 14px}
.stg b{color:var(--pink-l)}

/* --- CSP: inline style o'rniga klasslar (2026-08-15) --- */
.d1{--i:1}.d2{--i:2}.d3{--i:3}
.logo-w{filter:brightness(0) invert(1)}
.hdr-w{color:#fff}

/* --- 2-sessiya: honeypot va forma xatosi --- */
.hp{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}
.formerr{grid-column:1/-1;background:#fff;color:var(--wine);border:1.5px solid var(--wine);
border-radius:12px;padding:14px 16px;font-size:14.5px;font-weight:600;margin-bottom:4px}
.consent .err{margin-top:8px;grid-column:2}

/* --- Pushti panelda xato matni: oq ham, vino ham AA dan o'tmaydi.
       Yechim — oq chip ustida vino matn (10.9:1). --- */
.f2 .f .err,.f2 .consent .err{color:var(--wine);background:#fff;border-radius:9px;
padding:7px 11px;font-weight:700}
.f2 .f.bad input{border-color:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.55)}

/* --- 3-sessiya: xarita --- */
.mapbox{position:relative;block-size:340px;border-radius:16px;overflow:hidden;
border:1.5px solid var(--line);background:var(--blush)}
#map{position:absolute;inset:0}
.mapbox .pin{position:absolute;left:50%;top:50%;inline-size:22px;block-size:22px;
margin:-26.5px 0 0 -11px;background:var(--pink);border-radius:50% 50% 50% 0;
transform:rotate(-45deg);box-shadow:0 10px 20px -8px rgba(118,22,44,.6);pointer-events:none;z-index:2}
.mapbox .pin::after{content:"";position:absolute;inset:6px;background:#fff;border-radius:50%}
.mapbox .maddr{position:absolute;left:12px;top:12px;z-index:3;max-inline-size:calc(100% - 24px);
background:#fff;color:var(--plum);font-size:13px;font-weight:600;padding:8px 12px;border-radius:10px;
box-shadow:var(--sh-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#mapWrap.set .maddr{color:var(--wine)}
.mbtn{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);z-index:3;background:#fff;
color:var(--plum);border:1px solid var(--line);border-radius:12px;padding:12px 20px;font:inherit;
font-size:14.5px;font-weight:700;cursor:pointer;box-shadow:var(--sh-2);transition:transform .18s var(--ease)}
.mbtn:hover{transform:translateX(-50%) translateY(-2px)}
.mbtn:active{transform:translateX(-50%) translateY(1px)}
.mgeo{position:absolute;right:12px;bottom:14px;z-index:3;background:#fff;color:var(--plum);
border:1px solid var(--line);border-radius:11px;padding:10px 14px;font:inherit;font-size:13.5px;
font-weight:700;cursor:pointer;box-shadow:var(--sh-2)}
/* Telefonda "Joylashuvimni topish" YASHIRILMAYDI: GPS aynan telefonda aniq
   ishlaydi va butun mamlakat ko'rinishidan uyni qo'lda topish eng og'iri shu yerda.
   Ikkala tugma pastda yonma-yon turadi. */
/* Tor ekranda tugma matnlari qisqaradi — ikkalasi ham 335px xaritaga sig'sin.
   Uzun variantda ular 15px ustma-ust tushardi. */
.t-sm{display:none}
@media(max-width:560px){.mapbox{block-size:300px}
 .t-lg{display:none}.t-sm{display:inline}
 .mgeo{left:10px;right:auto;bottom:10px;padding:11px 13px;font-size:13px}
 .mbtn{left:auto;right:10px;bottom:10px;transform:none;padding:11px 15px;font-size:13px}
 .mbtn:hover,.mbtn:active{transform:none}}
.maplibregl-ctrl-attrib{font-size:10px}

/* --- 3-sessiya tuzatishlari --- */
/* 1) .w har doim to'liq qatorni egallasin (avval faqat ba'zilariga tegardi) */
.fg > .w, .fg > .consent, .fg > .btn, .fg > .fine, .fg > .formerr, .fg > .ok{grid-column:1/-1}
/* 2) rozilik xatosi FAQAT xato bo'lganda ko'rinsin
      (.err{display:none} qoidasi .f ichida edi, .consent unga tushmasdi) */
/* .f2 .consent .err (0,3,0) qoidasidan kuchliroq bo'lishi kerak */

/* 3) rozilik matni checkbox bilan bir qatorda tekis tursin */
.consent{align-items:start}
.consent > span{align-self:center}

/* --- pin uchi xarita MARKAZIDA turishi kerak ---
   22px kvadrat -45deg burilganda pastki uch element markazidan
   (22/2)*sqrt(2) = 15.56px pastda bo'ladi. Demak element markazi
   -15.56px, ustki cheti -15.56-11 = -26.56px bo'lishi shart.
   Avval -22px edi -> uch markazdan 5px pastda, ya'ni saqlanadigan
   koordinata foydalanuvchi ko'rgan nuqtadan farq qilardi. */
.mapbox .pin{margin-top:-26.6px}

/* --- XATO MATNI: ko'rinish FAQAT .bad orqali ---
   Ilgari rang qoidasi (.f2 .f .err) ichida display:inline-block bor edi.
   U (0,3,0) bilan .f .err{display:none} (0,2,0) dan kuchli bo'lib,
   sahifa ochilishida BARCHA xato yozuvlari ko'rinib turardi. */
.f .err,.f2 .f .err,.consent .err,.f2 .consent .err{display:none}
.f.bad .err,.f2 .f.bad .err,.consent.bad .err,.f2 .consent.bad .err{display:inline-block}
