/* ─────────────────────────────────────────────────────────────────────
   hospitality_view.css — shared styles for accommodation/activity/
   restaurant detail pages. Pairs with app_includes/hospitality_view.php.
   All colours use Aurora design tokens defined in tratok_aurora.css.
   ───────────────────────────────────────────────────────────────────── */

*,*::before,*::after{box-sizing:border-box;}
.hv-wrap *{font-family:'DM Sans', 'Noto Naskh Arabic', 'Noto Sans Devanagari', 'Noto Sans Thai', 'Noto Sans JP', 'Noto Sans KR', 'Noto Sans SC', 'Noto Sans TC', 'Noto Sans',-apple-system,sans-serif;}
.hv-wrap{max-width:1180px;margin:0 auto;padding:32px 20px 120px;position:relative;color:var(--ink-200);}
/* NOTE: the glow used to bleed left/right:-40px past the wrap. On phones that
   40px right overhang widened the layout viewport (430 → 470), so iOS zoomed
   out to fit and the whole content column rendered left-biased with a dead
   right gutter, while the fixed topbar/CTA/bottom-nav sized to the wider
   layout. The blur is 50px so clamping to the wrap edges is visually free. */
.hv-wrap::before{
    content:'';position:absolute;top:0;left:0;right:0;height:380px;
    background:radial-gradient(ellipse at 30% 20%,var(--brand-soft) 0%,transparent 60%);
    z-index:-1;pointer-events:none;filter:blur(50px);
}
/* overflow-x:clip (NOT hidden — hidden makes a scroll container and would
   detach the sticky tab-nav/sidebar from viewport scroll) guarantees no
   future decorative overhang can widen the mobile layout viewport again. */
.t-app-main.hv-main{padding-top:0;overflow-x:clip;}

.hv-wrap h1{font-family:'Playfair Display',Georgia,serif;font-size:2.4rem;color:var(--ink-100);margin:0 0 6px;letter-spacing:-0.018em;line-height:1.1;font-weight:700;}
.hv-wrap h2{font-family:'Playfair Display',Georgia,serif;font-size:1.4rem;color:var(--ink-100);margin:0 0 16px;letter-spacing:-0.012em;font-weight:700;}
.hv-sub{color:var(--ink-400);font-size:1rem;margin-bottom:18px;}
.hv-crumbs{font-size:.78rem;color:var(--ink-400);margin-bottom:18px;letter-spacing:.02em;}
.hv-crumbs a{color:var(--ink-400);text-decoration:none;transition:color .15s;}
.hv-crumbs a:hover{color:var(--aurora-1);}
.hv-crumbs .sep{margin:0 8px;opacity:.5;}
.hv-help{color:var(--ink-400);font-size:.86rem;margin-bottom:14px;}
.hv-empty{padding:18px;text-align:center;color:var(--ink-400);font-size:.92rem;}

.hv-meta{display:flex;align-items:center;gap:18px;flex-wrap:wrap;color:var(--ink-400);font-size:.92rem;margin-bottom:18px;}
.hv-meta .star{color:var(--aurora-5);display:inline-flex;align-items:center;gap:6px;font-weight:700;}
.hv-meta .star i{font-size:14px;}
.hv-meta .star .count{color:var(--ink-400);font-weight:500;}
.hv-meta .loc{display:inline-flex;align-items:center;gap:6px;}
.hv-meta .actions{margin-left:auto;display:flex;gap:8px;}
.icon-btn{background:var(--glass-1);border:1px solid var(--glass-border);color:var(--ink-200);width:38px;height:38px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s,color .15s;}
.icon-btn:hover{background:var(--brand-soft);color:var(--brand);}
.icon-btn.saved{color:var(--aurora-2);background:rgba(255,61,127,0.10);border-color:rgba(255,61,127,0.30);}
/* The heart (.wishlist-btn) — js/tratok-wishlist.js INJECTS its own generic look
   (36px dark circle) as a <style> appended to <head> at runtime, so it lands
   after this file and would win a single-class specificity tie. These two-class
   selectors take it back, keeping the heart identical to the Share button next
   to it. Do not flatten them to .wishlist-btn — the injected CSS would win. */
