:root{--bg:#16130e;--bg-edge:#0e0c09;--panel:#211c14;--panel-alt:#2a2318;--border:#40361f;--border-strong:#5c4e2a;--text:#ece4d3;--muted:#a99a79;--gold:#d9af52;--gold-bright:#f0c976;--gold-ink:#1a1510;--xp-green:#7cb869;--shadow-sm:0 1px 2px #00000059;--shadow-md:0 10px 30px #00000073}*{box-sizing:border-box}body{background:radial-gradient(ellipse at top, #241f15 0%, var(--bg) 45%, var(--bg-edge) 100%) fixed;color:var(--text);margin:0;font-family:Plus Jakarta Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Inter,Roboto,Helvetica,Arial,sans-serif;font-size:14px}h1,h2,h3{letter-spacing:-.01em;color:var(--gold-bright);font-family:inherit;font-weight:800}a{color:var(--gold);cursor:pointer;text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit}input[type=text]{border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:8px;padding:10px 14px;font-family:inherit;font-size:14px}input[type=text]::placeholder{color:var(--muted)}input:focus,button:focus-visible{outline:2px solid var(--gold);outline-offset:1px}.app-topbar{background:linear-gradient(180deg, var(--panel) 0%, var(--bg) 100%);border-bottom:1px solid var(--border-strong);box-shadow:var(--shadow-sm);padding:18px 24px}.app-logo{filter:drop-shadow(0 0 18px #d9af5259);display:inline-flex}.app-logo:hover{text-decoration:none}.app-logo-img{height:32px;display:block}.app-main{max-width:1180px;margin:24px auto 60px;padding:0 20px}.btn{cursor:pointer;border:1px solid #0000;border-radius:8px;padding:10px 18px;font-size:13px;font-weight:600;transition:background .12s,box-shadow .12s,border-color .12s}.btn-primary{background:linear-gradient(180deg, var(--gold-bright), var(--gold));border-color:var(--gold);color:var(--gold-ink);box-shadow:var(--shadow-sm)}.btn-primary:hover{background:var(--gold-bright)}.btn-primary:disabled{opacity:.5;cursor:default}.btn-ghost{border-color:var(--border-strong);color:var(--text);background:0 0}.btn-ghost:hover{background:var(--panel-alt);border-color:var(--gold);color:var(--gold-bright)}.btn-text{color:var(--gold);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:9px 4px;font-weight:500}.btn-text:hover{text-decoration:underline}.card{background:var(--panel);border:1px solid var(--border);box-shadow:var(--shadow-sm), inset 0 1px 0 #ffffff08;border-radius:12px;margin-bottom:16px;padding:16px 20px}.card h1,.card h2,.card h3{margin:0 0 10px}.empty-hint{color:var(--muted);font-size:.78rem}.intro{color:var(--muted);margin-top:-4px;margin-bottom:14px}.add-player-form{gap:10px;display:flex}.add-player-form input{flex:1}.player-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;display:grid}.player-card{cursor:pointer;margin-bottom:0;transition:box-shadow .12s,transform .12s,border-color .12s}.player-card:hover{box-shadow:var(--shadow-md);border-color:var(--border-strong);transform:translateY(-1px)}.player-card-top{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.player-name{color:var(--gold-bright);font-size:.92rem;font-weight:700}.player-stats{gap:18px;margin-bottom:6px;display:flex}.player-stats div{flex-direction:column;display:flex}.player-stats b{color:var(--text);font-size:1rem}.player-stats span{color:var(--muted);font-size:.7rem}.player-gain-row{flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:6px;display:flex}.gain-today,.top-skill{color:var(--xp-green);align-items:center;gap:4px;font-size:.85rem;font-weight:700;display:inline-flex}.top-skill-icon{flex:none}.last-synced{color:var(--muted);margin:0;font-size:.7rem}.detail-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.back-link{margin-bottom:4px;display:inline-block}.detail-name{margin:0;font-size:1.3rem}.detail-header .last-synced{margin-top:4px}.checking-indicator{color:var(--gold);align-items:center;gap:6px;margin-left:10px;display:inline-flex}.spinner{border:1.5px solid var(--border-strong);border-top-color:var(--gold);border-radius:50%;width:10px;height:10px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.detail-actions{flex-shrink:0;gap:10px;display:flex}.skill-progress-card{background:linear-gradient(135deg, var(--panel-alt) 0%, var(--panel) 70%)}.skill-progress-head{align-items:center;gap:10px;margin-bottom:12px;display:flex}.skill-progress-icon{width:28px;height:28px}.skill-progress-name{flex:1;margin:0}.skill-progress-level{color:var(--gold-ink);background:linear-gradient(180deg, var(--gold-bright), var(--gold));box-shadow:var(--shadow-sm);border-radius:999px;padding:4px 12px;font-size:.8rem;font-weight:700}.level-progress-track{background:var(--bg);border:1px solid var(--border);border-radius:999px;height:10px;overflow:hidden}.level-progress-fill{background:linear-gradient(90deg, var(--gold), var(--gold-bright));border-radius:999px;height:100%;transition:width .3s;box-shadow:0 0 10px #f0c9768c}.level-progress-caption{color:var(--muted);margin:8px 0 0;font-size:.78rem}.hiscores-panel{padding:4px 0;overflow-x:auto}.hiscores-table{border-collapse:collapse;width:100%;font-size:.82rem}.hiscores-table th{text-align:right;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);border-bottom:1px solid var(--border-strong);white-space:nowrap;padding:10px 20px;font-size:.7rem}.hiscores-table td{text-align:right;font-variant-numeric:tabular-nums;border-bottom:1px solid var(--border);color:var(--text);white-space:nowrap;padding:8px 20px}.hiscores-row{cursor:pointer;transition:background .1s}.hiscores-row:nth-child(2n){background:#ffffff04}.hiscores-row:hover{background:var(--panel-alt)}.hiscores-row.active{background:var(--panel-alt);box-shadow:inset 2px 0 0 var(--gold)}.hiscores-row.active td{color:var(--gold-bright)}.hiscores-row:focus-visible{outline:2px solid var(--gold);outline-offset:-2px}.hiscores-table tbody tr:first-child td{border-bottom:2px solid var(--border-strong);font-weight:700}.hs-skill-col{font-weight:600;text-align:left!important}.skill-cell{align-items:center;gap:8px;display:flex}.hs-skill-col .skill-icon{flex:none;width:18px;height:18px}.hs-skill-col .skill-name{color:var(--gold-bright)}.hs-xp-col{white-space:nowrap}.xp-delta{color:var(--xp-green);font-variant-numeric:tabular-nums;vertical-align:middle;background:#7cb86924;border-radius:999px;margin-right:8px;padding:1px 6px;font-size:.72rem;font-weight:700;display:inline-block}.hiscores-row.active td .xp-delta{color:var(--xp-green)}.gain-tiles{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin-bottom:16px;display:grid}.gain-tile{flex-direction:column;gap:4px;margin-bottom:0;display:flex}.stat-label{color:var(--muted);font-size:.72rem}.stat-value{color:var(--text);font-size:1.4rem;font-weight:700}.stat-gain{color:var(--xp-green);font-size:1.15rem}.chart-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.chart-header h2{margin:0}.training-advice h2{margin:0 0 14px;font-size:1rem}.advice-row{border-top:1px solid var(--border);flex-wrap:wrap;align-items:baseline;gap:10px;padding:10px 0;display:flex}.advice-row:first-of-type{border-top:none;padding-top:0}.advice-label{width:140px;color:var(--gold-bright);flex:none;font-size:.85rem;font-weight:600}.advice-text{min-width:200px;color:var(--text);flex:1;font-size:.85rem;line-height:1.45}.advice-eta{color:var(--gold-bright);margin-top:4px;font-weight:600;display:block}.table-toggle{margin-top:8px}.table-wrap{border:1px solid var(--border);border-radius:8px;max-height:320px;margin-top:8px;overflow-y:auto}.data-table{border-collapse:collapse;width:100%;font-size:.8rem}.data-table th,.data-table td{text-align:left;border-bottom:1px solid var(--border);font-variant-numeric:tabular-nums;padding:8px 12px}.data-table th{color:var(--muted);background:var(--panel);font-weight:600;position:sticky;top:0}.data-table tr:last-child td{border-bottom:none}.day-toggle-col{width:20px;padding-right:0!important}.day-row{cursor:pointer;font-weight:600}.day-row:hover{background:var(--panel-alt)}.day-row:focus-visible{outline:2px solid var(--gold);outline-offset:-2px}.day-row-count{color:var(--muted);font-size:.75rem;font-weight:400}.chevron{color:var(--muted);transition:transform .12s;display:inline-block}.chevron.open{transform:rotate(90deg)}.hour-row td{color:var(--muted)}.hour-row td:nth-child(2){padding-left:28px}.xp-chart{position:relative}.xp-chart-svg{width:100%;height:300px;display:block}.xp-chart-svg:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.xp-chart-grid line{stroke:var(--border);stroke-width:1px}.xp-chart-ylabel,.xp-chart-xlabel{fill:var(--muted);font-size:11px}.xp-chart-line{fill:none;stroke:var(--gold);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.xp-chart-area{fill:var(--gold);opacity:.12;stroke:none}.xp-chart-enddot,.xp-chart-hoverdot{fill:var(--gold);stroke:var(--panel);stroke-width:2px}.xp-chart-endlabel{fill:var(--gold-bright);font-size:12px;font-weight:600}.xp-chart-crosshair{stroke:var(--muted);stroke-width:1px;opacity:.5}.xp-chart-tooltip{pointer-events:none;background:var(--panel-alt);border:1px solid var(--border-strong);box-shadow:var(--shadow-md);white-space:nowrap;border-radius:8px;padding:7px 10px;font-size:.78rem;position:absolute}.xp-chart-tooltip-date{color:var(--muted);margin-bottom:2px}.xp-chart-tooltip-value{color:var(--text)}.toast{background:var(--panel-alt);border:1px solid var(--gold);color:var(--text);box-shadow:var(--shadow-md);opacity:0;z-index:100;pointer-events:none;border-radius:8px;padding:10px 18px;font-size:.82rem;transition:opacity .2s,transform .2s;position:fixed;bottom:24px;left:50%;transform:translate(-50%)translateY(20px)}.toast.show{opacity:1;transform:translate(-50%)translateY(0)}
