/* Hollowspell shop — extends site.css (same tokens, fonts, header/footer). */

main .section.tight{padding:clamp(34px,5vw,64px) 0}
.page-title{font-family:'Fraunces',serif;font-weight:600;font-size:clamp(2rem,4.5vw,3rem);margin:.1em 0 .9rem;line-height:1.04}
.muted{color:var(--ash)}
.empty{color:var(--ash);padding:2rem 0}
.err{color:#e07a6a;font-weight:600;margin:.4rem 0}
/* block so the following eyebrow drops to its own line (no overlap) */
.back{display:block;margin-bottom:1.1rem;font-family:'JetBrains Mono',monospace;font-size:.72rem;
  letter-spacing:.12em;color:var(--ash-dim);text-transform:uppercase}
.back:hover{color:var(--wraith)}

/* generic form controls (site.css only styles .field inputs; the shop admin uses bare ones) */
input,select,textarea{background:var(--abyss);border:1px solid var(--line);border-radius:3px;color:var(--bone);
  font-family:inherit;font-size:.95rem;padding:.6em .8em;transition:border-color .25s,box-shadow .25s}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--wraith);box-shadow:0 0 0 3px rgba(199,167,106,.2)}
textarea{resize:vertical;min-height:90px;width:100%}
button{font-family:inherit;cursor:pointer}
form button:not(.btn){background:var(--shroud-2);border:1px solid var(--line);color:var(--bone);border-radius:3px;padding:.55em .9em;font-size:.9rem;transition:border-color .25s,color .25s}
form button:not(.btn):hover{border-color:var(--wraith);color:#fff}
button.del{background:none;border:0;color:var(--ash-dim);padding:.4em .5em}
button.del:hover{color:#e07a6a}
a.del{color:var(--ash-dim);font-family:'JetBrains Mono',monospace;font-size:.72rem;letter-spacing:.08em}
a.del:hover{color:#e07a6a}
code{font-family:'JetBrains Mono',monospace;background:var(--abyss);padding:.12em .4em;border-radius:2px;color:var(--wraith)}

/* ---- storefront ---- */
.shop-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:26px;margin-top:40px}
.shop-card{border:1px solid var(--line);border-radius:2px;overflow:hidden;background:var(--shroud);display:flex;
  flex-direction:column;position:relative;transition:transform .35s var(--ease)}
.shop-card::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--line);transition:background .3s var(--ease);z-index:2}
.shop-card:hover{transform:translateY(-4px)}
.shop-card:hover::before{background:var(--wraith)}
.p-img{aspect-ratio:1;background:var(--abyss) center/cover no-repeat;border-bottom:1px solid var(--line-soft)}
.p-img-empty{background:linear-gradient(135deg,var(--shroud-2),var(--abyss))}
.p-body{padding:18px 20px 22px}
.p-cat{font-family:'JetBrains Mono',monospace;font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:var(--wraith-deep)}
.p-name{font-family:'Fraunces',serif;font-size:1.4rem;font-weight:600;margin:.15em 0 .05em;line-height:1.1}
.p-sub{color:var(--ash);font-size:.9rem}
.p-price{color:var(--wraith);font-family:'JetBrains Mono',monospace;font-size:.92rem;margin-top:.6rem;letter-spacing:.02em}
.soldout{font-family:'JetBrains Mono',monospace;font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;color:#e07a6a;margin-left:.6rem}

/* product detail */
.pd{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(24px,4vw,56px);align-items:start;margin-top:8px}
.pd-media{display:flex;flex-direction:column;gap:12px}
.pd-img{aspect-ratio:1;background:var(--abyss) center/cover no-repeat;border:1px solid var(--line);border-radius:2px}
.pd-thumbs{display:flex;gap:10px;flex-wrap:wrap}
.pd-thumb{width:64px;height:64px;background:var(--abyss) center/cover no-repeat;border:1px solid var(--line);border-radius:2px}
.pd-info h1{font-family:'Fraunces',serif;font-size:clamp(2rem,4vw,3rem);font-weight:600;line-height:1.05;margin:.1em 0}
.pd-sub{color:var(--ash);font-size:1.1rem;margin-bottom:.6rem}
.pd-price{color:var(--wraith);font-family:'JetBrains Mono',monospace;font-size:1.15rem;margin:.5rem 0 1.2rem}
.pd-desc,.pd-details{color:var(--ash);white-space:pre-wrap;margin:1rem 0;max-width:58ch}
.pd-details{border-top:1px solid var(--line-soft);padding-top:1rem;font-size:.92rem}
.buy{display:flex;gap:.7rem;flex-wrap:wrap;align-items:center;margin-top:1.4rem}
.buy select{min-width:12rem}
.buy input[type=number]{width:4.5rem}
@media(max-width:700px){.pd{grid-template-columns:1fr}}

/* ---- admin ---- */
.loginf{display:flex;gap:.6rem;max-width:380px;margin-top:1rem}
.loginf input{flex:1}
.adminlist{list-style:none;border-top:1px solid var(--line-soft);margin-top:1rem}
.adminlist li{padding:14px 4px;border-bottom:1px solid var(--line-soft);display:flex;justify-content:space-between;gap:14px;align-items:center;flex-wrap:wrap}
.adminlist a{color:var(--bone);font-family:'Fraunces',serif;font-size:1.15rem}
.adminlist a:hover{color:var(--wraith)}
.adminlist .meta{font-family:'JetBrains Mono',monospace;font-size:.74rem;color:var(--ash-dim);letter-spacing:.04em}
.cardf{border:1px solid var(--line-soft);border-radius:2px;background:var(--shroud);padding:22px 24px;max-width:660px;margin-bottom:1.5rem}
.cardf label{display:block;font-family:'JetBrains Mono',monospace;font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ash);margin:.9rem 0 .35rem}
.cardf label:first-child{margin-top:0}
.cardf input,.cardf textarea,.cardf select{width:100%}
.cardf .row2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.cardf .chk{display:flex;align-items:center;gap:.5em;text-transform:none;letter-spacing:0;font-family:'Archivo',sans-serif;font-size:.92rem;color:var(--ash);margin-top:1rem}
.cardf .chk input{width:auto}
.cardf .btn{margin-top:1.3rem}
h3.sec{font-family:'Fraunces',serif;font-weight:600;font-size:1.5rem;margin:2rem 0 .4rem}

