/* Vera — leaf-green palette (the chosen direction) */
:root{
  --navy:#13201a; --ink:#17201a; --slate:#5e6b60; --mute:#8fa093;
  --line:#e3ece4; --line2:#eff5f0; --bg:#ffffff; --card:#ffffff; --inset:#f1f7f2;
  --brand:#2a7342; --brand2:#368a53; --brandsoft:#e5f1e8;
  --gold:#9a7b3f; --goldsoft:#f3ede1; --green:#2a8049; --greensoft:#e5f1e8; --amber:#b07d1c; --ambersoft:#f4ecd8; --red:#b23a2c; --redsoft:#f7e6e2;
  --r-exc:#2a8049; --r-str:#368a53; --r-mod:#b07d1c; --r-hi:#b23a2c;
  --heroA:#112219; --heroB:#2a7342;
  --shadow:0 1px 2px rgba(16,32,54,.06),0 8px 24px rgba(16,32,54,.06);
  --shadow-lg:0 12px 40px rgba(16,32,54,.14);
  --radius:14px;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;background:var(--bg);color:var(--ink);line-height:1.5;-webkit-font-smoothing:antialiased;font-size:15px;overflow-x:clip}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;background:none}
.num{font-variant-numeric:tabular-nums;letter-spacing:-.2px}

header.topbar{position:sticky;top:0;z-index:50;background:var(--navy);color:#fff;border-bottom:1px solid rgba(255,255,255,.08)}
.topbar-inner{max-width:1240px;margin:0 auto;padding:0 24px;height:62px;display:flex;align-items:center;gap:22px}
.logo{display:flex;align-items:center;gap:10px;cursor:pointer;font-weight:700;font-size:19px;letter-spacing:-.4px}
.logo .mark{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,var(--brand2),var(--brand));display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:16px}
.nav{display:flex;gap:4px;margin-left:6px}
.nav a{padding:8px 14px;border-radius:8px;color:rgba(255,255,255,.62);font-weight:500;font-size:14px;transition:.15s;cursor:pointer}
.nav a:hover{color:#fff;background:rgba(255,255,255,.06)}
.nav a.active{color:#fff;background:rgba(255,255,255,.1)}
.topbar-right{margin-left:auto;display:flex;align-items:center;gap:14px}
.topbar-right .profile-link{color:rgba(255,255,255,.62);font-weight:500;font-size:14px;padding:8px 10px;border-radius:8px;transition:.15s;cursor:pointer}
.topbar-right .profile-link:hover{color:#fff;background:rgba(255,255,255,.06)}
.avatar{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,var(--brand2),var(--brand));display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;color:#fff;border:2px solid rgba(255,255,255,.2)}

main{max-width:1240px;margin:0 auto;padding:26px 24px 90px}

.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:20px;flex-wrap:wrap}
.page-head h1{font-size:26px;font-weight:800;letter-spacing:-.6px}
.page-head p{color:var(--slate);font-size:14px;margin-top:3px}
.kpis{display:flex;gap:10px;flex-wrap:wrap}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 16px;min-width:120px}
.kpi .l{font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:var(--mute);font-weight:700}
.kpi .v{font-size:19px;font-weight:800;margin-top:2px;letter-spacing:-.4px}

.filterbar{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin-bottom:20px;box-shadow:var(--shadow)}
.filter-row{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}
.fgroup{display:flex;flex-direction:column;gap:4px}
.fgroup label{font-size:10.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--mute);font-weight:700;padding-left:2px}
select,input[type=text]{font-family:inherit;font-size:13.5px;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:9px;padding:9px 11px;outline:none;transition:.15s;min-width:130px}
select:focus,input:focus{border-color:var(--brand2);box-shadow:0 0 0 3px rgba(54,138,83,.14)}
.search-wrap{position:relative;flex:1;min-width:200px}
.search-wrap input{width:100%;padding-left:34px}
.search-wrap .si{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--mute)}
.result-count{color:var(--slate);font-size:13.5px;font-weight:600;margin-top:12px}

.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px}
/* No overflow:hidden here — the score tooltip is taller than the space above the rating line and
   was being cut off by 68px. The photo clips itself instead (see .card .photo), which is all the
   card's overflow was doing. */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);transition:.18s;cursor:pointer;display:flex;flex-direction:column}
