/* ============================================================================
   CVN Computers — Store, Blog, Carousel & Alerts
   Public-facing components for products.html, blog.html, blog-post.html
   Built entirely on the existing design-system tokens (styles.css)
   ========================================================================== */

/* ---- Generic toolbar above a grid --------------------------------------- */
.store-bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1.8rem}
.store-bar .count{font-family:var(--font-mono);font-size:.8rem;letter-spacing:.04em;color:var(--ink-3)}
.store-search{position:relative;flex:1;max-width:340px;min-width:200px}
.store-search input{width:100%;padding:.7rem 1rem .7rem 2.6rem;border-radius:var(--radius-pill);
  background:var(--surface-2);border:1.5px solid var(--line);color:var(--ink);font-size:.92rem;transition:border-color .2s,background .2s}
.store-search input:focus{outline:none;border-color:var(--brand);background:var(--surface)}
.store-search svg{position:absolute;left:.95rem;top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--ink-3)}

/* ============================================================================
   CAROUSEL  (pinned products / pinned posts)
   ========================================================================== */
.carousel{position:relative;margin-bottom:clamp(2.5rem,5vw,4rem)}
.carousel__head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.2rem}
.carousel__head .ttl{display:flex;align-items:center;gap:.7rem}
.carousel__head .pin-ic{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;
  background:var(--accent);color:#241500;flex:none}
.carousel__head .pin-ic svg{width:18px;height:18px}
.carousel__head h2{font-size:clamp(1.3rem,2.4vw,1.8rem)}
.carousel__nav{display:flex;gap:.5rem}
.carousel__nav button{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;
  background:var(--surface);border:1px solid var(--line-2);color:var(--ink-2);box-shadow:var(--shadow-sm);
  transition:.2s var(--ease)}
.carousel__nav button:hover:not(:disabled){border-color:var(--brand);color:var(--brand-ink);transform:translateY(-2px)}
.carousel__nav button:disabled{opacity:.35;cursor:not-allowed}
.carousel__nav svg{width:20px;height:20px}
.carousel__track{display:flex;gap:clamp(1rem,2vw,1.5rem);overflow-x:auto;scroll-snap-type:x mandatory;
  scroll-behavior:smooth;padding:.4rem .25rem 1.2rem;margin:-.4rem -.25rem 0;scrollbar-width:thin}
.carousel__track::-webkit-scrollbar{height:8px}
.carousel__track::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:8px}
.carousel__track>*{scroll-snap-align:start;flex:0 0 auto}
.carousel__dots{display:flex;gap:.4rem;justify-content:center;margin-top:.2rem}
.carousel__dots button{width:8px;height:8px;border-radius:50%;background:var(--line-2);transition:.25s}
.carousel__dots button.on{background:var(--brand);width:24px;border-radius:5px}

/* ============================================================================
   PRODUCT CARDS  (default "cards" layout)
   ========================================================================== */
.pgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1rem,2.2vw,1.6rem)}
.carousel__track .pcard{width:min(380px,80vw)}

.pcard{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;
  box-shadow:var(--shadow-sm);display:flex;flex-direction:column;cursor:pointer;
  transition:transform .4s var(--ease-out),box-shadow .4s var(--ease),border-color .3s}
.pcard:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg);border-color:var(--brand)}
.pcard__media{position:relative;aspect-ratio:4/3;overflow:hidden;background:
  repeating-linear-gradient(135deg,var(--surface-2),var(--surface-2) 11px,var(--surface-3) 11px,var(--surface-3) 22px)}