/* variant + rate rows */
.vtable-head,.vrow{display:grid;grid-template-columns:1.6fr 1fr .8fr .7fr .9fr auto auto;gap:.4rem;align-items:center}
.vtable-head{font-family:'JetBrains Mono',monospace;font-size:.62rem;text-transform:uppercase;letter-spacing:.1em;color:var(--ash-dim);margin:.6rem 0 .3rem;padding:0 .2rem}
.vrow{margin:.35rem 0}
.vrow input{width:100%;padding:.45em .55em;font-size:.88rem}
.vrow .chk{display:flex;align-items:center;justify-content:center;gap:.3em;font-size:.75rem;color:var(--ash);margin:0}
.vrow .chk input{width:auto}
.vadd{grid-template-columns:1.6fr 1fr .8fr .7fr .9fr auto;background:var(--shroud);padding:.5rem;border:1px solid var(--line-soft);border-radius:2px;margin-top:.6rem}
.zone{border:1px solid var(--line-soft);border-radius:2px;background:var(--shroud);padding:20px 22px;margin-bottom:1.2rem}
.zone h3{font-family:'Fraunces',serif;font-size:1.4rem;margin-bottom:.6rem}
@media(max-width:640px){.vtable-head{display:none}.vrow,.vadd{grid-template-columns:1fr 1fr}.cardf .row2{grid-template-columns:1fr}}

/* ---- header cart + flash ---- */
.cartlink{display:inline-flex;align-items:center;gap:.4em}
.cart-badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.35em;height:1.35em;
  padding:0 .35em;border-radius:999px;background:var(--wraith);color:var(--abyss);
  font-family:'JetBrains Mono',monospace;font-size:.66rem;font-weight:700;line-height:1;
  box-shadow:0 0 10px -2px var(--wraith)}
