/* Shared storefront features. Typography follows each template's NOVA scale. */
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.text-link { display:inline-flex; align-items:center; gap:8px; font-size:var(--type-control,.68rem); text-transform:uppercase; letter-spacing:.12em; border-bottom:1px solid var(--ink); padding-bottom:5px; }
.text-link:hover { color:var(--rust); border-color:var(--rust); }
.nova-dialog { margin:auto; padding:0; width:min(720px,calc(100% - 32px)); max-height:88vh; overflow:auto; border:1px solid var(--line); background:var(--bg); color:var(--ink); font-family:var(--sans); }
.nova-dialog::backdrop { background:rgba(20,18,15,.55); backdrop-filter:blur(3px); }
.nova-dialog-head { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:24px 30px; border-bottom:1px solid var(--line); }
.nova-dialog-head h2 { margin:0; font-family:var(--serif); text-transform:uppercase; font-size:var(--type-subheading,1.4rem); }
.nova-close { min-width:44px; min-height:44px; font-size:1.5rem; }
.nova-dialog-body { padding:30px; }
.nova-dialog input,.nova-dialog select { width:100%; padding:14px; border:1px solid var(--line); border-radius:0; background:transparent; color:var(--ink); font:inherit; font-size:var(--type-input,.88rem); }
.nova-dialog label { display:block; margin-bottom:8px; font-size:var(--type-label,.62rem); letter-spacing:.12em; text-transform:uppercase; }
.nova-search-results { margin-top:24px; }
.nova-result { display:grid; grid-template-columns:56px 1fr auto; align-items:center; gap:16px; padding:16px 0; border-top:1px solid var(--line); font-size:var(--type-support,.84rem); }
.nova-result:hover .nova-result-name { color:var(--rust); }
.nova-swatch { background:var(--bg-2); position:relative; width:56px; height:72px; overflow:hidden; }
.nova-swatch::before { content:''; position:absolute; inset:8px 14px 4px; background:var(--swatch,#b8a58f); clip-path:polygon(25% 0,75% 0,100% 15%,86% 48%,80% 100%,20% 100%,14% 48%,0 15%); }
.nova-result small { display:block; margin-top:5px; color:var(--muted); font-size:var(--type-caption,.7rem); }
.nova-muted,.nova-empty { color:var(--muted); font-size:var(--type-support,.84rem); line-height:1.8; }
.nova-empty { padding:22px 0; }
.nova-bag-row { padding:22px 0; border-bottom:1px solid var(--line); display:grid; grid-template-columns:56px 1fr auto; gap:18px; font-size:var(--type-support,.84rem); }
.nova-bag-row small { display:block; color:var(--muted); margin-top:6px; font-size:var(--type-caption,.7rem); }
.nova-quantity { display:flex; align-items:center; gap:14px; margin-top:12px; }
.nova-quantity button { min-width:36px; min-height:36px; border:1px solid var(--line); }
.nova-remove { margin-top:12px; color:var(--muted); font-size:var(--type-label,.62rem); text-transform:uppercase; letter-spacing:.1em; border-bottom:1px solid var(--line); }
.nova-bag-summary { padding:26px 0 0; }
.nova-bag-summary .btn-solid { width:100%; margin-top:20px; }
.nova-free-shipping { background:var(--bg-2); padding:16px 20px; font-size:var(--type-caption,.7rem); }
.nova-free-track { height:2px; background:var(--line); margin-top:12px; }
.nova-free-track i { display:block; height:100%; background:var(--rust); }
.nova-form-grid { display:grid; grid-template-columns:1fr 1fr; gap:20px; margin:24px 0; }
.nova-primary { display:grid; place-items:center; min-height:52px; padding:13px 24px; width:100%; border:0; background:var(--ink); color:var(--bg); font:inherit; font-size:var(--type-control,.68rem); letter-spacing:.14em; text-transform:uppercase; cursor:pointer; }
.nova-primary:hover { background:var(--rust); }
.nova-newsletter { border-top:1px solid var(--line); padding:42px 0; }
.nova-newsletter .wrap { display:grid; grid-template-columns:1fr 1fr; gap:48px; align-items:center; }
.nova-newsletter h2 { font-family:var(--serif); text-transform:uppercase; font-size:var(--type-section,2rem); }
.nova-newsletter p { color:var(--muted); font-size:var(--type-support,.84rem); margin-top:12px; }
.nova-newsletter label { display:block; font-size:var(--type-label,.62rem); letter-spacing:.12em; text-transform:uppercase; margin-bottom:8px; }
.nova-newsletter-row { display:flex; border:1px solid var(--line); }
.nova-newsletter input { background:transparent; border:0; padding:16px; min-width:0; flex:1; font:inherit; font-size:var(--type-input,.88rem); color:var(--ink); border-radius:0; }
.nova-newsletter button { width:auto; min-width:130px; }
.nova-newsletter .nova-preference-note { font-size:var(--type-caption,.7rem); }
.nova-site-footer { background:var(--ink); color:rgba(255,255,255,.72); padding:54px 0 24px; font-size:var(--type-meta,.78rem); }
.nova-site-footer .foot-grid { display:grid; grid-template-columns:1.3fr repeat(4,1fr); gap:30px; padding-bottom:40px; }
.nova-site-footer .logo { display:block; color:white; text-align:left; margin-bottom:14px; font-size:var(--type-logo,2rem); }
.nova-site-footer h4 { color:white; font-size:.64rem; text-transform:uppercase; letter-spacing:.18em; margin-bottom:16px; font-weight:500; }
.nova-site-footer ul { list-style:none; padding:0; }.nova-site-footer li { margin:8px 0; }
.nova-site-footer a:hover { color:white; }
.nova-site-footer .foot-bottom { display:flex; justify-content:space-between; flex-wrap:wrap; gap:16px; padding-top:22px; border-top:1px solid rgba(179,68,28,.7); font-size:var(--type-caption,.7rem); }
.nova-footer-policy { display:flex; flex-wrap:wrap; gap:18px; }
.nova-back-top { position:fixed; bottom:24px; right:24px; z-index:90; width:44px; height:44px; background:var(--ink); color:var(--bg); border:1px solid var(--line); font-size:1.2rem; }
.nova-feature-progress { position:fixed; top:0; left:0; right:0; height:2px; z-index:110; pointer-events:none; }
.nova-feature-progress i { display:block; height:100%; background:var(--rust); width:0; }
.nova-feature-toast { position:fixed; left:50%; bottom:26px; transform:translateX(-50%); max-width:calc(100% - 40px); padding:14px 22px; background:var(--ink); color:var(--bg); font-size:var(--type-meta,.78rem); z-index:500; }
body > #backTop { display:none!important; }
.nova-checkout-tools { display:flex; justify-content:center; gap:12px; padding:14px 0; border-top:1px solid var(--line); }
.nova-checkout-tools button,.nova-checkout-tools a { font-size:var(--type-control,.68rem); letter-spacing:.1em; text-transform:uppercase; padding:8px 12px; }
.nova-checkout-nav { display:flex; justify-content:center; flex-wrap:wrap; gap:20px; padding:10px 0 14px; font-size:var(--type-control,.68rem); letter-spacing:.12em; text-transform:uppercase; }
.nova-dialog :focus-visible,.nova-newsletter :focus-visible,.nova-back-top:focus-visible { outline:2px solid var(--rust); outline-offset:3px; }
@media(max-width:900px) { .nova-site-footer .foot-grid { grid-template-columns:repeat(3,1fr); }.nova-site-footer .foot-grid>div:first-child { grid-column:1/-1; } }
@media(max-width:600px) { .nova-newsletter .wrap { grid-template-columns:1fr; gap:24px; }.nova-newsletter-row { flex-direction:column; }.nova-newsletter button { width:100%; }.nova-site-footer .foot-grid { grid-template-columns:repeat(2,1fr); }.nova-dialog-head,.nova-dialog-body { padding:22px; }.nova-result,.nova-bag-row { gap:12px; }.nova-form-grid { grid-template-columns:1fr; }.nova-checkout-tools { flex-wrap:wrap; gap:0; }.nova-checkout-nav { gap:12px; }.nova-back-top { right:16px; bottom:16px; } }
@media(prefers-reduced-motion:reduce) { .nova-dialog::backdrop { backdrop-filter:none; } }
@media print { .nova-newsletter,.nova-back-top,.nova-feature-progress,.nova-feature-toast,.nova-dialog,.nova-checkout-tools,.nova-checkout-nav { display:none!important; } }