.icon-btn.wishlist-btn{width:38px;height:38px;border-radius:10px;background:var(--glass-1);border:1px solid var(--glass-border);color:var(--ink-200);}
.icon-btn.wishlist-btn:hover{background:var(--brand-soft);color:var(--brand);}
.icon-btn.wishlist-btn.wishlist-saved{color:var(--aurora-2);background:rgba(255,61,127,0.10);border-color:rgba(255,61,127,0.30);}
/* Outline heart → filled. FA6 Free ships regular(400) and solid(900) in ONE
   family, so the weight alone fills it — no class swap needed, which matters
   because the JS only toggles .wishlist-saved on the button, not the <i>. */
.icon-btn.wishlist-btn.wishlist-saved i{font-weight:900;}

.hv-trust{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:24px;}
.hv-trust .pill{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:99px;font-size:.78rem;font-weight:600;background:var(--glass-1);border:1px solid var(--glass-border);color:var(--ink-200);}
.hv-trust .pill i{color:var(--aurora-4);font-size:.86rem;}
.hv-trust .pill.brand i{color:var(--brand);}
.hv-trust .pill.hot i{color:var(--aurora-2);}

.hv-gallery{display:grid;grid-template-columns:2fr 1fr 1fr;gap:8px;border-radius:18px;overflow:hidden;margin-bottom:24px;background:var(--bg-base);height:440px;border:1px solid var(--glass-2);}
.hv-gallery .tile{background:var(--bg-elevated) center/cover no-repeat;transition:transform .4s cubic-bezier(0.2,0.8,0.2,1);position:relative;cursor:pointer;}
.hv-gallery .tile:hover{transform:scale(1.03);}
.hv-gallery .tile:first-child{grid-row:1/3;}
.hv-gallery .more-btn{position:absolute;bottom:14px;right:14px;background:rgba(8,11,20,0.85);color:#fff;padding:8px 14px;border-radius:99px;font-size:.78rem;font-weight:700;backdrop-filter:blur(8px);border:1px solid var(--glass-3);display:inline-flex;align-items:center;gap:6px;}
.type-badge{position:absolute;top:14px;left:14px;background:rgba(8,11,20,0.85);color:var(--brand);padding:6px 12px;border-radius:99px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;backdrop-filter:blur(8px);border:1px solid rgba(232,93,58,0.25);}

.hv-tab-nav{position:sticky;top:0;z-index:30;background:rgba(6,8,15,0.92);backdrop-filter:blur(10px);border-top:1px solid var(--glass-2);border-bottom:1px solid var(--glass-2);margin:0 -20px 18px;padding:0 20px;display:flex;gap:6px;overflow-x:auto;-webkit-overflow-scrolling:touch;}
.hv-tab-nav a{padding:14px 16px;color:var(--ink-400);text-decoration:none;font-size:.84rem;font-weight:600;white-space:nowrap;border-bottom:2px solid transparent;transition:color .15s,border-color .15s;}
.hv-tab-nav a:hover{color:var(--ink-100);}
.hv-tab-nav a.active{color:var(--brand);border-bottom-color:var(--brand);}
/* Light theme: the sticky bar's surface is a hardcoded dark glass (it must sit
   over photos while scrolling), so it needs an explicit white-glass override —
   every other colour in the nav is a token and flips by itself. Matches the
   light .t-topbar idiom (rgba white + hairline via --glass-2). */
html[data-theme="light"] .hv-tab-nav{background:rgba(255,255,255,0.88);}

.hv-grid{display:grid;grid-template-columns:1fr 380px;gap:32px;}
@media(max-width:900px){
    .hv-wrap{padding:22px 16px 100px;}
    /* The glow's -40px bleed is harmless on desktop (1180px wrap centred in a
       wider viewport) but on phones it pokes 40px past the right edge of the
       document, widening the scrollable canvas to viewport+40. Safari then
       renders the flow content left-biased with a ~40px dead gutter on the
       right, so the header column looks narrower than the gallery. Pin the
       glow to the wrap on mobile — it's a 50px-blurred radial, visually
       identical either way. */
    .hv-wrap::before{left:0;right:0;}
    .hv-wrap h1{font-size:1.75rem;}
    .hv-gallery{height:300px;grid-template-columns:1fr 1fr;}
    .hv-gallery .tile:nth-child(n+4){display:none;}
    .hv-gallery .tile:first-child{grid-row:auto;grid-column:1/3;}
    .hv-grid{grid-template-columns:1fr;gap:18px;}
    .hv-side{position:static !important;}
    .hv-tab-nav{margin:0 -16px 14px;padding:0 16px;}
}

.hv-card{background:linear-gradient(180deg,var(--bg-raised) 0%,var(--bg-base) 100%);border:1px solid var(--glass-2);border-radius:18px;padding:24px 26px;margin-bottom:16px;box-shadow:inset 0 1px 0 rgba(255,255,255,0.03);scroll-margin-top:80px;}
.hv-card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;flex-wrap:wrap;gap:10px;}

