*{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}.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)}
