:root{--bg:#FFF9F2;--surface:#FFFFFF;--ink:#3B3A5C;--soft:#6b6890;--waiting:#CDBFEA;--almost:#FFD66B;--next:#FFB27A;--called:#7ED6B8;--missed:#F28B8B;--line:#ece4d8;--pass:#7ED6B8;--fail:#F28B8B;--skip:#CDBFEA}
.dark{--bg:#1E1D2E;--surface:#2A2940;--ink:#F3EFFF;--soft:#b9b4dc;--line:#3c3a58}
html{font-size:16px}
body{margin:0;background:var(--bg);color:var(--ink);font-family:Nunito,system-ui,sans-serif;
background-image:radial-gradient(circle at 10% 0%,rgba(205,191,234,.35),transparent 40%),radial-gradient(circle at 100% 30%,rgba(126,214,184,.25),transparent 40%),repeating-linear-gradient(0deg,transparent 0 31px,rgba(59,58,92,.035) 31px 32px),repeating-linear-gradient(90deg,transparent 0 31px,rgba(59,58,92,.035) 31px 32px);min-height:100vh}
h1,h2,h3,.fred{font-family:Fredoka,'Baloo 2',sans-serif}
.mono{font-family:'JetBrains Mono',ui-monospace,monospace}
.card{background:var(--surface);border:2px solid var(--line);border-radius:20px;padding:16px}
.lab-hero{border:2px dashed var(--ink)}
.pill{border-radius:999px;min-height:48px;padding:0 18px;font-weight:800;border:2px solid var(--ink);background:var(--surface);color:var(--ink);cursor:pointer}
.pill:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #7a6fd0;outline-offset:2px}
.pill.pri{background:#3B3A5C;color:#fff;border-color:#3B3A5C}
.dark .pill.pri{background:#CDBFEA;color:#3B3A5C}
.pill:disabled{opacity:.4;cursor:not-allowed}
.inp{border:2px solid var(--line);border-radius:16px;min-height:48px;padding:0 14px;background:var(--surface);color:var(--ink);width:100%}
.chip{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:4px 12px;font-weight:800;color:#3B3A5C;font-size:.85rem;border:0}
.pillstat{cursor:pointer;border:2px solid #3B3A5C}
.sticker{display:inline-block;transform:rotate(-6deg);background:#FFD66B;color:#3B3A5C;border:2px solid #3B3A5C;border-radius:8px;padding:1px 8px;font-size:.7rem;font-weight:800;font-family:'JetBrains Mono',monospace;margin-left:4px}
.bar{height:10px;border-radius:999px;background:var(--line);overflow:hidden}
.bar>div{height:100%;background:repeating-linear-gradient(45deg,#3B3A5C 0 8px,#5b5a84 8px 16px);transition:width .2s}
.res{display:flex;align-items:flex-start;gap:8px;padding:6px 0;border-bottom:1px dashed var(--line)}
.diff{background:rgba(242,139,139,.18);border-left:3px solid var(--fail);padding:4px 8px;border-radius:6px;word-break:break-word}
.console{background:#1E1D2E;color:#E7E3FF;border-radius:14px;padding:10px;max-height:260px;overflow:auto;white-space:pre-wrap}
.evt{padding:0 6px;border-radius:6px;color:#3B3A5C;font-weight:700}
.evt-transition{background:#CDBFEA}.evt-lock{background:#FFB27A}.evt-broadcast{background:#7ED6B8}.evt-worker{background:#FFD66B}.evt-test{background:#F28B8B}
.fab{position:fixed;right:14px;bottom:92px;z-index:35;border-radius:999px;min-height:48px;padding:0 16px;font-weight:800;background:#FFD66B;color:#3B3A5C;border:2px solid #3B3A5C;box-shadow:3px 3px 0 #3B3A5C;cursor:pointer}
@media (min-width:768px){.fab{bottom:20px}}
.stamp{animation:stamp .3s ease}
@keyframes stamp{from{transform:scale(1.4) rotate(-10deg);opacity:0}}
.bob{animation:bob 3s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(-6px)}}
.wiggle{animation:wig 2.4s ease-in-out infinite;transform-origin:50% 90%}
@keyframes wig{25%{transform:rotate(-3deg)}75%{transform:rotate(3deg)}}
.spin{display:inline-block;animation:spin 1.2s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.fade{animation:fade .2s ease}
@keyframes fade{from{opacity:0;transform:translateY(6px)}}
.flash{animation:flash 1.2s ease 1}
@keyframes flash{50%{background:#7ED6B8}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
.tabbar{background:transparent;backdrop-filter:blur(8px);border-top:2px solid var(--line)}
.tabbar .pill:not(.pri){background:transparent}
@media (min-width:768px){.tabbar{background:transparent;backdrop-filter:none;border-top:0}}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
table td,table th{padding:6px 8px;border-bottom:1px solid var(--line);text-align:left;font-size:.85rem}