/* ============================================================================
   The redesign, ported from the reference build and switchable.
   ============================================================================

   Generated from the reference at
     Codex/2026-10-02/i/outputs/over-achiever/dist/{styles,views}.css
   by scratchpad/scope-css.mjs — every rule prefixed with html[data-ui="next"],
   so with the flag off not one of them applies and the site is exactly what it
   was. Flip with ?ui=next, back with ?ui=now; the choice is remembered.

   THE TOP OF THIS FILE WAS GENERATED; THE TAIL IS HAND-WRITTEN.

   The body below was produced from the reference build by a script that
   prefixed every selector with the scope and rewrote the reference's
   body.light theme switch into this site's [data-theme="light"] one. That
   script was written in a scratch directory and has since been lost with it,
   so there is nothing to re-run: this file is now the source, not an output.
   The reference it came from is still at
   Codex/2026-10-02/i/outputs/over-achiever/dist if it ever needs rebuilding.

   Everything from "markup differences" down was written by hand against this
   site's own markup and has only ever existed here. Edit it in place.

   TWO THINGS THE PORT CHANGES, both forced by the site's CSP:

   1. The webfont @import is dropped. style-src is 'self', so the Google Fonts
      stylesheet is blocked and the font files would be too — the import would
      fail silently and Inter and Barlow Condensed would never arrive. They
      need self-hosting in public/ before the type matches the reference;
      until then both fall back and every condensed label renders wider than
      it should. Seventeen rules depend on Barlow Condensed.

   2. Rules are reachable, but the reference's inline style="--value:…" is NOT
      — style-src 'self' blocks style attributes silently, which would leave
      every progress bar empty and every ring at zero. app.js sets those
      through the CSSOM instead, which CSP allows.

   :root and html both become the scope itself, so the custom properties land
   where the rest of the file can see them. @keyframes bodies are left alone:
   their "selectors" are percentages and scoping them kills the animation
   without any error. */


/* --- collision reset: see the note above --- */
html[data-ui="next"] :where(.brand){all:revert}
html[data-ui="next"] :where(.panel){all:revert}
html[data-ui="next"] :where(.rank){all:revert}
html[data-ui="next"] :where(.rarity){all:revert}
html[data-ui="next"] :where(.shell){all:revert}
html[data-ui="next"] :where(.show){all:revert}
html[data-ui="next"] :where(.side-item){all:revert}
html[data-ui="next"] :where(.stat){all:revert}
html[data-ui="next"] :where(.stat-icon){all:revert}
html[data-ui="next"] :where(.stats){all:revert}
html[data-ui="next"] :where(.topbar){all:revert}


