/*
 * owners.flipflat.me — оформление по макету _incoming/owners/vitrina.html
 * (перенос 17.09.2026). Палитра, шрифт Onest, сетка, карточки объявлений,
 * стикер, тёмная плашка финальной формы — из макета.
 *
 * Сверх макета здесь только то, без чего не работает живая страница:
 * ошибка формы, экран «спасибо» с дозагрузкой, отзывы из reviews.json,
 * страницы /policy и /upload. Классы этих блоков менять нельзя — на них
 * держится owners.js и uploader.js.
 *
 * Грузинский: Onest не содержит грузинских глифов, поэтому для html[lang=ka]
 * первым в цепочке идёт Noto Sans Georgian.
 */
:root{
  --ink:#100a29; --violet:#502ec8; --indigo:#311d7c; --lav:#d8c8f0; --lav2:#9f77dc;
  --yellow:#ffd35c; --white:#fff; --muted:#3a3357; --muted2:#6a6386;
  --r:14px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}
body{font-family:'Onest',system-ui,sans-serif;color:var(--ink);background:var(--white);line-height:1.5;-webkit-font-smoothing:antialiased}
html[lang="ka"] body,
html[lang="ka"] button,
html[lang="ka"] input{font-family:'Noto Sans Georgian','Onest',system-ui,sans-serif}
a{color:inherit}
img{max-width:100%}
.wrap{max-width:1120px;margin:0 auto;padding:0 24px}
button,input{font:inherit}
:focus-visible{outline:3px solid var(--yellow);outline-offset:3px}
[hidden]{display:none!important}