.pcard__media img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease-out)}
.pcard:hover .pcard__media img{transform:scale(1.06)}
.pcard__grade{position:absolute;top:.7rem;left:.7rem;z-index:2}
.pcard__pin{position:absolute;top:.7rem;right:.7rem;z-index:2;width:30px;height:30px;border-radius:9px;
  display:grid;place-items:center;background:var(--accent);color:#241500;box-shadow:var(--shadow-sm)}
.pcard__pin svg{width:15px;height:15px}
.pcard__stock{position:absolute;bottom:.7rem;left:.7rem;z-index:2}
.pcard__warn-flag{position:absolute;bottom:.7rem;right:.7rem;z-index:2;width:30px;height:30px;border-radius:9px;
  display:grid;place-items:center;background:oklch(0.7 0.18 45);color:#fff;box-shadow:var(--shadow-sm)}
.pcard__warn-flag svg{width:17px;height:17px}
.pcard__body{padding:1.1rem 1.15rem 1.25rem;display:flex;flex-direction:column;gap:.6rem;flex:1}
.pcard__title{font-family:var(--font-display);font-weight:600;font-size:1.06rem;line-height:1.25;color:var(--ink);
  letter-spacing:-.01em}
.pcard__tags{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:-.1rem}
.ptag{font-family:var(--font-mono);font-size:.68rem;font-weight:500;letter-spacing:.02em;padding:.2em .6em;
  border-radius:var(--radius-pill);background:var(--surface-2);border:1px solid var(--line);color:var(--ink-3)}
.pcard__foot{display:flex;align-items:center;justify-content:space-between;gap:.6rem;margin-top:auto;padding-top:.4rem}
.pcard__price{font-family:var(--font-display);font-weight:700;font-size:1.28rem;color:var(--brand-ink);letter-spacing:-.02em}
.pcard__cta{font-size:.82rem;font-weight:700;color:var(--ink-3);display:inline-flex;align-items:center;gap:.3em;transition:color .2s,gap .2s}
.pcard:hover .pcard__cta{color:var(--brand-ink);gap:.5em}
.pcard__cta svg{width:14px;height:14px}

/* grade badge colours */
.grade{font-family:var(--font-mono);font-size:.68rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  padding:.32em .7em;border-radius:var(--radius-pill);display:inline-flex;align-items:center;gap:.4em;box-shadow:var(--shadow-sm)}
.grade::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.grade--a{background:oklch(0.95 0.06 150);color:oklch(0.45 0.12 150)}
.grade--b{background:oklch(0.96 0.05 230);color:oklch(0.45 0.12 230)}
.grade--c{background:oklch(0.96 0.05 60);color:oklch(0.46 0.11 60)}
[data-theme="dark"] .grade--a{background:oklch(0.4 0.08 150);color:oklch(0.9 0.08 150)}
[data-theme="dark"] .grade--b{background:oklch(0.4 0.08 230);color:oklch(0.9 0.08 230)}
[data-theme="dark"] .grade--c{background:oklch(0.42 0.08 60);color:oklch(0.92 0.08 60)}

.stockpill{font-family:var(--font-mono);font-size:.66rem;font-weight:600;letter-spacing:.04em;padding:.3em .7em;
  border-radius:var(--radius-pill);background:var(--glass);backdrop-filter:blur(6px);border:1px solid var(--glass-line);color:var(--ink)}
.stockpill.low{color:oklch(0.55 0.18 45)}
.stockpill.out{color:var(--ink-3)}

/* ---- Layout variant: COMPACT (denser, 4-up, overlay info) --------------- */
.pgrid.layout-compact{grid-template-columns:repeat(4,1fr);gap:clamp(.8rem,1.6vw,1.2rem)}
.pgrid.layout-compact .pcard__body{padding:.85rem .9rem 1rem;gap:.45rem}
.pgrid.layout-compact .pcard__title{font-size:.95rem}
.pgrid.layout-compact .pcard__tags{display:none}
.pgrid.layout-compact .pcard__price{font-size:1.1rem}

/* ---- Layout variant: SHOWCASE (2-up, horizontal split cards) ------------ */
.pgrid.layout-showcase{grid-template-columns:repeat(2,1fr);gap:clamp(1.2rem,2.5vw,2rem)}
.pgrid.layout-showcase .pcard{flex-direction:row;align-items:stretch}
.pgrid.layout-showcase .pcard__media{aspect-ratio:auto;width:44%;flex:none}
.pgrid.layout-showcase .pcard__body{padding:1.3rem 1.4rem}
.pgrid.layout-showcase .pcard__title{font-size:1.15rem}

@media (max-width:900px){
  .pgrid,.pgrid.layout-compact{grid-template-columns:repeat(2,1fr)}
  .pgrid.layout-showcase{grid-template-columns:1fr}
}
@media (max-width:540px){
  .pgrid,.pgrid.layout-compact{grid-template-columns:1fr}
  .pgrid.layout-showcase .pcard{flex-direction:column}
  .pgrid.layout-showcase .pcard__media{width:100%;aspect-ratio:4/3}
}

/* ============================================================================
   PRODUCT DETAIL MODAL  (full-screen lightbox)
   ========================================================================== */
.pmodal{position:fixed;inset:0;z-index:200;display:none;align-items:center;justify-content:center;padding:clamp(.5rem,3vw,2.5rem)}
.pmodal.open{display:flex}
.pmodal__scrim{position:absolute;inset:0;background:oklch(0.14 0.02 220 / .7);backdrop-filter:blur(6px);animation:fade .3s}
@keyframes fade{from{opacity:0}}
.pmodal__panel{position:relative;z-index:1;width:min(1080px,100%);max-height:92vh;overflow:hidden;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);
  display:grid;grid-template-columns:1.05fr 1fr;animation:modal-in .4s var(--ease-out)}
@keyframes modal-in{from{opacity:0;transform:translateY(20px) scale(.98)}}
.pmodal__close{position:absolute;top:.9rem;right:.9rem;z-index:5;width:42px;height:42px;border-radius:50%;
  display:grid;place-items:center;background:var(--glass);backdrop-filter:blur(8px);border:1px solid var(--glass-line);
  color:var(--ink);font-size:1.3rem;box-shadow:var(--shadow-sm);transition:.2s}
.pmodal__close:hover{background:var(--surface);transform:rotate(90deg)}

/* gallery side */
.pmodal__gallery{background:var(--bg-2);display:flex;flex-direction:column;min-height:0}
.pmodal__main{position:relative;flex:1;min-height:300px;overflow:hidden;background:
  repeating-linear-gradient(135deg,var(--surface-2),var(--surface-2) 11px,var(--surface-3) 11px,var(--surface-3) 22px)}
.pmodal__main img{width:100%;height:100%;object-fit:cover}
.pmodal__thumbs{display:flex;gap:.5rem;padding:.75rem;overflow-x:auto;flex:none}
.pmodal__thumbs button{width:64px;height:50px;border-radius:9px;overflow:hidden;border:2px solid transparent;flex:none;background:var(--surface-3)}
.pmodal__thumbs button.on{border-color:var(--brand)}
.pmodal__thumbs img{width:100%;height:100%;object-fit:cover}

/* info side */
.pmodal__info{padding:clamp(1.4rem,2.5vw,2.2rem);overflow-y:auto;display:flex;flex-direction:column;gap:1rem}
.pmodal__info .top{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
.pmodal__info h2{font-size:clamp(1.4rem,2.6vw,1.9rem);line-height:1.15}
.pmodal__price-row{display:flex;align-items:baseline;gap:.8rem;flex-wrap:wrap}
.pmodal__price{font-family:var(--font-display);font-weight:700;font-size:clamp(1.8rem,3vw,2.4rem);color:var(--brand-ink);letter-spacing:-.02em}
.pmodal__stock{font-family:var(--font-mono);font-size:.82rem;color:var(--ink-2)}
.pmodal__warn{display:flex;gap:.7rem;align-items:flex-start;background:oklch(0.7 0.18 45 / .12);
  border:1px solid oklch(0.7 0.18 45 / .4);border-radius:var(--radius-sm);padding:.85rem 1.05rem;color:var(--ink-2);font-size:.88rem;line-height:1.5}
.pmodal__warn svg{width:20px;height:20px;color:oklch(0.6 0.18 40);flex:none;margin-top:1px}
.pmodal__warn b{color:var(--ink)}
.pmodal__desc{color:var(--ink-2);font-size:.96rem;line-height:1.65}
.pmodal__spec{display:flex;flex-direction:column;gap:.1rem;border-top:1px solid var(--line);padding-top:.9rem}
.pmodal__spec .row{display:flex;justify-content:space-between;gap:1rem;padding:.5rem 0;border-bottom:1px solid var(--line);font-size:.9rem}
.pmodal__spec .row span:first-child{color:var(--ink-3)}
.pmodal__spec .row span:last-child{color:var(--ink);font-weight:600;text-align:right}
.pmodal__tags{display:flex;flex-wrap:wrap;gap:.4rem}
.pmodal__actions{display:flex;flex-direction:column;gap:.7rem;margin-top:auto;padding-top:.6rem}
.pmodal__actions .btn{width:100%}

@media (max-width:780px){
  .pmodal__panel{grid-template-columns:1fr;max-height:94vh;overflow-y:auto}
  .pmodal__gallery{max-height:42vh}
  .pmodal__main{min-height:220px}
}

/* ============================================================================
   BLOG CARDS
   ========================================================================== */
.bgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1.2rem,2.5vw,2rem)}
.carousel__track .bcard{width:min(420px,84vw)}