.hv-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;}
.hv-facts .fact{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;background:rgba(255,255,255,0.025);border:1px solid rgba(255,255,255,0.05);border-radius:14px;}
.hv-facts .ic{width:38px;height:38px;border-radius:10px;background:var(--brand-soft);color:var(--brand);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;}
.hv-facts .lbl{font-size:.7rem;color:var(--ink-400);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:3px;}
.hv-facts .val{font-size:.92rem;color:var(--ink-100);font-weight:600;line-height:1.3;}

.hv-desc{color:var(--ink-300);line-height:1.75;font-size:.96rem;margin:0;}
.desc-fade{position:relative;}
.desc-fade.collapsed .hv-desc{max-height:11em;overflow:hidden;}
.desc-fade.collapsed::after{content:'';position:absolute;bottom:0;left:0;right:0;height:60px;background:linear-gradient(to bottom,transparent,var(--bg-base));pointer-events:none;}
.hv-read-more{margin-top:8px;background:none;border:none;color:var(--brand);font-weight:700;font-size:.86rem;cursor:pointer;padding:0;}
.hv-read-more:hover{text-decoration:underline;}

/* Rooms */
.hv-room{display:grid;grid-template-columns:140px 1fr auto;gap:18px;padding:18px 0;border-top:1px solid var(--glass-2);align-items:center;}
.hv-room:first-of-type{border-top:none;padding-top:0;}
.hv-room .rimg{width:140px;height:96px;border-radius:12px;background:var(--bg-elevated) center/cover no-repeat;cursor:pointer;}
.hv-room .rname{font-weight:700;color:var(--ink-100);font-size:1rem;margin-bottom:4px;}
.hv-room .rdesc{color:var(--ink-400);font-size:.84rem;line-height:1.5;margin-bottom:6px;}
.hv-room .rfeats{font-size:.74rem;color:var(--ink-400);display:flex;flex-wrap:wrap;gap:10px;margin-bottom:6px;}
.hv-room .rfeats i{color:var(--aurora-4);margin-right:3px;}
.hv-room .rremain{font-size:.74rem;color:var(--brand);font-weight:700;text-transform:uppercase;letter-spacing:.06em;}
.hv-room .rremain.gone{color:var(--ink-400);}
.hv-room .rprice{text-align:right;}
.hv-room .rprice .price-fiat{display:block;font-weight:800;color:var(--ink-100);font-size:1.15rem;}
.hv-room .rprice .price-trat{display:block;color:var(--aurora-4);font-size:.78rem;font-weight:700;margin-top:2px;}
.hv-room .rprice .pernight{display:block;font-size:.72rem;color:var(--ink-400);margin-top:2px;}
.hv-room .rbook{margin-top:10px;}
@media(max-width:600px){.hv-room{grid-template-columns:1fr;}.hv-room .rimg{width:100%;height:160px;}.hv-room .rprice{text-align:left;}}

