/* ===== Layout + color pass v13 — ONE light palette, full width =====
   WHITE PASS (owner request, v1.0.4): page renders on pure white and
   every text tone is dark enough to read at a glance — no light-grey
   page background, no pale-grey body text anywhere in the tool.
   Palette (defined once on .ffv2, used everywhere below; no other
   solid colours appear in this block):
     page background  #ffffff   cards  #ffffff   borders  #e5e7eb
     main text        #111827   muted  #374151   accent   #e11d48
     rarity pills only: Common #4b5563, Rare #2563eb,
                        Epic #7c3aed, Legendary #d97706
   Accent red is used sparingly: section labels, primary button,
   links/go cues, name plate, loading line/bar. Everything else is
   near-black / dark-grey text on white cards over a white page.
   Banner header keeps its real banner IMAGE; only its chrome
   (backgrounds, borders, text, name plate) follows this palette.
   Motion stays transform/opacity only; reduced-motion collapses it. */
.ffv2{--bg:#ffffff;--card:#ffffff;--line:#e5e7eb;--txt:#111827;--mut:#374151;--accent:#e11d48;--accent-soft:rgba(225,29,72,.08);--accent-line:rgba(225,29,72,.30);--rar-common:#4b5563;--rar-rare:#2563eb;--rar-epic:#7c3aed;--rar-legend:#d97706;color-scheme:light;font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;font-size:16px;line-height:1.5;color:var(--txt);background:var(--bg);border-radius:22px;padding:22px 20px 18px;width:100%;max-width:none;margin:0 auto;box-sizing:border-box;overflow:hidden}
.ffv2 *{box-sizing:border-box}
.ffv2 h2,.ffv2 h3,.ffv2 p{margin:0}
.ffv2 a{text-decoration:none;color:var(--accent)}
.ffv2 [hidden]{display:none!important}
.ffv2 img{max-width:100%}
.ffv2-hero{text-align:center;padding:14px 6px 20px}
.ffv2-badge{display:inline-block;font-size:12px;letter-spacing:1px;font-weight:700;color:var(--accent);border:1px solid var(--accent-line);padding:6px 12px;border-radius:999px;background:var(--accent-soft);text-transform:uppercase}
.ffv2-title{font-size:clamp(28px,6vw,46px);font-weight:900;line-height:1.08;margin:12px 0 8px;color:var(--txt)}
.ffv2-sub{color:var(--mut);font-size:15px;max-width:560px;margin:0 auto}
.ffv2-search{display:flex;gap:12px;width:100%;max-width:none;margin:18px auto 8px;flex-wrap:wrap;justify-content:center}
.ffv2-search input[type=text]{flex:1 1 260px;min-height:48px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px;color:var(--txt);font-size:17px;letter-spacing:1px;outline:none}
.ffv2-search input[type=text]:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.ffv2-search select{min-height:48px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 12px;color:var(--txt);font-size:15px;font-weight:700;outline:none;cursor:pointer}
.ffv2-search select:focus{border-color:var(--accent)}
.ffv2-search select option{color:var(--txt)}
.ffv2-search button{min-height:48px;background:var(--accent);color:var(--card);font-weight:800;font-size:16px;border:0;border-radius:14px;padding:14px 24px;cursor:pointer;box-shadow:0 6px 22px rgba(225,29,72,.25);transition:transform .15s}
.ffv2-search button:hover{transform:translateY(-2px)}
.ffv2-search button:disabled{opacity:.55;cursor:wait;transform:none}
.ffv2-auto{display:inline-block;font-size:13px;color:var(--mut);border:1px dashed var(--line);border-radius:999px;padding:5px 12px;margin-top:6px;background:var(--card)}
.ffv2-status{font-size:14px;color:var(--accent);min-height:20px;margin-top:10px;font-weight:600}
.ffv2-status.err{color:var(--accent)}
.ffv2-spin{display:inline-block;width:14px;height:14px;border:2px solid var(--accent-soft);border-top-color:var(--accent);border-radius:50%;vertical-align:-2px;margin-right:7px;animation:ffv2rot .7s linear infinite}
@keyframes ffv2rot{to{transform:rotate(360deg)}}
.ffv2-banner{position:relative;border-radius:20px;padding:22px 18px 18px;background:var(--card);border:1px solid var(--line);box-shadow:0 10px 30px rgba(0,0,0,.08);overflow:hidden;margin-top:14px}
.ffv2-banner:before{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.13) 48%,transparent 62%);transform:translateX(-120%);animation:ffv2shine 5.5s ease-in-out infinite}
@keyframes ffv2shine{0%,55%{transform:translateX(-120%)}90%,100%{transform:translateX(130%)}}
.ffv2-char{position:absolute;right:6px;bottom:0;height:100%;max-height:340px;object-fit:contain;filter:drop-shadow(0 4px 12px rgba(0,0,0,.15));animation:ffv2charin .9s cubic-bezier(.2,.9,.25,1.15) both, ffv2float 3s ease-in-out .9s infinite;pointer-events:none}
@keyframes ffv2charin{from{opacity:0;transform:translateX(26px) scale(.96)}to{opacity:1;transform:translateX(0) scale(1)}}
@keyframes ffv2float{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@media(max-width:639px){.ffv2-char{display:none}}
.ffv2-bcontent{position:relative;z-index:2;max-width:66%}
.ffv2-avatar{display:inline-flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:50%;background:var(--bg);color:var(--txt);font-size:24px;border:2px solid var(--line);box-shadow:0 4px 14px rgba(0,0,0,.08)}
.ffv2-nick{font-size:clamp(24px,5.4vw,38px);font-weight:900;letter-spacing:.5px;color:var(--txt);margin-top:8px;word-break:break-word}
.ffv2-sig{font-size:14px;font-style:italic;color:var(--mut);margin-top:6px;max-width:440px;line-height:1.45;word-break:break-word}
.ffv2-try{margin-top:14px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px;max-width:420px}
.ffv2-try label{font-size:14px;color:var(--accent);font-weight:700;letter-spacing:.4px;display:block;margin-bottom:6px}
.ffv2-try input{width:100%;min-height:44px;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:9px 11px;color:var(--txt);font-size:15px;outline:none}
.ffv2-try input:focus{border-color:var(--accent)}
.ffv2-chip{background:var(--card);border:1px solid var(--line);border-radius:999px;padding:7px 13px;font-size:14px;font-weight:600;color:var(--txt)}
.ffv2-chip b{color:var(--accent)}
.ffv2-primerow{margin-top:12px;background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:12px;padding:10px 13px;font-size:14px;font-weight:600;color:var(--txt)}
.ffv2-primerow b{color:var(--accent)}
.ffv2-primerow .ffv2-prisub{display:block;font-size:13px;font-weight:500;color:var(--mut);margin-top:3px}
.ffv2-src{font-size:12px;color:var(--mut);margin-top:10px}
.ffv2-sec{font-size:18px;letter-spacing:0;font-weight:800;color:var(--accent);margin:24px 2px 12px}
.ffv2-warn{font-size:15px;font-weight:700;color:#7c2d12;background:#fef3c7;border:1px solid #f59e0b;border-radius:10px;padding:10px 12px;margin:0 2px 12px}
.ffv2-bprof{margin:4px 2px 16px}
.ffv2-bprof-banner{width:100%;height:130px;object-fit:cover;border-radius:12px;background:#e5e7eb;border:1px solid var(--line);display:block}
.ffv2-bprof-row{display:flex;align-items:center;gap:12px;margin-top:-26px;padding:0 12px 2px}
.ffv2-bprof-avatar{width:72px;height:72px;border-radius:50%;object-fit:cover;border:3px solid #fff;background:#e5e7eb;flex:none}
.ffv2-bprof-name{font-size:18px;font-weight:800;color:var(--txt)}
.ffv2-bprof-meta{font-size:14px;color:var(--mut)}
.ffv2-lastlogin{font-size:14px;color:var(--mut);margin:0 2px 12px}
.ffv2-secnote{font-size:14px;color:var(--mut);margin:-6px 2px 12px;font-weight:400;letter-spacing:0}
.ffv2-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.ffv2-tile{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px;box-shadow:0 8px 24px rgba(0,0,0,.08);animation:ffv2up .5s ease-out both}
.ffv2-tile .k{font-size:12px;color:var(--mut);letter-spacing:.6px;text-transform:uppercase;font-weight:700}
.ffv2-tile .v{font-size:20px;font-weight:800;margin-top:4px;color:var(--txt)}
.ffv2-tile .v.gold{color:var(--txt)} .ffv2-tile .v.cyan{color:var(--txt)}
.ffv2-tile .s{font-size:13px;color:var(--mut);margin-top:2px}
@keyframes ffv2up{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.ffv2-guild{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px;box-shadow:0 8px 24px rgba(0,0,0,.08)}
.ffv2-guild .gi{font-size:26px}
.ffv2-guild .gn{font-size:19px;font-weight:800;word-break:break-word;color:var(--txt)}
.ffv2-guild .gm{font-size:14px;color:var(--mut)}
.ffv2-gbadge{margin-left:auto;background:var(--accent);color:var(--card);font-weight:800;font-size:12px;border-radius:999px;padding:6px 12px}
.ffv2-matches{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.ffv2-match{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px;text-align:center;box-shadow:0 8px 24px rgba(0,0,0,.08)}
.ffv2-match .m{font-size:14px;font-weight:800;letter-spacing:1px;color:var(--accent);text-transform:uppercase}
.ffv2-match .big{font-size:22px;font-weight:900;margin:5px 0 2px;color:var(--txt)}
.ffv2-match .sm{font-size:14px;color:var(--mut);line-height:1.5}
.ffv2-match .sm b{color:var(--txt)}
.ffv2-total{text-align:center;margin-top:11px;font-size:14px;color:var(--mut)}
.ffv2-total b{color:var(--txt)}
.ffv2-items{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;padding:4px 2px 12px}
.ffv2-item{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px;text-align:center;box-shadow:0 8px 24px rgba(0,0,0,.08)}
.ffv2-item .e{font-size:28px}
.ffv2-item .n{font-size:14px;font-weight:700;margin-top:6px;line-height:1.3;word-break:break-all;color:var(--txt)}
.ffv2-item .r{font-size:12px;font-weight:800;letter-spacing:.5px;margin-top:4px;color:var(--mut)}
.ffv2-tools{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;grid-auto-rows:1fr;align-items:stretch}
.ffv2-tool{display:block;height:100%;text-decoration:none;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px;color:var(--txt);box-shadow:0 8px 24px rgba(0,0,0,.08);transition:transform .15s,border-color .15s}
.ffv2-tool *{text-decoration:none!important}
.ffv2-tool:hover{transform:translateY(-3px);border-color:var(--accent)}
.ffv2-tool .e{font-size:24px;display:block}
.ffv2-tool .t{display:block;font-weight:800;font-size:16px;margin-top:6px;color:var(--txt)}
.ffv2-tool .val{display:block;font-size:20px;font-weight:800;margin-top:7px;color:var(--txt)}
.ffv2-tool .val.gold{color:var(--txt)} .ffv2-tool .val.cyan{color:var(--txt)}
.ffv2-tool .d{display:block;font-size:14px;color:var(--mut);margin-top:3px;line-height:1.45}
.ffv2-tool .go{font-size:14px;color:var(--accent);font-weight:800;margin-top:8px;display:inline-block}
.ffv2-foot{text-align:center;font-size:14px;color:var(--mut);margin-top:22px;line-height:1.5}
.ffv2-bannerart{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:1;z-index:0}
.ffv2-banner.ffv2-reveal{animation:ffv2reveal .9s ease both}
@keyframes ffv2reveal{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
.ffv2-banner.ffv2-reveal:after{content:"";position:absolute;inset:0;z-index:3;pointer-events:none;background:linear-gradient(115deg,transparent 32%,rgba(255,255,255,.22) 50%,transparent 68%);transform:translateX(-130%);animation:ffv2sweep .9s ease-out .05s both, ffv2sweepLoop 6s ease-in-out 2s infinite}
@keyframes ffv2sweep{to{transform:translateX(130%)}}
@keyframes ffv2sweepLoop{0%{transform:translateX(-30%);opacity:0}8%{opacity:1}25%{transform:translateX(130%);opacity:0}100%{transform:translateX(130%);opacity:0}}
/* ===== Animation system — sequenced entrance, clean layout (v11, kept in v13) =====
   Replayed per lookup by the .ffv2-reveal re-trigger on the header:
     A ANTICIPATION  header fades/rises in first (ffv2reveal, 900ms)
     B SETTLE        stat tiles (+50ms each) then item cards (+40ms each)
                     stagger in via ffv2Stagger — no simultaneous pop-in
     C IDLE          banner shine loops, count-up (time-based rAF)
   Tunable constants (skill 67/68): JS FF_ANIM mirrors the CSS vars.
   ALL motion animates transform + opacity only (skill 49/93). */
.ffv2{--ff-anim-strip:250ms;--ff-anim-enter:900ms;--ff-anim-char-delay:150ms;--ff-anim-pet-delay:300ms;--ff-anim-plate-delay:600ms;--ff-anim-chip:600ms;--ff-anim-tile:750ms;--ff-anim-card:900ms;--ff-anim-stagger:50ms;--ff-anim-card-stagger:40ms;--ff-anim-float:3s}
@media (prefers-reduced-motion: reduce){
  /* All result motion collapses to instant final states (skill 74): no
     entrance, stagger, shine loops, or loading-bar sweep. Count-up
     already returns early in JS, and ffv2Stagger skips delay assignment. */
  .ffv2-char,.ffv2-cleanhead.ffv2-reveal,.ffv2-cleanhead.ffv2-reveal:after,.ffv2-banner.ffv2-reveal,.ffv2-banner.ffv2-reveal:after,.ffv2-banner:before,.ffv2-tile,.ffv2-wtile,.ffv2-witem,.ffv2-citem,.ffv2-loadbar i{animation:none!important}
  .ffv2-search button,.ffv2-tool{transition:none}
}
.ffv2-avatar{position:relative;overflow:hidden;flex:none}
.ffv2-avaimg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:50%}
.ffv2-nickrow{display:flex;align-items:center;gap:12px;margin-top:8px}
.ffv2-nickrow .ffv2-nick{margin-top:0}
.ffv2-headpic{width:52px;height:52px;flex:none;border-radius:14px;object-fit:cover;border:2px solid var(--line);box-shadow:0 4px 14px rgba(0,0,0,.08);background:var(--bg)}
.ffv2-sig{border-left:3px solid var(--accent);padding-left:11px;margin:14px 4px 0;max-width:none}
.ffv2-coll{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.ffv2-citem{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px;text-align:center;box-shadow:0 8px 24px rgba(0,0,0,.08);animation:ffv2up .45s ease-out both}
.ffv2-cimg{height:84px;display:flex;align-items:center;justify-content:center;background:var(--bg);border-radius:12px;overflow:hidden}
.ffv2-cimg img{max-width:100%;max-height:100%;object-fit:contain}
.ffv2-cname{font-size:14px;font-weight:700;margin-top:7px;line-height:1.3;word-break:break-word;color:var(--txt)}
.ffv2-ctype{font-size:12px;font-weight:800;letter-spacing:.6px;color:var(--mut);margin-top:3px}
.ffv2-crar{display:inline-block;font-size:12px;font-weight:800;letter-spacing:.5px;margin-top:5px;padding:3px 9px;border-radius:999px;border:1px solid var(--line);color:var(--mut)}
/* Rarity pills — standard game colours ONLY (see palette header).
   The JS rar-green class renders in Rare blue so no fifth colour appears. */
.ffv2-crar.rar-white{color:var(--rar-common);border-color:var(--rar-common)}
.ffv2-crar.rar-green{color:var(--rar-rare);border-color:var(--rar-rare)}
.ffv2-crar.rar-blue{color:var(--rar-rare);border-color:var(--rar-rare)}
.ffv2-crar.rar-purple{color:var(--rar-epic);border-color:var(--rar-epic)}
.ffv2-crar.rar-fire{color:var(--rar-legend);border-color:var(--rar-legend)}
.ffv2-bps{display:flex;flex-wrap:wrap;gap:10px}
.ffv2-bprest{margin-top:8px}
.ffv2-bpchip{position:relative;width:56px;height:56px;border-radius:14px;background:var(--card);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;overflow:hidden;box-shadow:0 4px 14px rgba(0,0,0,.08)}
.ffv2-bpchip img{max-width:100%;max-height:100%;object-fit:contain}
.ffv2-bpcnt{position:absolute;right:3px;bottom:3px;background:var(--txt);color:var(--card);font-size:12px;font-weight:800;border-radius:6px;padding:1px 5px}
.ffv2-bpchip-txt{width:auto;min-width:72px;padding:10px 12px;flex-direction:column;gap:1px;text-align:center}
.ffv2-bpseason{font-size:14px;font-weight:900;color:var(--txt);line-height:1.2}
.ffv2-bptheme{font-size:12px;font-weight:700;color:var(--mut);line-height:1.2;max-width:110px}
.ffv2-bplv{font-size:12px;font-weight:800;color:var(--accent);line-height:1.2}
.ffv2-bpmore{margin-top:11px;min-height:44px;background:var(--card);border:1px solid var(--line);color:var(--txt);border-radius:999px;padding:12px 18px;font-size:14px;font-weight:700;cursor:pointer}
.ffv2-bpmore:hover{border-color:var(--accent)}
@media(min-width:720px){
 .ffv2{padding:30px 24px 22px}
 .ffv2-char{right:26px}
 .ffv2-banner{padding:28px 26px 22px}
}
@media(max-width:719px){.ffv2-bcontent{max-width:100%}}
@media(max-width:520px){
 .ffv2{padding:20px 16px 16px}
 .ffv2-grid,.ffv2-coll,.ffv2-tools,.ffv2-modegrid,.ffv2-matches,.ffv2-items{grid-template-columns:1fr}
 .ffv2-search{flex-direction:column}
 .ffv2-search input[type=text],.ffv2-search select,.ffv2-search button{width:100%;flex:1 1 auto}
}
/* ===== Clean result layout (v11) — single scrolling flow, white cards, kept in v13 ===== */
.ffv2-cleanhead{position:relative;margin-top:14px;border:1px solid var(--line);border-radius:20px;overflow:hidden;background:var(--card);box-shadow:0 10px 30px rgba(0,0,0,.08)}
.ffv2-cleanhead.ffv2-reveal{animation:ffv2reveal .9s ease both}
.ffv2-cleanhead.ffv2-reveal:after{content:"";position:absolute;inset:0;z-index:3;pointer-events:none;background:linear-gradient(115deg,transparent 32%,rgba(255,255,255,.22) 50%,transparent 68%);transform:translateX(-130%);animation:ffv2sweep .9s ease-out .05s both, ffv2sweepLoop 6s ease-in-out 2s infinite}
.ffv2-chbanner{position:relative;height:150px;overflow:hidden;background:var(--bg)}
.ffv2-chbannerimg{width:100%;height:100%;object-fit:cover;display:block}
.ffv2-chbody{padding:0 20px 18px}
.ffv2-chava{position:relative;z-index:2;width:64px;height:64px;font-size:28px;margin-top:-32px;border-width:3px}
.ffv2-chplate{display:inline-block;margin-top:10px;background:var(--accent);color:var(--card);font-weight:900;font-size:18px;letter-spacing:.5px;padding:10px 22px;border-radius:12px;box-shadow:0 4px 18px rgba(0,0,0,.12);max-width:100%;word-break:break-word}
.ffv2-pcguild{font-size:14px;color:var(--accent);font-weight:700;margin-top:8px;word-break:break-word}
/* Summary white card: label left, value right, like a clean profile sheet. */
.ffv2-sumcard{background:var(--card);color:var(--txt);border:1px solid var(--line);border-radius:18px;padding:18px; margin-top:14px;box-shadow:0 10px 30px rgba(0,0,0,.08)}
.ffv2-sumtop{display:flex;gap:14px;align-items:center}
.ffv2-sumava{width:64px;height:64px;flex:none;border-radius:14px;object-fit:cover;background:var(--bg);border:1px solid var(--line)}
.ffv2-sumname{font-size:22px;font-weight:900;color:var(--txt);word-break:break-word}
.ffv2-sumsub{font-size:14px;color:var(--mut);margin-top:2px}
.ffv2-sumrows{margin-top:12px;border-top:1px solid var(--line)}
.ffv2-sumrow{display:flex;justify-content:space-between;gap:12px;padding:10px 2px;border-bottom:1px solid var(--line);font-size:15px}
.ffv2-sumrow .k{color:var(--mut);font-weight:600}
.ffv2-sumrow .v{color:var(--txt);font-weight:800;text-align:right;word-break:break-word}
/* White stat tiles. */
.ffv2-wtile{background:var(--card);color:var(--txt);border:1px solid var(--line);border-radius:16px;padding:18px;box-shadow:0 8px 24px rgba(0,0,0,.08);animation:ffv2up .5s ease-out both}
.ffv2-wtile .k{font-size:12px;color:var(--mut);letter-spacing:.6px;text-transform:uppercase;font-weight:700}
.ffv2-wtile .v{font-size:20px;font-weight:800;margin-top:4px;color:var(--txt)}
.ffv2-wtile .v.gold{color:var(--txt)} .ffv2-wtile .v.cyan{color:var(--txt)}
.ffv2-wtile .s{font-size:13px;color:var(--mut);margin-top:2px}
/* White item cards (outfit, collection, weapons) + Sketchfab 3D badge. */
.ffv2-witem{position:relative;background:var(--card);color:var(--txt);border:1px solid var(--line);border-radius:16px;padding:14px;text-align:center;box-shadow:0 8px 24px rgba(0,0,0,.08);animation:ffv2up .45s ease-out both}
.ffv2-wimg{height:96px;display:flex;align-items:center;justify-content:center;background:var(--bg);border-radius:12px;overflow:hidden}
.ffv2-wimg img{max-width:100%;max-height:100%;object-fit:contain}
.ffv2-wslot{font-size:12px;font-weight:800;letter-spacing:.6px;color:var(--mut);margin-top:7px}
.ffv2-witem .ffv2-cname{font-size:14px;font-weight:700;margin-top:3px;line-height:1.3;word-break:break-word;color:var(--txt)}
.ffv2-witem .ffv2-crar.rar-white{color:var(--rar-common);border-color:var(--rar-common)}
.ffv2-sfbadge{position:absolute;top:8px;right:8px;z-index:2;background:var(--txt);color:var(--card);font-size:12px;font-weight:800;letter-spacing:.5px;border:0;border-radius:999px;padding:5px 10px;cursor:pointer}
/* Mode cards (DUO / SOLO / SQUAD): only fields the data provides. */
.ffv2-modegrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.ffv2-modecard{background:var(--card);color:var(--txt);border:1px solid var(--line);border-radius:16px;padding:16px;box-shadow:0 8px 24px rgba(0,0,0,.08)}
.ffv2-modecard .m{font-size:14px;font-weight:800;letter-spacing:1px;color:var(--accent);text-transform:uppercase}
.ffv2-modecard .wp{font-size:22px;font-weight:900;margin:5px 0 8px;color:var(--txt)}
.ffv2-modecard .wp small{font-size:13px;color:var(--mut);font-weight:600}
.ffv2-moderow{display:flex;justify-content:space-between;gap:8px;font-size:14px;padding:5px 0;border-top:1px solid var(--line);color:var(--mut)}
.ffv2-moderow b{color:var(--txt)}
/* Clan and team white card. */
.ffv2-soccard{background:var(--card);color:var(--txt);border:1px solid var(--line);border-radius:18px;padding:6px 18px;box-shadow:0 10px 30px rgba(0,0,0,.08)}
.ffv2-socrow{display:flex;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid var(--line);font-size:15px}
.ffv2-socrow:last-child{border-bottom:0}
.ffv2-socrow .k{color:var(--mut);font-weight:600}
.ffv2-socrow .v{color:var(--txt);font-weight:800;text-align:right;word-break:break-word}
/* Loading line under the search box: text + thin progress bar.
   Bar motion is transform-only (slide), never width/layout. */
.ffv2-loadline{width:100%;max-width:none;margin:10px auto 0;font-size:15px;font-weight:700;color:var(--accent)}
.ffv2-loadbar{height:6px;border-radius:999px;background:var(--line);overflow:hidden;margin-top:7px}
.ffv2-loadbar i{display:block;height:100%;width:40%;border-radius:999px;background:var(--accent);animation:ffv2load 1.1s ease-in-out infinite}
@keyframes ffv2load{0%{transform:translateX(-110%)}100%{transform:translateX(280%)}}
/* Sketchfab modal: official embed iframe, created lazily on click only. */
.ffv2-sfmodal{position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,.75);display:flex;align-items:center;justify-content:center;padding:18px}
.ffv2-sfbox{background:var(--card);border:1px solid var(--line);border-radius:18px;max-width:860px;width:100%;padding:16px;box-shadow:0 10px 30px rgba(0,0,0,.15)}
.ffv2-sfbox iframe{width:100%;height:520px;border:0;border-radius:12px;background:var(--txt)}
.ffv2-sfcredit{font-size:14px;color:var(--mut);margin-top:10px;line-height:1.5}
.ffv2-sfclose{float:right;min-height:44px;background:var(--bg);border:1px solid var(--line);color:var(--txt);border-radius:999px;padding:10px 16px;font-size:14px;font-weight:700;cursor:pointer}
@media(max-width:719px){.ffv2-sfbox iframe{height:380px}}
.ffv2-albumline{font-size:14px;color:var(--mut);background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px;line-height:1.55}
/* Clean result: one scrolling flow of sections, no tab chrome anywhere. */
#ffv2-result{width:100%;max-width:none;margin:0}

/* Nickname search box (v1.0.7) — bordered card under the hero form. */
.ffv2-nicksearch{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px;margin-top:14px;box-shadow:0 8px 24px rgba(0,0,0,.08)}
.ffv2-nicksearch .ffv2-sec{margin:0 2px 4px}
.ffv2-nicksearch .ffv2-search{margin:10px auto 0}
/* Hover polish: keep result cards white on hover (theme button hovers
   were painting them blue with unreadable dark text). */
.ffv2-rcard:hover{background:var(--card)}
/* Placeholder polish: placeholders render at full opacity in dark grey,
   never pale. */
.ffv2-search input::placeholder{color:#4b5563;opacity:1}
.ffv2-try input::placeholder{color:#4b5563;opacity:1}
.ffv2-recent{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;margin:0 0 8px}
.ffv2-rcard{display:flex;flex-direction:column;align-items:flex-start;gap:6px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;text-align:left;cursor:pointer;font-family:inherit}
.ffv2-rcard:hover{border-color:var(--accent)}
.ffv2-rcava{position:relative;width:52px;height:52px;border-radius:50%;background:var(--bg);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:800;color:var(--accent);overflow:hidden;flex:none}
.ffv2-rcava img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ffv2-rcname{font-size:15px;font-weight:800;color:var(--txt);word-break:break-word}
.ffv2-rcmeta{font-size:13px;color:var(--mut)}
@media(max-width:520px){.ffv2-recent{grid-template-columns:1fr}}

/* ===== White page (owner request, v1.0.4) =====
   This stylesheet loads ONLY on pages that carry the tool shortcode,
   so these rules affect tool pages alone — never the rest of the site.
   Tool pages render on pure white: body, content area and sidebar
   column all white, so no grey or dark patch sits behind the tool. */
body{background-color:#ffffff}
.site-content,.ast-container,.entry-content,.ast-article-single,.ast-single-post,.widget-area{background-color:#ffffff}
/* Headings on tool pages: black on white (owner request) — brand red
   stays only for labels, buttons and go-cues inside the tool. */
.entry-content h2,.entry-content h3,.ast-article-single h2,.ast-article-single h3,.widget-area h2{color:#111827}
/* Page body text on tool pages: dark, never pale grey (the theme renders
   content paragraphs/FAQ answers in a very pale grey — unreadable on
   white, flagged during the v1.0.5 preview check). */
.entry-content p,.entry-content li,.ast-article-single p,.ast-article-single li{color:#374151}
