/* Orbace Sudoku — Su-Pu Library page (Su-Pu Library redesign, 2026-08-06).
 * Namespaced under .svl- (Su-pu Vault/Library). Local palette vars match the
 * su-pu family's existing convention (su-pu.html/example.html/library.html's
 * own inline <style> blocks) rather than introducing a third naming scheme.
 * Reuses global .btn / .mode-tab / .badge / .store (styles.css) and
 * .osgc-card's shadow/radius language for the new card component, per the
 * Production Implementation Instruction §11 ("reuse production tokens/
 * components wherever possible rather than independently recreating the
 * prototype CSS").
 */

/* .svl-signin-gate (display:flex) and .btn (display:inline-flex, styles.css)
 * both have the same specificity as the UA [hidden]{display:none} rule and
 * load after it, so the `hidden` attribute alone silently loses on any
 * element carrying one of those classes (confirmed live, 2026-08-06 —
 * the sign-in gate rendered even while hidden). Force it to win. */
.svl-page [hidden]{display:none!important}

:root{
  --g:#244c3a; --d:#17362a; --r:#c41e3a;
  --p:#f7f1e5; --pd:#eee3cf; --c:#dce8dc;
  --i:#252b28; --m:#626862; --l:rgba(36,76,58,.2);
  --w:74rem;
}

.svl-page{max-width:var(--w);margin:auto;padding:2.5rem 1.3rem 4rem}
.svl-page h1,.svl-page h2,.svl-page h3{color:var(--d);font-family:Georgia,serif;font-weight:500;line-height:1.15}
.svl-page .cjk{font-family:var(--cjk,'Noto Serif SC',serif)}
.svl-page a{color:var(--g)}

/* ---- hero ---- */
.svl-hero{display:grid;grid-template-columns:1.4fr .9fr;gap:2.5rem;align-items:center;margin-bottom:2rem}
.svl-hero .eye{color:var(--r);font-size:.75rem;font-weight:850;letter-spacing:.14em;text-transform:uppercase;margin:0 0 .5rem}
.svl-hero h1{font-size:clamp(2rem,4vw,3.4rem);margin:0 0 .75rem}
.svl-hero .lead{color:var(--m);max-width:36rem;margin:0}
.svl-stats{display:flex;gap:2rem;justify-content:flex-end}
.svl-stat{text-align:center}
.svl-stat-num{display:block;font-family:Georgia,serif;font-size:2rem;color:var(--g);font-weight:600}
.svl-stat-label{display:block;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--m)}

/* ---- search / filters ---- */
.svl-search-section{border-top:1px solid var(--l);padding-top:1.5rem;margin-bottom:1.5rem}
.svl-search-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1rem;margin-bottom:1rem}
.svl-search-head h2{margin:0;font-size:1.4rem}
.svl-tabs{display:inline-flex;background:var(--pd);border-radius:999px;padding:3px;gap:2px}
.svl-tab{border:none;background:transparent;padding:8px 18px;border-radius:999px;font-size:13px;font-weight:600;color:var(--m);cursor:pointer}
.svl-tab.active{background:#fff;color:var(--d);box-shadow:0 1px 3px rgba(0,0,0,.12)}

.svl-filters{border:1px solid var(--l);border-radius:.75rem;background:rgba(255,255,255,.65);padding:1.1rem 1.3rem}
.svl-search-row{display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--l);padding-bottom:12px;margin-bottom:12px}
.svl-search-row .cjk{color:var(--r);flex-shrink:0}
.svl-search-row input{flex:1;border:none;background:transparent;font-size:15px;color:var(--i);outline:none}
.svl-result-count{font-size:12px;color:var(--m);flex-shrink:0;white-space:nowrap}
.svl-chip-row{margin-bottom:10px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.svl-filter-label{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--m)}
.svl-chip-row .mode-tabs{margin-bottom:0}
.svl-select-row{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.svl-select-label{display:flex;flex-direction:column;gap:3px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--m)}
.svl-select-label select{font:inherit;font-size:14px;text-transform:none;font-weight:400;color:var(--i);border:1px solid var(--l);border-radius:6px;padding:6px 10px;background:#fff}
.svl-clean-toggle{font-size:14px;color:var(--i);cursor:pointer;display:flex;align-items:center;gap:5px}
.svl-clean-toggle .cjk{color:var(--r)}
.svl-sort-label{margin-left:auto}

.svl-privacy-line{font-size:13px;color:var(--m);margin:.75rem 0 0}

.svl-signin-gate{border:1px solid var(--l);border-radius:.75rem;background:var(--pd);padding:1.25rem 1.5rem;margin-bottom:1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.svl-signin-gate p{margin:0;color:var(--i)}

/* ---- Featured Su-Pu spotlight ---- */
.svl-spotlight-section{margin-bottom:2rem}
.svl-section-eyebrow{font-size:.72rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--m);margin:0 0 .6rem}
.svl-spotlight-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}
.svl-spotlight-card{background:var(--d);border-radius:.65rem;padding:1.3rem;color:#fff;text-decoration:none;display:block;transition:transform .15s}
.svl-spotlight-card:hover{transform:translateY(-2px)}
.svl-spotlight-eyebrow{font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--c);margin-bottom:.5rem}
.svl-spotlight-headline{font-family:Georgia,serif;font-size:1.15rem;color:#fff;margin:0 0 .4rem}
.svl-spotlight-sub{font-size:13px;color:rgba(255,255,255,.72);margin:0}

/* ---- browse grid ---- */
.svl-grid-section{margin-bottom:2.5rem}
.svl-grid-heading{font-size:1.4rem;margin:0 0 1rem}
.svl-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}
.svl-loading,.svl-empty{grid-column:1/-1;text-align:center;color:var(--m);padding:2.5rem 1rem}
.svl-empty-actions{grid-column:1/-1;display:flex;gap:10px;justify-content:center;flex-wrap:wrap}