/* Packages */
.hv-pkg-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;}
.hv-pkg{background:rgba(255,255,255,0.025);border:1px solid rgba(255,255,255,0.05);border-radius:14px;padding:18px 18px 16px;display:flex;flex-direction:column;transition:border-color .15s,background .15s;cursor:pointer;}
.hv-pkg:hover{border-color:rgba(232,93,58,0.35);background:rgba(232,93,58,0.04);}
.hv-pkg.selected{border-color:var(--aurora-1);background:rgba(232,93,58,0.08);}
.hv-pkg .ptype{display:inline-block;font-size:.66rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--brand);background:var(--brand-soft);padding:3px 9px;border-radius:99px;margin-bottom:10px;align-self:flex-start;}
.hv-pkg .pname{font-weight:700;color:var(--ink-100);font-size:1rem;margin-bottom:5px;}
.hv-pkg .pdesc{font-size:.84rem;color:var(--ink-400);line-height:1.55;margin-bottom:12px;flex:1;}
.hv-pkg .pmeta{font-size:.74rem;color:var(--ink-400);margin-bottom:10px;display:flex;flex-wrap:wrap;gap:10px;}
.hv-pkg .pmeta span{display:inline-flex;align-items:center;gap:5px;}
.hv-pkg .pprice{margin-top:auto;padding-top:10px;border-top:1px solid rgba(255,255,255,0.05);}
.hv-pkg .pprice .price-fiat{font-weight:800;color:var(--ink-100);font-size:1.05rem;}
.hv-pkg .pprice .price-trat{color:var(--aurora-4);font-size:.76rem;font-weight:700;margin-left:6px;}
.hv-pkg .pprice .perperson{font-size:.72rem;color:var(--ink-400);margin-left:6px;}

/* Menu preview */
.hv-menu-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;}
.menu-item{background:rgba(255,255,255,0.025);border:1px solid rgba(255,255,255,0.05);border-radius:12px;overflow:hidden;display:flex;flex-direction:column;}
.menu-item .m-img{width:100%;height:120px;background:var(--bg-elevated) center/cover no-repeat;}
.menu-item .m-body{padding:12px 14px;}
.menu-item .m-name{font-weight:700;color:var(--ink-100);font-size:.9rem;margin-bottom:4px;}
.menu-item .m-desc{font-size:.76rem;color:var(--ink-400);line-height:1.5;margin-bottom:8px;}
.menu-item .m-price{font-weight:800;color:var(--brand);font-size:.86rem;}
.hv-pdf-link{font-size:.84rem;color:var(--brand);text-decoration:none;font-weight:700;}
.hv-pdf-link:hover{text-decoration:underline;}

/* Host */
.hv-host{display:grid;grid-template-columns:64px 1fr auto;gap:16px;align-items:center;padding:18px;background:rgba(255,255,255,0.025);border:1px solid rgba(255,255,255,0.05);border-radius:14px;}
.hv-host img{width:64px;height:64px;border-radius:50%;background:var(--bg-base);object-fit:cover;}
.hv-host .h-name{font-weight:800;color:var(--ink-100);font-size:1rem;display:flex;flex-wrap:wrap;align-items:center;gap:8px;}
.hv-host .h-badge{font-size:.66rem;font-weight:700;padding:3px 9px;border-radius:99px;text-transform:uppercase;letter-spacing:.06em;}
.hv-host .h-badge.superhost{background:rgba(255,210,63,0.14);color:var(--aurora-5);}
.hv-host .h-badge.verified{background:rgba(46,205,167,0.14);color:var(--aurora-4);}
.hv-host .h-role{font-size:.82rem;color:var(--ink-400);margin-top:2px;}
.hv-host .h-meta{font-size:.74rem;color:var(--ink-400);margin-top:8px;display:flex;flex-wrap:wrap;gap:10px;}
.hv-host .h-meta i{margin-right:4px;color:var(--brand);}
@media(max-width:600px){.hv-host{grid-template-columns:64px 1fr;}}