.flash{border:1px solid var(--line);border-left:2px solid var(--wraith);background:var(--shroud);
  border-radius:2px;padding:.8rem 1rem;margin-bottom:1.6rem;color:var(--bone);font-size:.93rem}
.small{font-size:.84rem}
.low-stock,.soldout-note{font-family:'JetBrains Mono',monospace;font-size:.72rem;letter-spacing:.1em;
  text-transform:uppercase;color:#e07a6a;margin-top:.7rem}
.buy-variant{color:var(--ash);font-size:.95rem}

/* ---- cart page ---- */
.cart-table{border-top:1px solid var(--line-soft);margin-top:2rem}
.c-head,.c-row{display:grid;grid-template-columns:78px minmax(0,1fr) 6rem 11rem 6rem;gap:1rem;align-items:center}
.c-head{font-family:'JetBrains Mono',monospace;font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ash-dim);padding:.7rem .2rem}
.c-row{padding:1.1rem .2rem;border-top:1px solid var(--line-soft)}
.c-img{display:block;width:78px;height:78px;border:1px solid var(--line);border-radius:2px;
  background:var(--abyss) center/cover no-repeat}
.c-title{font-family:'Fraunces',serif;font-size:1.18rem;color:var(--bone);line-height:1.2}
.c-title:hover{color:var(--wraith)}
.c-variant{color:var(--ash);font-size:.9rem;margin-top:.15rem}
.c-sku,.c-left{font-family:'JetBrains Mono',monospace;font-size:.66rem;letter-spacing:.1em;color:var(--ash-dim);margin-top:.25rem}
.c-left{color:#e07a6a}
.c-unit,.c-line{font-family:'JetBrains Mono',monospace;font-size:.9rem;color:var(--ash)}
.c-line{color:var(--wraith);text-align:right}
.c-qty{display:flex;align-items:center;gap:.4rem}
.c-qty input{width:4.2rem;padding:.45em .55em;font-size:.9rem}
.cart-foot{display:flex;justify-content:flex-end;margin-top:2rem}
.cart-sums{width:min(100%,26rem);border:1px solid var(--line-soft);border-radius:2px;background:var(--shroud);padding:22px 24px}
.sum{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;padding:.35rem 0}
.sum b{font-family:'JetBrains Mono',monospace;color:var(--wraith);font-size:1.05rem}
.sum.muted b{color:var(--ash);font-size:.88rem}
.cart-sums .small{margin:.8rem 0 1.2rem;border-top:1px solid var(--line-soft);padding-top:.9rem}
.cart-go{width:100%;justify-content:center}
.cart-cont{margin-top:1rem;text-align:center}
@media(max-width:760px){
  .c-head{display:none}
  .c-row{grid-template-columns:64px minmax(0,1fr);grid-template-areas:"img info" "qty line";row-gap:.7rem}
  .c-img{grid-area:img;width:64px;height:64px}
  .c-info{grid-area:info}
  .c-unit{display:none}
  .c-qty{grid-area:qty}
  .c-line{grid-area:line}
  .cart-foot{justify-content:stretch}
}

/* ---- checkout ---- */
.review{max-width:34rem}
.rev-addr{border-bottom:1px solid var(--line-soft);padding-bottom:.9rem;margin-bottom:.6rem;
  color:var(--ash);font-size:.92rem;line-height:1.5}
.rev-addr b{color:var(--bone);font-family:'Fraunces',serif;font-size:1.05rem}
.sum.total{border-top:1px solid var(--line-soft);margin-top:.6rem;padding-top:.8rem}
.sum.total b{font-size:1.3rem}
.rates{display:flex;flex-direction:column;gap:.4rem;margin:.6rem 0;padding:.7rem .8rem;
  border:1px solid var(--line-soft);border-radius:2px;background:var(--abyss)}
.rate{display:flex;align-items:center;gap:.6em;color:var(--ash);font-size:.92rem;cursor:pointer}
.rate input{width:auto}
.review .btn{margin-top:1.3rem}
.order-actions{display:flex;gap:.7rem;flex-wrap:wrap;margin-top:1.4rem}

/* ---- admin: orders (Phase 4) ---- */
.tabs{display:flex;gap:.4rem;flex-wrap:wrap;margin:1.2rem 0 .4rem}
.tab{font-family:'JetBrains Mono',monospace;font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;
  color:var(--ash-dim);border:1px solid var(--line-soft);border-radius:2px;padding:.45em .8em}
.tab:hover{border-color:var(--line);color:var(--ash)}
.tab.on{color:var(--wraith);border-color:var(--wraith-deep)}
.otable{border-top:1px solid var(--line-soft);margin-top:1rem}
.ohead,.orow{display:grid;grid-template-columns:9rem 11rem minmax(0,1fr) 6rem 6rem 6.5rem;gap:1rem;align-items:center}
.ohead{font-family:'JetBrains Mono',monospace;font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ash-dim);padding:.7rem .3rem}
.orow{padding:.95rem .3rem;border-top:1px solid var(--line-soft);color:var(--ash);font-size:.9rem}
.orow:hover{background:var(--shroud)}
.o-ref{font-family:'JetBrains Mono',monospace;color:var(--bone);font-size:.84rem;letter-spacing:.04em}
.o-when,.o-qty{font-size:.82rem;color:var(--ash-dim)}
.o-who{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.o-tot{font-family:'JetBrains Mono',monospace;color:var(--wraith);font-size:.86rem}
.warn-dot{color:#e0a44a}
.pill{font-family:'JetBrains Mono',monospace;font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;
  border:1px solid var(--line);border-radius:999px;padding:.3em .7em;color:var(--ash);white-space:nowrap}
.pill-paid{color:var(--wraith);border-color:var(--wraith-deep)}
.pill-shipped{color:#7fc98f;border-color:#33613d}
.pill-cancelled,.pill-refunded{color:#e07a6a;border-color:#6b3a33}
.alerts{display:flex;flex-direction:column;gap:.6rem;margin:1.2rem 0 1.6rem}
.alert{display:block;border:1px solid var(--line-soft);border-left:2px solid var(--wraith);
  background:var(--shroud);border-radius:2px;padding:.85rem 1rem;color:var(--ash);font-size:.93rem}
.alert b{color:var(--bone)}
.alert-warn{border-left-color:#e0a44a}
.alert-stock{border-left-color:#e07a6a}
.alert-stock .adminlist{margin-top:.5rem;border-top:0}
.adminlist.tight li{padding:.35rem 0;border-bottom:0}
.adminlist.tight a{font-size:.95rem}
.ogrid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:22px;align-items:start;margin-top:1rem}
.ogrid .cardf{max-width:none;margin-bottom:0}
h3.sec2{font-family:'Fraunces',serif;font-weight:600;font-size:1.25rem;margin:0 0 .7rem}
.shiplabel{font-family:'JetBrains Mono',monospace;font-size:.86rem;line-height:1.6;color:var(--bone);
  background:var(--abyss);border:1px solid var(--line-soft);border-radius:2px;padding:.9rem 1rem;
  white-space:pre-wrap;margin-bottom:.5rem}
.warnbox{border:1px solid #6b5533;border-left:2px solid #e0a44a;background:rgba(224,164,74,.07);
  border-radius:2px;padding:.9rem 1rem;margin-bottom:1.2rem;color:var(--ash);font-size:.92rem}
.warnbox b{color:#e0a44a;font-family:'JetBrains Mono',monospace;font-size:.68rem;letter-spacing:.12em;
  text-transform:uppercase}
@media(max-width:820px){.ogrid{grid-template-columns:1fr}}
@media(max-width:760px){
  .ohead{display:none}
  .orow{grid-template-columns:1fr auto;row-gap:.35rem}
  .o-when,.o-qty{display:none}
}