html[data-ui="next"]{color-scheme:dark;--bg:#090f13;--panel:#10191f;--panel-2:#131e25;--line:#24323b;--line-soft:#1a2931;--text:#edf2fc;--muted:#9eafbe;--dim:#6f8493;--cyan:#18efda;--cyan-dark:#073d3c;--gold:#ffc453;--red:#ff747a;--shadow:0 12px 40px #0006;font-family:Inter,Arial,sans-serif;font-size:14px}html[data-ui="next"] *{box-sizing:border-box}html[data-ui="next"] body{margin:0;background:var(--bg);color:var(--text);min-height:100vh}html[data-ui="next"] body:before{content:"";position:fixed;z-index:-1;inset:60px 0 0;background:linear-gradient(90deg,var(--bg) 10%,#090f13b3 65%),linear-gradient(0deg,var(--bg) 55%,#090f1377),var(--backdrop,none) center top/cover no-repeat;opacity:.65;pointer-events:none}html[data-ui="next"] button,html[data-ui="next"] input,html[data-ui="next"] select,html[data-ui="next"] textarea{font:inherit}html[data-ui="next"] button,html[data-ui="next"] a,html[data-ui="next"] input,html[data-ui="next"] select,html[data-ui="next"] textarea{-webkit-tap-highlight-color:transparent}html[data-ui="next"] button,html[data-ui="next"] a{touch-action:manipulation}html[data-ui="next"] button{color:inherit;cursor:pointer}html[data-ui="next"] button{background:none;border:0}html[data-ui="next"] a{color:inherit;text-decoration:none}html[data-ui="next"] button:focus-visible,html[data-ui="next"] a:focus-visible,html[data-ui="next"] input:focus-visible,html[data-ui="next"] textarea:focus-visible,html[data-ui="next"] select:focus-visible{outline:2px solid var(--cyan);outline-offset:4px}html[data-ui="next"] button:disabled{opacity:.4;cursor:default}html[data-ui="next"] svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}html[data-ui="next"] p{line-height:1.65;color:var(--muted)}html[data-ui="next"] h1,html[data-ui="next"] h2,html[data-ui="next"] h3,html[data-ui="next"] p{margin:0}html[data-ui="next"] h1{font-size:34px;line-height:1.2;letter-spacing:-.9px;font-weight:750}html[data-ui="next"] h2{font-size:23px;letter-spacing:-.5px}html[data-ui="next"] h3{font-size:16px}html[data-ui="next"] .topbar{height:64px;padding:0 28px;display:flex;align-items:center;justify-content:space-between;background:#090d10ee;border-bottom:1px solid var(--line-soft);position:relative;z-index:10}html[data-ui="next"] .brand{display:flex;align-items:center;gap:13px;font-size:15px;font-weight:800;letter-spacing:.6px}html[data-ui="next"] .brand small{display:block;font-family:'Barlow Condensed',sans-serif;font-size:11px;color:var(--muted);letter-spacing:2px;margin-top:4px}html[data-ui="next"] .brand-mark{color:#b9d4e7}html[data-ui="next"] .brand-mark svg{width:34px;height:38px}html[data-ui="next"] .account-controls{display:flex;align-items:center;gap:19px;position:relative}html[data-ui="next"] .icon-button{height:36px;width:36px;display:grid;place-items:center;border:1px solid var(--line);border-radius:7px;color:var(--muted);background:#10171c88}html[data-ui="next"] .icon-button:hover,html[data-ui="next"] .outline:hover{border-color:var(--cyan);color:var(--cyan)}html[data-ui="next"] .header-divider{height:20px;border-left:1px solid var(--line)}html[data-ui="next"] .account{display:flex;align-items:center;gap:12px;padding:0}html[data-ui="next"] .account-name{text-align:right;font-weight:700;font-size:14px}html[data-ui="next"] .account-name small{display:block;color:var(--dim);font-family:'Barlow Condensed';font-size:11px;letter-spacing:1.5px;margin-top:4px}html[data-ui="next"] .avatar{width:36px;height:36px;display:grid;place-items:center;border-radius:7px;border:1px solid #667586;background:linear-gradient(135deg,#344452,#142129 60%,#6c7c8a);font-weight:800;color:#dde9f3;font-size:18px}html[data-ui="next"] .account svg{width:14px}html[data-ui="next"] .account-menu{position:absolute;right:0;top:49px;width:218px;background:#101619;border:1px solid #2a363d;border-radius:8px;padding:8px;box-shadow:var(--shadow)}html[data-ui="next"] .account-menu a,html[data-ui="next"] .account-menu button{display:block;width:100%;padding:12px 10px;text-align:left;color:var(--muted);font-size:13px;border-radius:4px}html[data-ui="next"] .account-menu a:hover,html[data-ui="next"] .account-menu button:hover{background:#12302f;color:var(--cyan)}html[data-ui="next"] .menu-note{border-top:1px solid var(--line);padding:14px 10px 7px;font-size:11px;color:var(--dim)}html[data-ui="next"] .shell{display:grid;grid-template-columns:230px minmax(0,1fr);min-height:calc(100vh - 64px)}html[data-ui="next"] .sidebar{padding:29px 17px;border-right:1px solid var(--line-soft);background:linear-gradient(120deg,#0d181d99,#0a121766)}html[data-ui="next"] .side-label{font-family:'Barlow Condensed';font-weight:600;font-size:12px;letter-spacing:1.8px;color:#b0c4d6;margin:1px 9px 13px}html[data-ui="next"] .side-item{display:flex;align-items:center;text-align:left;gap:15px;width:100%;padding:12px 11px;margin:3px 0;border-radius:6px;color:#b9c9d9;font-size:13px;border-left:2px solid transparent;min-height:41px}html[data-ui="next"] .side-item svg{width:17px;height:17px}html[data-ui="next"] .side-item .count{margin-left:auto;color:var(--muted);font-family:'Barlow Condensed';font-size:16px}html[data-ui="next"] .side-item:hover{background:#112329}html[data-ui="next"] .side-item.active{border-left-color:var(--cyan);background:linear-gradient(90deg,#073b3c80,#0e343380);color:var(--text)}html[data-ui="next"] .side-item.active svg,html[data-ui="next"] .side-item.active .count{color:var(--cyan)}html[data-ui="next"] .side-rule{height:1px;background:var(--line);margin:24px 9px 20px}html[data-ui="next"] .view-switch{display:flex;gap:4px;margin:0 8px}html[data-ui="next"] .view-switch button{padding:10px 13px;flex:1;display:flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line);border-radius:6px;font-size:12px}html[data-ui="next"] .view-switch svg{width:15px}html[data-ui="next"] .view-switch .active{color:var(--cyan);border-color:#087e79;background:#073b3c55}html[data-ui="next"] .main{padding:28px 30px 32px;min-width:0;max-width:1900px;width:100%;margin:auto;margin-top:0}html[data-ui="next"] .full-main{padding:36px 4.5%}html[data-ui="next"] .page-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:20px}html[data-ui="next"] .page-heading p{margin-top:7px;font-size:14px}html[data-ui="next"] .search-controls{display:flex;align-items:center;gap:10px}html[data-ui="next"] .search{position:relative;display:flex;align-items:center;min-width:250px}html[data-ui="next"] .search>svg{position:absolute;left:14px;color:var(--muted);width:18px}html[data-ui="next"] .search input{height:44px;width:100%;padding:0 16px 0 44px;color:var(--text);background:#111b2277;border:1px solid #34444f;border-radius:7px;outline-offset:2px}html[data-ui="next"] .search input::placeholder{color:#8499a9;font-size:13px}html[data-ui="next"] .search-controls .icon-button{height:44px;width:44px}html[data-ui="next"] .stats{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));padding:13px 0;background:linear-gradient(110deg,#152127aa,#16202666);border:1px solid var(--line);border-radius:9px;margin-bottom:22px}html[data-ui="next"] .stat{display:flex;align-items:center;gap:19px;padding:5px 23px;border-right:1px solid var(--line);min-width:0}html[data-ui="next"] .stat:last-child{border-right:0}html[data-ui="next"] .stat>svg{width:30px;height:30px;color:var(--cyan)}html[data-ui="next"] .stat strong{font-size:23px;font-weight:750;white-space:nowrap}html[data-ui="next"] .stat strong span{font-size:14px;color:var(--muted);font-weight:400}html[data-ui="next"] .stat small{display:block;color:var(--muted);font-family:'Barlow Condensed';letter-spacing:.4px;font-size:12px;margin-top:5px;white-space:nowrap}html[data-ui="next"] .stat .gold,html[data-ui="next"] .gold{color:var(--gold)}html[data-ui="next"] .cyan{color:var(--cyan)}html[data-ui="next"] .ring{--size:30px;width:var(--size);height:var(--size);border-radius:50%;background:conic-gradient(var(--cyan) calc(var(--value)*1%),#235451 0);position:relative;flex-shrink:0;display:grid;place-items:center}html[data-ui="next"] .ring:before{content:"";position:absolute;inset:4px;border-radius:50%;background:var(--panel)}html[data-ui="next"] .ring>span{position:relative;z-index:1}html[data-ui="next"] .table-wrap{border:1px solid var(--line-soft);border-radius:9px;overflow:hidden;background:#10191e66}html[data-ui="next"] .games-table{width:100%;border-collapse:collapse;text-align:left;font-size:13px}html[data-ui="next"] .games-table thead{background:#111d24aa}html[data-ui="next"] .games-table th{font-family:'Barlow Condensed';font-weight:500;color:#aec4d6;font-size:11px;letter-spacing:.9px;height:35px;padding:0 13px;border-bottom:1px solid var(--line)}html[data-ui="next"] .games-table th button{font:inherit;letter-spacing:inherit;color:inherit;display:flex;align-items:center;gap:5px;padding:0}html[data-ui="next"] .games-table th svg{width:12px;height:12px}html[data-ui="next"] .games-table td{padding:6px 13px;border-bottom:1px solid var(--line-soft);height:54px}html[data-ui="next"] .games-table tbody tr:last-child td{border:0}html[data-ui="next"] .games-table tbody tr{cursor:pointer;transition:background .15s}html[data-ui="next"] .games-table tbody tr:nth-child(even){background:#ffffff02}html[data-ui="next"] .games-table tbody tr:hover{background:#12312f88}html[data-ui="next"] .game-name{display:flex;align-items:center;gap:17px;min-width:300px;font-weight:650}html[data-ui="next"] .game-cover{width:145px;height:42px;border-radius:6px;object-fit:cover;background:#18262e;display:block}html[data-ui="next"] .game-cover:not([src]){display:none}html[data-ui="next"] .game-title{white-space:normal}html[data-ui="next"] .perfect{border:1px solid #c19438;border-radius:4px;padding:4px 7px;font-size:10px;font-family:'Barlow Condensed';letter-spacing:.8px;color:var(--gold);margin-left:10px;white-space:nowrap;vertical-align:middle}html[data-ui="next"] .meta{display:flex;align-items:center;gap:9px;color:var(--muted);white-space:nowrap}html[data-ui="next"] .meta svg{width:15px;height:15px;color:#7e939f}html[data-ui="next"] .muted{color:var(--muted)}html[data-ui="next"] .progress{display:flex;align-items:center;gap:15px;min-width:170px}html[data-ui="next"] .progress-track{height:5px;border-radius:9px;background:#263139;flex:1;min-width:50px;overflow:hidden}html[data-ui="next"] .progress-fill{height:100%;width:calc(var(--value)*1%);border-radius:9px;background:linear-gradient(90deg,#11cbb7,#76ffe5)}html[data-ui="next"] .complete .progress-fill{background:var(--gold)}html[data-ui="next"] .progress strong{font-family:'Barlow Condensed';font-size:15px;color:var(--cyan);min-width:44px}html[data-ui="next"] .progress.complete strong{color:var(--gold)}html[data-ui="next"] .row-arrow{display:grid;place-items:center;background:#19252d77;border-radius:5px;width:26px;height:28px;color:#d4e5ed}html[data-ui="next"] .row-arrow svg{width:16px}html[data-ui="next"] .table-footer{display:flex;justify-content:space-between;margin-top:14px;color:var(--dim);font-size:12px}html[data-ui="next"] .empty-result{padding:60px;text-align:center;color:var(--muted)}html[data-ui="next"] .game-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}html[data-ui="next"] .game-card{border:1px solid var(--line);border-radius:9px;overflow:hidden;background:#121d23;cursor:pointer}html[data-ui="next"] .game-card:hover{border-color:#168b83}html[data-ui="next"] .game-card img{width:100%;aspect-ratio:460/215;object-fit:cover}html[data-ui="next"] .game-card-body{padding:16px}html[data-ui="next"] .game-card h3{margin-bottom:14px}html[data-ui="next"] .game-card p{font-size:12px;margin:9px 0 0}html[data-ui="next"] .outline,html[data-ui="next"] .primary,html[data-ui="next"] .tab{border:1px solid var(--line);border-radius:6px;padding:10px 15px;display:inline-flex;align-items:center;justify-content:center;gap:9px;background:#121d2480;font-size:13px}html[data-ui="next"] .primary{background:linear-gradient(130deg,#17eed3,#00bfb5);color:#022021;font-weight:700;border-color:#00cfba}html[data-ui="next"] .primary:hover{filter:brightness(1.1)}html[data-ui="next"] .outline svg,html[data-ui="next"] .primary svg{width:18px}html[data-ui="next"] .tabs{display:flex;gap:9px;align-items:center}html[data-ui="next"] .tab{color:var(--muted);padding:9px 13px;font-size:12px}html[data-ui="next"] .tab.active{border-color:#00cdbc;color:var(--cyan);background:#083b3b55;box-shadow:inset 0 0 12px #00e0c010}html[data-ui="next"] .tab span{margin-left:5px}html[data-ui="next"] .section-heading{display:flex;align-items:center;gap:23px;margin:24px 0 15px}html[data-ui="next"] .section-heading .search-controls{margin-left:auto}html[data-ui="next"] .panel{border:1px solid var(--line);border-radius:8px;background:linear-gradient(120deg,#111c2288,#0d171d88);padding:23px}html[data-ui="next"] .panel h3{display:flex;align-items:center;gap:12px}html[data-ui="next"] .panel h3 svg{color:var(--cyan)}html[data-ui="next"] .panel p{font-size:13px}html[data-ui="next"] .page-kicker{color:var(--muted);display:flex;align-items:center;gap:8px;font-size:12px;margin-bottom:17px}html[data-ui="next"] .page-kicker svg{width:14px}html[data-ui="next"] .gold-icon{color:var(--gold)!important}html[data-ui="next"] .red-icon{color:var(--red)!important}html[data-ui="next"] dialog{background:#101b21;color:var(--text);border:1px solid #35505b;border-radius:12px;padding:28px;max-width:600px;width:calc(100% - 32px);box-shadow:var(--shadow)}html[data-ui="next"] dialog::backdrop{background:#02090bcc;backdrop-filter:blur(5px)}html[data-ui="next"] .dialog-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}html[data-ui="next"] .dialog-heading h2{font-size:23px}html[data-ui="next"] dialog p{margin:12px 0}html[data-ui="next"] dialog label{display:block;margin:17px 0 8px;color:var(--muted)}html[data-ui="next"] dialog input,html[data-ui="next"] dialog textarea,html[data-ui="next"] .note-input{width:100%;background:#0b141a;border:1px solid var(--line);color:var(--text);border-radius:5px;padding:11px;outline-offset:2px}html[data-ui="next"] dialog textarea{min-height:135px;resize:vertical}html[data-ui="next"] .dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}html[data-ui="next"] #toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%) translateY(90px);background:#163831;border:1px solid #2e7666;border-radius:8px;padding:13px 22px;color:#c6ffed;z-index:100;transition:transform .25s;box-shadow:var(--shadow)}html[data-ui="next"] #toast.show{transform:translateX(-50%) translateY(0)}html[data-ui="next"][data-theme="light"]{color-scheme:light;--bg:#e8eef0;--panel:#f4f8fa;--panel-2:#e8f0f4;--line:#c6d3da;--line-soft:#d2dce0;--text:#142a36;--muted:#526a78;--dim:#667f8c;--cyan:#007f75}html[data-ui="next"][data-theme="light"]:before{opacity:.07}html[data-ui="next"][data-theme="light"] .topbar,html[data-ui="next"][data-theme="light"] .account-menu{background:#f4f8fa}html[data-ui="next"][data-theme="light"] .stats,html[data-ui="next"][data-theme="light"] .table-wrap,html[data-ui="next"][data-theme="light"] .panel{background:#f5f9facf}html[data-ui="next"][data-theme="light"] .sidebar{background:#e5edef}html[data-ui="next"][data-theme="light"] .search input,html[data-ui="next"][data-theme="light"] .outline,html[data-ui="next"][data-theme="light"] .tab{background:#f2f7fa}html[data-ui="next"][data-theme="light"] .side-item{color:#3f596a}html[data-ui="next"][data-theme="light"] .games-table thead{background:#e0ebef}html[data-ui="next"][data-theme="light"] .games-table th{color:#4a6677}html[data-ui="next"][data-theme="light"] .game-card{background:#f4f8fa}html[data-ui="next"][data-theme="light"] dialog{background:#f4f8fa}html[data-ui="next"][data-theme="light"] .ring:before{background:#f4f8fa}
@media(min-width:1600px){html[data-ui="next"] .main{padding:32px 42px}html[data-ui="next"] .shell{grid-template-columns:250px 1fr}html[data-ui="next"] .sidebar{padding-top:31px}html[data-ui="next"] .games-table td{height:57px}html[data-ui="next"] .game-cover{width:157px;height:44px}html[data-ui="next"] .search{min-width:350px}}@media(max-width:1250px){html[data-ui="next"] .shell{grid-template-columns:205px 1fr}html[data-ui="next"] .main{padding:26px 24px}html[data-ui="next"] .stat{gap:12px;padding:5px 14px}html[data-ui="next"] .stat strong{font-size:21px}html[data-ui="next"] .stat>svg{width:25px}html[data-ui="next"] .game-cover{width:110px;height:39px}html[data-ui="next"] .game-name{gap:12px;min-width:230px}html[data-ui="next"] .games-table td,html[data-ui="next"] .games-table th{padding-left:10px;padding-right:10px}html[data-ui="next"] .progress{min-width:115px;gap:8px}html[data-ui="next"] .perfect{display:none}html[data-ui="next"] .games-table .last-played{display:none}html[data-ui="next"] .search{min-width:220px}html[data-ui="next"] .page-heading{gap:15px}html[data-ui="next"] .page-heading h1{font-size:31px}}@media(max-width:950px){html[data-ui="next"] .shell{grid-template-columns:180px 1fr}html[data-ui="next"] .sidebar{padding-left:10px;padding-right:10px}html[data-ui="next"] .main{padding:24px 18px}html[data-ui="next"] .stats{grid-template-columns:repeat(3,1fr);gap:16px 0}html[data-ui="next"] .stat:nth-child(3){border:0}html[data-ui="next"] .stat:nth-child(n+4){display:none}html[data-ui="next"] .page-heading{align-items:flex-start;flex-direction:column}html[data-ui="next"] .page-heading .search-controls,html[data-ui="next"] .page-heading .search{width:100%}html[data-ui="next"] .game-name{min-width:170px}html[data-ui="next"] .game-cover{width:83px;height:38px}html[data-ui="next"] .games-table .playtime{display:none}html[data-ui="next"] .game-grid{grid-template-columns:repeat(2,1fr)}html[data-ui="next"] .section-heading{flex-wrap:wrap}html[data-ui="next"] .section-heading .search-controls{margin-left:0;width:100%}html[data-ui="next"] .section-heading .search{flex:1}}@media(max-width:650px){html[data-ui="next"] .topbar{padding:0 16px;height:60px}html[data-ui="next"] .brand{font-size:12px;gap:8px}html[data-ui="next"] .brand small{font-size:9px;letter-spacing:1.4px}html[data-ui="next"] .brand-mark svg{width:27px;height:31px}html[data-ui="next"] .account-controls{gap:10px}html[data-ui="next"] .header-divider{display:none}html[data-ui="next"] .account-name{display:none}html[data-ui="next"] .account{gap:7px}html[data-ui="next"] .shell{display:block;min-height:calc(100vh - 60px)}html[data-ui="next"] .sidebar{padding:14px 15px;border-right:0;border-bottom:1px solid var(--line);display:flex;gap:7px;overflow-x:auto}html[data-ui="next"] .sidebar .side-label,html[data-ui="next"] .sidebar .side-rule,html[data-ui="next"] .sidebar .sort-items,html[data-ui="next"] .sidebar .view-switch{display:none}html[data-ui="next"] .side-item{white-space:nowrap;min-width:max-content;width:auto;margin:0;padding:8px 12px;border:1px solid var(--line);font-size:12px;gap:8px;min-height:36px}html[data-ui="next"] .side-item .count{font-size:13px}html[data-ui="next"] .side-item.active{border-color:#008e86}html[data-ui="next"] .side-item svg{width:15px}html[data-ui="next"] .main,html[data-ui="next"] .full-main{padding:24px 16px}html[data-ui="next"] .page-heading{margin-bottom:19px;gap:18px}html[data-ui="next"] h1,html[data-ui="next"] .page-heading h1{font-size:29px}html[data-ui="next"] .stats{gap:10px 0;padding:14px 0}html[data-ui="next"] .stat{padding:0 12px;gap:10px}html[data-ui="next"] .stat>svg{display:none}html[data-ui="next"] .stat .ring{display:none}html[data-ui="next"] .stat strong{font-size:21px}html[data-ui="next"] .stat small{font-size:10px;letter-spacing:0}html[data-ui="next"] .stat strong span{font-size:11px}html[data-ui="next"] .games-table th{font-size:10px}html[data-ui="next"] .games-table td{height:67px;padding:8px}html[data-ui="next"] .game-cover{width:70px;height:37px}html[data-ui="next"] .game-name{min-width:0;gap:10px;font-size:12px}html[data-ui="next"] .games-table .achievements{display:none}html[data-ui="next"] .progress{min-width:80px;gap:7px;flex-direction:column;align-items:flex-end}html[data-ui="next"] .progress-track{width:100%;height:4px}html[data-ui="next"] .progress strong{min-width:0;font-size:13px}html[data-ui="next"] .games-table th:first-child{width:70%}html[data-ui="next"] .games-table td:last-child,html[data-ui="next"] .games-table th:last-child{display:none}html[data-ui="next"] .table-footer{font-size:11px}html[data-ui="next"] .game-grid{gap:12px}html[data-ui="next"] .game-card h3{font-size:13px}html[data-ui="next"] .game-card-body{padding:12px}html[data-ui="next"] .game-card .progress{align-items:stretch}html[data-ui="next"] .game-card .progress strong{align-self:flex-end}html[data-ui="next"] .tabs{flex-wrap:wrap;gap:6px}html[data-ui="next"] .tab{padding:8px 10px}html[data-ui="next"] .section-heading{gap:14px}html[data-ui="next"] .outline,html[data-ui="next"] .primary{font-size:12px;padding:10px 12px}html[data-ui="next"] .account-menu{top:47px}}

html[data-ui="next"] .cover-placeholder{display:flex;align-items:center;justify-content:center;width:145px;height:42px;flex-shrink:0;border-radius:6px;background:#292d35;font-family:'Barlow Condensed';font-size:18px;font-weight:700;text-transform:uppercase;letter-spacing:1px}html[data-ui="next"] .cover-placeholder.metal{color:#ef9b67;background:linear-gradient(135deg,#2a1d19,#351713)}html[data-ui="next"] .cover-placeholder.scritchy{color:#ffe361;background:linear-gradient(135deg,#163c85,#403c71)}html[data-ui="next"] .game-grid .cover-placeholder{width:100%;height:auto;aspect-ratio:460/215;font-size:28px}html[data-ui="next"] .game-hero{position:relative;isolation:isolate;min-height:220px;margin:-28px -30px 0;padding:24px 30px 28px;overflow:hidden}html[data-ui="next"] .game-hero:before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,var(--bg) 18%,#0a1217e8 35%,#0a121755 75%),linear-gradient(0deg,var(--bg),transparent 60%),var(--hero,none) right 48%/75% auto no-repeat}html[data-ui="next"] .game-hero h1{max-width:75%;font-size:33px}html[data-ui="next"] .hero-meta{display:flex;gap:25px;margin:13px 0;color:#bbcedd;font-size:13px}html[data-ui="next"] .hero-meta span{display:flex;align-items:center;gap:10px}html[data-ui="next"] .game-hero p{max-width:520px;font-size:13px}html[data-ui="next"] .hero-completion{position:absolute;right:40px;bottom:40px}html[data-ui="next"] .hero-completion .ring{outline:1px solid #3b4b5366;outline-offset:9px;box-shadow:0 0 0 8px #061015aa}html[data-ui="next"] .hero-completion .ring:before{inset:6px;background:#0b141bef}html[data-ui="next"] .hero-completion b{font-size:29px;display:block;text-align:center}html[data-ui="next"] .hero-completion small{display:block;font-family:'Barlow Condensed';font-size:11px;letter-spacing:1.5px;color:var(--muted);text-align:center;margin-top:1px}html[data-ui="next"] .detail-stats{grid-template-columns:repeat(6,1fr);margin-bottom:21px}html[data-ui="next"] .detail-stats .stat{padding:4px 19px;gap:15px}html[data-ui="next"] .detail-stats .stat strong{font-size:21px}html[data-ui="next"] .detail-stats .stat small{font-size:11px}html[data-ui="next"] .detail-stats .stat svg{width:27px}html[data-ui="next"] .purple{color:#b855f5!important}html[data-ui="next"] .detail-main .section-heading{gap:20px}html[data-ui="next"] .detail-main .section-heading h2{font-size:23px}html[data-ui="next"] .detail-main .section-heading .search{min-width:210px}html[data-ui="next"] .detail-main .section-heading .search input{height:35px;font-size:12px}html[data-ui="next"] .achievement-table{border:1px solid var(--line-soft);border-radius:8px;background:#0d171d88;overflow:hidden}html[data-ui="next"] .achievement-table-head{padding:12px 25px 12px 30px;display:grid;grid-template-columns:minmax(200px,1fr) 160px 155px 160px;font-family:'Barlow Condensed';font-size:11px;letter-spacing:.8px;color:#b5c9da;background:#101d2477;border-bottom:1px solid var(--line-soft)}html[data-ui="next"] .achievement-row{display:grid;grid-template-columns:24px 46px minmax(160px,1fr) 160px 155px 135px 27px;gap:12px;align-items:center;padding:5px 12px;min-height:49px}html[data-ui="next"] .achievement-block{border-bottom:1px solid var(--line-soft)}html[data-ui="next"] .achievement-block:last-child{border:0}html[data-ui="next"] .achievement-block.expanded{border:1px solid #058b81;border-left:2px solid var(--cyan);border-radius:7px;background:#07333366;box-shadow:0 0 18px #08e8cf08}html[data-ui="next"] .achievement-row input[type=checkbox],html[data-ui="next"] .checklist-item input{appearance:none;width:15px;height:15px;border:1px solid #426070;background:#0a151a;border-radius:3px;cursor:pointer;display:grid;place-items:center}html[data-ui="next"] .achievement-row input:checked,html[data-ui="next"] .checklist-item input:checked{background:var(--cyan);border-color:var(--cyan)}html[data-ui="next"] .achievement-row input:checked:after,html[data-ui="next"] .checklist-item input:checked:after{content:'✓';font-size:12px;color:#04201d}html[data-ui="next"] .achievement-badge{height:37px;width:37px;display:grid;place-items:center;border:1px solid #404949;background:linear-gradient(140deg,#090e11,#18201f);border-radius:5px;color:#afb4b1}html[data-ui="next"] .achievement-badge svg{height:29px;width:29px}html[data-ui="next"] .achievement-badge.unlocked{border-color:#a98b40;color:#e9d9aa}html[data-ui="next"] .achievement-description{text-align:left;min-width:0;display:block;padding:0}html[data-ui="next"] .achievement-description strong{font-size:12px;display:block}html[data-ui="next"] .achievement-description small{display:block;color:#9eb7c8;font-size:11px;margin-top:4px}html[data-ui="next"] .rarity{display:flex;gap:10px;align-items:center;font-size:12px}html[data-ui="next"] .rarity i{width:8px;height:8px;border-radius:50%;background:#08d2ad}html[data-ui="next"] .rarity i.rare{background:var(--gold)}html[data-ui="next"] .rarity small{display:block;font-size:9px;font-family:'Barlow Condensed';letter-spacing:1px;color:var(--muted);margin-top:3px}html[data-ui="next"] .achievement-status{display:flex;align-items:center;gap:9px;color:var(--muted);font-size:12px}html[data-ui="next"] .achievement-status.cyan{color:var(--cyan)}html[data-ui="next"] .achievement-status svg{width:16px}html[data-ui="next"] .unlock-date{font-family:'Barlow Condensed';font-size:14px;letter-spacing:.6px;color:#9eb7c8}html[data-ui="next"] .rotated svg{transform:rotate(-90deg)}html[data-ui="next"] .achievement-details{display:grid;grid-template-columns:1fr 1.05fr 1.1fr;gap:6px;padding:0 12px 7px 47px}html[data-ui="next"] .mini-panel{background:#0c161dea;border:1px solid #233c45;border-radius:6px;padding:10px 14px;min-width:0}html[data-ui="next"] .mini-panel h3{font-size:12px;display:flex;gap:10px;align-items:center;margin-bottom:6px}html[data-ui="next"] .mini-panel h3 svg{width:17px;height:17px;color:#a7c4db}html[data-ui="next"] .text-button{margin-left:auto;color:var(--muted);font-size:11px;padding:0;white-space:nowrap}html[data-ui="next"] .text-button:hover{color:var(--cyan)}html[data-ui="next"] .guide-link{display:flex;align-items:center;gap:14px;width:100%;padding:7px 0;border-top:1px solid var(--line-soft);text-align:left;font-size:11px}html[data-ui="next"] .guide-link>svg:first-child{width:24px;color:#99b2c4}html[data-ui="next"] .guide-link>svg:last-child{margin-left:auto;width:14px;color:#93b4c9}html[data-ui="next"] .guide-link small{display:block;color:#849bab;font-size:10px;margin-top:3px}html[data-ui="next"] .steps-empty{text-align:center;padding-top:10px}html[data-ui="next"] .steps-empty p{font-size:11px;line-height:1.7;margin-bottom:16px}html[data-ui="next"] .accent-outline{color:var(--cyan);border-color:#06988f}html[data-ui="next"] .private{margin-left:auto;display:flex;gap:5px;align-items:center;color:var(--muted);font-size:10px;font-weight:400}html[data-ui="next"] .private svg{width:11px!important;height:11px!important}html[data-ui="next"] .notes-heading{margin-top:12px}html[data-ui="next"] .note-input{padding:8px;font-size:11px}html[data-ui="next"] .mini-panel textarea{height:50px;min-height:50px;resize:vertical}html[data-ui="next"] .checklist-item{display:flex;align-items:center;gap:6px;font-size:11px;margin:4px 0;color:var(--muted)}html[data-ui="next"] .contributions-main{padding-top:40px}html[data-ui="next"] .contributions-main h1{font-size:34px}html[data-ui="next"] .contribution-stats{display:grid;grid-template-columns:repeat(6,1fr);gap:15px;margin:28px 0 29px}html[data-ui="next"] .contribution-stat{border:1px solid var(--line);border-radius:8px;background:linear-gradient(125deg,#132027aa,#121d2355);padding:18px 16px;display:flex;gap:17px;min-width:0}html[data-ui="next"] .stat-icon{display:grid;place-items:center;flex-shrink:0;width:49px;height:49px;border:1px solid #24323a;border-radius:10px;background:linear-gradient(140deg,#202c32aa,#17222933);color:var(--cyan)}html[data-ui="next"] .stat-icon svg{width:29px;height:29px}html[data-ui="next"] .contribution-stat strong{display:block;font-size:25px;line-height:1}html[data-ui="next"] .contribution-stat span:not(.stat-icon){display:block;font-family:'Barlow Condensed';font-size:14px;color:#b7c9d9;margin-top:7px}html[data-ui="next"] .contribution-stat small{display:block;font-size:11px;color:var(--muted);margin-top:6px;white-space:nowrap}html[data-ui="next"] .wide-tabs{display:grid;grid-template-columns:repeat(6,1fr);border:1px solid var(--line);background:#111b2177;border-radius:7px;padding:1px}html[data-ui="next"] .wide-tabs button{display:flex;align-items:center;justify-content:center;gap:12px;border-right:1px solid var(--line);padding:12px 5px;white-space:nowrap;font-size:13px;color:#bcd0df}html[data-ui="next"] .wide-tabs button:last-child{border-right:0}html[data-ui="next"] .wide-tabs b{font-size:12px;display:grid;place-items:center;min-width:25px;height:25px;border-radius:20px;background:#26363d99;font-weight:500}html[data-ui="next"] .wide-tabs .active{border:1px solid var(--cyan);border-radius:6px;background:#08464044;box-shadow:inset 0 0 14px #00e7cc0a;color:#fff}html[data-ui="next"] .wide-tabs .active svg{color:var(--cyan)}html[data-ui="next"] .contribution-tools{display:flex;justify-content:flex-end;gap:13px;margin:16px 0 14px}html[data-ui="next"] .contribution-tools .search{min-width:330px}html[data-ui="next"] .contribution-head,html[data-ui="next"] .contribution-row{display:grid;grid-template-columns:1.9fr 1fr 2fr .9fr .9fr 1.2fr .95fr;gap:18px;align-items:center}html[data-ui="next"] .contribution-head{padding:14px 10px;color:#b4cad8;font-family:'Barlow Condensed';font-size:11px;letter-spacing:1px;border-bottom:1px solid var(--line)}html[data-ui="next"] .contribution-head span:first-child{padding-left:0}html[data-ui="next"] .contribution-row{padding:19px 15px;min-height:162px;border-radius:8px}html[data-ui="next"] .contribution-title h3{font-size:17px;line-height:1.45}html[data-ui="next"] .contribution-title p{font-size:12px;margin:3px 0 10px}html[data-ui="next"] .contribution-title p svg{height:13px;width:13px;vertical-align:middle;margin-left:5px}html[data-ui="next"] .type-tag{border:1px solid var(--line);border-radius:5px;background:#19252b66;padding:6px 8px;display:inline-flex;align-items:center;gap:7px;font-size:11px;white-space:nowrap}html[data-ui="next"] .type-tag svg{width:13px;height:13px}html[data-ui="next"] .status-pill{display:inline-flex;align-items:center;gap:8px;white-space:nowrap;background:#29384099;border-radius:20px;padding:9px 11px;font-size:10px;font-weight:700}html[data-ui="next"] .status-pill svg{width:17px;height:17px}html[data-ui="next"] .contribution-status{text-align:center}html[data-ui="next"] .contribution-status p{font-size:11px;margin-top:7px}html[data-ui="next"] .contribution-game{display:flex;align-items:center;gap:16px}html[data-ui="next"] .contribution-game .game-cover{width:70px;height:82px;object-fit:cover;object-position:55%;flex-shrink:0}html[data-ui="next"] .contribution-game h3{font-size:13px;line-height:1.5}html[data-ui="next"] .contribution-game p{font-size:11px;margin-top:6px}html[data-ui="next"] .contribution-date .meta{font-size:12px}html[data-ui="next"] .contribution-date small{display:block;color:var(--dim);font-size:11px;margin:8px 0 0 24px}html[data-ui="next"] .community-count{display:flex;gap:27px}html[data-ui="next"] .community-count>span{display:flex;flex-wrap:wrap;align-items:center;gap:7px;font-size:13px;max-width:50px}html[data-ui="next"] .community-count svg{width:17px}html[data-ui="next"] .community-count small{font-size:11px;color:var(--dim);width:100%;margin-top:2px}html[data-ui="next"] .contribution-actions{display:flex;flex-direction:column;gap:9px}html[data-ui="next"] .contribution-actions button{padding:8px;font-size:11px;white-space:nowrap}html[data-ui="next"] .leaderboard-main h1{font-size:44px;letter-spacing:-1.1px}html[data-ui="next"] .leaderboard-main .page-heading p{font-size:17px}html[data-ui="next"] .leader-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin-bottom:21px}html[data-ui="next"] .leader-stat{display:flex;align-items:center;gap:23px;min-height:84px;padding:16px 23px;border:1px solid #45515a;border-radius:9px;background:linear-gradient(115deg,#333d43bb,#1a242b77)}html[data-ui="next"] .leader-stat>svg{width:42px;height:42px;padding:7px;background:#101a2199;border:1px solid #33454e;border-radius:7px;color:#d2e3ef}html[data-ui="next"] .leader-stat strong{font-size:26px;display:block;margin-top:6px}html[data-ui="next"] .leader-stat strong span{font-size:16px;color:var(--muted);font-weight:400}html[data-ui="next"] .leader-stat small{font-size:11px;color:#bacdde}html[data-ui="next"] .leader-stat.featured{background:linear-gradient(110deg,#0077665e,#0d2c2988);border-color:#029f92}html[data-ui="next"] .leader-stat.featured>svg,html[data-ui="next"] .leader-stat.featured small{color:var(--cyan)}html[data-ui="next"] .leader-stat.amber{background:linear-gradient(110deg,#69512566,#191d1f88);border-color:#7c622c}html[data-ui="next"] .leader-stat.amber>svg,html[data-ui="next"] .leader-stat.amber small{color:var(--gold)}html[data-ui="next"] .leader-tabs{gap:0;margin:0 0 24px}html[data-ui="next"] .leader-tabs .tab{min-width:173px;padding:11px 20px;font-size:13px;border-radius:0}html[data-ui="next"] .leader-tabs .tab:first-child{border-radius:6px 0 0 6px}html[data-ui="next"] .leader-tabs .tab:nth-child(3){border-radius:0 6px 6px 0}html[data-ui="next"] .leader-tabs .tab.active{border-radius:6px}html[data-ui="next"] .leader-tabs>span{flex:1;margin-left:12px;border-top:1px solid #3a4b55}html[data-ui="next"] .leader-layout{display:grid;grid-template-columns:minmax(0,1fr) 325px;gap:24px}html[data-ui="next"] .leader-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;gap:14px}html[data-ui="next"] .leader-heading p{font-size:12px;margin-top:3px}html[data-ui="next"] .leader-heading .search{min-width:180px;width:210px}html[data-ui="next"] .leader-heading .search input{height:38px;font-size:12px}html[data-ui="next"] .select-wrap{display:flex;align-items:center;gap:8px;border:1px solid #34444f;border-radius:6px;padding:0 10px;height:38px;background:#101b22}html[data-ui="next"] .select-wrap svg{width:17px;color:var(--muted)}html[data-ui="next"] select{background:transparent;border:0;color:var(--text);font-size:11px;padding:7px 0;outline:0}html[data-ui="next"] .leaderboard-table th{font-size:10px;letter-spacing:.3px;white-space:nowrap}html[data-ui="next"] .leaderboard-table th svg{width:15px;height:15px;vertical-align:middle;margin-right:8px}html[data-ui="next"] .leaderboard-table th:nth-child(4) svg{color:var(--gold)}html[data-ui="next"] .leaderboard-table td{height:40px;padding:4px 12px}html[data-ui="next"] .player-name{display:flex;align-items:center;gap:12px;white-space:nowrap}html[data-ui="next"] .player-name strong{font-weight:500;font-size:12px}html[data-ui="next"] .player-avatar{display:grid;place-items:center;width:33px;height:33px;border-radius:5px;flex-shrink:0;background:linear-gradient(140deg,var(--avatar-color),#0c151ccc);border:1px solid #ffffff16;font-family:'Barlow Condensed';font-size:15px;letter-spacing:1px;font-weight:700;color:#f0f4ff}html[data-ui="next"] .rank svg{width:19px;height:19px}html[data-ui="next"] .completion-cell{display:flex;align-items:center;gap:16px;color:var(--cyan);font-size:12px}html[data-ui="next"] .completion-cell .ring:before{inset:3px}html[data-ui="next"] .you-row{background:#073f3977!important;outline:1px solid var(--cyan);outline-offset:-1px;box-shadow:inset 0 0 20px #00eace11}html[data-ui="next"] .you-row td{height:44px}html[data-ui="next"] .you-row td:first-child{color:var(--cyan)}html[data-ui="next"] .you-label{border:1px solid var(--cyan);border-radius:4px;color:var(--cyan);padding:3px 8px;font-size:11px}html[data-ui="next"] .leaderboard-info{padding:25px 22px}html[data-ui="next"] .leaderboard-info>h3{font-size:15px;margin-bottom:17px;gap:14px}html[data-ui="next"] .leaderboard-info>h3 svg{color:#64a4ff;width:28px;height:28px}html[data-ui="next"] .leaderboard-info>p{margin-bottom:17px;line-height:1.65;font-size:13px}html[data-ui="next"] .leaderboard-info .side-rule{margin:22px 0}html[data-ui="next"] .legend-item{display:flex;gap:16px;margin:18px 0}html[data-ui="next"] .legend-item:last-child{margin-bottom:0}html[data-ui="next"] .legend-item>svg{width:26px;height:26px;color:#bdd2e0}html[data-ui="next"] .legend-item h3{font-size:12px;margin-bottom:3px}html[data-ui="next"] .legend-item p{font-size:12px;line-height:1.4}html[data-ui="next"] .sample-badge{font-family:'Barlow Condensed';letter-spacing:1px;font-size:11px}html[data-ui="next"] .review-stats{display:flex;min-height:77px}html[data-ui="next"] .review-stats .stat{min-width:280px;gap:25px}html[data-ui="next"] .review-stats .stat:nth-child(2){border:0}html[data-ui="next"] .review-stats .stat>svg{width:34px;height:34px}html[data-ui="next"] .review-stats .stat:nth-child(2)>svg{color:#d9e4ee}html[data-ui="next"] .edits-layout{display:grid;grid-template-columns:minmax(0,1fr) 345px;gap:20px}html[data-ui="next"] .caught-up{display:flex;flex-direction:column;align-items:center;text-align:center;min-height:515px;padding:32px 24px 55px;border-style:dashed;background:linear-gradient(120deg,#101a2166,#07121855)}html[data-ui="next"] .empty-visual{height:188px;width:100%;display:flex;align-items:center;justify-content:center;position:relative;background:radial-gradient(ellipse,#04d5c31b,transparent 61%)}html[data-ui="next"] .empty-visual svg{width:98px;height:98px;stroke-width:1.1;color:var(--cyan);filter:drop-shadow(0 0 18px #00dccb77)}html[data-ui="next"] .caught-up h2{font-size:31px;margin-top:7px}html[data-ui="next"] .caught-up .empty-subtitle{font-size:16px;margin:5px 0 15px}html[data-ui="next"] .caught-up>p:not(.empty-subtitle){font-size:14px;line-height:1.65}html[data-ui="next"] .empty-actions{display:flex;gap:12px;margin-top:33px;justify-content:center;width:100%}html[data-ui="next"] .empty-actions>a,html[data-ui="next"] .empty-actions>button{flex:1;padding:15px 14px;gap:13px;text-align:left;white-space:nowrap}html[data-ui="next"] .empty-actions svg{width:25px;height:25px}html[data-ui="next"] .empty-actions span{font-size:12px;font-weight:650}html[data-ui="next"] .empty-actions small{display:block;font-weight:400;font-size:11px;color:var(--muted);margin-top:6px}html[data-ui="next"] .empty-actions .primary small{color:#08433f}html[data-ui="next"] .edits-aside{display:flex;flex-direction:column;gap:20px}html[data-ui="next"] .how-it-works{padding:20px}html[data-ui="next"] .how-it-works h3{font-size:14px}html[data-ui="next"] .how-it-works>h3{font-size:15px}html[data-ui="next"] .how-it-works ol{list-style:none;padding:0;margin:22px 0 0}html[data-ui="next"] .how-it-works li{display:flex;gap:16px;position:relative;padding:0 0 23px}html[data-ui="next"] .how-it-works li:last-child{padding-bottom:0}html[data-ui="next"] .how-it-works li:not(:last-child):after{content:"";position:absolute;left:16px;top:40px;bottom:5px;border-left:1px solid #0c9085}html[data-ui="next"] .how-it-works li>span{border:2px solid #05b7a8;width:33px;height:33px;border-radius:50%;display:grid;place-items:center;color:var(--cyan);font-size:17px;flex-shrink:0;box-shadow:inset 0 0 9px #07cab61f}html[data-ui="next"] .how-it-works li h3{font-size:13px;margin-bottom:3px}html[data-ui="next"] .how-it-works li p{font-size:12px;line-height:1.5}html[data-ui="next"] .recent-activity{padding:16px}html[data-ui="next"] .recent-activity>h3{margin-bottom:11px;font-size:14px}html[data-ui="next"] .activity-item{display:flex;align-items:center;gap:9px;border-bottom:1px solid var(--line-soft);padding:9px 0}html[data-ui="next"] .activity-item:last-child{border:0}html[data-ui="next"] .activity-avatar{width:32px;height:34px;display:grid;place-items:center;background:#1b302f;border-radius:5px;color:#859891;flex-shrink:0}html[data-ui="next"] .activity-item:nth-child(3) .activity-avatar{background:#352a22;color:#c99168}html[data-ui="next"] .activity-item:nth-child(4) .activity-avatar{background:#2b2342;color:#a69ec4}html[data-ui="next"] .activity-item b{font-size:11px;font-weight:550;display:block;white-space:nowrap}html[data-ui="next"] .activity-item small{display:block;font-size:9px;color:var(--dim);margin-top:4px}html[data-ui="next"] .activity-right{margin-left:auto;text-align:right;white-space:nowrap;font-size:10px}html[data-ui="next"] .activity-right small{font-size:9px;margin-top:6px}html[data-ui="next"] .submission-list{width:100%;text-align:left}html[data-ui="next"] .submission-list h2{font-size:23px}html[data-ui="next"] .submission-list .activity-item{padding:20px 0}html[data-ui="next"] .submission-list .activity-item b{font-size:14px}html[data-ui="next"] .submission-list .activity-item small{font-size:12px}html[data-ui="next"] .dialog-filters{display:flex;gap:10px;flex-wrap:wrap}html[data-ui="next"] .guidelines{color:var(--muted);line-height:2;padding-left:20px}html[data-ui="next"][data-theme="light"] .mini-panel,html[data-ui="next"][data-theme="light"] .select-wrap{background:#eef4f6}html[data-ui="next"][data-theme="light"] .contribution-stat{background:#f0f5f7}html[data-ui="next"][data-theme="light"] .wide-tabs{background:#e8f0f3}html[data-ui="next"][data-theme="light"] .wide-tabs button,html[data-ui="next"][data-theme="light"] .contribution-stat span:not(.stat-icon){color:#3f596a}html[data-ui="next"][data-theme="light"] .game-hero:before{opacity:.25}html[data-ui="next"][data-theme="light"] .hero-meta{color:var(--muted)}html[data-ui="next"][data-theme="light"] .achievement-table{background:#edf3f6}html[data-ui="next"][data-theme="light"] .achievement-description small{color:var(--muted)}html[data-ui="next"][data-theme="light"] .mini-panel h3 svg{color:var(--muted)}html[data-ui="next"][data-theme="light"] .note-input{background:#e6eff2;color:var(--text)}html[data-ui="next"][data-theme="light"] .leader-stat{background:#f0f5f7}html[data-ui="next"][data-theme="light"] .leader-stat small{color:#4d6577}html[data-ui="next"][data-theme="light"] .leader-stat>svg{background:#d6e5e9;color:#30665e}html[data-ui="next"][data-theme="light"] .caught-up{background:#f0f6f8}html[data-ui="next"][data-theme="light"] .contribution-status .status-pill{background:#cddcde}html[data-ui="next"][data-theme="light"] .wide-tabs .active{color:#065c57}html[data-ui="next"][data-theme="light"] .you-row{background:#b9e6de!important}
@media(min-width:1600px){html[data-ui="next"] .game-hero{margin:-32px -42px 0;padding:24px 42px 30px;min-height:230px}html[data-ui="next"] .leader-layout{grid-template-columns:minmax(0,1fr) 360px}html[data-ui="next"] .edits-layout{grid-template-columns:minmax(0,1fr) 385px}html[data-ui="next"] .caught-up{min-height:550px}html[data-ui="next"] .empty-visual{height:220px}html[data-ui="next"] .cover-placeholder{width:157px;height:44px}}@media(max-width:1400px){html[data-ui="next"] .detail-stats .stat{padding:4px 12px;gap:10px}html[data-ui="next"] .detail-stats .stat svg{width:23px}html[data-ui="next"] .detail-main .section-heading{flex-wrap:wrap}html[data-ui="next"] .detail-main .section-heading .search-controls{margin-left:0}html[data-ui="next"] .achievement-row{grid-template-columns:20px 38px minmax(140px,1fr) 105px 110px 100px 26px;gap:10px}html[data-ui="next"] .achievement-table-head{grid-template-columns:minmax(200px,1fr) 115px 120px 128px}html[data-ui="next"] .mini-panel{padding:10px}html[data-ui="next"] .achievement-details{grid-template-columns:1fr 1fr 1.1fr;padding-left:37px}html[data-ui="next"] .empty-actions{flex-wrap:wrap}html[data-ui="next"] .empty-actions>a,html[data-ui="next"] .empty-actions>button{min-width:165px}html[data-ui="next"] .contribution-stats{gap:12px}html[data-ui="next"] .contribution-stat{padding:17px 13px;gap:12px}html[data-ui="next"] .stat-icon{width:40px;height:44px}html[data-ui="next"] .contribution-head,html[data-ui="next"] .contribution-row{gap:12px;grid-template-columns:1.8fr 1fr 1.8fr .9fr .9fr 1fr .9fr}html[data-ui="next"] .contribution-game{gap:12px}html[data-ui="next"] .contribution-game .game-cover{width:55px;height:72px}html[data-ui="next"] .community-count{gap:15px}html[data-ui="next"] .leader-layout{grid-template-columns:minmax(0,1fr) 290px;gap:20px}html[data-ui="next"] .leader-heading{flex-wrap:wrap;gap:12px}html[data-ui="next"] .leaderboard-info{padding:23px 19px}html[data-ui="next"] .leaderboard-table td{padding:5px 10px}html[data-ui="next"] .edits-layout{grid-template-columns:minmax(0,1fr) 320px}html[data-ui="next"] .caught-up{padding:26px 20px 35px}}
@media(max-width:1150px){html[data-ui="next"] .contribution-stats{grid-template-columns:repeat(3,1fr)}html[data-ui="next"] .contribution-stat small{font-size:12px}html[data-ui="next"] .contribution-stat{padding:16px}html[data-ui="next"] .wide-tabs{grid-template-columns:repeat(3,1fr)}html[data-ui="next"] .wide-tabs button{border-bottom:1px solid var(--line)}html[data-ui="next"] .contribution-head{display:none}html[data-ui="next"] .contribution-row{grid-template-columns:1.7fr 1fr 1.7fr}html[data-ui="next"] .contribution-actions{flex-direction:row}html[data-ui="next"] .contribution-date,html[data-ui="next"] .community-count{margin-top:15px}html[data-ui="next"] .contribution-actions{grid-column:1/-1;margin-top:7px}html[data-ui="next"] .contribution-actions .outline{min-width:120px}html[data-ui="next"] .leader-layout{grid-template-columns:1fr}html[data-ui="next"] .leaderboard-info{display:none}html[data-ui="next"] .leader-stats{gap:10px}html[data-ui="next"] .leader-stat{padding:15px;gap:14px}html[data-ui="next"] .leader-stat>svg{width:32px;height:36px}html[data-ui="next"] .leader-stat strong{font-size:23px}html[data-ui="next"] .leader-stat small{font-size:10px}html[data-ui="next"] .leaderboard-table th,html[data-ui="next"] .leaderboard-table td{padding-left:15px;padding-right:15px}html[data-ui="next"] .leader-heading{flex-wrap:nowrap}html[data-ui="next"] .edits-layout{grid-template-columns:1fr}html[data-ui="next"] .edits-aside{display:grid;grid-template-columns:1fr 1fr;gap:18px}html[data-ui="next"] .caught-up{min-height:450px}html[data-ui="next"] .empty-visual{height:150px}html[data-ui="next"] .empty-actions{max-width:760px;flex-wrap:nowrap}html[data-ui="next"] .detail-stats{grid-template-columns:repeat(3,1fr);row-gap:15px}html[data-ui="next"] .detail-stats .stat:nth-child(3){border:0}html[data-ui="next"] .detail-stats .stat:nth-child(n+4){display:flex}html[data-ui="next"] .achievement-row{grid-template-columns:20px 38px minmax(130px,1fr) 90px 90px 25px;gap:8px}html[data-ui="next"] .unlock-date{display:none}html[data-ui="next"] .achievement-table-head{grid-template-columns:minmax(200px,1fr) 98px 119px}html[data-ui="next"] .achievement-table-head span:last-child{display:none}html[data-ui="next"] .achievement-details{grid-template-columns:1fr 1fr;padding-left:12px}html[data-ui="next"] .achievement-details .mini-panel:last-child{grid-column:1/-1}html[data-ui="next"] .game-hero{margin:-26px -24px 0;padding:24px}html[data-ui="next"] .hero-completion{right:30px;bottom:38px}html[data-ui="next"] .hero-completion .ring{--size:88px!important}html[data-ui="next"] .game-hero p{max-width:75%;font-size:12px}html[data-ui="next"] .hero-completion b{font-size:25px}}
@media(max-width:800px){html[data-ui="next"] .contribution-row{grid-template-columns:1.5fr 1fr}html[data-ui="next"] .contribution-game{grid-column:1/-1;margin-top:10px}html[data-ui="next"] .contribution-game .game-cover{width:110px;height:55px}html[data-ui="next"] .community-count{margin:0}html[data-ui="next"] .contribution-tools .search{min-width:200px;flex:1}html[data-ui="next"] .contribution-tools .outline{white-space:nowrap}html[data-ui="next"] .leader-stats{grid-template-columns:1fr 1fr}html[data-ui="next"] .leaderboard-main h1{font-size:36px}html[data-ui="next"] .leader-heading{flex-wrap:wrap}html[data-ui="next"] .leader-heading .search-controls{width:100%}html[data-ui="next"] .leader-heading .search{flex:1}html[data-ui="next"] .leaderboard-table th.measured,html[data-ui="next"] .leaderboard-table td.measured{display:none}html[data-ui="next"] .edits-aside{grid-template-columns:1fr}html[data-ui="next"] .empty-actions{flex-wrap:wrap}html[data-ui="next"] .empty-actions>a,html[data-ui="next"] .empty-actions>button{min-width:150px}html[data-ui="next"] .achievement-row{grid-template-columns:18px 30px minmax(100px,1fr) 65px 25px;gap:7px}html[data-ui="next"] .achievement-status{display:none}html[data-ui="next"] .achievement-table-head{grid-template-columns:1fr 97px}html[data-ui="next"] .achievement-table-head span:nth-child(3){display:none}html[data-ui="next"] .achievement-badge{width:30px;height:32px}html[data-ui="next"] .achievement-badge svg{width:24px;height:25px}html[data-ui="next"] .achievement-description small{font-size:10px;line-height:1.4}html[data-ui="next"] .achievement-details{grid-template-columns:1fr}html[data-ui="next"] .achievement-details .mini-panel:last-child{grid-column:auto}html[data-ui="next"] .steps-empty{padding-bottom:10px}html[data-ui="next"] .game-hero{margin:-24px -18px 0;padding:24px 18px}html[data-ui="next"] .game-hero h1{font-size:26px;max-width:85%}html[data-ui="next"] .hero-meta{font-size:11px;gap:14px}html[data-ui="next"] .hero-completion{display:none}html[data-ui="next"] .game-hero p{max-width:95%}html[data-ui="next"] .review-stats .stat{min-width:0;flex:1;padding:5px 17px}html[data-ui="next"] .review-stats .stat>svg{width:26px}html[data-ui="next"] .review-stats .stat small{white-space:normal;font-size:11px}html[data-ui="next"] .cover-placeholder{width:83px;height:38px;font-size:12px;letter-spacing:0;text-align:center}html[data-ui="next"] .caught-up h2{font-size:28px}}
@media(max-width:650px){html[data-ui="next"] .contributions-main h1{font-size:29px}html[data-ui="next"] .contribution-stats{margin:22px 0;gap:9px}html[data-ui="next"] .contribution-stat{padding:13px 10px;gap:8px}html[data-ui="next"] .contribution-stat .stat-icon{display:none}html[data-ui="next"] .contribution-stat strong{font-size:24px}html[data-ui="next"] .contribution-stat span:not(.stat-icon){font-size:12px;white-space:nowrap}html[data-ui="next"] .contribution-stat small{font-size:10px;white-space:normal;line-height:1.4}html[data-ui="next"] .wide-tabs button{font-size:10px;gap:6px;padding:11px 5px}html[data-ui="next"] .wide-tabs button svg{width:14px;height:14px}html[data-ui="next"] .wide-tabs b{min-width:20px;height:20px;font-size:10px}html[data-ui="next"] .contribution-tools{gap:8px}html[data-ui="next"] .contribution-tools .search{min-width:0}html[data-ui="next"] .contribution-tools .search input{font-size:12px}html[data-ui="next"] .contribution-tools .outline{font-size:11px;padding:9px}html[data-ui="next"] .contribution-tools .outline svg{display:none}html[data-ui="next"] .contribution-title h3{font-size:15px}html[data-ui="next"] .contribution-status p{font-size:10px}html[data-ui="next"] .contribution-row{padding:18px 13px;gap:14px}html[data-ui="next"] .status-pill{padding:8px;font-size:9px}html[data-ui="next"] .contribution-date .meta{font-size:11px}html[data-ui="next"] .contribution-actions{grid-column:auto}html[data-ui="next"] .contribution-actions .outline{min-width:0;flex:1}html[data-ui="next"] .contribution-actions .outline svg{display:none}html[data-ui="next"] .leaderboard-main h1{font-size:32px}html[data-ui="next"] .leaderboard-main .page-heading p{font-size:14px}html[data-ui="next"] .leader-stat{padding:14px;gap:11px}html[data-ui="next"] .leader-stat strong{font-size:23px}html[data-ui="next"] .leader-stat strong span{font-size:12px}html[data-ui="next"] .leader-stat>svg,html[data-ui="next"] .leader-stat>.ring{display:none}html[data-ui="next"] .leader-stat small{font-size:10px}html[data-ui="next"] .leader-tabs .tab{min-width:0;flex:1;font-size:11px;padding:10px 8px;gap:7px}html[data-ui="next"] .leader-tabs .tab svg{width:15px}html[data-ui="next"] .leader-tabs>span{display:none}html[data-ui="next"] .leaderboard-table .perfect-col{display:none}html[data-ui="next"] .leaderboard-table th,html[data-ui="next"] .leaderboard-table td{padding:7px}html[data-ui="next"] .leaderboard-table th:nth-child(4){font-size:0}html[data-ui="next"] .leaderboard-table th:nth-child(4) svg{width:18px;height:18px}html[data-ui="next"] .leaderboard-table th:first-child{width:auto}html[data-ui="next"] .leaderboard-table td{height:48px}html[data-ui="next"] .leaderboard-table th{font-size:9px}html[data-ui="next"] .leaderboard-table .player-name{gap:8px}html[data-ui="next"] .player-name strong{font-size:11px}html[data-ui="next"] .player-avatar{width:28px;height:31px;font-size:13px}html[data-ui="next"] .you-label{padding:2px 4px;font-size:9px}html[data-ui="next"] .completion-cell{gap:6px;font-size:11px}html[data-ui="next"] .completion-cell .ring{width:18px;height:18px}html[data-ui="next"] .completion-cell .ring:before{inset:2px}html[data-ui="next"] .leaderboard-table .rank{font-size:12px}html[data-ui="next"] .leaderboard-table td:nth-child(4){font-size:12px}html[data-ui="next"] .leader-heading .search{min-width:0;width:auto}html[data-ui="next"] .leader-heading .search input{padding-left:37px}html[data-ui="next"] .select-wrap{padding:0 7px;gap:4px}html[data-ui="next"] .select-wrap svg{display:none}html[data-ui="next"] .leader-heading .search-controls{gap:8px}html[data-ui="next"] .leader-heading p{font-size:11px}html[data-ui="next"] .review-stats .stat{gap:9px}html[data-ui="next"] .review-stats .stat>svg{display:block;width:24px}html[data-ui="next"] .review-stats .stat strong{font-size:22px}html[data-ui="next"] .review-stats .stat small{font-size:10px}html[data-ui="next"] .caught-up{padding:24px 19px 28px;min-height:0}html[data-ui="next"] .empty-visual{height:150px}html[data-ui="next"] .empty-visual svg{width:85px;height:85px}html[data-ui="next"] .caught-up h2{font-size:27px}html[data-ui="next"] .caught-up .empty-subtitle{font-size:14px}html[data-ui="next"] .caught-up>p:not(.empty-subtitle){font-size:12px}html[data-ui="next"] .empty-actions{gap:9px;margin-top:25px}html[data-ui="next"] .empty-actions>a,html[data-ui="next"] .empty-actions>button{flex-basis:100%;padding:13px 19px}html[data-ui="next"] .empty-actions span{font-size:13px}html[data-ui="next"] .edits-aside{gap:16px}html[data-ui="next"] .how-it-works li p{font-size:13px}html[data-ui="next"] .recent-activity .activity-item b{font-size:12px}html[data-ui="next"] .recent-activity .activity-item small{font-size:10px}html[data-ui="next"] .review-stats{margin-bottom:17px}html[data-ui="next"] .detail-stats .stat:nth-child(n+4){display:none}html[data-ui="next"] .detail-stats .stat small{font-size:9px;white-space:normal;line-height:1.4}html[data-ui="next"] .detail-stats .stat strong{font-size:20px}html[data-ui="next"] .detail-stats .stat svg{display:none}html[data-ui="next"] .game-hero{margin:-24px -16px 0;padding:20px 16px;min-height:220px}html[data-ui="next"] .game-hero h1{font-size:27px;max-width:100%}html[data-ui="next"] .game-hero p{font-size:12px;max-width:100%}html[data-ui="next"] .hero-meta{font-size:11px;gap:14px;flex-wrap:wrap}html[data-ui="next"] .hero-meta svg{width:17px}html[data-ui="next"] .detail-main .section-heading{margin-top:22px;gap:14px}html[data-ui="next"] .detail-main .section-heading h2{font-size:23px;width:100%}html[data-ui="next"] .detail-main .section-heading .search-controls{width:100%;margin:0}html[data-ui="next"] .detail-main .section-heading .search{min-width:0}html[data-ui="next"] .achievement-row{padding:7px;grid-template-columns:15px 29px minmax(100px,1fr) 51px 23px;gap:8px;min-height:62px}html[data-ui="next"] .achievement-description strong{font-size:11px}html[data-ui="next"] .achievement-description small{font-size:10px}html[data-ui="next"] .rarity{gap:5px;font-size:11px}html[data-ui="next"] .rarity small{font-size:8px}html[data-ui="next"] .rarity i{width:6px;height:6px}html[data-ui="next"] .achievement-details{padding:0 7px 7px;gap:8px}html[data-ui="next"] .mini-panel{padding:12px}html[data-ui="next"] .mini-panel h3{font-size:13px}html[data-ui="next"] .mini-panel p{font-size:12px}html[data-ui="next"] .guide-link{font-size:12px;padding:9px 0}html[data-ui="next"] .guide-link small{font-size:11px}html[data-ui="next"] .note-input{font-size:12px}html[data-ui="next"] .cover-placeholder{width:70px;height:37px;font-size:11px}html[data-ui="next"] .game-grid .cover-placeholder{font-size:20px}html[data-ui="next"] .game-grid .game-cover{display:block}html[data-ui="next"] .activity-item[hidden]{display:none}}
html[data-ui="next"] .stat-icon.gold{color:var(--gold)}html[data-ui="next"] .activity-item[hidden]{display:none}
@media(min-width:951px) and (max-width:1250px){html[data-ui="next"] .game-hero{margin:-26px -24px 0;padding:24px}html[data-ui="next"] .cover-placeholder{width:110px;height:39px;font-size:13px;letter-spacing:0;text-align:center}}
@media(max-width:650px){html[data-ui="next"] .progress-track{flex:none}html[data-ui="next"] .sidebar{scrollbar-width:none}html[data-ui="next"] .sidebar::-webkit-scrollbar{display:none}}


/* ---- the fonts, self-hosted --------------------------------------------- */

/* The reference loads these from Google Fonts with an @import. That import is
   dropped on the way in (see the note at the top) because style-src is 'self'
   and it would be blocked — silently, leaving seventeen Barlow Condensed rules
   falling back to Inter and every caption, count, column header, badge and
   percentage rendering wider than the design.

   So the files are served from here instead. font-src is not set, so it falls
   back to default-src 'self', which allows exactly this and nothing remote.

   Both faces are SIL Open Font License, which permits hosting them. Only the
   latin subsets are kept, and Inter is the variable file — four files, 120 KB,
   against nine static weights from a third party on every page load. */
@font-face{
  font-family:'Inter';
  font-style:normal;
  font-weight:400 800;
  font-display:swap;
  src:url('/fonts/inter-var.woff2') format('woff2');
}
@font-face{
  font-family:'Barlow Condensed';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('/fonts/barlow-condensed-500.woff2') format('woff2');
}
@font-face{
  font-family:'Barlow Condensed';
  font-style:normal;
  font-weight:600;
  font-display:swap;
  src:url('/fonts/barlow-condensed-600.woff2') format('woff2');
}
@font-face{
  font-family:'Barlow Condensed';
  font-style:normal;
  font-weight:700;
  font-display:swap;
  src:url('/fonts/barlow-condensed-700.woff2') format('woff2');
}

/* ---- markup differences ------------------------------------------------- */

/* The brand mark is an <img> here and a <span><svg> in the reference.

   Sized larger than the reference's 34x38 on purpose: that figure is for a
   drawn shield that fills its box edge to edge, whereas this is a 128x128 PNG
   with the shield inset in its own padding, so matching the number made it
   render visibly smaller than the reference's. 44px square puts the shield
   itself at about the right weight against the wordmark. */
html[data-ui="next"] .brand-mark{width:44px;height:44px;object-fit:contain}

/* The reference's wordmark is <span>NAME<small>TAGLINE</small></span>; this
   site's is <b> and <i> inside .brand-text, so .brand small reaches nothing
   and the tagline was rendering as plain italic body text. */
html[data-ui="next"] .brand-text{display:block}
html[data-ui="next"] .brand-text b{font-size:15px;font-weight:800;letter-spacing:.6px}
html[data-ui="next"] .brand-text i{
  display:block;font-style:normal;
  font-family:'Barlow Condensed',sans-serif;
  font-size:11px;color:var(--muted);letter-spacing:2px;margin-top:4px;
}
@media (max-width:650px){
  html[data-ui="next"] .brand-mark{width:34px;height:34px}
  html[data-ui="next"] .brand-text b{font-size:12px}
  html[data-ui="next"] .brand-text i{font-size:9px;letter-spacing:1.4px}
}

/* The reference's header is ONE element. This site nests <header class="top">
   inside <div class="topbar">, and that wrapper also carries the pip and pop
   slots — so the ported .topbar rule put display:flex and space-between on the
   wrapper and pushed the announcement slots out to the right while the real
   bar collapsed to its content. The bar styling belongs on .top; the wrapper
   goes back to being a plain box. */
html[data-ui="next"] .topbar{display:block;height:auto;padding:0;background:none;border:0;position:sticky;top:0;z-index:40}
html[data-ui="next"] .top{
  height:64px;padding:0 28px;display:flex;align-items:center;
  justify-content:space-between;background:#090d10ee;
  border-bottom:1px solid var(--line-soft);position:relative;z-index:10;
}
html[data-ui="next"] .top-actions{display:flex;align-items:center;gap:19px}

/*
 * ...and the same move in light mode, which the rule above forgot.
 *
 * The generated block lights `.topbar`, because when it was written .topbar
 * WAS the bar. Moving the bar styling down to .top left that override behind:
 * it still lights the wrapper perfectly, and the wrapper is then covered by a
 * .top that is #090d10ee in every theme. The result was a near-black bar on a
 * light page with #142a36 lettering on it -- measured at 1.07:1, which is
 * text you cannot read.
 *
 * Worth noting how it hid: `getComputedStyle(document.querySelector('.topbar'))`
 * reports the light colour quite correctly, so checking the element the rule
 * names says everything is fine. It took elementFromPoint to find that the
 * thing actually painting those pixels was a different element.
 */
html[data-ui="next"][data-theme="light"] .top{background:#f4f8fa}
/*
 * The shield comes with it. #b9d4e7 is a deliberately dimmed version of the
 * wordmark for a dark bar; on a light one it measures 1.44:1 and effectively
 * is not there. --muted is the same idea the other way round -- dimmer than
 * the wordmark, still legible -- and it tracks the token rather than pinning
 * another literal, so it follows if the light palette moves. 5.32:1, the same
 * as the "STEAM ACHIEVEMENT TRACKER" line it sits beside.
 */
html[data-ui="next"][data-theme="light"] .brand-mark{color:var(--muted)}

@media (max-width:760px){
  html[data-ui="next"] .top{padding:0 16px;height:60px}
  html[data-ui="next"] .top-actions{gap:10px}
}

/* The sidebar's three actions. The reference's sidebar has no buttons of its
   own — it ends at the view switch — so these are given the look of its
   .outline button rather than invented. Measure and refresh are quiet; "what
   next?" takes the gold it has always had, being the one that does something
   rather than fetching something. */
html[data-ui="next"] .side-buttons{display:grid;gap:8px;margin-top:22px}
html[data-ui="next"] .side-buttons button{
  display:flex;align-items:center;justify-content:center;gap:8px;
  width:100%;padding:10px 12px;font-size:12px;
  border:1px solid var(--line);border-radius:7px;
  background:#0d171d;color:#b9c9d9;
}
html[data-ui="next"] .side-buttons button:hover{border-color:#2f4552;color:var(--text)}
html[data-ui="next"] .side-buttons .crate-open{color:var(--gold);border-color:#6b5420;background:#16130c}
html[data-ui="next"] .side-buttons .crate-open:hover{border-color:#937225}

/* ---- the moving parts --------------------------------------------------- */

/* The reference leaves the view switch and the sidebar buttons static. They
   are the only controls in that column you press repeatedly, and with no
   feedback the press lands on something that looks inert — so they get the
   same .15s the reference already uses elsewhere, on the properties that
   actually change. Not all: the active state alters border colour and
   background together, and transitioning everything makes the selected button
   drift into place a beat after the click. */
html[data-ui="next"] .view-switch button,
html[data-ui="next"] .side-buttons button{
  transition:background-color .15s ease,border-color .15s ease,color .15s ease;
}
html[data-ui="next"] .view-switch button:hover{background:#112329;border-color:#2f4552;color:var(--text)}
html[data-ui="next"] .view-switch button svg{transition:transform .25s ease}
/* The grid mark fans out a little on hover; the list mark holds still, because
   a list is a list. One moving thing is a hint, two is a fidget. */
html[data-ui="next"] .view-switch button:last-child:hover svg{transform:scale(1.14)}
html[data-ui="next"] .side-buttons .crate-open svg{transition:transform .25s ease}
/* The dice rolls. It is the one control here whose whole point is that it
   lands somewhere unpredictable. */
html[data-ui="next"] .side-buttons .crate-open:hover svg{transform:rotate(-18deg) scale(1.08)}

@media (prefers-reduced-motion:reduce){
  html[data-ui="next"] .view-switch button,
  html[data-ui="next"] .side-buttons button,
  html[data-ui="next"] .view-switch button svg,
  html[data-ui="next"] .side-buttons .crate-open svg{transition:none}
  html[data-ui="next"] .view-switch button:last-child:hover svg,
  html[data-ui="next"] .side-buttons .crate-open:hover svg{transform:none}
}

/* ---- the other four pages ----------------------------------------------- */

/* The reference's avatar box is always initials over a flat tint. A row here
   may carry a real Steam avatar instead — for somebody who opted into being
   listed with one — so the box gets a second state where the picture fills it
   and the tint underneath never shows. */
html[data-ui="next"] .player-avatar.has-art{background:#0c151c;border-color:#ffffff22}
html[data-ui="next"] .player-avatar .face-art{display:block;width:100%;height:100%;border-radius:4px;object-fit:cover}

/* The board switch sits beside the player search in the section heading, and
   must not be squeezed when the search takes its minimum width. */
html[data-ui="next"] .board-switch{flex-shrink:0}

/* The reference's contributions table holds exactly one row, so it needs no
   separator between rows. A real account has as many as it has written. */
html[data-ui="next"] .contribution-row + .contribution-row{border-top:1px solid var(--line-soft)}
html[data-ui="next"] .contribution-title h3 a{color:inherit}
html[data-ui="next"] .contribution-title h3 a:hover{color:var(--cyan)}

/* The game cell crops a wide header image into a portrait tile. A game with no
   art at all has to take the same shape, rather than the 145x42 strip the
   placeholder uses in a library row. */
html[data-ui="next"] .contribution-game .cover-placeholder{
  width:70px;height:82px;padding:4px;
  font-size:12px;line-height:1.2;text-align:center;
}

/* The row's last column is the page's own controls — edit, withdraw, take it
   back, write it again. They arrive wrapped in .comm-actions and styled as
   .btn-ghost by the old stylesheet, so the wrapper is dissolved to make the
   buttons children of the actions column, and they are given the look of the
   reference's .outline rather than left looking like the page they came from. */
html[data-ui="next"] .contribution-actions > .comm-actions{display:contents}
html[data-ui="next"] .contribution-actions .btn-ghost,
html[data-ui="next"] .contribution-actions .outline{
  display:flex;align-items:center;justify-content:center;gap:8px;
  padding:8px;font-size:11px;white-space:nowrap;
  border:1px solid var(--line);border-radius:7px;
  background:#0d171d;color:#b9c9d9;
}
html[data-ui="next"] .contribution-actions .btn-ghost:hover,
html[data-ui="next"] .contribution-actions .outline:hover{border-color:#2f4552;color:var(--text)}
html[data-ui="next"] .contribution-actions .quiet-line{font-size:10px;color:var(--dim);text-align:center}
/* Pressing Edit opens the step editor next to the buttons, in a column about
   150px wide — a textarea in that is not an editor. While one is open the
   actions cell claims the whole row instead: an explicit grid-column with no
   grid-row makes auto-placement drop it onto a line of its own underneath,
   which is what the narrow layout already does with it. */
html[data-ui="next"] .contribution-actions:has(.comm-form){grid-column:1/-1}
html[data-ui="next"] .contribution-actions .comm-form{width:100%;text-align:left}

/* .empty-result is a bare centred block in the reference; these pages put a
   heading in it. */
html[data-ui="next"] .empty-result h3{color:var(--text);font-size:18px}
html[data-ui="next"] .empty-result p{margin-top:8px}

/* The queue's cards have no reference equivalent — nothing in the reference
   lets you read a proposed guide and vote on it. They keep their own layout
   and take the panel frame the reference puts round everything else, so they
   sit in the new two-column page as panels rather than as bare text. The
   accent edge stays: it is what marks a card as waiting on you. */
html[data-ui="next"] .rv-list{margin-top:0}
html[data-ui="next"] .rv-card{border-radius:8px;background:linear-gradient(125deg,#132027aa,#121d2355)}
html[data-ui="next"][data-theme="light"] .rv-card{background:#f0f5f7}
html[data-ui="next"] .rv-more{margin-top:14px;color:var(--dim);font-size:12px}
html[data-ui="next"] .edits-main .empty-result{border:1px solid var(--line);border-radius:8px}

/* The old stat card's corner bloom, which had got loose.
 *
 * .stat::before is a 150px blurred circle sitting at right:-54px, and the old
 * card contains it: .stat is position:relative with its corners clipped. Under
 * the flag :where(.stat){all:revert} takes that position away — correctly, the
 * reference's figures are flat — but a reset on an element says nothing about
 * a rule aimed at its ::before. So the glow stayed, now positioned against the
 * page instead of the card, and hung 54px off the right edge of every page
 * with a sidebar: a smear in the top corner with a horizontal scrollbar under
 * it. The reference's figures have no bloom, so it goes. */
html[data-ui="next"] .stat::before{content:none}

/* The reference's "you" row paints every cell cyan, and its sample player is
   never in the top three, so cyan and the medal colour never met. Here they
   can, on a small board where you may well be first. The medal belongs to the
   rank, whoever is holding it. */
html[data-ui="next"] .you-row td.rank.gold{color:var(--gold)}

/* The sort strip is a joined pill, and .tabs centres its buttons. "Perfect
   games" is the one label that wraps to two lines on a narrow screen, which
   left the middle segment taller than the two beside it and the pill looking
   broken. Stretching costs nothing where nothing wraps. */
html[data-ui="next"] .leader-tabs{align-items:stretch}

/* The board switch is ours — the reference's heading holds only a search and a
   select — so the row has one more thing in it than the reference's media
   rules were written for, and on a phone the search was crushed to about four
   characters. Letting the group wrap puts the switch on its own line instead. */
html[data-ui="next"] .leader-heading .search-controls{flex-wrap:wrap}
html[data-ui="next"] .leader-heading .search{flex:1 1 200px;min-width:0}

/* The game page's heading carries four controls where the reference's carries
   one — a search, the sort menu, the spoiler switch and Refresh — so on a
   narrow screen the search was squeezed down to its magnifier. Same remedy as
   the leaderboard heading: let the group wrap and let the field keep a usable
   width. */
html[data-ui="next"] .section-heading .search-controls{flex-wrap:wrap}
html[data-ui="next"] .section-heading .search{flex:1 1 200px;min-width:0}

/* The sort menu in the game page's heading.
 *
 * It is the site's own dropdown rather than a <select>, because a native one
 * renders its list in the operating system's colours over a dark page and
 * looks broken enough that a click can seem not to have registered. The
 * reference's heading has no slot for it, so instead of leaving it in the old
 * stylesheet's monospaced uppercase beside two reference buttons, it is given
 * the look of the .tab standing next to it. */
html[data-ui="next"] .section-heading .sel-btn{
  justify-content:center;gap:9px;
  height:38px;padding:0 15px;
  font-family:inherit;font-size:12px;letter-spacing:normal;text-transform:none;
  border-radius:6px;background:#121d2480;
}
html[data-ui="next"] .section-heading .sel-btn:hover{color:var(--text);border-color:#2f4552}
html[data-ui="next"] .section-heading .sel{width:auto}

/* The hero art fills the bar instead of being a picture laid on it.
 *
 * The reference sizes it right 48% / 75% auto: three quarters of the width,
 * pinned right, height left to follow. That works in the reference, where the
 * hero sits in a column with a 230px sidebar beside it. This page has no
 * sidebar — the achievement table needs the width — so the same rule runs
 * across the whole page, and at that width 75% is about 1100px of a picture
 * whose left edge then lands at the 25% mark. The gradient over it is only
 * about a third opaque by then, so the edge shows: a vertical seam with game
 * art on one side of it and page on the other.
 *
 * cover has no edge to show. The art fills the bar, the crop is taken from the
 * middle, and the 90deg gradient above it does the work the seam was doing
 * badly — the left third is still solid enough to read a title against, and
 * the picture emerges out of it rather than starting at a line. 42% rather
 * than centre because box art puts its subject slightly above the middle. */
html[data-ui="next"] .game-hero:before{
  background:
    linear-gradient(90deg,var(--bg) 14%,#0a1217e0 38%,#0a121733 78%),
    linear-gradient(0deg,var(--bg),transparent 62%),
    var(--hero,none) center 42%/cover no-repeat;
}

/* ---- marks the ported base rule swallowed ------------------------------- */

/* The reference's base rule is svg{width:20px;height:20px} — scoped, so it
 * lands at specificity (0,1,2). Every rule in style.css that sizes an icon
 * reads .something svg, which is (0,1,1), so the flag silently resized all
 * of them to 20px.
 *
 * It does not show everywhere, because an svg in a flex row just gets bigger.
 * It shows where the glyph was drawn to sit INSIDE something: the 16px tick
 * box on an achievement row was holding a 20px check, and the 24px "achieved"
 * chip on a review card was holding one two and a half times its size.
 *
 * Restored one at a time at a specificity that wins, rather than weakening the
 * base rule — the whole ported design is measured against that 20px. */
html[data-ui="next"] .theme-toggle svg{width:15px;height:15px}
html[data-ui="next"] .lib-search-box svg{width:15px;height:15px}
html[data-ui="next"] .has-it svg{width:8px;height:8px}

/* ---- an achievement you have already got --------------------------------- */

/* The tick, in the reference's own language.
 *
 * The reference's first cell is a checkbox, and redesign.css styles it:
 * .achievement-row input[type=checkbox] — 15px, a dark well with a slate
 * border, filled cyan with a dark check when it is on. That rule cannot reach
 * this site's mark, which is a span rather than an input, and deliberately so:
 * it is read-only, Steam's word on whether this is unlocked, not a box you can
 * tick. The look is the reference's; only the element differs, so the look is
 * copied across by hand.
 *
 * What it replaces was the old design's 16px box filled with --accent, the
 * green from the stylesheet the redesign does not use — the only green left on
 * the page — holding a check that the ported base rule had quietly grown to
 * 20px, so it hung out of all four sides of its own box. */
html[data-ui="next"] .achievement-row .mark{
  width:15px;height:15px;
  border:1px solid #426070;border-radius:3px;
  background:#0a151a;
}
html[data-ui="next"] .achievement-row .mark[data-state="steam"]{
  background:var(--cyan);border-color:var(--cyan);
}
html[data-ui="next"] .achievement-row .mark svg{width:9px;height:9px;stroke-width:2.4}
html[data-ui="next"] .achievement-row .mark[data-state="steam"] svg{stroke:#04201d}
/* Only the empty one. Ties with the [data-state=steam] rule above on
   specificity, and being later it would otherwise take the cyan off a tick you
   have actually earned. */
html[data-ui="next"][data-theme="light"] .achievement-row .mark[data-state="todo"]{background:#e8f0f3;border-color:#a9bfc9}

/* And the row it sits in.
 *
 * style.css highlights a finished achievement with
 * ".ach.done > .ach-row{background:var(--accent-dim);box-shadow:inset 2px 0 0
 * var(--accent)}". Under the flag the row element is .achievement-row, so that
 * selector matches nothing and every row painted the same whether it was done
 * or not — the list was a wall of identical rows with one small tick each.
 *
 * Restored in the redesign's colours rather than the old green. A wash that
 * fades out to the right instead of a flat fill, so it reads as the row being
 * lit from its own edge and leaves the rarity and status columns on the page's
 * own background where they stay legible.
 *
 * No left bar: .achievement-block.expanded already owns a 2px cyan left border,
 * and an open finished row would have carried two of them a pixel apart. */
html[data-ui="next"] .ach.done > .achievement-row{
  background:linear-gradient(90deg,#0a3a3799 0%,#0a3a3744 38%,transparent 72%);
}
html[data-ui="next"][data-theme="light"] .ach.done > .achievement-row{
  background:linear-gradient(90deg,#c9ece8 0%,#dcf2ef 38%,transparent 72%);
}

/* The achievement art, sized against its frame rather than in pixels.
 *
 * It used to be two inline properties set in oaBadge, which no stylesheet can
 * override — so when the reference shrinks the badge to 30x32 below 800px the
 * art stayed 29px and painted over the frame's own right-hand border, which on
 * an unlocked row is the brass edge that says it is unlocked. Measured as a
 * clean 1px overlap at 800px. Stated as a share of the frame, it follows.
 *
 * The inner tile goes too. style.css gives .a-icon a border and a background
 * of its own, which is right in a list row where nothing else frames it and
 * wrong inside a badge that is already a bordered box — it read as two frames
 * a pixel apart. */
html[data-ui="next"] .achievement-badge .a-icon{width:29px;height:29px;border:0;background:none;border-radius:3px}
/* The frame has exactly one smaller size in the reference, and one rule for
   what sits in it. This is that rule, pointed at an img instead of an svg. */
@media(max-width:800px){html[data-ui="next"] .achievement-badge .a-icon{width:24px;height:25px}}

/* A game with no art at all falls back to initials, and style.css paints those
   in --accent — the old green — so a finished row showed a green monogram
   inside a brass frame. Inherit the frame's own colour instead: brass when it
   is unlocked, grey when it is not. */
html[data-ui="next"] .achievement-badge .a-icon-dead{color:inherit;font-size:12px}

/* The row you arrived at from a link.
 *
 * state.focus is set when the review queue or a notification sends you to one
 * achievement, and achievementNode puts .is-focus on the block for it. The
 * marker was ".ach.is-focus > .ach-row" in style.css, so renaming the row to
 * .achievement-row killed it the same way it killed the completed highlight —
 * this is that bug's twin, and it was still there after the first was fixed.
 *
 * Deliberately not the cyan the other two states use: cyan on this page means
 * "you have this" or "this is open", and the row you were sent to may be
 * neither. A neutral edge says only "this is the one", which is all it means.
 *
 * Suppressed while open, because arriving by link opens the row and .expanded
 * already draws a 2px edge of its own two pixels away. Closing it brings this
 * one back, which is the moment it is actually needed — before the fix, a
 * closed deep-linked row had no marker left at all. */
html[data-ui="next"] .ach.is-focus > .achievement-row{box-shadow:inset 2px 0 0 #8aa0b4}
html[data-ui="next"] .ach.is-focus.expanded > .achievement-row{box-shadow:none}

/* Steam's achievement sets, as a band across the table.
 *
 * The reference has no such thing — it was drawn before Valve shipped sets —
 * so this is built from the parts the reference does define: the table head's
 * own type treatment for the name, the plum the contributions page already
 * uses for a count, and the cyan everything earned is drawn in.
 *
 * It spans the full width rather than sitting in the first column, because it
 * captions every row beneath it rather than labelling one cell. */
html[data-ui="next"] .set-head{
  display:flex;align-items:center;gap:10px;
  padding:16px 12px 9px;
  border-bottom:1px solid var(--line-soft);
  font-family:'Barlow Condensed';font-size:12px;letter-spacing:1px;
  text-transform:uppercase;color:#b4cad8;
}
html[data-ui="next"] #achievement-results > .set-head:first-child{padding-top:6px}
html[data-ui="next"] .set-name{font-weight:600}
html[data-ui="next"] .set-count{margin-left:auto;color:var(--dim);letter-spacing:.6px}
html[data-ui="next"] .set-tag{
  font-family:inherit;font-size:10px;letter-spacing:1px;
  padding:2px 7px;border-radius:20px;
  border:1px solid #6b4a86;background:#2a1b3a66;color:#c9a6e8;
}
html[data-ui="next"] .set-tag.is-archived{border-color:#5a5f66;background:#20262b;color:#9eafbe}
html[data-ui="next"] .set-head.is-dlc .set-name{color:#d9c2f0}
html[data-ui="next"][data-theme="light"] .set-head{color:#3f596a}
html[data-ui="next"][data-theme="light"] .set-tag{background:#f0e6fa;border-color:#b79ed4;color:#5b3a7e}

/* The row's own mark, for every sort where the bands are not drawn. */
html[data-ui="next"] .badge-dlc{border-color:#6b4a86;color:#c9a6e8}

/* ---- buttons the reference's reset flattened ---------------------------- */

/* The reference resets every button to bare text — `button{background:none;
 * border:0}` — at specificity (0,1,2), because its own controls are all
 * restyled afterwards by class. This site's button classes sit at (0,1,0), so
 * the reset beats every one of them, and any part of the site the port has
 * not reached loses its chrome: the green button at the bottom of the "what
 * to finish next" box became a line of text with nothing to press.
 *
 * Found by diffing the computed fill and border of every visible button on
 * every ported route against the same button with the flag off. Nine differed.
 * Three of those are correct and are left alone — the theme toggle, the bell
 * and the account trigger lose a 1px border because the reference's top bar
 * has no bordered buttons, which is the port doing its job.
 *
 * The rest are restored here, with the values from style.css rather than new
 * ones, so they continue to track the tokens. The reset itself is not touched:
 * the whole ported design is measured against it. */
html[data-ui="next"] .btn{background:var(--accent);color:#04120c;border:0}
html[data-ui="next"] .btn.is-danger{background:var(--danger);color:#fff}
html[data-ui="next"] .btn-ghost{border:1px solid var(--line-2);color:var(--muted)}
/* The line above is (0,2,1) and outranks .btn-ghost:hover (0,2,0), which left
   every ghost button on the site dead under the pointer — measured identical
   to its resting values on Save, Unlink and both admin test buttons. */
html[data-ui="next"] .btn-ghost:hover{border-color:var(--faint);color:var(--fg)}
html[data-ui="next"] .vote,
html[data-ui="next"] .rv-vote{border:1px solid var(--line-2);color:var(--muted)}
html[data-ui="next"] .rv-vote.is-on{color:var(--accent);border-color:var(--accent)}

/* The ✕ on the crate. Its resting state is a transparent box with a
   transparent border, which is only visible as a shape once it is hovered —
   so losing the border took the hover with it. */
html[data-ui="next"] .crate-close{border:1px solid transparent}

/* The sort menu already had its fill restored when it was dressed to match
   the tab beside it; the border went the same way as the rest and was missed,
   so it was the one control in that row with no edge. */
html[data-ui="next"] .section-heading .sel-btn{border:1px solid var(--line)}

/* The sidebar ends where its buttons end, and dissolves rather than stopping.
 *
 * .shell is a grid with a min-height of nearly the viewport, and a grid item
 * stretches to fill its row — so the rail ran the whole height of the page.
 * With a real library that is not a screenful of empty box, it is thousands of
 * pixels of it: measured at 2141px of nothing below the last button on a
 * 3000px page, the gradient and the right-hand border carrying on the whole
 * way down. In the reference that is the intent, because it draws a
 * full-height rail the way a desktop application does. Here it read as a box
 * that did not know where it stopped.
 *
 * align-self:start stops it. On its own that trades one problem for another:
 * the background and the 1px divider both end on a hard horizontal line partway
 * down the page, which is a sharper edge than anything else in this design has.
 *
 * So the bottom is masked instead. The last 88px of the rail fade to nothing,
 * and padding-bottom is opened up to 96px so that the faded zone is empty — the
 * mask takes the background and the border with it, but never touches a button,
 * because there is no button within 96px of the end.
 *
 * Not applied below 650px: there the rail is not a rail at all but a
 * horizontal strip with a bottom border, and a fade along its right-hand edge
 * would be cutting off the end of a scrolling row. */
@media (min-width:651px){
  html[data-ui="next"] .shell > .sidebar{
    align-self:start;
    padding-bottom:96px;
    -webkit-mask-image:linear-gradient(180deg,#000 calc(100% - 88px),transparent);
            mask-image:linear-gradient(180deg,#000 calc(100% - 88px),transparent);
  }
}

/* Why .topbar is sticky above, rather than static.
 *
 * style.css says it in a comment on the rule itself: sticky is a positioned
 * value, so .topbar is the containing block for .pip-slot, which hangs under
 * the header as `position:absolute; top:100%` and therefore takes no space in
 * the layout — the whole point, because a message that pushed the page down
 * moved whatever you were reading and moved it back when it cleared.
 *
 * Two things here took that away. `:where(.topbar){all:revert}` in the
 * collision reset drops every author declaration on it including the position,
 * and the override above then restated static, which made a silent breakage an
 * explicit one. With no positioned ancestor the slot resolves against the
 * initial containing block instead, and `top:100%` becomes one viewport height
 * down the document: measured at y=1230 on an 1483px page, which is below the
 * fold and invisible.
 *
 * So the position is restored here rather than left to the reset. Everything
 * else about the wrapper stays neutralised — the reference's own .topbar rule
 * is for a bar, and this element is only a box holding one. */

/* ---- preferences, in the reference's clothes ---------------------------- */

/* The reference build has no settings page, so there is nothing to transcribe
 * here — this is the page rebuilt out of the parts the reference does have.
 *
 * Done entirely in rules, with no change to renderPreferences at all. Two
 * reasons. The page's own shape is already what this design would reach for —
 * a grid of titled cards, one decision per row — so what was wrong was the
 * dress, not the bones. And a port with no JavaScript in it cannot possibly
 * alter the page with the flag off, which matters more here than anywhere
 * else: this is where somebody goes to change what the rest of the site may
 * say about them.
 *
 * The switches are shared with the admin panel, which is not ported either, so
 * these reach it too. That is the right outcome rather than a side effect —
 * under the flag the one control both pages use should look the same on both.
 */

/* The box becomes the reference's panel: a bordered card with the same
   gradient the leaderboard's aside and the review queue's panels use. */
html[data-ui="next"] .gh-box{
  border:1px solid var(--line);
  border-radius:8px;
  background:linear-gradient(120deg,#111c2288,#0d171d88);
  overflow:hidden;
}
html[data-ui="next"][data-theme="light"] .gh-box{background:#f5f9facf}

/* The head band goes. The reference separates a panel's title from its body
   with space and weight, never with a tinted strip and a rule — see .panel h3
   on the leaderboard aside. */
html[data-ui="next"] .gh-box-head{
  background:none;
  border-bottom:0;
  padding:20px 20px 0;
}
html[data-ui="next"] .gh-box-head h2{
  font-family:'Barlow Condensed',sans-serif;
  font-size:17px;
  font-weight:600;
  letter-spacing:.6px;
  text-transform:uppercase;
}
html[data-ui="next"] .gh-box-head .lede{margin-top:6px;font-size:12px;color:var(--muted)}
html[data-ui="next"] .gh-box-body{padding:6px 20px 18px}

/*
 * One inset, on the body, not two stacked.
 *
 * style.css gives every row type its own padding:10px 14px because there the
 * body has none. Adding 20px to the body left the rows sitting 14px further in
 * than the card title above them — measured h2 text at 47 and row text at 61 —
 * while anything WITHOUT a row class (the group captions, the "None yet" line
 * a new account sees) stayed at 20 and lined up with nothing.
 *
 * Zeroing the horizontal half here puts the title, the rows, the captions and
 * the empty state all on one vertical, and leaves the vertical padding alone
 * because that is the row's height, not its indent. Scoped to .gh-box, which
 * only this page emits, so the shared .sw is untouched elsewhere.
 */
html[data-ui="next"] .gh-box .sw,
html[data-ui="next"] .gh-box .gh-row,
html[data-ui="next"] .gh-box .badge-pref,
html[data-ui="next"] .gh-box .badge-group-h,
html[data-ui="next"] .gh-box .announce-opt{padding-left:0;padding-right:0}

/* Rows keep their hairline, in the softer line this design uses for a divider
   inside a card rather than the one it uses for the card's own edge.
   .badge-group-h belongs in this list: it is a divider inside the same card,
   and leaving it out drew one card with hairlines at two different weights. */
html[data-ui="next"] .gh-row,
html[data-ui="next"] .gh-box .sw,
html[data-ui="next"] .gh-box .badge-pref,
html[data-ui="next"] .gh-box .badge-group-h,
html[data-ui="next"] .gh-box .announce-opt{border-top-color:var(--line-soft)}

/*
 * The switch, in the only on/off language the reference has.
 *
 * It styles exactly one such control — the checkbox on an achievement row —
 * and says: a dark well with a slate border, filled cyan when it is on, with
 * the mark inside it drawn dark against the fill. There is no switch in the
 * reference at all, so the switch is given that same vocabulary rather than a
 * new one: track dark until it is on, then cyan, with the knob dark against it.
 *
 * The old look was --accent green, which is style.css's accent and not this
 * design's. It was the last green left on these pages.
 */
/*
 * There is deliberately no rule resetting .sw itself.
 *
 * The obvious one — background:none plus a transparent border, to strip the
 * free-standing card style.css gives a switch — is both unnecessary and
 * harmful, which I only found by measuring flag-off beside flag-on.
 *
 * Unnecessary: html[data-ui="next"] button{background:none;border:0} above is
 * (0,1,2) and already beats .sw{background:var(--bg-2);border:1px solid
 * var(--line-2)} (0,1,0), so the card is gone before this block is read.
 * Inside a card .gh-box .sw (0,2,0) then puts the top hairline back, which is
 * the row divider and is wanted.
 *
 * Harmful: writing border:1px solid transparent sets all four widths, so the
 * rows gained left/right/bottom edges that flag-off does not have — measured
 * [1px,1px,1px,1px] against flag-off's [1px,0,0,0]. And at (0,2,1) that
 * transparent border-color outranks .sw:hover{border-color:var(--faint)}
 * (0,2,0), so every switch on the site lost its hover response — here, in the
 * guide editor, and twice in the admin panel.
 *
 * Only the parts that should differ are restyled, and they are all inside.
 */
html[data-ui="next"] .sw-track{background:#0a151a;border-color:#426070}
html[data-ui="next"] .sw-track > i{background:#8aa0b4}
html[data-ui="next"] .sw.is-on .sw-track{background:var(--cyan);border-color:var(--cyan)}
html[data-ui="next"] .sw.is-on .sw-track > i{background:#04201d}
html[data-ui="next"] .sw-text b{font-size:13px}
html[data-ui="next"] .sw-text em{color:var(--muted);font-size:11.5px}
html[data-ui="next"][data-theme="light"] .sw-track{background:#e8f0f3;border-color:#a9bfc9}

/* The announcement options are a one-of-three choice, which is what .tab is
   for in this design — but they are full-width rows with a description, so
   they keep their shape and borrow only the colour of a chosen tab. */
html[data-ui="next"] .announce-opt{
  background:none;
  border:1px solid transparent;
  border-radius:6px;
}
/*
 * The chosen option closes its ring.
 *
 * .gh-box .announce-opt:first-child has its top border dropped, because a
 * divider above the first row of a list is wrong. That is right for a divider
 * and wrong for a ring: picking the first option drew three teal sides and an
 * open top. The width is restored only on the chosen row, so the divider rule
 * still governs every other one.
 *
 * The transparent border here is deliberate, and is NOT the mistake the switch
 * comment above describes. That one reset a control three pages share and
 * outranked its :hover. This is page-local — .announce-opt exists nowhere else
 * — and .gh-box .announce-opt:hover (0,3,0) still outranks it, so the hover
 * wash is intact. It is here so the ring has a box to appear on without the
 * row moving 1px when it is chosen.
 */
html[data-ui="next"] .gh-box .announce-opt.is-on{
  background:#08464022;
  /* The shorthand, not border-top-width. The rule this has to beat is
     .gh-box .announce-opt:first-child{border-top:0}, and that shorthand also
     resets border-top-style to none — so a width on its own computes to 0px no
     matter how specific it is. The style has to come back with it. */
  border:1px solid #058b81;
}
html[data-ui="next"] .announce-opt b{color:var(--text)}

/* Leaving. The reference has no red at all — nothing in it is destructive —
   so this keeps the site's own danger colour and only takes the card shape,
   which is the one place the port deliberately does not follow the reference. */
html[data-ui="next"] .gh-box.is-danger{
  border-color:color-mix(in srgb,var(--danger) 45%,var(--line));
  background:linear-gradient(120deg,#2a141788,#1d0f1188);
}
html[data-ui="next"][data-theme="light"] .gh-box.is-danger{background:#fdf2f3}

/*
 * ...and its head band, which needs saying twice.
 *
 * .gh-box.is-danger .gh-box-head (0,3,0) in style.css outranks the scoped head
 * rule above (0,2,1), so Leaving was the one card on the page that kept its
 * tinted strip while the other five lost it — with a comment up there claiming
 * the band was gone. Measured: rgb-ish #241a1b against transparent everywhere
 * else.
 */
html[data-ui="next"] .gh-box.is-danger .gh-box-head{background:none;border-bottom:0}

/*
 * The buttons in this card are outlines, not fills.
 *
 * Not introduced by this port, but live under the flag and sitting on this
 * page, so it is this port's to fix. html[data-ui="next"] .btn.is-danger
 * (0,3,1) near the top of this file wins background against
 * .gh-box.is-danger .btn (0,3,0) and fills the button --danger; its own
 * color:#fff then LOSES to .gh-box.is-danger .btn.is-danger (0,4,0), which
 * sets color:var(--danger). Two files each win half the declaration and the
 * result is --danger on --danger: a salmon pill with salmon lettering,
 * measured at exactly 1:1, reading "Delete my account".
 *
 * Restored to what flag-off does rather than patched to a white label, because
 * flag-off is right: a card that is already outlined in red does not also need
 * a filled red button in it, and the reference has no red at all to copy from.
 * Scoped to this card so the filled treatment stays everywhere else it is used.
 */
html[data-ui="next"] .gh-box.is-danger .btn.is-danger{background:none;color:var(--danger)}

/*
 * ...and its hover, which the rule above would otherwise swallow.
 *
 * At (0,5,1) that rule beats .gh-box.is-danger .btn.is-danger:hover (0,5,0) on
 * the element tiebreaker, so fixing the unreadable label cost the button its
 * hover state — it sat dead under the pointer apart from a 1px border shift.
 * Restored to exactly what flag-off does: the one destructive control on the
 * site fills solid when you are about to press it.
 */
html[data-ui="next"] .gh-box.is-danger .btn.is-danger:hover{
  background:var(--danger);
  border-color:var(--danger);
  color:#fff;
}

/* The checkboxes and radios inside a box.
 *
 * Four notification toggles and the badge chooser, all drawn in style.css's
 * --accent green — the last of it left on this page once the switches were
 * done. The reference fills a chosen control with cyan and draws the mark
 * inside it dark against that fill, which is what .achievement-row's checkbox
 * does, so these follow it rather than inventing a second way to say "on".
 *
 * The tick is two borders of a rotated box rather than a glyph, so its colour
 * is a border colour and has to be set as one. */
html[data-ui="next"] .badge-pref input:checked{border-color:var(--cyan)}
html[data-ui="next"] .badge-pref input[type='radio']:checked{box-shadow:inset 0 0 0 4px var(--cyan)}
html[data-ui="next"] .badge-pref input[type='checkbox']:checked{background:var(--cyan)}
html[data-ui="next"] .badge-pref input[type='checkbox']:checked::after{border-color:#04201d}
html[data-ui="next"] .badge-pref input:focus-visible{outline-color:var(--cyan)}
/* A checked control still answers the pointer. The :checked rule above is
   (0,3,2) and outranks .badge-pref input:hover:not(:disabled) (0,3,1), so
   without this a ticked badge was the one control in the card that ignored
   being hovered. */
html[data-ui="next"] .badge-pref input:checked:hover:not(:disabled){border-color:var(--muted)}

/*
 * The type the reset took off, put back.
 *
 * html[data-ui="next"] button,input,…{font:inherit} near the top of this file
 * normalises the browser's form typography, which is right, but it is the font
 * SHORTHAND at (0,1,2), so it also wipes any size, weight or family style.css
 * set on a specific control at (0,1,0). On this page that cost three things:
 *
 *   - the GitHub field stopped being monospace and went 15px/400, which is the
 *     wrong face for a name matched character-for-character against GitHub, and
 *     left it 4px taller than the buttons beside it;
 *   - Save and Unlink went 12.5px -> 15px, so a secondary control was lettered
 *     larger than the row title above it;
 *   - Download and Delete went 600 -> 400.
 *
 * Deliberately scoped to .gh-box rather than fixed at the reset. The same loss
 * reaches .btn and .btn-ghost on every ported page, but putting type back
 * site-wide is a decision about the new design's button scale, not part of
 * porting this page, and it would restyle five pages nobody asked me to touch.
 */
html[data-ui="next"] .gh-box .gh-link-input{font:500 13px var(--mono)}
html[data-ui="next"] .gh-box .btn-ghost{font-size:12.5px}
html[data-ui="next"] .gh-box .btn{font-weight:600}

/* And the announcement chooser's own radio, which is an inset shadow rather
   than an input, so it needs saying separately. */
html[data-ui="next"] .gh-box .announce-opt.is-on::before{
  border-color:var(--cyan);
  box-shadow:inset 0 0 0 3px var(--cyan);
}

/* ---- the shared controls on pages that are NOT ported ------------------ */

/*
 * The guide editor and the admin panel are not ported, and the flag should
 * leave them alone. It does not: the generated reset above,
 * html[data-ui="next"] button{background:none;border:0}, is (0,1,2) and beats
 * .sw{background:var(--bg-2);border:1px solid var(--line-2)} at (0,1,0). So
 * every control built out of a <button> on those pages quietly lost its box
 * while the <input> beside it kept one -- measured in the editor as a step
 * field at 1px all round next to a switch at 0px, which reads as a rendering
 * fault rather than a style.
 *
 * Restored to what each one looks like with the flag off, rather than to
 * something new: an unported page should be unchanged by the flag, and
 * "unchanged" is a target I can measure against instead of a taste I would be
 * inventing. The two differ, so they are written separately -- style.css gives
 * the editor's switch a full box and deliberately leaves the admin panel's
 * with only a top edge, where it is a row divider inside a panel.
 *
 * --line-2 and --bg-2 are style.css's own tokens and the flag does not
 * redefine them, so these resolve to the same colours in both states.
 */
html[data-ui="next"] .ed .sw{background:var(--bg-2);border:1px solid var(--line-2)}
html[data-ui="next"] .adm-panel .sw{background:var(--bg-2);border-top:1px solid var(--line-2)}

/*
 * And their hover, for the third time in this file.
 *
 * The rules above are (0,3,1) and set border-color through the shorthand,
 * which outranks .sw:hover{border-color:var(--faint)} at (0,2,0) -- the same
 * trap that killed hover on .sw and on .btn-ghost. Restoring a border without
 * restoring the hover that paints it leaves a control that looks right and
 * answers nothing.
 *
 * .ed-move needs no such line: its hover is .ed-move:hover:not(:disabled) at
 * (0,3,0), which still beats the (0,2,1) rule below.
 */
html[data-ui="next"] .ed .sw:hover,
html[data-ui="next"] .adm-panel .sw:hover{border-color:var(--faint)}

/* The editor's reorder and delete buttons, same reset, same restoration. */
html[data-ui="next"] .ed-move{border:1px solid var(--line-2)}