/* Message the host — replaces the published email on the Contact card. */
.hv-msg-host{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-top:14px;padding:14px 16px;background:rgba(148,163,184,.04);border:1px solid rgba(148,163,184,.12);border-radius:12px;}
.hv-msg-host__copy{flex:1;min-width:200px;display:flex;flex-direction:column;gap:3px;}
.hv-msg-host__copy strong{color:var(--ink-100);font-size:.94rem;font-weight:700;}
.hv-msg-host__copy span{color:var(--ink-400);font-size:.82rem;line-height:1.5;}

/* The compose modal deliberately has NO styles here — it uses the platform's
   .t-modal-bg/.t-modal system from tratok_aurora.css so it matches every other
   modal on the site. */

/* Map */
/* The Location card's map is now partials/getting_there.php's own (#gtMap) —
   #hv-map and .hv-map-wrap are gone. These restyle the partial to the size and
   radius the static map had, so the section didn't visibly shrink when it
   gained routing. The partial ships var(--token, #hex) fallbacks and .gt-*
   class names precisely so a host page can do this. */
#sec-map .gt-section{margin-top:14px;padding-top:0;border-top:0;}
#sec-map .gt-map{height:340px;border-radius:18px;border:1px solid var(--glass-2);background:var(--bg-base);}
@media (max-width:540px){ #sec-map .gt-map{height:260px;} }
/* The hairline attribution rules that lived here were scoped to #hv-map, which
   no longer exists. The same treatment now lives inside the partial (scoped to
   #gtMap) so it travels with the map wherever the block is dropped. The credit
   itself still can't be removed — OSM's tile usage policy and the ODbL. */

/* Reviews */
.hv-review-summary{display:grid;grid-template-columns:200px 1fr;gap:24px;padding-bottom:18px;margin-bottom:18px;border-bottom:1px solid var(--glass-2);}
@media(max-width:600px){.hv-review-summary{grid-template-columns:1fr;}}
.rs-score{text-align:center;}
.rs-score .num{font-family:'Playfair Display',Georgia,serif;font-size:3rem;font-weight:800;color:var(--ink-100);line-height:1;}
.rs-score .stars{color:var(--aurora-5);font-size:1rem;margin-top:6px;letter-spacing:2px;}
.rs-score .count{font-size:.78rem;color:var(--ink-400);margin-top:4px;}
.dist-row{display:flex;align-items:center;gap:10px;font-size:.78rem;color:var(--ink-400);margin-bottom:5px;}
.dist-row .label{width:50px;flex-shrink:0;color:var(--aurora-5);font-weight:700;}
.dist-row .bar{flex:1;height:7px;border-radius:4px;background:rgba(255,255,255,0.05);overflow:hidden;}
.dist-row .bar .fill{height:100%;background:linear-gradient(90deg,var(--aurora-5),var(--brand));}
.dist-row .pct{width:40px;text-align:right;color:var(--ink-300);font-weight:600;}
.hv-review{padding:18px 0;border-top:1px solid var(--glass-2);}
.hv-review:first-of-type{border-top:none;padding-top:0;}
.hv-review .head{display:flex;align-items:center;gap:12px;margin-bottom:8px;}
.hv-review .head img{width:38px;height:38px;border-radius:50%;object-fit:cover;background:var(--bg-base);border:2px solid rgba(255,255,255,0.05);}
.hv-review .name{font-weight:700;color:var(--ink-100);font-size:.92rem;}
.hv-review .date{font-size:.74rem;color:var(--ink-400);margin-left:auto;}
.hv-review .stars{color:var(--aurora-5);font-size:.78rem;letter-spacing:1px;margin-bottom:4px;}
.hv-review .body{color:var(--ink-300);font-size:.9rem;line-height:1.65;}
.hv-host-reply{margin-top:10px;padding:12px 14px;background:var(--glass-1);border-left:3px solid var(--brand);border-radius:6px;font-size:.84rem;color:var(--ink-300);line-height:1.55;}

/* Contact */
.hv-contact-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;}
.contact-item{display:flex;align-items:center;gap:12px;padding:14px;background:rgba(255,255,255,0.025);border-radius:12px;border:1px solid rgba(255,255,255,0.05);}
.contact-item .ic{width:36px;height:36px;border-radius:10px;background:var(--brand-soft);color:var(--brand);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;}
.contact-item .lbl{font-size:.7rem;color:var(--ink-400);text-transform:uppercase;letter-spacing:.06em;font-weight:700;}
.contact-item .val{font-size:.86rem;color:var(--ink-100);font-weight:600;word-break:break-word;}