.card:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg);border-color:var(--mute)}
/* Carries the card's top corners now that .card no longer clips its children. */
.card .photo{position:relative;height:168px;overflow:hidden;border-radius:var(--radius) var(--radius) 0 0}
.card .photo img{width:100%;height:100%;object-fit:cover;display:block}
.card .photo .toprow{position:absolute;top:10px;left:10px;right:10px;display:flex;justify-content:space-between;align-items:flex-start;z-index:2}
.card .photo .price-tag{position:absolute;bottom:10px;left:10px;background:rgba(13,20,15,.9);color:#fff;padding:6px 11px;border-radius:9px;z-index:2}
.card .photo .price-tag .l{font-size:9.5px;text-transform:uppercase;letter-spacing:.6px;color:#c3d0de;font-weight:700}
.card .photo .price-tag .v{font-size:17px;font-weight:800}
.card .photo .yield-tag{position:absolute;bottom:10px;right:10px;background:var(--green);color:#fff;padding:6px 11px;border-radius:9px;text-align:right;z-index:2}
.card .photo .yield-tag .l{font-size:9.5px;text-transform:uppercase;letter-spacing:.6px;opacity:.8;font-weight:700}
.card .photo .yield-tag .v{font-size:17px;font-weight:800}
.card .body{padding:14px 16px 16px;flex:1;display:flex;flex-direction:column}
.card .loc{display:flex;align-items:center;justify-content:space-between;gap:8px}
.card .loc .city{font-size:16px;font-weight:800;letter-spacing:-.3px}
.card .loc .rate{font-size:13px;color:var(--slate);font-weight:600}
.rating-line{display:flex;align-items:center;gap:8px;margin:9px 0 10px;cursor:help;position:relative}
.rating-bar{flex:1;height:6px;border-radius:99px;background:var(--line2);overflow:hidden}
.rating-bar span{display:block;height:100%;border-radius:99px}
.season-row{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--slate);margin-bottom:12px;flex-wrap:wrap}
.season-row .sep{color:var(--line)}
.metrics{display:grid;grid-template-columns:1fr 1fr;gap:9px 14px;padding-top:12px;border-top:1px solid var(--line2);margin-top:auto}
.metric .l{font-size:10.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--mute);font-weight:700}
.metric .v{font-size:14.5px;font-weight:700;margin-top:1px}
.pay-pills{display:flex;gap:6px;margin-top:11px;flex-wrap:wrap}
.pill{font-size:11px;font-weight:700;padding:3px 8px;border-radius:7px}

.rating{display:inline-flex;align-items:center;gap:7px;font-weight:800}
.rating .dot{width:9px;height:9px;border-radius:50%}
.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;font-size:11.5px;font-weight:700;letter-spacing:.2px}
.b-green{background:var(--greensoft);color:var(--green)} .b-amber{background:var(--ambersoft);color:var(--amber)}
.b-red{background:var(--redsoft);color:var(--red)} .b-blue{background:var(--brandsoft);color:var(--brand)}
.b-gray{background:var(--line2);color:var(--slate)}
.b-verified{background:var(--greensoft);color:var(--green);border:1px solid var(--green)}
.b-gold{background:var(--goldsoft);color:var(--gold)}

/* score tooltip */
.score-tip{position:absolute;bottom:calc(100% + 10px);left:0;width:290px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-lg);padding:14px;z-index:30;opacity:0;pointer-events:none;transform:translateY(6px);transition:.16s}
.rating-line:hover .score-tip{opacity:1;pointer-events:auto;transform:none}
.score-tip h4{font-size:12.5px;font-weight:800;margin-bottom:2px}
.score-tip .tsub{font-size:11px;color:var(--mute);margin-bottom:10px}
.pbar{margin-bottom:9px}
.pbar .pl{display:flex;justify-content:space-between;font-size:11.5px;font-weight:600;margin-bottom:3px}
.pbar .pl .pw{color:var(--mute);font-weight:700}
.pbar .track{height:6px;border-radius:99px;background:var(--line2);overflow:hidden}
.pbar .track span{display:block;height:100%;border-radius:99px;background:var(--brand2)}
.score-tip .comp{display:flex;justify-content:space-between;align-items:baseline;border-top:1px solid var(--line2);margin-top:8px;padding-top:8px;font-weight:800;font-size:13px}
.score-tip .flag{font-size:11px;color:var(--amber);font-weight:700;margin-top:7px}

.disclaimer{display:flex;gap:11px;background:var(--inset);border:1px solid var(--line2);border-radius:12px;padding:14px 16px;font-size:12.5px;color:var(--slate);margin-top:22px;line-height:1.5}