.bcard{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  overflow:hidden;box-shadow:var(--shadow-sm);transition:transform .4s var(--ease-out),box-shadow .4s,border-color .3s}
.bcard:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg);border-color:var(--brand)}
.bcard__media{aspect-ratio:16/9;overflow:hidden;background:
  repeating-linear-gradient(135deg,var(--surface-2),var(--surface-2) 11px,var(--surface-3) 11px,var(--surface-3) 22px)}
.bcard__media img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease-out)}
.bcard:hover .bcard__media img{transform:scale(1.05)}
.bcard__body{padding:1.3rem 1.35rem 1.45rem;display:flex;flex-direction:column;gap:.7rem;flex:1}
.bcard__meta{display:flex;align-items:center;gap:.6rem;font-family:var(--font-mono);font-size:.7rem;letter-spacing:.04em;
  text-transform:uppercase;color:var(--ink-3)}
.bcard__meta .pin{display:inline-flex;align-items:center;gap:.3em;color:var(--accent-strong);font-weight:700}
.bcard__meta .pin svg{width:13px;height:13px}
.bcard__title{font-family:var(--font-display);font-weight:600;font-size:1.22rem;line-height:1.22;color:var(--ink);letter-spacing:-.015em}
.bcard__excerpt{color:var(--ink-3);font-size:.92rem;line-height:1.6;flex:1}
.bcard__more{font-size:.84rem;font-weight:700;color:var(--brand-ink);display:inline-flex;align-items:center;gap:.35em;transition:gap .2s}
.bcard:hover .bcard__more{gap:.6em}
.bcard__more svg{width:15px;height:15px}