/* Buttons */
.hv-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 20px;border-radius:12px;font-weight:700;font-size:.88rem;cursor:pointer;border:none;font-family:inherit;text-decoration:none;transition:filter .18s,box-shadow .18s,transform .15s;}
.hv-btn-primary{background:linear-gradient(135deg,var(--aurora-1),var(--aurora-2));color:#fff;box-shadow:0 4px 14px rgba(232,93,58,0.28);}
.hv-btn-primary:hover{filter:brightness(1.06);box-shadow:0 8px 22px rgba(232,93,58,0.36);transform:translateY(-1px);}
.hv-btn-primary:disabled{filter:grayscale(0.6) brightness(0.7);cursor:not-allowed;}
.hv-btn-secondary{background:var(--glass-1);color:var(--ink-200);border:1px solid var(--glass-border);}
.hv-btn-sm{padding:8px 14px;font-size:.78rem;border-radius:10px;}

/* Sidebar */
.hv-side{position:sticky;top:80px;align-self:start;}
.hv-side .hv-card{padding:24px;}
.hv-price-headline{font-family:'Playfair Display',Georgia,serif;font-size:2rem;font-weight:800;color:var(--ink-100);letter-spacing:-0.012em;line-height:1.1;font-feature-settings:'tnum';font-variant-numeric:tabular-nums;}
.hv-price-headline .unit{font-size:.85rem;color:var(--ink-400);font-weight:600;margin-left:6px;font-family:'DM Sans', 'Noto Naskh Arabic', 'Noto Sans Devanagari', 'Noto Sans Thai', 'Noto Sans JP', 'Noto Sans KR', 'Noto Sans SC', 'Noto Sans TC', 'Noto Sans',sans-serif;}
.hv-price-trat{color:var(--aurora-4);font-size:.85rem;font-weight:700;margin-top:4px;font-feature-settings:'tnum';}
.hv-side hr{border:none;border-top:1px solid var(--glass-2);margin:18px 0;}
.hv-side label{display:block;color:var(--ink-400);font-size:.72rem;margin:14px 0 6px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;}
.hv-side label:first-of-type{margin-top:0;}
.hv-side input,.hv-side select,.hv-side textarea{width:100%;padding:12px 14px;background:var(--bg-base);border:1px solid var(--glass-border);border-radius:12px;color:var(--ink-100);font-size:.92rem;font-family:inherit;transition:border-color .15s,box-shadow .15s;}
.hv-side input:focus,.hv-side select:focus,.hv-side textarea:focus{outline:none;border-color:var(--aurora-1);box-shadow:0 0 0 3px var(--brand-soft);}
.hv-side .field-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;}

/* Date trigger — opens the shared calendar overlay (app_calendar.php). Styled
   to sit flush with the sidebar's inputs so the row reads as one form. The
   hidden inputs inside carry the actual value, hence `.hv-dt input` reset. */
