:root{color-scheme:dark;--bg:#10151a;--panel:#1b222b;--edge:#34414d;--txt:#f4f5f6;--muted:#b2bdc9;--gold:#ebbd76}
*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(ellipse at 20% -5%,#28323b,#10151a 45%);color:var(--txt);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:14px;line-height:1.5}a{color:var(--gold)}a:focus-visible,button:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px max(16px,calc((100vw - 1070px)/2));border-bottom:1px solid #333d47;background:#11171d}.logo{font-size:19px;letter-spacing:.06em;font-weight:950;text-decoration:none;color:#e6655b}.logo span{color:#fff}.back{font-size:12px;text-decoration:none;color:#ccd4dc}.back:hover{color:var(--gold)}
main{width:min(1070px,100%);margin:0 auto;padding:22px 16px 55px}.hidden{display:none!important}.card{background:linear-gradient(155deg,#1e2731,#181f27);border:1px solid var(--edge);border-radius:17px;box-shadow:0 10px 32px #05090c23}.loading{padding:48px;text-align:center;color:var(--muted)}.loading a{display:block;margin-top:13px}.hero{display:flex;align-items:center;gap:21px;padding:27px;flex-wrap:wrap}.avatar{width:90px;height:90px;flex-shrink:0;display:grid;place-items:center;background:linear-gradient(135deg,#523a2c,#8f6446);border:2px solid #b9895f;box-shadow:inset 0 0 16px #1a0c0c50,0 9px 30px #0003;border-radius:23px;font-size:43px;color:#f9dbb0}.hero-info{flex:1;min-width:220px}.eyebrow{color:var(--gold);font-size:10px;font-weight:850;letter-spacing:.17em}.hero h1{font-size:clamp(29px,5vw,41px);letter-spacing:-.03em;line-height:1.05;margin:5px 0 11px;overflow-wrap:anywhere}.badges{display:flex;flex-wrap:wrap;gap:9px;align-items:center}.badge{color:#f1c995;background:#4a3625;border:1px solid #80603a;border-radius:99px;font-size:10px;font-weight:850;padding:5px 9px}.quiet{color:var(--muted);font-size:12px}.hero-note{color:var(--muted);font-size:11px;line-height:1.6;margin:11px 0 0;max-width:540px}.share{appearance:none;background:#303b49;color:#f9e1b7;border:1px solid #6d5e4b;border-radius:10px;padding:10px 15px;font-size:12px;font-weight:750;cursor:pointer;white-space:nowrap}.share:hover{background:#394655}
.numbers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;margin:16px 0}.stat{padding:20px 22px}.stat span{display:block;text-transform:uppercase;font-size:10px;letter-spacing:.08em;color:var(--muted);font-weight:800}.stat strong{display:block;color:var(--gold);font-size:31px;line-height:1.3;font-variant-numeric:tabular-nums;margin-top:4px}.layout{display:grid;grid-template-columns:1.2fr 1fr;gap:16px}.panel{min-width:0;overflow:hidden;margin-bottom:16px}.panel-heading{padding:20px 21px 14px;border-bottom:1px solid var(--edge)}.panel-heading h2{margin:0;font-size:17px;letter-spacing:-.01em}.panel-heading p{font-size:11px;line-height:1.5;color:var(--muted);margin:5px 0 0}.body-list{padding:8px 20px 17px}.mode-row,.day-row{padding:12px 1px;border-bottom:1px solid #323e4a;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center}.mode-row:last-child,.day-row:last-child{border-bottom:0}.name{font-weight:800;font-size:12px}.muted{color:var(--muted);font-size:11px;margin-top:4px}.right{text-align:right}.score{font-weight:850;color:var(--gold);font-variant-numeric:tabular-nums}.micro-track{height:5px;background:#3b4854;border-radius:20px;margin-top:10px;overflow:hidden}.micro-track span{display:block;height:100%;background:linear-gradient(90deg,#bf814e,#e9bf76);border-radius:20px}.days-count{text-align:right;font-size:12px;color:#e6cba5}.empty{color:var(--muted);text-align:center;font-size:12px;padding:28px 0}.levels{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:22px;padding:10px 22px 20px}.level-row{min-width:0;border-bottom:1px solid #323e4a;padding:12px 0;display:flex;justify-content:space-between;gap:10px;align-items:center}.level-detail{color:var(--muted);font-size:10px;overflow-wrap:anywhere}.footer-note{font-size:11px;color:var(--muted);margin:6px 4px;line-height:1.7}
@media(max-width:750px){.layout{grid-template-columns:1fr}.hero{gap:15px;padding:19px}.avatar{width:68px;height:68px;font-size:34px;border-radius:17px}.hero-info{min-width:170px}.share{width:100%}.levels{grid-template-columns:1fr}.stat{padding:14px}.stat strong{font-size:25px}}
@media(max-width:370px){.numbers{gap:7px}.stat{padding:12px 9px}.stat strong{font-size:23px}.stat span{font-size:9px}.topbar{padding:14px 12px}.logo{font-size:17px}}

.favourite-line{font-size:12px;color:var(--gold);font-weight:700;margin:10px 0 0}.favourite-line:empty{display:none}
.dailySummary{padding:18px 22px;margin:0 0 16px}.daily-title{display:flex;justify-content:space-between;gap:12px;align-items:baseline;flex-wrap:wrap}.daily-title h2{margin:0;font-size:16px}.daily-title span{font-size:11px;color:var(--muted)}.daily-numbers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:15px}.daily-numbers>div{min-width:0;background:#131b23;border:1px solid #35404b;border-radius:10px;padding:12px}.daily-numbers small{display:block;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.04em}.daily-numbers strong{display:block;font-size:clamp(17px,3vw,26px);font-variant-numeric:tabular-nums;color:var(--gold);margin-top:3px}
@media(max-width:370px){.dailySummary{padding:14px}.daily-numbers{gap:7px}.daily-numbers>div{padding:10px 8px}.daily-numbers small{font-size:9px}}

/* R383 streaks, progress charts and future-ready cosmetic styling. */
.avatar[data-frame="bronze"]{border-color:#b98453;box-shadow:0 0 0 4px #9d633d33}
.avatar[data-frame="gold"]{border-color:#efcf82;box-shadow:0 0 0 4px #d6a4503e,0 0 24px #dab36d35}
.avatar[data-frame="aurora"]{border-color:#b598ed;box-shadow:0 0 0 4px #795dc44a,0 0 28px #9875ec55}
.streak-panel{margin:0 0 16px;overflow:hidden}.streak-panel>.panel-heading{border-bottom:0;padding-bottom:10px}
.streak-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:0 20px 19px}
.streak-box{min-width:0;background:#131b23;border:1px solid #3d4854;border-radius:12px;padding:16px}
.streak-head{display:flex;align-items:center;gap:9px;color:#f5d49d;font-size:13px}.streak-symbol{font-size:19px;color:#eab872}
.streak-main{display:flex;align-items:baseline;gap:9px;margin:9px 0 8px}.streak-main>strong{color:#ecc483;font-size:37px;line-height:1.1;font-variant-numeric:tabular-nums}.streak-main>span{color:var(--muted);font-size:11px}
.streak-sub{display:flex;gap:8px 20px;flex-wrap:wrap;color:var(--muted);font-size:11px}.streak-sub b{color:#f4f3ed}
.chart-layout{display:grid;grid-template-columns:1fr 1.15fr;gap:16px}.chart-panel{margin-bottom:16px}.chart-panel .panel-heading{min-height:125px}
.activity-chart,.score-chart{padding:14px 20px 18px}.activity-bars{height:189px;display:grid;grid-template-columns:repeat(14,minmax(0,1fr));gap:5px;align-items:end;padding-top:13px}
.activity-col{min-width:0;height:100%;display:flex;flex-direction:column;align-items:center;gap:5px}.activity-value{flex:0 0 16px;color:#eac486;font-size:9px;font-weight:700}.activity-bar-track{flex:1;width:100%;max-width:32px;background:#242e38;border-radius:5px 5px 2px 2px;display:flex;align-items:flex-end;overflow:hidden}.activity-bar{display:block;width:100%;background:linear-gradient(0deg,#ae7846,#e4bc81);border-radius:4px 4px 1px 1px}.activity-tick{flex:0 0 16px;color:var(--muted);font-size:9px}
.chart-tabs{display:flex;gap:7px;margin-top:13px;flex-wrap:wrap}.chart-tabs button{border-radius:8px;border:1px solid #485664;background:#222d36;color:#c3cfd9;font-weight:700;font-size:10px;padding:7px 11px;cursor:pointer}.chart-tabs button.selected{border-color:#b98954;background:#59412c;color:#ffe3b9}
.score-summary{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.score-summary strong{color:var(--gold);font-size:21px}.score-summary span{font-size:10px;color:var(--muted)}.score-svg{width:100%;height:auto;margin-top:5px;max-height:190px;overflow:visible}.score-grid-line{stroke:#3e4b56;stroke-width:1;stroke-dasharray:3 5}.score-y-label{fill:#aeb9c3;font-size:11px}.score-line{fill:none;stroke:#e4b36d;stroke-width:3;stroke-linejoin:round;stroke-linecap:round}.score-point{fill:#ffdfa7;stroke:#4b3824;stroke-width:1}.chart-end-labels{display:flex;justify-content:space-between;gap:12px;padding-left:29px;color:var(--muted);font-size:10px}.chart-footnote{margin:12px 0 0;color:var(--muted);font-size:10px;line-height:1.5}
@media(max-width:750px){.chart-layout{grid-template-columns:1fr}.chart-panel .panel-heading{min-height:0}.streak-grid{gap:9px;padding:0 14px 14px}.streak-box{padding:12px}.streak-main>strong{font-size:30px}}
@media(max-width:365px){.streak-grid{grid-template-columns:1fr}.activity-chart,.score-chart{padding:12px}.streak-sub{font-size:10px}}

/* R384: earned-achievement gallery. Never display locked secret details. */
.hero-actions{display:flex;flex-wrap:wrap;gap:9px;align-items:center}.achievement-action{background:#60482c;border-color:#a6804c;color:#ffe3b4}.achievement-action:hover{background:#715234}
.achievement-action span{font-size:10px;color:#eac791;margin-left:4px}
.achievement-dialog{position:fixed;inset:0;z-index:500;background:rgba(3,8,13,.83);display:flex;justify-content:center;align-items:center;padding:18px;backdrop-filter:blur(6px)}
.achievement-modal{background:#19232d;border:1px solid #6c6654;border-radius:19px;box-shadow:0 30px 100px #000a;width:min(725px,100%);max-height:min(90dvh,850px);display:flex;flex-direction:column;overflow:hidden}
.achievement-modal-head{display:flex;gap:12px;justify-content:space-between;align-items:flex-start;padding:21px 24px 15px;border-bottom:1px solid #42505b}
.achievement-modal h2{margin:4px 0 7px;font-size:24px}.achievement-close{flex:none;width:36px;height:36px;border-radius:10px;color:#f7e3c2;background:#344352;border:1px solid #718090;font-size:23px;cursor:pointer}
.achievement-items{overflow:auto;overscroll-behavior:contain;padding:14px 22px 24px;min-height:90px}
.achievement-category{font-size:11px;color:#f0bb73;font-weight:850;letter-spacing:.1em;margin:19px 0 9px}.achievement-category:first-child{margin-top:4px}
.achievement-earned{display:flex;align-items:flex-start;gap:13px;margin-bottom:9px;background:#232f39;border:1px solid #41505d;border-radius:11px;padding:12px}
.achievement-earned-icon{flex:0 0 39px;width:39px;height:39px;display:grid;place-items:center;font-size:21px;background:#4b3827;border:1px solid #a37a48;border-radius:10px;color:#ffe6af}
.achievement-earned-name{color:#f9e5c2;font-size:13px;font-weight:850}.achievement-earned-desc{color:#bdc6cf;font-size:11px;line-height:1.5;margin-top:4px}
.achievement-modal-foot{font-size:11px;line-height:1.5;color:#b6c1cb;padding:12px 23px 17px;border-top:1px solid #43505c}
@media(max-width:750px){.hero-actions{width:100%}.hero-actions button{flex:1;white-space:normal}.achievement-modal-head{padding:17px}.achievement-items{padding:12px}.achievement-modal-foot{padding:12px 17px}}

/* R389 interactive own-profile avatar / compact free icon selector. */
.avatar:disabled{opacity:1;cursor:default;color:#f9dbb0}
.avatar.can-edit{cursor:pointer;position:relative;appearance:none;font-family:inherit;touch-action:manipulation}
.avatar.can-edit:hover,.avatar.can-edit:focus-visible{outline:2px solid #eac07c;outline-offset:4px}
.avatar.can-edit::after{content:'✎';position:absolute;right:-8px;bottom:-7px;background:#eac07c;color:#16181b;border:2px solid #19232d;border-radius:8px;width:25px;height:25px;font:700 15px/21px system-ui;text-align:center}
.icon-picker-modal{width:min(490px,100%)}.icon-picker-body{padding:19px 21px 23px;overflow:auto;overscroll-behavior:contain}
.icon-picker-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(93px,1fr));gap:10px}
.icon-picker-grid button{min-width:0;appearance:none;cursor:pointer;display:flex;flex-direction:column;gap:7px;align-items:center;justify-content:center;min-height:93px;border:1px solid #52606a;border-radius:12px;background:#202830;color:#e9e5df;padding:10px 5px}
.icon-picker-grid button span{font-size:30px;line-height:1.3}.icon-picker-grid button small{font-size:10px;color:#e0dfd9;text-align:center;line-height:1.35;overflow-wrap:break-word}
.icon-picker-grid button:hover{border-color:#d6a967;background:#2e3842}
.icon-picker-grid button[aria-pressed="true"]{border:2px solid #dab477;background:#303a43;box-shadow:0 0 0 1px #dab4772b}
.icon-picker-grid button:focus-visible{outline:3px solid #e9c27e;outline-offset:2px}
.icon-picker-grid button:disabled{opacity:.65;cursor:wait}
.icon-picker-status{min-height:1.3em;color:#d9c49f;font-size:11px;line-height:1.5;margin:14px 0 0}
@media(max-width:390px){.icon-picker-body{padding:14px}.icon-picker-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.icon-picker-grid button{min-height:89px;padding:8px 3px}}

/* R436: direct access to unified cosmetics (owners only). */
#customiseProfile:not([hidden]){background:#3c2b21;border-color:#bd8746;color:#ffe3b5}

/* R445: Paid cosmetics stay visible as a disabled coming-soon entry. */
#customiseProfile:disabled{opacity:.72;cursor:not-allowed;pointer-events:none;background:#332a20!important;border-color:#775c38!important;color:#f3d5a5!important}

/* R455: keep the three compact summary labels on one line on phones.
   Adjust label typography only; do not shrink the numeric totals. */
.numbers .stat{min-width:0}
.numbers .stat > span{
  white-space:nowrap;
  font-size:clamp(8px,2.2vw,10px);
  letter-spacing:.012em;
  line-height:1.35;
}
@media(max-width:750px){
  .numbers .stat{padding-left:10px;padding-right:10px}
}
@media(max-width:370px){
  .numbers .stat{padding-left:7px;padding-right:7px}
}

/* R459: desktop public-profile header fix.
   Prevent the player name from wrapping at arbitrary points when the action
   buttons sit on the right side of the hero card. Keep the desktop layout
   roomy, but preserve the mobile stacked layout. */
@media(min-width:751px){
  .hero{
    display:grid;
    grid-template-columns:auto minmax(0,1fr) auto;
    align-items:center;
    column-gap:21px;
    row-gap:16px;
    flex-wrap:nowrap;
  }
  .hero-info{
    min-width:0;
  }
  .hero h1{
    overflow-wrap:normal;
    word-break:normal;
    hyphens:none;
  }
  .hero-actions{
    justify-self:end;
    align-self:flex-start;
    justify-content:flex-end;
    max-width:360px;
  }
}