/* ---- Layout variant: LIST (horizontal rows) ----------------------------- */
.bgrid.layout-list{grid-template-columns:1fr;gap:1.2rem}
.bgrid.layout-list .bcard{flex-direction:row;align-items:stretch}
.bgrid.layout-list .bcard__media{aspect-ratio:auto;width:min(320px,38%);flex:none}
.bgrid.layout-list .bcard__body{padding:1.4rem 1.6rem}
.bgrid.layout-list .bcard__title{font-size:1.4rem}
.bgrid.layout-list .bcard__excerpt{max-width:62ch}

/* ---- Layout variant: MINIMAL (text-forward, no images) ------------------ */
.bgrid.layout-minimal{grid-template-columns:1fr;gap:0}
.bgrid.layout-minimal .bcard{flex-direction:row;align-items:center;gap:1.5rem;border:none;border-bottom:1px solid var(--line);
  border-radius:0;box-shadow:none;background:transparent;padding:1.6rem .4rem}
.bgrid.layout-minimal .bcard:hover{transform:none;box-shadow:none;border-color:var(--line);background:var(--surface-2)}
.bgrid.layout-minimal .bcard__media{display:none}
.bgrid.layout-minimal .bcard__body{padding:0;gap:.5rem}
.bgrid.layout-minimal .bcard__title{font-size:1.5rem}
.bgrid.layout-minimal .bcard__num{font-family:var(--font-display);font-weight:700;font-size:1.6rem;color:var(--line-2);flex:none;width:3rem}

@media (max-width:900px){.bgrid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:600px){
  .bgrid,.bgrid.layout-list{grid-template-columns:1fr}
  .bgrid.layout-list .bcard,.bgrid.layout-minimal .bcard{flex-direction:column;align-items:stretch}
  .bgrid.layout-list .bcard__media{width:100%;aspect-ratio:16/9}
  .bgrid.layout-minimal .bcard__num{display:none}
}

/* ============================================================================
   BLOG POST (single article)
   ========================================================================== */
