.achievement-overview{display:flex;align-items:center;gap:12px;padding:4px 0 8px}.achievement-overview>strong{font-size:28px;letter-spacing:-1px;font-variant-numeric:tabular-nums}.achievement-overview>strong span{font-size:17px;color:var(--muted);font-weight:500}.achievement-overview>div{font-size:12px;color:var(--ink2)}.achievement-overview small{display:block;margin-top:3px;color:var(--muted)}.achievement-percent{margin-left:auto;font-size:15px;font-weight:700;color:var(--s3)}.achievement-filters{margin-bottom:12px}.achievement-tools{display:flex;flex-wrap:wrap;gap:8px}.achievement-tools .searchbox{min-width:140px;flex:2;margin:0;font-size:13px}.achievement-tools select{flex:1;min-width:140px;border:1px solid var(--border);border-radius:12px;padding:9px;background:var(--surface);color:var(--ink);font:inherit;font-size:13px}.achievement-result-count,.achievement-empty{font-size:12px;color:var(--muted);padding:10px 0}.achievement-list{list-style:none}.achievement-entry{border-top:1px solid var(--border);padding:14px 0}.achievement-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.achievement-heading>div{min-width:0}.achievement-category{font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.achievement-heading h3{font-size:14px;line-height:1.4;margin-top:3px;overflow-wrap:anywhere}.achievement-state{font-size:11px;color:var(--muted);white-space:nowrap}.earned .achievement-state{color:var(--s3);font-weight:600}.achievement-description{font-size:12px;color:var(--ink2);line-height:1.5;margin:6px 0 10px}.achievement-progress{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.achievement-progress progress{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;height:5px;border-radius:4px;overflow:hidden;background:var(--grid);flex:1;min-width:70px}.achievement-progress progress::-webkit-progress-bar{background:var(--grid)}.achievement-progress progress::-webkit-progress-value{background:var(--s1);border-radius:4px}.achievement-progress progress::-moz-progress-bar{background:var(--s1);border-radius:4px}.earned .achievement-progress progress::-webkit-progress-value{background:var(--s3)}.earned .achievement-progress progress::-moz-progress-bar{background:var(--s3)}.achievement-progress>span{font-size:11px;color:var(--ink2);font-variant-numeric:tabular-nums}.achievement-meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 10px;margin-top:7px;font-size:10px;color:var(--muted)}.achievement-goals{margin-top:9px;font-size:11px;color:var(--ink2)}.achievement-goals summary{cursor:pointer}.achievement-goals ul{list-style:none;margin-top:7px}.achievement-goals li{display:flex;justify-content:space-between;gap:12px;padding:4px 0}.achievement-goals li>span:last-child{flex-shrink:0;font-variant-numeric:tabular-nums}.achievement-more{width:100%;padding:10px;border-radius:10px;border:1px solid var(--border);background:var(--surface);color:var(--ink);font:inherit;font-size:12px;cursor:pointer}.achievement-footnote{border-top:1px solid var(--border);margin-top:12px;padding-top:10px;font-size:10px;line-height:1.5;color:var(--muted)}.achievement-filters button,.achievement-tools select{cursor:pointer}.achievement-filters button:focus-visible,.achievement-more:focus-visible,.achievement-tools select:focus-visible,.achievement-goals summary:focus-visible{outline:2px solid var(--axis);outline-offset:2px}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{font-family:system-ui,-apple-system,Segoe UI,sans-serif;background:var(--page, #0d0d0d);color:var(--ink, #fff);-webkit-font-smoothing:antialiased}#root,.app{min-height:100vh;background:var(--page);color:var(--ink)}.app{max-width:640px;margin:0 auto;padding:0 12px calc(76px + env(safe-area-inset-bottom)) 12px}.header{position:sticky;top:0;z-index:10;background:var(--page);padding:calc(12px + env(safe-area-inset-top)) 0 8px}.header h1{font-size:17px;font-weight:700;display:flex;align-items:center;gap:8px}.header h1 .sub{color:var(--muted);font-weight:500;font-size:13px}.rangebar{display:flex;gap:6px;margin-top:10px}.rangebar button{flex:1;border:1px solid var(--border);background:var(--surface);color:var(--ink2);border-radius:10px;padding:7px 0;font-size:13px;font-family:inherit}.rangebar button.on{color:var(--ink);font-weight:700;border-color:var(--axis)}.card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:14px;margin-bottom:12px}.card h2{font-size:14px;font-weight:700;margin-bottom:2px}.card .subtitle{font-size:12px;color:var(--muted);margin-bottom:10px}.card .grouphead{font-size:13px;font-weight:700;color:var(--ink);border-top:1px solid var(--border);padding-top:12px;margin:16px 0 8px}.card .grouphead.first{border-top:0;padding-top:0;margin-top:0}.card .grouphead small{font-size:12px;font-weight:500;color:var(--muted);margin-left:6px}.kpis{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:12px 14px}.kpi .label{font-size:12px;color:var(--muted)}.kpi .value{font-size:26px;font-weight:600;margin-top:2px}.kpi .sub{font-size:12px;color:var(--ink2);margin-top:2px}.barlist .row{margin-bottom:10px}.barlist .row:last-child{margin-bottom:0}.barlist .top{display:flex;justify-content:space-between;align-items:baseline;font-size:13px;margin-bottom:3px}.barlist .top .name{color:var(--ink2);display:flex;align-items:center;gap:6px}.barlist .top .name .swatch{width:10px;height:10px;border-radius:3px;flex:none}.barlist .top .val{font-weight:600;font-variant-numeric:tabular-nums}.barlist .top .val small{color:var(--muted);font-weight:400;margin-left:4px}.barlist .track{height:10px;border-radius:4px;background:transparent}.barlist .fill{height:100%;border-radius:4px;min-width:2px}.skillbars .row{margin-bottom:9px}.skillbars .row:last-child{margin-bottom:0}.skillbars .top{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:13px;margin-bottom:3px}.skillbars .top .name{color:var(--ink2);display:flex;align-items:center;gap:6px;min-width:0}.skillbars .top .name .swatch{width:10px;height:10px;border-radius:3px;flex:none}.skillbars .top .val{font-weight:600;font-variant-numeric:tabular-nums;flex:none;white-space:nowrap}.skillbars .top .val small{color:var(--muted);font-weight:400;margin-left:6px}.skillbars .track{position:relative;height:10px;border-radius:4px;background:var(--grid);overflow:hidden}.skillbars .fill{height:100%;border-radius:4px}.skillbars .ticks{position:absolute;top:0;right:0;bottom:0;left:0}.playercard{display:block;width:100%;text-align:left;font-family:inherit;color:inherit;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:12px 14px;margin-bottom:10px}.playercard .line1{display:flex;justify-content:space-between;align-items:baseline}.playercard .pname{font-size:16px;font-weight:700}.playercard .seen{font-size:12px;color:var(--muted)}.playercard .line2{display:flex;justify-content:space-between;font-size:13px;color:var(--ink2);margin-top:6px}.playercard .wallet{display:flex;gap:12px;font-variant-numeric:tabular-nums}.playercard .meta{font-size:12px;color:var(--muted);margin-top:6px}.runtable{width:100%;border-collapse:collapse;font-size:12.5px}.runtable th{text-align:right;color:var(--muted);font-weight:500;padding:4px 6px;border-bottom:1px solid var(--grid)}.runtable th:first-child,.runtable td:first-child{text-align:left}.runtable td{text-align:right;padding:6px;border-bottom:1px solid var(--grid);font-variant-numeric:tabular-nums;white-space:nowrap}.runtable tr:last-child td{border-bottom:none}.runtable .who{color:var(--ink2);max-width:110px;overflow:hidden;text-overflow:ellipsis}.runtable .who .wholink{color:inherit;text-decoration:underline;text-decoration-color:var(--grid);text-underline-offset:2px}.runtable .who .wholink:hover{color:var(--ink);text-decoration-color:currentColor}.heatmap{display:grid;grid-template-columns:26px 1fr;gap:4px}.heatmap .daylabel{font-size:10px;color:var(--muted);display:flex;align-items:center;height:14px}.heatmap .cells{display:grid;grid-template-columns:repeat(24,1fr);gap:2px;height:14px}.heatmap .cell{border-radius:2px;background:var(--grid)}.heatmap .hourlabels{grid-column:2;display:grid;grid-template-columns:repeat(24,1fr);font-size:9px;color:var(--muted)}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{border:1px solid var(--border);border-radius:999px;padding:3px 10px;font-size:12px;color:var(--ink2)}.chip b{color:var(--ink);font-weight:600}.chip.bare{border:none;padding:0}.backbtn{border:1px solid var(--border);background:var(--surface);color:var(--ink);font-family:inherit;font-size:13px;border-radius:10px;padding:6px 12px}.msg{color:var(--muted);font-size:13px;padding:16px 4px}.spinner{display:inline-block;width:13px;height:13px;border:2px solid var(--grid);border-top-color:var(--muted);border-radius:50%;animation:spin .8s linear infinite;vertical-align:-2px}@keyframes spin{to{transform:rotate(360deg)}}.card h2 .spinner{margin-left:8px}.pageloader{display:flex;align-items:center;justify-content:center;gap:10px;padding:40px 0;color:var(--muted);font-size:13px}.searchbox{width:100%;box-sizing:border-box;background:var(--surface);border:1px solid var(--border);border-radius:12px;color:var(--ink);font-family:inherit;font-size:15px;padding:10px 14px;margin-bottom:10px;outline:none}.searchbox::placeholder{color:var(--muted)}.searchbox:focus{border-color:var(--axis)}.mday{border-top:1px solid var(--grid);padding:8px 0}.mday:first-of-type{border-top:none}.mday .mdate{font-size:12px;color:var(--muted);margin-bottom:6px}.mrow{display:flex;align-items:baseline;gap:8px;font-size:13px;padding:3px 0;flex-wrap:wrap}.mrow .check{width:16px;flex:none;font-weight:700}.mrow.undone{opacity:.55}.mrow .mreward{color:var(--ink2);font-variant-numeric:tabular-nums}.mrow .mitems{color:var(--muted);font-size:12px}.msg.error{color:#e66767}.loading-dim{opacity:.55;transition:opacity .2s}.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:20;display:flex;justify-content:center;gap:2px;background:var(--surface);border-top:1px solid var(--border);padding:6px 4px calc(6px + env(safe-area-inset-bottom))}.tabbar button{flex:1;max-width:120px;background:none;border:none;font-family:inherit;color:var(--muted);font-size:10.5px;display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 0}.tabbar button .ico{font-size:20px;line-height:1}.tabbar button.on{color:var(--ink);font-weight:700}.recharts-tooltip-wrapper{outline:none}.tip{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:8px 10px;font-size:12px;box-shadow:0 4px 16px #00000040}.tip .tiplabel{color:var(--muted);margin-bottom:4px}.tip .tiprow{display:flex;align-items:center;gap:6px;margin-top:2px}.tip .tipkey{width:12px;height:3px;border-radius:2px;flex:none}.tip .tipval{font-weight:700;font-variant-numeric:tabular-nums}.tip .tipname{color:var(--ink2)}