/* skeleton loaders + states */
.skeleton{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}
.skeleton .sk-photo{height:168px;background:linear-gradient(90deg,var(--line2) 25%,#e6efe7 37%,var(--line2) 63%);background-size:400% 100%;animation:sk 1.3s ease infinite}
.skeleton .sk-body{padding:16px;display:flex;flex-direction:column;gap:10px}
.skeleton .sk-line{height:12px;border-radius:6px;background:linear-gradient(90deg,var(--line2) 25%,#e6efe7 37%,var(--line2) 63%);background-size:400% 100%;animation:sk 1.3s ease infinite}
.skeleton .sk-line.short{width:55%} .skeleton .sk-line.mid{width:75%}
@keyframes sk{0%{background-position:100% 0}100%{background-position:0 0}}
.state-box{text-align:center;padding:60px 20px;color:var(--slate)}
.state-box h2{font-size:18px;color:var(--ink);margin-bottom:6px}
.state-box.error h2{color:var(--red)}
.state-box code{background:var(--inset);padding:2px 7px;border-radius:6px;font-size:12.5px}

.toast-wrap{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:200;display:flex;flex-direction:column;gap:8px;align-items:center}
.toast{background:var(--navy);color:#fff;padding:12px 20px;border-radius:11px;font-size:13.5px;font-weight:600;box-shadow:var(--shadow-lg);animation:tin .25s}
/* Reuses .ledger-err's established red — no new color token, per this plan's scope fence. */
.toast-error{background:var(--redsoft);color:var(--red);display:flex;align-items:center;gap:10px}
.toast-error .toast-dismiss{background:none;border:none;color:inherit;font-size:16px;line-height:1;cursor:pointer;padding:0;flex-shrink:0}
@keyframes tin{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* ---------- listing detail ---------- */
.back-link{display:inline-flex;align-items:center;gap:7px;color:var(--slate);font-weight:600;font-size:13.5px;margin-bottom:16px;cursor:pointer}
.back-link:hover{color:var(--brand)}
.detail-hero{background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:var(--shadow);margin-bottom:20px}
/* Deliberately compact. This page's job is the numbers — a taller hero pushed the stat bar and
   Investment Summary toward (and past) the fold, which is the wrong trade on a due-diligence
   surface. Portrait photos are still cropped here; they are viewed whole in the lightbox. */
.hero-photo{position:relative;height:280px}
.hero-photo img{width:100%;height:100%;object-fit:cover;display:block}
.hero-photo.has-photo{cursor:zoom-in}
.hero-photo .overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(13,20,15,.15),rgba(13,20,15,.82))}
.hero-photo .htext{position:absolute;bottom:20px;left:24px;right:24px;color:#fff}

/* Lightbox — full, uncropped photo viewing without spending vertical space on the page itself. */
.lb{position:fixed;inset:0;z-index:9998;background:rgba(9,15,11,.95);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px}
.lb img.main{max-width:92vw;max-height:76vh;object-fit:contain;border-radius:10px;box-shadow:0 20px 60px rgba(0,0,0,.5)}
.lb .lbbar{display:flex;align-items:center;gap:12px;color:#fff;font-size:13px;font-weight:700}
.lb .lbthumbs{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;max-width:92vw}
.lb .lbthumbs img{height:56px;border-radius:8px;border:2px solid rgba(255,255,255,.25);cursor:pointer;object-fit:cover}
.lb .lbthumbs img.is-active{border-color:#fff}
.lb button{background:rgba(255,255,255,.12);color:#fff;border:0;border-radius:9px;padding:9px 15px;cursor:pointer;font-weight:700;font-size:15px;font-family:inherit}
.lb button:hover{background:rgba(255,255,255,.24)}
/* Solid rather than translucent: in testing the close control read as too easy to miss. */
.lb .lbclose{position:absolute;top:18px;right:20px;background:var(--brand);padding:10px 18px;font-size:14px}
.lb .lbclose:hover{background:var(--brand2)}
.hero-photo .htext h1{font-size:27px;font-weight:800;letter-spacing:-.5px}
.hero-photo .htext .addr{color:rgba(255,255,255,.85);font-size:13.5px;margin-top:4px}
.hero-photo .htext .badges{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
.hero-stats{display:grid;grid-template-columns:repeat(6,1fr)}
.hero-stats .hs{padding:16px 18px;border-right:1px solid var(--line2)}
.hero-stats .hs:last-child{border-right:none}
.hero-stats .hs .l{font-size:10.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--mute);font-weight:700}
.hero-stats .hs .v{font-size:18px;font-weight:800;margin-top:3px}
.hero-stats .hs .v.acc{color:var(--green)}
.gallery-thumbs{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 20px}
.gallery-thumbs img{height:72px;width:auto;border-radius:11px;border:2px solid var(--line);cursor:pointer;object-fit:cover}
.gallery-thumbs img.is-active{border-color:var(--brand);box-shadow:0 0 0 3px var(--brandsoft)}
.detail-cols{display:grid;grid-template-columns:1fr 340px;gap:20px;align-items:start}
.section{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:22px;box-shadow:var(--shadow);margin-bottom:20px}
.section h2{font-size:16px;font-weight:800;letter-spacing:-.3px;display:flex;align-items:center;gap:9px;margin-bottom:4px}
.section h2 .ico{width:28px;height:28px;border-radius:8px;background:var(--brandsoft);display:flex;align-items:center;justify-content:center;color:var(--brand);font-weight:800}
.section .sub{color:var(--slate);font-size:13px;margin-bottom:18px;margin-left:37px}
.econ-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.econ{background:var(--inset);border:1px solid var(--line2);border-radius:12px;padding:14px;position:relative}
.econ .l{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--mute);font-weight:700}
.econ .v{font-size:21px;font-weight:800;margin-top:4px;letter-spacing:-.5px}
.econ .s{font-size:11.5px;color:var(--slate);margin-top:2px}
.econ.hl{background:linear-gradient(135deg,var(--heroB),var(--heroA));border:none;color:#fff}
.econ.hl .l{color:rgba(255,255,255,.7)} .econ.hl .s{color:rgba(255,255,255,.8)}
.terms{display:grid;grid-template-columns:1fr 1fr;gap:0 30px}
.term-row{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line2);font-size:13.5px}
.term-row .k{color:var(--slate)} .term-row .val{font-weight:700}
.deal-terms{grid-template-columns:1fr}
.deal-terms .term-row{gap:20px;align-items:baseline}
.deal-terms .term-row .k{flex:0 0 auto}
.deal-terms .term-row .val{text-align:right;min-width:0;overflow-wrap:anywhere}
.timeline{display:flex;gap:3px;flex-wrap:wrap;margin-bottom:14px}
.tick{width:15px;height:26px;border-radius:4px}
.t-on{background:var(--green)} .t-late{background:var(--amber)} .t-roll{background:#cf8a2a} .t-cure{background:#b5602a} .t-miss{background:var(--red)}
.tl-legend{display:flex;gap:16px;font-size:12.5px;color:var(--slate);flex-wrap:wrap}
.tl-legend span{display:inline-flex;align-items:center;gap:6px}
.lg-dot{width:10px;height:10px;border-radius:3px}
.buybox{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:20px;box-shadow:var(--shadow);position:sticky;top:82px}
.buybox .ask-l{font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:var(--mute);font-weight:700}
.buybox .ask{font-size:31px;font-weight:800;letter-spacing:-1px;margin:2px 0}
.buybox .ask-sub{font-size:12.5px;color:var(--slate);margin-bottom:14px}
.calc-field{margin:14px 0}
.calc-field label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--mute);font-weight:700;display:block;margin-bottom:5px}
.calc-input{position:relative}
.calc-input span{position:absolute;left:12px;top:50%;transform:translateY(-50%);font-weight:700;color:var(--slate)}
.calc-input input{width:100%;padding:12px 12px 12px 26px;font-size:18px;font-weight:800;border:1px solid var(--line);border-radius:10px;background:var(--inset)}
.qline{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--line2);font-size:13.5px}
.qline:last-of-type{border-bottom:none}
.qline .k{color:var(--slate)} .qline .v{font-weight:800}
.qline .v.acc{color:var(--green)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 18px;border-radius:10px;font-weight:600;font-size:14px;transition:.15s;white-space:nowrap}
.btn-primary{background:var(--brand);color:#fff} .btn-primary:hover{filter:brightness(.93)}
.btn-ghost{background:var(--card);color:var(--ink);border:1px solid var(--line)} .btn-ghost:hover{border-color:var(--mute)}
.btn-lg{padding:14px 22px;font-size:15px} .btn-block{width:100%}
.actions{display:flex;flex-direction:column;gap:9px;margin-top:16px}
/* metric explainer tooltip */
.hint-wrap{position:relative;cursor:help;display:inline-flex;align-items:center}
.info-i{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:50%;border:1px solid var(--mute);color:var(--mute);font-size:9px;font-weight:800;margin-left:5px;flex-shrink:0}
.hint{position:absolute;bottom:calc(100% + 10px);left:0;width:252px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-lg);padding:12px 14px;z-index:40;opacity:0;pointer-events:none;transform:translateY(6px);transition:.16s;font-size:12px;color:var(--slate);line-height:1.55;font-weight:400;text-transform:none;letter-spacing:normal;white-space:normal}
.hint b{color:var(--ink);font-weight:700}
.hint-wrap:hover .hint{opacity:1;pointer-events:auto;transform:none}
.econ.hl .info-i{border-color:rgba(255,255,255,.55);color:rgba(255,255,255,.8)}

/* ---------- methodology / how it works ---------- */
.method{max-width:860px;margin:0 auto}
.method-intro{background:linear-gradient(160deg,var(--heroA),var(--heroB));color:#fff;border-radius:18px;padding:32px 30px;margin-bottom:22px}
.method-intro h1{font-size:28px;font-weight:800;letter-spacing:-.6px}
.method-intro p{color:rgba(255,255,255,.85);font-size:15px;margin-top:8px;max-width:640px;line-height:1.55}
.method-row{display:flex;gap:16px;align-items:flex-start;padding:18px 0;border-bottom:1px solid var(--line2)}
.method-row:last-child{border-bottom:none}
.pill-num{width:46px;height:46px;border-radius:13px;background:var(--brandsoft);color:var(--brand);font-weight:800;display:flex;align-items:center;justify-content:center;font-size:13px;flex-shrink:0;text-align:center;line-height:1.1}
.method-row h3{font-size:15.5px;font-weight:800}
.method-row p{font-size:13.5px;color:var(--slate);margin-top:4px;line-height:1.55}
.formula{background:var(--inset);border:1px solid var(--line2);border-radius:9px;padding:9px 12px;font-family:ui-monospace,Menlo,monospace;font-size:12.5px;color:var(--ink);margin-top:9px;display:inline-block}
.band-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line2);font-size:14px}
.band-row:last-child{border-bottom:none}
.band-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0}
.band-row .bn{font-weight:800;width:120px} .band-row .br{color:var(--slate);font-size:13px}
.vstep{display:flex;gap:14px;align-items:flex-start;margin-bottom:16px}
.vstep .vn{width:30px;height:30px;border-radius:50%;background:var(--brand);color:#fff;font-weight:800;font-size:13px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.vstep h4{font-size:14.5px;font-weight:800} .vstep p{font-size:13.5px;color:var(--slate);margin-top:3px;line-height:1.55}
.info-box{background:var(--brandsoft);border-radius:11px;padding:13px 15px;font-size:13px;color:var(--brand);display:flex;gap:10px;align-items:flex-start}
.mini-tag{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;background:var(--ambersoft);color:var(--amber);padding:3px 7px;border-radius:6px}
.soon-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px}
.soon-card{border:1px solid var(--line);border-radius:11px;padding:15px 14px;background:var(--inset);position:relative}
.soon-card .si{font-size:22px;margin-bottom:8px}
.soon-card h4{font-size:13px;font-weight:800}
.soon-card p{font-size:11.5px;color:var(--slate);margin-top:4px;line-height:1.45}

@media(max-width:920px){.detail-cols{grid-template-columns:1fr}.buybox{position:static}.hero-stats{grid-template-columns:repeat(3,1fr)}.hero-stats .hs{border-bottom:1px solid var(--line2)}.soon-grid{grid-template-columns:1fr}}
@media(max-width:640px){.nav{display:none}.terms{grid-template-columns:1fr}}

/* ---------- auth + landing ---------- */
.auth-slot{display:flex;align-items:center;min-height:34px}
.landing-hero{background:linear-gradient(160deg,var(--heroA),var(--heroB));border-radius:20px;padding:64px 48px;color:#fff;position:relative;overflow:hidden;margin-bottom:22px}
.landing-hero::after{content:"";position:absolute;right:-80px;top:-80px;width:320px;height:320px;border-radius:50%;background:rgba(255,255,255,.06)}
.landing-hero .eyebrow{font-size:12px;text-transform:uppercase;letter-spacing:2px;font-weight:700;color:rgba(255,255,255,.7);margin-bottom:14px}
.landing-hero h1{font-size:42px;font-weight:800;letter-spacing:-1.2px;line-height:1.08;max-width:620px}
.landing-hero p{font-size:16px;color:rgba(255,255,255,.82);margin-top:16px;max-width:540px;line-height:1.55}
.landing-cta{display:flex;gap:12px;margin-top:28px;flex-wrap:wrap}
.btn-white{background:#fff;color:var(--heroB);font-weight:700}
.btn-outline{background:transparent;color:#fff;border:1px solid rgba(255,255,255,.4)}
.landing-feats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:22px}
.lfeat{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:22px;box-shadow:var(--shadow)}
.lfeat .fi{width:40px;height:40px;border-radius:11px;background:var(--brandsoft);color:var(--brand);display:flex;align-items:center;justify-content:center;font-size:20px;margin-bottom:12px}
.lfeat h3{font-size:15px;font-weight:800;margin-bottom:5px}
.lfeat p{font-size:13px;color:var(--slate);line-height:1.5}
@media(max-width:820px){.landing-feats{grid-template-columns:1fr}.landing-hero{padding:40px 28px}.landing-hero h1{font-size:32px}}

/* ---------- modal ---------- */
.modal-overlay{position:fixed;inset:0;background:rgba(13,20,15,.5);backdrop-filter:blur(3px);z-index:100;display:flex;align-items:center;justify-content:center;padding:20px;opacity:0;pointer-events:none;transition:.2s}
.modal-overlay.open{opacity:1;pointer-events:auto}
.modal{background:var(--card);border-radius:18px;max-width:460px;width:100%;box-shadow:var(--shadow-lg);transform:translateY(12px) scale(.98);transition:.2s;max-height:90vh;overflow:auto}
.modal-overlay.open .modal{transform:none}
.modal-head{padding:24px 26px 0}
.modal-head .mico{width:46px;height:46px;border-radius:12px;display:flex;align-items:center;justify-content:center;margin-bottom:12px;font-size:22px;background:var(--brandsoft);color:var(--brand)}
.modal-head .mico.green{background:var(--greensoft);color:var(--green)}
.modal-head h3{font-size:20px;font-weight:800;letter-spacing:-.3px}
.modal-head p{color:var(--slate);font-size:14px;margin-top:5px}
.modal-body{padding:18px 26px 26px}
.afield{margin-bottom:13px}
.afield label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--mute);font-weight:700;display:block;margin-bottom:5px}
.afield input,.modal-body textarea{width:100%;font-family:inherit;font-size:14px;border:1px solid var(--line);border-radius:10px;padding:11px 12px;background:var(--card);outline:none}
.afield input:focus,.modal-body textarea:focus{border-color:var(--brand2);box-shadow:0 0 0 3px rgba(54,138,83,.14)}
.modal-body textarea{resize:vertical;min-height:80px}
.modal-actions{display:flex;gap:10px;margin-top:18px}
.modal-actions .btn{flex:1}
/* seller wizard (step 5a) */
.modal-body select{width:100%;font-family:inherit;font-size:14px;border:1px solid var(--line);border-radius:10px;padding:11px 12px;background:var(--card);outline:none;min-width:0}
.modal-body select:focus{border-color:var(--brand2);box-shadow:0 0 0 3px rgba(54,138,83,.14)}
.wgrid{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}
.lopt{text-transform:none;letter-spacing:0;color:var(--mute);font-weight:500}
.wnote{font-size:13px;color:var(--slate);line-height:1.5;margin:-2px 0 13px}
.wscore{display:flex;gap:14px;justify-content:space-between;align-items:center;background:var(--brandsoft);border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-top:6px}
.wscore .wsl{font-size:10.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--brand);font-weight:800;margin-bottom:3px}
.wscore .wsv{font-size:26px;font-weight:800;line-height:1;letter-spacing:-.5px}
.wscore .wsv span{font-size:12px;font-weight:700;color:var(--slate);letter-spacing:0}
.wscore .wsv2{font-size:20px;font-weight:800;color:var(--ink)}
.wscore-note{font-size:11.5px;color:var(--mute);margin-top:8px;line-height:1.45}
@media(max-width:420px){.wgrid{grid-template-columns:1fr}}
/* seller dashboard + 5-step wizard (matches Invera_Mockup.html) */
.listing-table{background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:var(--shadow)}
.lt-head,.lt-row{display:grid;grid-template-columns:2.2fr 1fr 1fr .9fr 1.3fr 1fr;gap:12px;align-items:center;padding:13px 18px}
.lt-head{background:var(--inset);font-size:10.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--mute);font-weight:700}
.lt-row{border-top:1px solid var(--line2);font-size:13.5px;transition:.12s}
.lt-row:hover{background:var(--inset)}
.lt-row .prop{display:flex;align-items:center;gap:11px;font-weight:700}
.lt-row .thumb{width:42px;height:42px;border-radius:9px;overflow:hidden;flex-shrink:0}
.lt-row .thumb img{width:100%;height:100%;object-fit:cover}
.lt-row.is-withdrawn{opacity:.62}
.lt-empty{padding:24px 18px;text-align:center;color:var(--slate);font-size:13.5px;background:var(--card)}
.doc-list{display:flex;flex-direction:column;gap:10px}
.doc-item{display:flex;align-items:center;gap:13px;padding:13px 15px;border:1px solid var(--line);border-radius:12px;background:var(--card)}
.doc-ico{width:38px;height:38px;border-radius:10px;background:var(--brandsoft);color:var(--brand);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.doc-meta{flex:1;min-width:0}.doc-meta .n{font-weight:700;font-size:14px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.doc-meta .d{font-size:12px;color:var(--slate)}
.btn-soft{background:var(--brandsoft);color:var(--brand)}
.wizard{max-width:760px;margin:0 auto}
.steps{display:flex;align-items:center;margin-bottom:24px}
.step{display:flex;flex-direction:column;align-items:center;gap:6px;flex-shrink:0}
.step .n{width:32px;height:32px;border-radius:50%;background:var(--line2);color:var(--mute);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;border:2px solid transparent}
.step.active .n{background:var(--brand);color:#fff}
.step.done .n{background:var(--greensoft);color:var(--green);border-color:var(--green)}
.step .lbl{font-size:11.5px;font-weight:600;color:var(--mute)}
.step.active .lbl,.step.done .lbl{color:var(--ink)}
.step-conn{flex:1;height:2px;background:var(--line);margin:0 8px;margin-bottom:22px}
.step-conn.done{background:var(--green)}
.wcard{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:26px;box-shadow:var(--shadow)}
.wcard h2{font-size:19px;font-weight:800;letter-spacing:-.3px}
.wcard .whelp,.whelp{color:var(--slate);font-size:13.5px;margin:5px 0 20px;line-height:1.5}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.field{display:flex;flex-direction:column;gap:5px}
.field.full{grid-column:1/-1}
.field label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--mute);font-weight:700}
.field label .opt,.opt{text-transform:none;letter-spacing:0;color:var(--mute);font-weight:500}
.field input,.field select,.wcard textarea{width:100%;font-family:inherit;font-size:14px;border:1px solid var(--line);border-radius:9px;padding:11px 12px;background:var(--card);color:var(--ink);outline:none}
.field input:focus,.field select:focus,.wcard textarea:focus{border-color:var(--brand2);box-shadow:0 0 0 3px rgba(54,138,83,.14)}
.wcard textarea{resize:vertical;min-height:104px}
.wnav{display:flex;justify-content:space-between;margin-top:24px;gap:10px}
.wnav .btn-lg{min-width:200px}
.dropzone{border:2px dashed var(--line);border-radius:14px;padding:34px;text-align:center;cursor:pointer;transition:.15s;background:var(--inset)}
.dropzone:hover{border-color:var(--brand2);background:var(--brandsoft)}
.dropzone.dz-over{border-color:var(--brand);background:var(--brandsoft)}
.dropzone .up-ico{font-size:30px;margin-bottom:8px}
.dropzone h3{font-size:15px;font-weight:700}
.dropzone p{font-size:12.5px;color:var(--slate);margin-top:4px}
.uploaded{display:flex;align-items:center;gap:11px;padding:11px 14px;border:1px solid var(--line);border-radius:11px;margin-top:10px}
.uploaded .fico{flex-shrink:0} .uploaded .fmeta{flex:1;min-width:0} .uploaded .fmeta .n{font-weight:700;font-size:13.5px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.uploaded .fmeta .s{font-size:11.5px;color:var(--slate)}
.uploaded .check{color:var(--green);font-weight:800}
.uploaded.failed{border-color:var(--red)}
.info-box{background:var(--brandsoft);border-radius:11px;padding:13px 15px;margin-top:18px;font-size:13px;color:var(--brand);display:flex;gap:10px;align-items:flex-start;line-height:1.5}
.info-box.warn{background:var(--ambersoft);color:var(--amber)}
.wcheck{display:flex;align-items:flex-start;gap:10px;margin-top:16px;padding:14px;border:1px solid var(--line);border-radius:11px;cursor:pointer}
.wcheck input{width:auto;margin-top:2px;flex-shrink:0}
.wcheck .wct{font-weight:700;font-size:14px}
.wcheck .wcs{font-size:12.5px;color:var(--slate)}
/* Send-to-title category picker — deliberately lighter than .wcheck's bordered-card treatment,
   which reads too heavy repeated six times. Gap/row-padding interpolated between .form-grid's
   14px and .wcheck's vertical rhythm (02-UI-SPEC.md Spacing Scale) — the one genuinely new
   spacing value this phase introduces. */
.cat-check-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 14px;margin:4px 0 2px}
.cat-check-grid label{display:flex;align-items:center;gap:8px;font-size:13.5px;padding:4px 0}
.csv-helper{background:var(--inset);border:1px solid var(--line2);border-radius:11px;padding:14px;margin-top:16px}
.csv-helper .cta-row{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px}
.csv-helper code{display:block;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:11px;font-size:11.5px;color:var(--slate);white-space:pre-wrap;line-height:1.5;font-family:ui-monospace,Menlo,monospace}
.mini-tag{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;background:var(--ambersoft);color:var(--amber);padding:3px 7px;border-radius:6px;white-space:nowrap}
.soon-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px}
.soon-card{border:1px solid var(--line);border-radius:11px;padding:15px 14px;background:var(--inset)}
.soon-card .si{font-size:22px;margin-bottom:8px}
.soon-card h4{font-size:13px;font-weight:800}
.soon-card p{font-size:11.5px;color:var(--slate);margin-top:4px;line-height:1.45}
.live-preview{background:linear-gradient(135deg,var(--heroB),var(--heroA));border-radius:12px;padding:16px;color:#fff;margin-top:18px;display:flex;justify-content:space-between;align-items:center;gap:12px}
.live-preview .lp-l{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:rgba(255,255,255,.72);font-weight:700}
.live-preview .lp-v{font-size:26px;font-weight:800}
.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:10px;margin-top:14px}
.pthumb{position:relative;border-radius:11px;overflow:hidden;border:2px solid var(--line);aspect-ratio:4/3;cursor:pointer}
.pthumb.is-cover{border-color:var(--brand);box-shadow:0 0 0 3px var(--brandsoft)}
.pthumb img{width:100%;height:100%;object-fit:cover;display:block}
.cover-badge{position:absolute;top:6px;left:6px;background:var(--brand);color:#fff;font-size:10px;font-weight:800;padding:3px 7px;border-radius:6px;letter-spacing:.3px}
.set-cover{position:absolute;bottom:6px;left:6px;right:6px;background:rgba(13,20,15,.82);color:#fff;font-size:11px;font-weight:700;padding:6px;border-radius:7px;opacity:0;transition:.15s;text-align:center}
.pthumb:hover .set-cover{opacity:1}
/* Touch devices have no hover, so a hover-revealed label is simply never discoverable there — the
   thumbnails would look like plain images with no indication they are the control. Show it
   persistently wherever hover does not exist. Scoping the reveal to hover-capable pointers also
   avoids the sticky-:hover behaviour touch browsers apply after a tap. */
@media (hover: none){
  .set-cover{opacity:1}
}
.rm-photo{position:absolute;top:6px;right:6px;width:22px;height:22px;border-radius:50%;background:rgba(13,20,15,.72);color:#fff;font-size:15px;line-height:1;font-weight:700;display:flex;align-items:center;justify-content:center}
.ledger-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px}
.lgc{background:var(--inset);border:1px solid var(--line2);border-radius:10px;padding:10px 12px;text-align:center}
.lgc .lgn{font-size:20px;font-weight:800}
.lgc .lgl{font-size:10.5px;color:var(--mute);font-weight:700;text-transform:uppercase;letter-spacing:.4px;margin-top:2px}
.ledger-err{background:var(--redsoft);color:var(--red);border-radius:10px;padding:12px 14px;font-size:13px;margin-top:14px}
.hidden{display:none!important}
@media(max-width:700px){.form-grid{grid-template-columns:1fr}.ledger-grid{grid-template-columns:repeat(2,1fr)}.soon-grid{grid-template-columns:1fr}.step .lbl{display:none}.wnav .btn-lg{min-width:0}.lt-head,.lt-row{grid-template-columns:2fr 1fr 1fr;gap:8px}.lt-head div:nth-child(n+4),.lt-row div:nth-child(n+4){display:none}}