.article{max-width:760px;margin-inline:auto}
.article__cover{aspect-ratio:21/9;border-radius:var(--radius-lg);overflow:hidden;margin-bottom:2.2rem;box-shadow:var(--shadow);background:
  repeating-linear-gradient(135deg,var(--surface-2),var(--surface-2) 11px,var(--surface-3) 11px,var(--surface-3) 22px)}
.article__cover img{width:100%;height:100%;object-fit:cover}
.article__body{font-size:1.1rem;line-height:1.75;color:var(--ink-2)}
.article__body>*+*{margin-top:1.4rem}
.article__body h2{font-size:clamp(1.4rem,2.6vw,1.9rem);color:var(--ink);margin-top:2.4rem;letter-spacing:-.02em}
.article__body h3{font-size:1.3rem;color:var(--ink);margin-top:1.8rem}
.article__body p{color:var(--ink-2)}
.article__body a{color:var(--brand-ink);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1.5px}
.article__body strong{color:var(--ink);font-weight:700}
.article__body ul,.article__body ol{padding-left:1.4rem;display:flex;flex-direction:column;gap:.6rem;color:var(--ink-2)}
.article__body ul li{list-style:disc}
.article__body ol li{list-style:decimal}
.article__body img{border-radius:var(--radius);box-shadow:var(--shadow-sm);width:100%}
.article__body figure figcaption{font-family:var(--font-mono);font-size:.78rem;color:var(--ink-3);text-align:center;margin-top:.6rem}
.article__body blockquote{border-left:3px solid var(--brand);padding:.4rem 0 .4rem 1.4rem;font-family:var(--font-display);
  font-size:1.3rem;font-weight:500;line-height:1.45;color:var(--ink);font-style:normal}
.article__body blockquote cite{display:block;font-family:var(--font-body);font-size:.92rem;font-weight:600;color:var(--ink-3);font-style:normal;margin-top:.7rem}
.article__body pre{background:var(--surface-3);border:1px solid var(--line);border-radius:var(--radius-sm);padding:1.1rem 1.3rem;
  overflow-x:auto;font-family:var(--font-mono);font-size:.9rem;line-height:1.6;color:var(--ink)}