.svl-card{border:1px solid var(--l);border-radius:.65rem;background:rgba(255,255,255,.75);padding:1rem;display:flex;flex-direction:column;gap:.6rem;box-shadow:0 10px 24px -20px rgba(43,39,35,.35)}
.svl-card-thumb{width:72px;flex-shrink:0}
.svl-card-top{display:flex;gap:12px}
.svl-card-badges{display:flex;gap:5px;flex-wrap:wrap;align-items:flex-start}
.svl-badge{display:inline-block;font-size:11px;font-weight:600;padding:2px 8px;border-radius:999px;background:var(--c);color:var(--d)}
.svl-badge.svl-badge-type{background:var(--pd);color:var(--m)}
.svl-badge.svl-badge-clean{background:rgba(91,140,90,.15);color:#3e6b4f}
.svl-card-headline{font-family:Georgia,serif;font-size:1.02rem;color:var(--d);margin:0;line-height:1.3}
.svl-card-sub{font-size:12px;color:var(--m);margin:0}
.svl-card-techniques{display:flex;gap:5px;flex-wrap:wrap}
.svl-tech-pill{font-size:11px;color:var(--g);border:1px solid var(--l);border-radius:999px;padding:2px 9px}
.svl-card-stats{font-size:12px;color:var(--m);display:flex;gap:6px;flex-wrap:wrap}
.svl-card-stats b{color:var(--i);font-weight:600}
/* .svl-page a{color:var(--g)} above outranks a bare .svl-card-watch class
 * selector (element+class beats class-only at equal specificity tiers) —
 * match it with an element selector so white text actually wins. */
a.svl-card-watch{margin-top:auto;display:block;text-align:center;background:var(--g);color:#fff;text-decoration:none;padding:9px;border-radius:6px;font-weight:600;font-size:14px}
.svl-card-watch:hover{background:var(--d)}

.svl-loadmore-wrap{text-align:center;margin-top:1.5rem}

/* ---- about + facets ---- */
.svl-about-section{display:grid;grid-template-columns:1.3fr 1fr;gap:3rem;border-top:1px solid var(--l);padding-top:2rem;margin-bottom:2rem}
.svl-about-copy p{color:var(--m)}
.svl-facet-group{margin-bottom:1.5rem}
.svl-facet-group h3{font-size:1rem;margin:0 0 .6rem}
.svl-facet-chips{display:flex;flex-wrap:wrap;gap:6px}
.svl-facet-chip{font-size:12px;border:1px solid var(--l);border-radius:6px;padding:5px 10px;background:#fff;color:var(--i);cursor:pointer}
.svl-facet-chip:hover{background:var(--c)}

/* ---- app CTA ---- */
.svl-app-cta{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;flex-wrap:wrap;background:var(--pd);border-radius:.75rem;padding:1.5rem 1.75rem}
.svl-app-cta b{font-family:Georgia,serif;font-size:17px;color:var(--d)}
.svl-app-cta p{margin:6px 0 0;color:var(--m)}
.svl-app-cta-buttons{display:flex;gap:10px;flex-wrap:wrap}

@media (max-width:900px){
  .svl-hero{grid-template-columns:1fr}
  .svl-stats{justify-content:flex-start}
  .svl-spotlight-grid,.svl-grid{grid-template-columns:1fr 1fr}
  .svl-about-section{grid-template-columns:1fr}
}
@media (max-width:640px){
  .svl-spotlight-grid,.svl-grid{grid-template-columns:1fr}
  .svl-select-row{flex-direction:column;align-items:flex-start}
  .svl-sort-label{margin-left:0}
  .svl-search-head{flex-direction:column;align-items:flex-start}
}