.hv-side .hv-dt{display:flex;align-items:center;gap:10px;width:100%;padding:12px 14px;background:var(--bg-base);border:1px solid var(--glass-border);border-radius:12px;color:var(--ink-100);font-size:.92rem;cursor:pointer;transition:border-color .15s,box-shadow .15s;}
.hv-side .hv-dt:hover{border-color:var(--aurora-1);}
.hv-side .hv-dt:focus-visible{outline:none;border-color:var(--aurora-1);box-shadow:0 0 0 3px var(--brand-soft);}
.hv-side .hv-dt i{color:var(--ink-400);font-size:13px;flex-shrink:0;}
.hv-side .hv-dt .dt-text{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.hv-side .hv-dt .dt-text.dt-placeholder{color:var(--ink-400);}
.hv-side .hv-dt input{width:auto;padding:0;border:0;background:none;}
.hv-side .hv-btn{margin-top:18px;width:100%;padding:14px 20px;font-size:.95rem;}
.hv-summary{font-size:.78rem;color:var(--ink-400);margin-top:14px;line-height:1.6;}
.hv-summary strong{color:var(--ink-100);}
.hv-summary .trat-side{color:var(--aurora-4);font-weight:700;}

.hv-earn{margin-top:16px;padding:14px 16px;background:linear-gradient(135deg,rgba(46,205,167,0.10),rgba(56,189,248,0.06));border:1px solid rgba(46,205,167,0.25);border-radius:14px;display:flex;align-items:center;gap:12px;}
.hv-earn .te-ic{width:36px;height:36px;border-radius:10px;background:rgba(46,205,167,0.16);color:var(--aurora-4);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;}
.hv-earn .te-label{font-size:.7rem;color:var(--ink-400);text-transform:uppercase;letter-spacing:.06em;font-weight:700;}
.hv-earn .te-value{font-size:1.05rem;color:var(--aurora-4);font-weight:800;font-feature-settings:'tnum';}

/* Mobile sticky CTA — floats ABOVE the shared bottom nav bar
   (.t-bottom-nav: docked full-width at bottom:0, ~64px + safe area tall,
   z-index 80). bottom:0 would put it underneath the bar. */
.hv-mobile-cta{display:none;position:fixed;bottom:calc(76px + var(--safe-bottom, 0px));left:12px;right:12px;z-index:70;background:var(--bg-raised);border:1px solid var(--glass-2);border-radius:16px;padding:12px 16px;align-items:center;gap:14px;box-shadow:0 -8px 24px rgba(0,0,0,0.4);}
.hv-mobile-cta .mc-price{flex:1;min-width:0;}
.hv-mobile-cta .mc-fiat{font-weight:800;color:var(--ink-100);font-size:.96rem;}
.hv-mobile-cta .mc-fiat .lbl{font-weight:500;color:var(--ink-400);font-size:.74rem;}
.hv-mobile-cta .mc-trat{font-size:.74rem;color:var(--aurora-4);font-weight:700;margin-top:2px;}
.hv-mobile-cta .hv-btn{flex-shrink:0;padding:12px 22px;}
@media(max-width:900px){.hv-mobile-cta{display:flex;}.hv-wrap{padding-bottom:170px;}}

/* Lightbox */
.hv-lightbox{position:fixed;inset:0;background:rgba(6,8,15,0.96);z-index:1000;display:none;align-items:center;justify-content:center;flex-direction:column;padding:20px;}
.hv-lightbox.open{display:flex;}
.hv-lightbox .lb-img{max-width:92vw;max-height:80vh;border-radius:14px;background:center/contain no-repeat;width:1000px;height:600px;}
.hv-lightbox .lb-close{position:absolute;top:20px;right:20px;background:rgba(255,255,255,0.10);border:none;color:#fff;width:46px;height:46px;border-radius:50%;font-size:1rem;cursor:pointer;}
.hv-lightbox .lb-close:hover{background:rgba(255,255,255,0.18);}
.hv-lightbox .lb-nav{position:absolute;top:50%;transform:translateY(-50%);background:rgba(255,255,255,0.10);border:none;color:#fff;width:50px;height:50px;border-radius:50%;font-size:1.2rem;cursor:pointer;}
.hv-lightbox .lb-prev{left:30px;} .hv-lightbox .lb-next{right:30px;}
.hv-lightbox .lb-nav:hover{background:rgba(255,255,255,0.18);}
.hv-lightbox .lb-counter{position:absolute;bottom:30px;color:#fff;font-size:.86rem;font-weight:700;background:rgba(255,255,255,0.10);padding:6px 14px;border-radius:99px;}