.article__body hr{height:1px;background:var(--line);border:0;margin:2.4rem 0}
.article__callout{display:flex;gap:.9rem;align-items:flex-start;border-radius:var(--radius);padding:1.1rem 1.3rem;font-size:.98rem;line-height:1.6}
.article__callout svg{width:22px;height:22px;flex:none;margin-top:1px}
.article__callout.info{background:var(--brand-soft);border:1px solid oklch(0.7 0.08 var(--brand-h) / .3);color:var(--ink-2)}
.article__callout.info svg{color:var(--brand-ink)}
.article__callout.warn{background:oklch(0.78 0.15 65 / .14);border:1px solid oklch(0.78 0.15 65 / .4);color:var(--ink-2)}
.article__callout.warn svg{color:var(--accent-strong)}
.article__share{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap;margin-top:3rem;padding-top:1.6rem;border-top:1px solid var(--line)}
.article__share span{font-family:var(--font-mono);font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
.article__share a,.article__share button{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;
  background:var(--surface);border:1px solid var(--line);color:var(--ink-2);transition:.2s}
.article__share a:hover,.article__share button:hover{background:var(--brand);color:var(--on-brand);border-color:transparent;transform:translateY(-2px)}
.article__share svg{width:18px;height:18px}

/* ============================================================================
   ALERT SIGNUP  (home + contact)
   ========================================================================== */
.alerts{position:relative;overflow:hidden;border-radius:var(--radius-lg);
  background:linear-gradient(150deg,var(--brand-deep),oklch(0.32 0.07 var(--brand-h)));color:#eef7f7;
  padding:clamp(2rem,5vw,3.4rem);display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(1.5rem,4vw,3rem);align-items:center}
.alerts::before{content:"";position:absolute;inset:0;opacity:.5;
  background-image:linear-gradient(oklch(0.7 0.05 var(--brand-h) / .12) 1px,transparent 1px),linear-gradient(90deg,oklch(0.7 0.05 var(--brand-h) / .12) 1px,transparent 1px);
  background-size:40px 40px;mask-image:radial-gradient(circle at 85% 15%,#000,transparent 70%)}
.alerts>*{position:relative;z-index:1}
.alerts__copy .eyebrow{color:oklch(0.82 0.1 var(--brand-h));margin-bottom:1rem}
.alerts__copy .eyebrow::before{background:oklch(0.82 0.1 var(--brand-h))}
.alerts__copy h2{color:#fff;margin-bottom:.7rem;font-size:clamp(1.5rem,3vw,2.2rem)}
.alerts__copy p{color:oklch(0.9 0.02 200);max-width:42ch;line-height:1.6}
.alerts__form{background:oklch(0.18 0.02 222 / .55);backdrop-filter:blur(10px);border:1px solid oklch(0.6 0.05 var(--brand-h) / .28);
  border-radius:var(--radius);padding:1.5rem}
.alerts__form label.lab{font-family:var(--font-mono);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;
  color:oklch(0.82 0.06 var(--brand-h));display:block;margin-bottom:.6rem}
.alerts__pref{display:flex;gap:.5rem;margin-bottom:1rem}
.alerts__pref label{flex:1;cursor:pointer}
.alerts__pref input{position:absolute;opacity:0;pointer-events:none}
.alerts__pref .opt{display:flex;align-items:center;justify-content:center;gap:.45rem;padding:.7rem .5rem;border-radius:var(--radius-sm);
  border:1.5px solid oklch(0.6 0.05 var(--brand-h) / .3);background:oklch(0.24 0.02 222 / .5);color:oklch(0.9 0.02 200);
  font-weight:600;font-size:.86rem;transition:.2s}
.alerts__pref .opt svg{width:16px;height:16px;flex:none}
.alerts__pref input:checked+.opt{border-color:var(--accent);background:oklch(0.78 0.15 65 / .18);color:#fff}
.alerts__pref input:focus-visible+.opt{outline:2px solid var(--accent);outline-offset:2px}
.alerts__row{display:flex;gap:.6rem;flex-wrap:wrap}
.alerts__row input[type=email]{flex:1;min-width:180px;padding:.85rem 1.1rem;border-radius:var(--radius-pill);
  background:oklch(0.16 0.02 222 / .7);border:1.5px solid oklch(0.6 0.05 var(--brand-h) / .3);color:#fff;font-size:.95rem}
.alerts__row input[type=email]::placeholder{color:oklch(0.7 0.02 200)}
.alerts__row input[type=email]:focus{outline:none;border-color:var(--accent)}
.alerts__note{font-size:.78rem;color:oklch(0.78 0.02 200);margin-top:.8rem;line-height:1.5}
.alerts__done{display:none;flex-direction:column;align-items:center;text-align:center;gap:.6rem;padding:1rem .5rem}
.alerts__done.show{display:flex;animation:pop .4s var(--ease-out)}
.alerts__done .ring{width:60px;height:60px;border-radius:50%;background:oklch(0.78 0.15 65 / .2);display:grid;place-items:center}
.alerts__done .ring svg{width:30px;height:30px;color:var(--accent)}
.alerts__done b{color:#fff;font-size:1.15rem;font-family:var(--font-display)}
.alerts__done span{color:oklch(0.88 0.02 200);font-size:.9rem}
@media (max-width:760px){.alerts{grid-template-columns:1fr}.alerts__pref{flex-wrap:wrap}}

/* ---- empty state -------------------------------------------------------- */
.store-empty{text-align:center;padding:clamp(3rem,8vw,6rem) 1rem;color:var(--ink-3)}
.store-empty svg{width:54px;height:54px;color:var(--line-2);margin:0 auto 1.2rem}
.store-empty h3{color:var(--ink-2);margin-bottom:.5rem}
.store-empty p{max-width:38ch;margin:0 auto}

/* ---- skeleton loading --------------------------------------------------- */
.sk{background:linear-gradient(100deg,var(--surface-2) 30%,var(--surface-3) 50%,var(--surface-2) 70%);
  background-size:200% 100%;animation:sk 1.3s linear infinite;border-radius:var(--radius)}
@keyframes sk{to{background-position:-200% 0}}
.sk-card{height:340px}
@media (prefers-reduced-motion:reduce){.sk{animation:none}}