/* header */
header{padding:22px 0}
header .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px}
.brand{display:block;line-height:0}
.brand img{width:118px;height:auto;display:block}
.lang{display:flex;border:1.5px solid var(--lav);border-radius:999px;padding:3px;flex:0 0 auto}
.lang button{border:0;background:transparent;padding:6px 14px;border-radius:999px;cursor:pointer;font-weight:500;color:var(--indigo)}
.lang button[aria-pressed="true"]{background:var(--ink);color:#fff}

/* hero */
.hero{padding:40px 0 72px}
.hero .wrap{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center}
h1{font-size:clamp(2.3rem,5.2vw,4.1rem);line-height:1.02;letter-spacing:-.035em;font-weight:700;max-width:14ch}
.lead{margin:22px 0 32px;font-size:1.125rem;max-width:40ch;color:var(--muted)}

/* form */
.form{background:var(--white);border:1.5px solid var(--lav);border-radius:var(--r);padding:18px;max-width:520px}
.form .row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.field label{display:block;font-size:.85rem;font-weight:500;color:var(--indigo);margin-bottom:6px}
.field input{width:100%;padding:13px 14px;border:1.5px solid var(--lav);border-radius:10px;background:#fff;color:var(--ink)}
.field input:focus{border-color:var(--violet);outline:none}
.field input[aria-invalid="true"]{border-color:#a6306b}
.phone{display:flex;align-items:center;border:1.5px solid var(--lav);border-radius:10px;background:#fff}
.phone:focus-within{border-color:var(--violet)}
.phone b{padding:0 0 0 14px;font-weight:500;color:var(--muted)}
.phone input{border:0;padding-left:8px}
.phone input:focus{outline:none}
.phone input[aria-invalid="true"]{color:#a6306b}
.btn{display:inline-block;width:100%;margin-top:12px;padding:15px 20px;border:0;border-radius:10px;background:var(--violet);color:#fff;font-weight:700;font-size:1.05rem;cursor:pointer}
.btn:hover{background:var(--indigo)}
.btn[disabled]{opacity:.6;cursor:default}
.btn-ghost{width:auto;margin:0;background:transparent;border:1.5px solid var(--lav);color:var(--indigo);font-weight:500;font-size:.95rem;padding:10px 16px}
.btn-ghost:hover{background:var(--lav);color:var(--ink)}
.fine{margin-top:12px;font-size:.8rem;color:var(--muted2)}
.fine a{color:var(--muted2)}
.form-error{margin-top:10px;color:#a6306b;font-size:.9rem;font-weight:500}
/* honeypot: вне экрана, но не display:none — боты пропускают скрытые поля */
.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}

/* карточки объявлений (первый экран) */
.stack{position:relative;height:520px}
.card{position:absolute;width:min(360px,100%);background:#fff;border-radius:18px;padding:12px;box-shadow:0 30px 60px -30px rgba(16,10,41,.35),0 0 0 1.5px var(--lav)}
.card.back{right:0;top:0;transform:rotate(5deg);opacity:.85}
.card.front{left:0;bottom:0;transform:rotate(-3deg)}
.photos{display:grid;grid-template-columns:2fr 1fr;grid-template-rows:110px 110px;gap:6px;border-radius:12px;overflow:hidden}
.photos img{display:block;width:100%;height:100%;object-fit:cover}
.photos img:first-child{grid-row:1/3}
.card h4{margin:14px 6px 2px;font-size:1.05rem;letter-spacing:-.01em}
.card p{margin:0 6px;color:var(--muted);font-size:.92rem}
.card .price{display:flex;justify-content:space-between;align-items:center;margin:12px 6px 4px}
.card .price b{font-size:1.25rem;letter-spacing:-.02em}
.tags{margin:0 6px 4px;color:var(--violet);font-size:.85rem}
.stamp{position:absolute;top:-16px;right:-14px;background:var(--yellow);color:var(--ink);font-weight:700;padding:10px 16px;border-radius:10px;transform:rotate(6deg);box-shadow:0 10px 24px -12px rgba(16,10,41,.5)}

/* секции */
.sec{padding:72px 0}
h2{font-size:clamp(1.8rem,3.4vw,2.6rem);letter-spacing:-.03em;line-height:1.08;font-weight:700;max-width:22ch}
.sub{margin-top:12px;color:var(--muted);max-width:52ch}

.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;margin-top:44px}
.step .n{font-size:3.2rem;font-weight:700;letter-spacing:-.05em;color:var(--violet);line-height:1}
.step h3{margin:14px 0 8px;font-size:1.2rem;letter-spacing:-.015em}
.step p{color:var(--muted)}

.needs{background:var(--lav);border-radius:24px;padding:48px}
.needs ul{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:32px}
.needs li{background:#fff;border-radius:12px;padding:16px;font-weight:500}
.needs li small{display:block;font-weight:400;color:var(--muted);margin-top:4px;font-size:.85rem}

.terms{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:40px}
.term{border:1.5px solid var(--lav);border-radius:20px;padding:32px}
.term em{font-style:normal;font-weight:500;color:var(--muted);display:block}
.term .pct{font-size:clamp(3.4rem,8vw,5.6rem);font-weight:700;letter-spacing:-.05em;line-height:1;margin:8px 0 6px}
.term .pct span{background:linear-gradient(transparent 55%,var(--yellow) 55%)}
.incl{margin-top:28px;display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.incl div{padding:16px 0;border-top:2px solid var(--ink);font-weight:500}

/* отзывы: рисуются из reviews.json (owners.js), классы rv-* трогать нельзя */
.reviews .top{display:grid;grid-template-columns:300px 1fr;gap:40px;margin-top:40px;align-items:start}
.video{border-radius:24px;overflow:hidden;background:linear-gradient(180deg,var(--lav2),var(--indigo));color:#fff;display:flex;flex-direction:column}
.rv-video-wrap{position:relative;width:100%}
.rv-video{display:block;width:100%;aspect-ratio:9/16;object-fit:contain;background:#100a29}
.video .cap{padding:14px 18px 18px;font-size:.9rem;line-height:1.35}
.video .cap b{display:block;font-size:1.05rem;margin-bottom:4px}
.quotes .rv-track{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.rv-card{border-radius:16px;padding:22px;background:#faf8ff;border:1.5px solid var(--lav)}
.rv-text{font-size:1.02rem;line-height:1.45;quotes:"«" "»"}
.rv-text::before{content:open-quote}
.rv-text::after{content:close-quote}
.rv-author{margin-top:14px;font-weight:500;color:var(--indigo);font-size:.92rem}
.rv-note{color:var(--muted2);font-weight:400;display:block;font-size:.85rem}
.tenants{margin-top:44px}
.tenants h3{font-size:1.2rem;letter-spacing:-.015em;margin-bottom:16px;max-width:46ch}
.strip{overflow-x:auto;padding-bottom:8px}
.strip .rv-track{display:flex;gap:14px;scroll-snap-type:x mandatory}
.strip .rv-card{min-width:280px;scroll-snap-align:start;background:#fff}

/* FAQ */
.faq-list{margin-top:28px}
.faq-list details{border-top:1.5px solid var(--lav);padding:20px 0}
.faq-list details:last-child{border-bottom:1.5px solid var(--lav)}
.faq-list summary{cursor:pointer;font-weight:500;font-size:1.1rem;list-style:none;display:flex;justify-content:space-between;gap:20px}
.faq-list summary::-webkit-details-marker{display:none}
.faq-list summary::after{content:"+";color:var(--violet);font-size:1.4rem;line-height:1}
.faq-list details[open] summary::after{content:"–"}
.faq-list details p{margin-top:12px;color:var(--muted);max-width:62ch}

/* финальная форма на тёмной плашке */
.final{background:var(--ink);color:#fff;border-radius:28px;padding:56px}
.final .wrap2{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:center}
.final h2{color:#fff}
.final .form{border-color:var(--indigo);background:#fff;color:var(--ink);max-width:none}
.final .btn{background:var(--yellow);color:var(--ink)}
.final .btn:hover{background:#ffd975}

/* экран «спасибо» + дозагрузка */
.thanks-screen{padding:48px 0 72px}
.thanks-card{max-width:720px;margin:0 auto;border:1.5px solid var(--lav);border-radius:24px;padding:40px}
.thanks-card h1{font-size:clamp(1.9rem,4vw,2.6rem);max-width:none}
.thanks-card h3{font-size:1.15rem;letter-spacing:-.015em;margin-bottom:6px}
.repeat-note{background:var(--lav);border-radius:12px;padding:12px 16px;font-weight:500;margin-bottom:20px}
.thanks-link,.thanks-upload{margin-top:28px;padding-top:24px;border-top:1.5px solid var(--lav)}
.link-row{display:flex;gap:12px;align-items:center;margin-top:12px;flex-wrap:wrap}
.link-url{flex:1;min-width:220px;word-break:break-all;color:var(--violet);font-size:.92rem}
.up-drops{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}
.drop{border:2px dashed var(--lav2);border-radius:12px;padding:26px;text-align:center;color:var(--indigo);font-weight:500;cursor:pointer;background:#faf8ff;display:block}
.up-counts,.up-total{margin-top:12px;color:var(--muted);font-size:.9rem}
.up-error{margin-top:12px;color:#a6306b;font-weight:500}
.up-list{list-style:none;margin-top:14px;display:grid;gap:8px}
.up-item{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;background:#faf8ff;border:1.5px solid var(--lav);border-radius:10px;padding:10px 14px;font-size:.9rem}
.up-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.up-size{color:var(--muted2)}
.up-status{color:var(--indigo);font-weight:500}
.up-item--error .up-status{color:#a6306b}
.skip{margin-top:16px;background:transparent;border:0;color:var(--muted2);text-decoration:underline;cursor:pointer}
.thanks-done{margin-top:20px;font-weight:500;color:var(--indigo)}

/* /policy и /upload */
.doc{padding:24px 0 64px;max-width:820px}
.doc h1{font-size:clamp(1.9rem,4vw,2.6rem);max-width:none;margin-bottom:8px}
.doc h2{font-size:1.25rem;margin-top:28px;max-width:none}
.doc p,.doc li{color:var(--muted);margin-top:10px}
.doc ul{margin-left:20px}
.doc .upd{color:var(--muted2);font-size:.9rem}
.doc a{color:var(--violet)}
.upload-page{padding:24px 0 64px;max-width:720px}
.upload-page h1{font-size:clamp(1.9rem,4vw,2.6rem);max-width:none}
#upStatus{margin-top:20px;font-weight:500;color:var(--indigo)}

footer.site{padding:36px 0 48px;color:var(--muted2);font-size:.88rem}
footer.site .wrap{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}

@media (max-width:900px){
  .hero .wrap{grid-template-columns:1fr;gap:40px}
  .stack{height:440px}
  .card.back{display:none}
  .card.front{left:50%;transform:translateX(-50%) rotate(-2deg)}
  .steps,.needs ul,.incl,.quotes .rv-track{grid-template-columns:1fr 1fr}
  .reviews .top{grid-template-columns:1fr}
  .video{max-width:300px}
  .final .wrap2{grid-template-columns:1fr}
}
@media (max-width:560px){
  /* Мобильный — приоритет: первый экран показывает форму до кнопки без
     прокрутки, карточки уходят ПОД форму и её не перекрывают. */
  .wrap{padding:0 16px}
  header{padding:14px 0}
  .hero{padding:16px 0 40px}
  .hero .wrap{gap:24px}
  h1{font-size:clamp(1.7rem,7.4vw,2.1rem);max-width:none}
  .lead{margin:12px 0 16px;font-size:1rem}
  .form{padding:14px}
  .form .row,.steps,.needs ul,.incl,.quotes .rv-track,.terms,.up-drops{grid-template-columns:1fr}
  .form .row{gap:10px}
  .btn{padding:14px 18px}
  .stack{height:auto;min-height:380px;margin-top:8px}
  .card{position:relative;width:100%}
  .card.front{left:auto;bottom:auto;transform:none}
  .stamp{top:-12px;right:-6px}
  .needs{padding:28px}
  .final{padding:32px 22px}
  .sec{padding:52px 0}
  .thanks-card{padding:24px 18px}
  .drop{padding:20px}
}
