/* WetSlip design reference: approved violet/pink neon shop mockup.
 * v0.3 shell: no document scrolling, exactly one page-scroll, in-flow bottom nav,
 * independent modal root. No transformed parents, backdrop-filter or fixed nav. */
:root{
  color-scheme:dark;
  --void:#100318;--surface:#1b0b21;--surface-deep:#120718;
  --line:rgba(242,155,231,.56);--pink:#f244db;--glow:#ff91ee;--white:#fff5ff;
  --muted:#e7d1e9;--green:#35e786;--nav-height:75px; --system-bar:#120b18;
  font:400 15px/1.4 system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;width:100%;height:100%;min-height:100%;overflow:hidden;overscroll-behavior:none;background:var(--system-bar)}
body{height:100%;height:100dvh;min-height:0;position:fixed;inset:0;display:flex;flex-direction:column;background:var(--system-bar);color:var(--white);-webkit-tap-highlight-color:transparent}
button,input,select{font:inherit}button{cursor:pointer;color:inherit}button:disabled{cursor:not-allowed;opacity:.5}
button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid #ffb3f5;outline-offset:3px}
img{max-width:100%;display:block}p,h1,h2,h3{margin-block:0}p{line-height:1.45}
.ws-icon{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
#app{flex:1 1 auto;min-height:0;position:relative;overflow:hidden;isolation:isolate}
.app-shell{height:100%;position:relative;overflow:hidden;background:var(--void)}
.page-scroll{position:relative;z-index:1;height:100%;overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain;scrollbar-gutter:stable;touch-action:pan-y;-webkit-overflow-scrolling:touch;background:linear-gradient(180deg,rgba(4,0,8,.14),rgba(8,2,14,.45) 49%,rgba(7,1,12,.13)),url('assets/neon-wallpaper.jpg') center top / cover no-repeat}
.content-wrap{max-width:1010px;margin-inline:auto;padding:0 clamp(12px,3vw,28px) 24px}
.theme-halloween .page-scroll{background-image:linear-gradient(180deg,rgba(46,12,2,.13),rgba(12,1,17,.56)),url('assets/neon-wallpaper.jpg')}
/* Brand header scrolls with the page, keeping the nebula uninterrupted. */
.brand-header{min-height:155px;padding:25px 0 15px;display:flex;justify-content:space-between;align-items:center;gap:8px}
.brand-group{flex:1 1 auto;display:flex;align-items:center;min-width:0}
.brand-girl{width:clamp(66px,15vw,154px);filter:drop-shadow(0 0 5px #ff49e6);object-fit:contain}
.brand-text{width:clamp(140px,32vw,350px);min-width:0;filter:drop-shadow(0 0 7px rgba(255,45,225,.65))}
.header-controls{flex:none;display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.coin-pill{display:grid;grid-template-columns:auto auto;column-gap:9px;align-items:center;background:rgba(15,4,20,.91);border:1px solid #b65da9;border-radius:50px;padding:7px 13px;color:#f6b2ee;font-size:12px;line-height:1.07}
.coin-pill .coin-stack{grid-row:1/3;font-size:21px;color:#ffa0f6}.coin-pill strong{color:#f37af2;font-size:17px}
.age-mark{border:1.5px solid #ff756e;box-shadow:0 0 10px #db315a70;border-radius:50%;width:42px;height:42px;display:grid;place-items:center;font-size:13px;color:#ffc2c1;background:#290b1a}
.icon-action{border:0;background:transparent;color:#f9c2f5;font-size:23px;padding:5px 8px}
.event-panel{display:flex;align-items:center;gap:12px;padding:12px;margin:0 0 12px;background:rgba(25,4,30,.94);border:1px solid var(--line);border-radius:15px}
.event-panel select{min-width:0;flex:1;color:white;background:#241029;border:1px solid var(--line);border-radius:8px;padding:7px}
.offline-banner{background:#4f2547;border:1px solid #e3b4d9;padding:10px;border-radius:12px;margin-bottom:8px}
/* Seller header is one precise, reusable card rather than nested framework tiles. */
.seller-card{display:grid;grid-template-columns:clamp(85px,20%,175px) minmax(0,1fr) clamp(117px,25%,220px);align-items:center;gap:14px;background:linear-gradient(116deg,rgba(19,7,25,.97),rgba(25,9,30,.94));border:1px solid var(--line);border-radius:25px;padding:14px 18px;box-shadow:inset 0 0 18px #7a226b15,0 0 12px #06000988}
/* Portrait, transparent neon ring and presence dot are 3 independent layers.
   Proportional insets keep the photograph inside the ring at every breakpoint.
   The dot CENTER is positioned directly on the ring (r=47% at 45 degrees). */
.avatar-frame{width:100%;max-width:175px;aspect-ratio:1;position:relative;border:0;border-radius:50%;padding:0;isolation:isolate;overflow:visible;flex:none}
.avatar-frame .avatar-photo{position:absolute;z-index:0;inset:5%;width:90%;height:90%;border-radius:50%;object-fit:cover;object-position:center;pointer-events:none}
.avatar-frame .avatar-ring{position:absolute;z-index:1;inset:0;width:100%;height:100%;pointer-events:none;object-fit:contain}
.online-dot{position:absolute;z-index:2;left:83.234%;top:83.234%;transform:translate(-50%,-50%);width:clamp(11px,10%,17px);height:clamp(11px,10%,17px);border:1px solid #bbffdb;background:#15dc73;border-radius:50%;box-shadow:0 0 0 3px #1a071e,0 0 9px #1bdf77a8;cursor:pointer;padding:0;touch-action:manipulation}
.seller-details{min-width:0;align-self:center}.seller-details h1{font-size:clamp(19px,3.1vw,27px);line-height:1.16;font-weight:750;white-space:normal}
.verify{color:#fe72ec;font-size:.68em}.seller-stats{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:7px}.seller-stats small{font-size:11px;color:#e9d1e5}.rating{color:#ffa2fb;font-weight:750;font-size:16px}.online-pill{border:1px solid #18c968;border-radius:20px;color:#87edb6;padding:2px 7px;background:#00351b;font-size:11px;white-space:nowrap;cursor:pointer}.seller-details p{font-size:clamp(12px,1.7vw,16px);margin-top:7px;color:#f4dff2}
.seller-buttons{display:flex;flex-direction:column;gap:10px}
.neon-button{border-radius:38px;padding:10px 12px;min-height:38px;background:#120619;border:1.5px solid #ef96e5;color:white;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-align:center;font-size:13px;font-weight:650;white-space:nowrap;text-shadow:0 0 5px #ffc2fb50;box-shadow:inset 0 0 8px #f34bdb19}
.neon-button.solid{background:linear-gradient(115deg,#a0129f,#5d135e);border-color:#ff8eef;box-shadow:inset 0 1px 7px #ff92ed66,0 0 10px #eb1fdb55}
.neon-button.ghost{background:rgba(18,5,25,.9)}.neon-button .ws-icon{width:21px;height:21px}.neon-button.full{width:100%}
/* Tabs and search do not shift the page origin. */
.tab-strip{margin:11px 0 10px;display:flex;align-items:center;justify-content:space-between;gap:7px}
.seller-tabs{flex:1;display:flex;justify-content:space-around;gap:6px;min-width:0}
.seller-tab{position:relative;border:0;background:transparent;padding:8px 6px 11px;font-size:clamp(12px,2vw,17px);white-space:nowrap;color:#d1b9d4}
.seller-tab.active{color:white;text-shadow:0 0 9px #ff65e3;font-weight:700}
.seller-tab.active:after{content:'';position:absolute;bottom:0;left:6px;right:6px;height:2px;background:#ffb4f5;box-shadow:0 0 7px #ef37e0}
.sort-action{display:flex;align-items:center;gap:4px;border:0;background:transparent;font-size:12px;padding:5px 0;color:#dcc9df;white-space:nowrap}.sort-action .ws-icon{width:16px;height:16px}
.catalog-actions{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:3px 0 10px}.catalog-actions small{font-size:11px;color:#e9c4e9}
.filter-button{background:rgba(15,6,20,.94);border:1px solid #ac5ea9;color:#eecce9;border-radius:30px;display:inline-flex;align-items:center;gap:7px;padding:5px 12px;font-size:12px}.filter-button .ws-icon{width:14px;height:14px}
.filters{margin:0 0 12px;padding:12px;background:#210a2a;border:1px solid #d46cca;border-radius:14px}
.filters input{width:100%;border-radius:9px;background:#13081c;color:white;border:1px solid #974a9e;padding:10px}
.filter-pills{display:flex;gap:8px;overflow-x:auto;margin-top:9px}.filter-pill{flex:none;border-radius:24px;padding:6px 10px;background:#1f0a29;border:1px solid #a45e9f;font-size:12px}.filter-pill.active{background:#873182}
/* Listing cards – strictly mapped to the approved reference (image left, editorial content right). */
.listing-grid{display:grid;gap:10px}
.listing-card{display:grid;grid-template-columns:minmax(0,45%) minmax(0,55%);min-height:190px;background:linear-gradient(110deg,#17081ceF,#1a0a1eFA);border:1px solid rgba(255,165,243,.58);border-radius:19px;overflow:hidden;box-shadow:0 0 7px #10031388,inset 0 0 9px #ff7bef10}
.listing-photo{position:relative;min-width:0;min-height:190px;overflow:hidden}
.photo-click{display:block;width:100%;height:100%;position:absolute;inset:0;background:#210a29;border:0;padding:0;overflow:hidden}
.photo-click img{width:100%;height:100%;object-fit:cover;object-position:center center}
.listing-badge{position:absolute;top:8px;left:8px;border:1.5px solid #ff86ec;border-radius:24px;background:#53114ccf;box-shadow:0 0 9px #fb59e488;color:white;padding:4px 10px;font-size:12px;pointer-events:none;white-space:nowrap}
.listing-main{min-width:0;padding:10px 12px 9px;display:flex;flex-direction:column;gap:4px}
.listing-title-row{display:flex;gap:5px;align-items:flex-start;justify-content:space-between}
.listing-title{min-width:0;max-width:100%;border:0;background:transparent;text-align:left;padding:0;color:white;font-size:clamp(16px,2.5vw,23px);font-weight:760;line-height:1.12;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;text-wrap:balance}
.favorite{font-size:28px;line-height:.8;flex:none;color:#ffb6fa;background:transparent;border:0;padding:0 0 4px}.favorite.is-favorite{color:#ff51d9;text-shadow:0 0 8px #ff69dc}
.listing-desc{font-size:clamp(11px,1.55vw,16px);line-height:1.29;color:#e8d9e8;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.listing-meta{display:flex;flex-direction:column;gap:2px;font-size:clamp(10px,1.3vw,14px);line-height:1.25;color:#e9d9e9;min-width:0}.listing-meta span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.listing-bottom{margin-top:auto;display:grid;grid-template-columns:auto minmax(0,1fr);gap:5px;align-items:end}
.listing-price{font-size:clamp(17px,2.5vw,26px);color:#ffc2f9;font-weight:780;white-space:nowrap;line-height:1.13}
.listing-action-col{display:flex;flex-direction:column;align-items:flex-end;gap:7px;min-width:0}
.stock-pill{font-size:clamp(10px,1.1vw,12px);border:1px solid #1bd47a;background:#002d1bbd;color:#9af0bc;border-radius:25px;padding:3px 8px;white-space:nowrap;line-height:1.2}
.cart-add{border:1.5px solid #ee6cdb;background:linear-gradient(150deg,#4c0745a8,#2a0829aa);border-radius:25px;display:flex;gap:5px;align-items:center;justify-content:center;padding:6px 9px;min-height:31px;color:#fff3ff;font-size:clamp(9px,1.3vw,12px);font-weight:600;white-space:nowrap;box-shadow:inset 0 0 7px #f14cdd55}
.cart-add .ws-icon{width:17px;height:17px}
/* Fixed shell navigation uses no CSS 'position:fixed'; it is a bottom flex sibling of #app. */
#nav-root{position:relative;z-index:10;flex:0 0 auto;background:#120b18;border:1px solid rgba(238,154,230,.42);border-bottom:0;border-radius:22px 22px 0 0;box-shadow:0 -5px 17px rgba(7,0,13,.81);padding-bottom:env(safe-area-inset-bottom,0px)}
.bottom-nav{max-width:900px;margin:0 auto;min-height:var(--nav-height);display:grid;grid-template-columns:repeat(5,minmax(0,1fr));align-items:stretch;padding:5px 5px 2px}
.nav-link{position:relative;min-width:0;border:0;background:transparent;color:#c7badb;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:5px;font-size:12px;padding:6px 2px 8px}
.nav-link .ws-icon{height:26px;width:26px;stroke-width:1.6}.nav-link.active{color:white;text-shadow:0 0 10px #fb58ed}.nav-link.active .ws-icon{filter:drop-shadow(0 0 5px #ff48ea);stroke:#fff}
.nav-link.active:after{content:'';position:absolute;bottom:0;left:22%;right:22%;height:3px;background:#fb55e8;box-shadow:0 0 8px #fb55e8}
/* Modal root is the topmost sibling. Underlying page cannot receive touch events. */
#overlay-root{position:relative;z-index:50;flex:0;min-height:0}
.modal-backdrop{position:fixed;z-index:60;inset:0;width:100%;height:100%;height:100dvh;background:rgba(2,0,6,.83);display:flex;justify-content:center;align-items:stretch;padding:env(safe-area-inset-top,0px) 0 env(safe-area-inset-bottom,0px);touch-action:none}
.modal-panel{width:min(100%,950px);min-height:0;height:100%;display:flex;flex-direction:column;background:linear-gradient(180deg,#27062beF,#140818ff);border:1px solid rgba(255,130,236,.65);border-radius:20px;box-shadow:0 0 24px #e52cb147;touch-action:auto;overflow:hidden}
.modal-heading{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:13px 17px;border-bottom:1px solid #a968a1;flex:none}
.modal-heading h2{font-size:23px;color:#fff}.modal-close{border:1px solid #f17de6;border-radius:50%;width:36px;height:36px;background:#290d32;font-size:27px;line-height:1}
.modal-content{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;padding:16px}
.modal-open .page-scroll,.modal-open #nav-root{pointer-events:none}
.eyebrow{color:#ff9df1;text-transform:uppercase;font-size:11px;letter-spacing:.13em;font-weight:650}
.cart-row{display:grid;grid-template-columns:80px minmax(0,1fr) auto;gap:10px;padding:10px 0;border-bottom:1px solid #6b3c68;align-items:center}.cart-row>img{width:80px;height:80px;object-fit:cover;border-radius:11px}.cart-text{min-width:0;display:grid;gap:4px}.cart-text small{color:#eac9e8}.cart-row>strong{font-size:14px;white-space:nowrap}.qty{display:flex;gap:10px;align-items:center}.qty button{width:28px;height:28px;border:1px solid #f16bdb;border-radius:7px;background:#321137}.cart-total{display:flex;justify-content:space-between;font-size:21px;margin:20px 0 13px}.cart-total b,.detail-price{color:#ffc0f5}.cart-hint,.variant-note{font-size:12px;color:#eacfe9;margin:12px 0 16px}
.detail-view{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px}.detail-photo{position:relative;align-self:start;border:1px solid #ef80df;border-radius:14px;overflow:hidden}.detail-photo img{width:100%;aspect-ratio:1;object-fit:cover}.detail-heart{position:absolute;right:12px;top:12px;text-shadow:0 0 8px #4a0645}.detail-main{display:flex;flex-direction:column;align-items:flex-start;gap:10px;min-width:0}.detail-main h2{font-size:clamp(23px,4vw,33px);line-height:1.12}.detail-seller{font-size:12px;color:#f5a6f0}.detail-price{font-size:32px;font-weight:750}.detail-facts{display:grid;gap:6px;padding:12px;border:1px solid #8d4b86;border-radius:12px;width:100%;font-size:13px}.detail-main h3{font-size:18px}.variant-row{display:flex;gap:7px;flex-wrap:wrap}.variant{background:#1c0a27;border:1px solid #aa5b9b;border-radius:25px;padding:8px 10px;font-size:12px}.variant.selected{background:#801576;border-color:#ff8bed}.detail-buttons{display:flex;flex-wrap:wrap;gap:9px}
.intro-hero{padding:20px 0}.intro-hero h1{font-size:clamp(28px,5vw,44px);margin:11px 0}.intro-hero>p{color:#ead6ea;margin-bottom:18px}.intro-panel{min-height:250px;position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;padding:30px;border:1px solid var(--line);border-radius:27px;background:#180a1edc;gap:22px}.intro-panel>b{position:relative;font-size:clamp(24px,4vw,38px)}.intro-panel>img{position:absolute;width:57%;height:95%;right:0;bottom:0;object-fit:contain;opacity:.25}.intro-panel>button{position:relative}.intro-links{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:17px 0}.intro-links button{background:#1a081f;border:1px solid var(--line);border-radius:16px;padding:25px 10px;color:#fff}.section-heading{margin:22px 0 10px}.info-panel{background:#210b29ee;border:1px solid #b464af;border-radius:19px;padding:23px;line-height:1.5}.info-panel h1,.info-panel h2{margin-bottom:14px}.placeholder{min-height:240px;display:flex;flex-direction:column;gap:18px;align-items:flex-start}.demo-footer{text-align:center;font-size:11px;color:#bd9bbf;padding:25px 0 12px}.startup-error{padding:25px}
.snowflakes{pointer-events:none;position:absolute;inset:0;overflow:hidden;z-index:3}.snowflakes i{position:absolute;top:-40px;animation:snowfall linear infinite;color:white;text-shadow:0 0 6px white;opacity:.8;font-style:normal}.snow-base{position:absolute;bottom:0;height:12px;width:100%;background:linear-gradient(0deg,#f2eafb90,transparent);z-index:3;pointer-events:none}@keyframes snowfall{to{transform:translate3d(12px,110dvh,0)}}
@media(max-width:740px){
  .brand-header{min-height:128px;padding:16px 0 14px}.brand-girl{width:clamp(52px,16vw,94px)}.brand-text{width:clamp(114px,34vw,235px)}
  .header-controls{gap:6px}.coin-pill{padding:5px 9px;column-gap:4px}.coin-pill .coin-label{display:none}.coin-pill strong{font-size:15px}.age-mark{width:37px;height:37px;font-size:12px}
  .seller-card{grid-template-columns:72px minmax(0,1fr);padding:12px;gap:10px}.avatar-frame{width:72px;height:72px;grid-row:span 2}.seller-details h1{font-size:18px}.seller-details p{font-size:12px;line-height:1.35}.seller-stats{gap:5px;margin-top:3px}.seller-stats small{font-size:10px}.seller-buttons{grid-column:2;flex-direction:row;gap:8px}.seller-buttons .neon-button{min-width:0;flex:1;padding:7px 6px;font-size:11px;min-height:31px;gap:4px}.seller-buttons .ws-icon{width:16px;height:16px}
  .listing-card{min-height:205px}.listing-photo{min-height:205px}.listing-main{padding:9px 9px;gap:5px}.listing-title{font-size:16px}.listing-desc{font-size:12px}.listing-meta{font-size:10.5px}.listing-price{font-size:18px}.cart-add{padding:5px 7px;font-size:10px}.cart-add .ws-icon{width:15px;height:15px}
  .stock-pill{font-size:10px}.detail-view{grid-template-columns:1fr}.detail-photo img{aspect-ratio:1.5}.detail-main h2{font-size:24px}
}
@media(max-width:410px){
  .content-wrap{padding-inline:11px}.brand-header{min-height:118px}.brand-girl{width:53px}.brand-text{width:130px}.age-mark{width:34px;height:34px}.coin-pill .coin-stack{font-size:16px}.event-action{padding:1px;font-size:19px}
  .seller-card{border-radius:18px}.seller-tabs{gap:0}.seller-tab{padding:8px 2px 11px;font-size:12px}.sort-action span{display:none}.tab-strip{gap:3px}
  .listing-card{grid-template-columns:minmax(0,44%) minmax(0,56%);min-height:205px;border-radius:17px}.listing-photo{min-height:205px}.listing-main{padding:9px 8px;gap:4px}.listing-title{font-size:14.5px}.listing-desc{font-size:11.2px;-webkit-line-clamp:2}.listing-meta{font-size:10px}.listing-bottom{grid-template-columns:auto minmax(0,1fr);gap:3px}.listing-price{font-size:16.5px}.listing-action-col{gap:6px}.stock-pill{font-size:9px;padding:3px 6px}.cart-add{font-size:9px;gap:3px;padding:5px}.cart-add .ws-icon{display:none}.listing-badge{font-size:11px;left:6px;top:7px;padding:4px 7px}
  .nav-link{font-size:11px}.nav-link .ws-icon{width:24px;height:24px}.bottom-nav{min-height:74px}
}
@media(max-width:355px){
  .listing-card{min-height:222px}.listing-photo{min-height:222px}.listing-bottom{grid-template-columns:1fr}.listing-action-col{align-items:flex-start}.listing-price{font-size:18px}.seller-card{grid-template-columns:60px 1fr}.avatar-frame{width:60px;height:60px}.brand-text{width:112px}.brand-girl{width:46px}
  .cart-row{grid-template-columns:60px minmax(0,1fr);gap:8px}.cart-row>img{width:60px;height:60px}.cart-row>strong{grid-column:2}
}
@media(min-width:850px){.listing-grid{grid-template-columns:1fr 1fr}.listing-card{min-height:238px;grid-template-columns:42% 58%}.listing-photo{min-height:238px}.listing-main{padding:14px}.listing-title{font-size:18px}.listing-desc{font-size:13px}.listing-meta{font-size:12px}.listing-price{font-size:21px}.cart-add{font-size:11px}.seller-card{margin-bottom:18px}}
@media(prefers-reduced-motion:reduce){.snowflakes{display:none}}
/* Keep enough content height on non-article tabs for preserving scroll offset.
   Avoid snap-to-top when the profile section becomes shorter than viewport. */
#seller-content { min-height: calc(100dvh - 160px); }
@media(max-width:410px){
  .sort-action{font-size:10px;gap:2px}
  .sort-action span{display:inline}
  .sort-action .ws-icon{width:14px;height:14px}
}

/* Presence layers: photo, transparent ring and status indicator are independent.
   This DEMO status is explicitly toggled; production presence must be server-authoritative. */
.online-dot.presence-away{background:#f8b536}.online-pill.presence-away{border-color:#d99b2b;color:#ffdfa2;background:#342105}
.online-dot.presence-offline{background:#94929f}.online-pill.presence-offline{border-color:#77717e;color:#cbc4cf;background:#201825}

/* v0.4 faithful editorial product cards. One image plane and two data rows, no floating buttons. */
.listing-grid{gap:10px}
.listing-card{grid-template-columns:minmax(0,44%) minmax(0,56%);min-height:172px;align-items:stretch;border-radius:18px}
.listing-photo{min-height:172px}
.listing-main{padding:10px 11px 9px;display:flex;flex-direction:column;gap:5px;min-height:0}
.listing-title-row{align-items:flex-start;gap:3px}
.listing-title{font-size:clamp(16px,2.45vw,21px);line-height:1.14;letter-spacing:-.012em;text-wrap:normal}
.favorite{font-size:26px;line-height:1;min-width:22px}
.listing-desc{font-size:clamp(11px,1.7vw,14px);line-height:1.3;-webkit-line-clamp:2}
.listing-meta{gap:3px;font-size:clamp(10px,1.45vw,12px);line-height:1.28}
.listing-actions{margin-top:auto;display:flex;flex-direction:column;gap:7px;min-width:0}
.listing-actions .stock-pill{align-self:flex-end;display:inline-flex;align-items:center;gap:5px;padding:3px 8px;font-size:clamp(9px,1.2vw,12px)}
.status-dot{width:7px;height:7px;flex:none;border-radius:50%;background:#24e37c;box-shadow:0 0 5px #1def78}
.listing-buy-row{display:flex;justify-content:space-between;align-items:end;gap:5px;min-width:0}
.listing-price{font-size:clamp(17px,2.55vw,26px);line-height:1.2}
.cart-add{font-size:clamp(9px,1.35vw,12px);padding:6px 9px;min-height:30px;border-radius:24px;flex:none;gap:4px}
.cart-add .ws-icon{width:16px;height:16px}
.cart-add-short{display:none}
@media(max-width:740px){
 .listing-card{min-height:174px;grid-template-columns:minmax(0,44%) minmax(0,56%)}
 .listing-photo{min-height:174px}
 .listing-main{padding:8px 9px;gap:4px}
 .listing-title{font-size:clamp(14.5px,3.7vw,17px)}
 .listing-desc{font-size:clamp(10.8px,2.9vw,12.5px)}
 .listing-meta{font-size:clamp(9.3px,2.6vw,11.5px)}
 .listing-price{font-size:clamp(17px,4.3vw,21px)}
 .cart-add{font-size:clamp(9.2px,2.5vw,11px);padding:5px 7px}
 .cart-add .ws-icon{width:15px;height:15px;display:block}
 .listing-actions{gap:6px}
}
@media(max-width:410px){
 .listing-card{min-height:168px;grid-template-columns:minmax(0,43%) minmax(0,57%)}
 .listing-photo{min-height:168px}
 .listing-main{padding:8px;gap:4px}
 .listing-title{font-size:15.5px}
 .listing-desc{font-size:11px}
 .listing-meta{font-size:10px}
 .listing-price{font-size:17px}
 .stock-pill{font-size:9px}
 .cart-add{font-size:10px;padding:5px 6px}
}
@media(max-width:355px){
 .listing-card{min-height:180px;grid-template-columns:minmax(0,41%) minmax(0,59%)}
 .listing-photo{min-height:180px}
 .listing-main{padding:7px 6px}
 .listing-title{font-size:14px}
 .listing-desc{font-size:10.5px}
 .listing-meta{font-size:9px}
 .listing-price{font-size:16px}
 .cart-add{font-size:10px;padding:5px 7px}
 .cart-add-long{display:none}.cart-add-short{display:inline}
}
@media(min-width:850px){
 .listing-grid{grid-template-columns:1fr 1fr}
 .listing-card{min-height:208px;grid-template-columns:43% 57%}
 .listing-photo{min-height:208px}
 .listing-main{padding:13px 14px}
}

/* v0.4 stable bottom edge. Android's native navigation area is outside browser CSS. */
#nav-root{margin:0;align-self:stretch;width:100%;border-radius:21px 21px 0 0;border-bottom:0;background:var(--system-bar);padding-bottom:max(0px,env(safe-area-inset-bottom));}
.bottom-nav{min-height:var(--nav-height);padding:3px 6px 0;align-items:stretch}
.nav-link{padding:5px 2px 6px}
@media(max-width:410px){.bottom-nav{min-height:70px}}
/* Dialog is a true uppermost portal, not part of flex layout. No page-scroll behind it. */
#overlay-root{position:fixed;inset:0;z-index:100;pointer-events:none;overflow:hidden}
.modal-backdrop{position:absolute;inset:0;z-index:1;width:100%;height:100%;display:flex;align-items:flex-end;justify-content:center;padding:0;background:rgba(2,0,6,.86);pointer-events:auto;touch-action:none}
.modal-panel{flex:0 1 auto;width:min(100%,790px);height:auto;min-height:0;max-height:min(84dvh,760px);border-radius:26px 26px 0 0;border:1px solid rgba(255,125,241,.75);border-bottom:0;background:linear-gradient(180deg,rgba(13,2,21,.42),rgba(14,3,23,.48)),url('assets/neon-wallpaper.jpg') center 35% / cover no-repeat,#15071f;box-shadow:0 -5px 35px rgba(224,38,206,.48),inset 0 1px 20px #f472ed1a;padding-bottom:env(safe-area-inset-bottom,0px);touch-action:pan-y;overflow:hidden}
.modal-content{flex:0 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:14px 16px 20px}
.modal-heading{background:rgba(22,4,29,.53);flex:0 0 auto}
.modal-cart .modal-content{background:rgba(16,3,25,.18)}
.modal-detail{max-height:min(91dvh,860px)}
@media(min-width:850px){.modal-backdrop{align-items:center;padding:24px}.modal-panel{border-radius:26px;border-bottom:1px solid rgba(255,125,241,.75);padding-bottom:0}}

/* v0.5 display gates */
#nav-root:empty{display:none}
#overlay-root:empty{display:none}
.demo-footer .logout-button{margin-left:7px}
