:root{--bg:#0a0a0a;--bg2:#141414;--bg3:#1a1a1a;--border:#2a2a2a;--text:#f5f0eb;--text2:#7a746c;--accent:#c22323;--accent2:#9a1b1b;--danger:#f04a4a;--warn:#f0a04a;--good:#4af0a0;--starc:#e8b23a;--r:10px;--rs:7px;--cond:"Barlow Condensed","Oswald","Arial Narrow",sans-serif;--body:"Barlow","Segoe UI",system-ui,sans-serif;--maxw:520px}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--bg);color:var(--text);font-family:var(--body);-webkit-font-smoothing:antialiased;overscroll-behavior-y:none;overflow-x:hidden}button{font-family:inherit;cursor:pointer;color:inherit}input,select,textarea{font-family:inherit}a{color:var(--accent);text-decoration:none}[hidden]{display:none!important}.app{max-width:var(--maxw);margin:0 auto;height:100vh;height:100dvh;height:min(var(--app-h,100dvh),100dvh);padding-top:env(safe-area-inset-top);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);display:flex;flex-direction:column;background:var(--bg);position:relative;overflow:hidden}.app.wide{max-width:960px}.body{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:0 16px 24px}.ver{position:absolute;top:6px;right:10px;z-index:5;background:none;border:none;font-family:var(--cond);letter-spacing:.1em;font-size:10px;color:var(--text2);text-transform:uppercase}.top{display:flex;align-items:center;gap:10px;padding:16px 16px 10px}.brand{display:flex;align-items:center;gap:10px;flex:1;min-width:0}.balllogo{width:32px;height:32px;flex:none;background:url(/logo.png) center/contain no-repeat}.lock{display:flex;flex-direction:column;line-height:1}.lock b{font-family:var(--body);font-weight:800;font-size:18px;color:var(--accent);letter-spacing:-.01em}.lock span{font-family:var(--cond);text-transform:uppercase;letter-spacing:.24em;font-size:9px;color:var(--text2);margin-top:3px}.who{flex:none;background:var(--bg2);border:1px solid var(--border);border-radius:20px;padding:5px 11px;font-family:var(--cond);text-transform:uppercase;letter-spacing:.06em;font-size:11px;color:var(--text);font-weight:600}.who small{display:block;font-size:8px;color:var(--text2);letter-spacing:.1em}.hl{padding:2px 16px 12px;display:flex;align-items:center;gap:12px}.hl h1{font-family:var(--cond);text-transform:uppercase;letter-spacing:.03em;font-weight:700;font-size:28px;line-height:1;flex:1;min-width:0}.hl .sub{font-family:var(--cond);text-transform:uppercase;letter-spacing:.1em;font-size:11px;color:var(--text2)}.sect{font-family:var(--cond);text-transform:uppercase;letter-spacing:.14em;font-size:12px;color:var(--accent);border-bottom:1px solid var(--border);padding:14px 2px 8px;margin-bottom:10px;display:flex;align-items:center;gap:8px}.sect em{font-style:normal;color:var(--text2);margin-left:auto;font-size:11px}.card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:11px 12px;margin-bottom:9px;width:100%;text-align:left;color:inherit;position:relative}.card.row{display:flex;gap:11px;align-items:center}.tile{width:46px;height:46px;border-radius:var(--rs);flex:none;display:flex;align-items:center;justify-content:center;font-family:var(--cond);font-weight:700;font-size:16px;color:#0a0a0a;background:#222;background-size:cover;background-position:center;overflow:hidden}.tile img{width:100%;height:100%;object-fit:cover}.info{flex:1;min-width:0}.info .nm{display:block;font-family:var(--cond);text-transform:uppercase;letter-spacing:.02em;font-weight:600;font-size:16px;line-height:1.1}.info .meta{display:block;font-family:var(--cond);letter-spacing:.05em;font-size:11px;color:var(--text2);margin-top:3px}.chevr{flex:none;color:var(--text2);font-size:22px;line-height:1}.chips{display:flex;gap:5px;margin-top:5px;flex-wrap:wrap}.chip{font-family:var(--cond);text-transform:uppercase;letter-spacing:.08em;font-size:10px;color:var(--text);border:1px solid var(--border);border-radius:20px;padding:1px 8px}.chip.eq{color:#7fd8ff;border-color:#255}.chip.mv{color:#c8a6ff;border-color:#43356e}.chip.on{background:var(--accent);border-color:var(--accent);color:#fff}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;background:var(--accent);border:none;color:#fff;border-radius:var(--rs);padding:12px 16px;font-family:var(--cond);text-transform:uppercase;letter-spacing:.08em;font-size:14px;font-weight:700}.btn.block{width:100%}.btn.ghost{background:var(--bg2);border:1px solid var(--border);color:var(--text)}.btn.ghost.danger{color:var(--danger);border-color:#4a2222}.btn:disabled{opacity:.45}.btn.sm{padding:8px 12px;font-size:12px}.btnrow{display:flex;gap:8px;margin-top:10px}.btnrow .btn{flex:1}.field{display:flex;flex-direction:column;gap:5px;margin-bottom:11px}.field label{font-family:var(--cond);text-transform:uppercase;letter-spacing:.1em;font-size:10px;color:var(--text2)}.input,input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],select,textarea{background:var(--bg2);border:1px solid var(--border);border-radius:var(--rs);padding:11px 12px;color:var(--text);font-size:15px;outline:none;width:100%}.input:focus,input:focus,select:focus,textarea:focus{border-color:var(--accent2)}textarea{resize:vertical;min-height:60px;line-height:1.4}.inline{display:flex;gap:8px}.inline>*{flex:1}.seg{display:flex;gap:6px;flex-wrap:wrap}.seg button{flex:1;min-width:0;background:var(--bg2);border:1px solid var(--border);color:var(--text2);border-radius:var(--rs);padding:9px 8px;font-family:var(--cond);text-transform:uppercase;letter-spacing:.06em;font-size:12px;font-weight:600}.seg button.on{background:var(--accent);border-color:var(--accent);color:#fff}.kbwrap{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;padding:6px 0 2px}.kb{position:relative;border:none;background:none;display:flex;flex-direction:column;align-items:center;gap:4px}.kbdisc{border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--cond);font-weight:700;color:#0a0a0a;box-shadow:0 2px 6px #0006,inset 0 -3px 8px #0003;border:2px solid #0000;transition:transform .1s}.kb:active .kbdisc{transform:scale(.94)}.kb.on .kbdisc{border-color:#fff;box-shadow:0 0 0 2px var(--accent),0 2px 6px #0006}.kb .cnt{position:absolute;top:-4px;right:-4px;background:var(--accent);color:#fff;border-radius:50%;width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-family:var(--cond);font-weight:700;font-size:12px;border:2px solid var(--bg)}.kb .lbl{font-family:var(--cond);text-transform:uppercase;letter-spacing:.06em;font-size:9px;color:var(--text2)}.kbhint{text-align:center;font-family:var(--cond);text-transform:uppercase;letter-spacing:.1em;font-size:10px;color:var(--text2);margin-top:6px}.setrow{display:flex;align-items:center;gap:8px;background:var(--bg2);border:1px solid var(--border);border-radius:var(--rs);padding:8px 9px;margin-bottom:7px}.setrow .sn{font-family:var(--cond);font-weight:700;color:var(--accent);font-size:15px;width:20px;flex:none;text-align:center}.setrow .load{font-family:var(--cond);font-weight:700;font-size:15px;min-width:64px}.setrow .load small{color:var(--text2);font-weight:400;font-size:11px;margin-left:2px}.setrow input[type=number]{width:60px;padding:7px 6px;text-align:center}.setrow .x{color:var(--text2);font-size:12px}.flagbtns{display:flex;gap:4px;margin-left:auto;flex-wrap:wrap}.fbtn{border:1px solid var(--border);background:var(--bg3);color:var(--text2);border-radius:6px;padding:4px 7px;font-family:var(--cond);text-transform:uppercase;letter-spacing:.05em;font-size:9.5px;font-weight:600}.fbtn.on.clean{color:var(--good);border-color:#2c5e3a}.fbtn.on.cheated{color:var(--warn);border-color:#5e4a2c}.fbtn.on.hard{color:var(--danger);border-color:#5e2c2c}.fbtn.on.adapted{color:#7fd8ff;border-color:#255}.fbtn.on.easy{color:var(--good);border-color:#2c5e3a}.timer{display:flex;align-items:center;gap:12px;background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:12px 14px;margin-bottom:12px}.timer .t{font-family:var(--cond);font-weight:700;font-size:30px;letter-spacing:.02em;flex:1}.timer .t.run{color:var(--accent)}.guide{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:14px;margin-bottom:12px}.guide .gnav{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.guide .gnav b{font-family:var(--cond);text-transform:uppercase;letter-spacing:.06em;font-size:12px;color:var(--text2)}.guide .gtitle{font-family:var(--cond);text-transform:uppercase;letter-spacing:.02em;font-weight:700;font-size:22px;line-height:1.05;margin-bottom:2px}.guide .ghist{font-size:12px;color:var(--text2);margin:6px 0 12px;line-height:1.4}.guide .ghist b{color:var(--text)}.pager{display:flex;gap:6px}.pdot{width:9px;height:9px;border-radius:50%;background:#333;flex:none}.pdot.on{background:var(--accent)}.pdot.done{background:var(--good)}.nav{flex:none;display:flex;border-top:1px solid var(--border);background:var(--bg);padding-bottom:env(safe-area-inset-bottom)}.nav button{flex:1;background:none;border:none;padding:11px 0 13px;font-family:var(--cond);text-transform:uppercase;letter-spacing:.06em;font-size:11.5px;color:var(--text2);display:flex;flex-direction:column;align-items:center;gap:5px}.nav button.on{color:var(--text)}.nav button.on i{background:var(--accent)}.nav i{width:16px;height:3px;border-radius:2px;background:#333;font-style:normal}.login{flex:1;display:flex;flex-direction:column;justify-content:center;padding:0 22px;gap:6px}.login .lbrand{display:flex;align-items:center;gap:12px;margin-bottom:20px}.login h1{font-family:var(--cond);text-transform:uppercase;letter-spacing:.02em;font-size:32px;line-height:.95}.login h1 em{font-style:normal;color:var(--accent)}.login .err{color:var(--danger);font-size:13px;min-height:18px}.offbar{flex:none;background:#3a2c10;color:#f0d9a0;font-size:12px;padding:6px 12px;text-align:center;font-family:var(--cond);letter-spacing:.04em}.offbar.sync{background:#10321f;color:#a7e8c4}.center{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--text2);padding:40px 10px;text-align:center}.hint{color:var(--text2);font-size:12.5px;line-height:1.45;margin:2px 0 10px}.heat{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin:6px 0 4px}.heat .cell{aspect-ratio:1;border-radius:3px;background:var(--bg3)}.heat .cell.a1{background:#3a1a1a}.heat .cell.a2{background:#7a2020}.heat .cell.a3{background:var(--accent)}.heatlbl{display:flex;justify-content:space-between;font-family:var(--cond);text-transform:uppercase;letter-spacing:.08em;font-size:9px;color:var(--text2);margin-bottom:3px}.stats{display:grid;grid-template-columns:repeat(2,1fr);gap:9px;margin-bottom:12px}.stbox{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:11px 12px}.stbox b{font-family:var(--cond);font-weight:700;font-size:26px;display:block;line-height:1}.stbox span{font-family:var(--cond);text-transform:uppercase;letter-spacing:.1em;font-size:10px;color:var(--text2)}.chartbox{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:12px;margin-bottom:12px}.chartbox h4{font-family:var(--cond);text-transform:uppercase;letter-spacing:.1em;font-size:11px;color:var(--text2);margin-bottom:8px}svg.line{width:100%;height:120px;display:block}.scrim{position:absolute;top:0;right:0;bottom:0;left:0;z-index:90;background:#060607a8}.sheet{position:absolute;left:0;right:0;bottom:0;z-index:91;background:var(--bg2);border-top:1px solid var(--accent2);border-radius:var(--r) var(--r) 0 0;padding:16px 15px;padding-bottom:calc(16px + env(safe-area-inset-bottom));max-height:88%;overflow-y:auto;display:flex;flex-direction:column;gap:2px}.sheet h3{font-family:var(--cond);text-transform:uppercase;letter-spacing:.04em;font-size:20px;margin-bottom:8px}.pgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.pcell{position:relative;aspect-ratio:3/4;background:var(--bg3);border-radius:var(--rs);overflow:hidden;border:1px solid var(--border)}.pcell img{width:100%;height:100%;object-fit:cover}.pcell .pa{position:absolute;top:4px;left:4px;background:#000a;color:#fff;border-radius:4px;padding:1px 5px;font-family:var(--cond);font-size:9px;letter-spacing:.08em;text-transform:uppercase}.pcell .pd{position:absolute;bottom:0;left:0;right:0;background:#000a;color:#fff;font-size:9px;text-align:center;padding:2px}.line{display:flex;align-items:center;gap:10px;padding:9px 2px;border-bottom:1px solid var(--border)}.line .l1{flex:1;min-width:0}.line .l1 b{font-family:var(--cond);letter-spacing:.02em;font-size:15px}.line .l1 small{display:block;color:var(--text2);font-size:11px;font-family:var(--cond);letter-spacing:.04em}.line .del{background:none;border:none;color:var(--text2);font-size:16px;flex:none}.line .del:hover{color:var(--danger)}
