:root{--bg:#f2f2f7;--surface:#fff;--fill:#e9e9ee;--text:#111;--muted:#6b6b73;--accent:#00998f;--accent-soft:rgba(0,153,143,.14);--red:#e5484d;--green:#30a46c;--orange:#f76b15;--yellow:#e5a800;--radius:20px;--font:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",system-ui,sans-serif;--round:ui-rounded,"SF Pro Rounded",-apple-system,system-ui,sans-serif;--serif:"New York",ui-serif,Georgia,serif}
@media(prefers-color-scheme:dark){:root{--bg:#000;--surface:#1c1c1e;--fill:#2c2c2e;--text:#f5f5f7;--muted:#98989f;--accent:#33d1c2;--accent-soft:rgba(51,209,194,.16)}}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font:16px/1.4 var(--font);-webkit-font-smoothing:antialiased}
body{padding-top:env(safe-area-inset-top)}
#app{max-width:680px;margin:0 auto;padding:16px 16px calc(92px + env(safe-area-inset-bottom))}
h1{font-size:30px;font-weight:700;margin:6px 0 14px;letter-spacing:-.4px}
h2{font-size:20px;font-weight:600;margin:22px 0 8px}
.panel{background:var(--surface);border-radius:var(--radius);padding:16px;margin:0 0 12px}
.row{display:flex;align-items:center;gap:12px}.grow{flex:1;min-width:0}.muted{color:var(--muted)}.small{font-size:13px}
.big{font:700 34px var(--round);letter-spacing:-.5px}
.pill{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;padding:3px 9px;border-radius:99px;background:var(--accent-soft);color:var(--accent)}
.pill.warn{background:rgba(247,107,21,.15);color:var(--orange)}.pill.gold{background:rgba(229,168,0,.16);color:var(--yellow)}
button{font:inherit;color:inherit;border:0;background:none;cursor:pointer}
.btn{display:block;width:100%;padding:14px;border-radius:16px;background:var(--accent);color:#fff;font-weight:600;text-align:center;transition:transform .12s,opacity .12s}.btn:active{transform:scale(.98);opacity:.85}
.btn.ghost{background:var(--fill);color:var(--text)}.btn.red{background:var(--red)}.btn.sm{width:auto;display:inline-block;padding:8px 14px;font-size:14px}
.ring{--p:0;width:112px;height:112px;border-radius:50%;background:conic-gradient(var(--accent) calc(var(--p)*1%),var(--accent-soft) 0);display:grid;place-items:center;flex:none;transition:--p .6s}
.ring>div{width:88px;height:88px;border-radius:50%;background:var(--surface);display:grid;place-items:center;text-align:center;line-height:1.1}
.ring.sm{width:42px;height:42px}.ring.sm>div{width:32px;height:32px;font-size:11px;font-weight:600}
.bar{height:8px;border-radius:99px;background:var(--fill);overflow:hidden}.bar>i{display:block;height:100%;background:var(--accent);border-radius:99px;transition:width .5s}
.item{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:.5px solid var(--fill);width:100%;text-align:left}.item:last-child{border:0}
.dot{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;color:#fff;font-size:17px;flex:none}
nav{position:fixed;left:0;right:0;bottom:0;display:flex;justify-content:space-around;padding:8px 8px calc(8px + env(safe-area-inset-bottom));background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-top:.5px solid var(--fill);z-index:5}
nav button{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:11px;color:var(--muted);flex:1;padding:4px}nav button.on{color:var(--accent)}nav .ic{font-size:21px}
.days{display:grid;grid-template-columns:repeat(14,1fr);gap:4px}.days i{aspect-ratio:1;border-radius:4px;background:var(--fill)}
.heat{display:grid;grid-auto-flow:column;grid-template-rows:repeat(7,1fr);gap:4px}.heat i{aspect-ratio:1;border-radius:4px;background:var(--fill)}
/* sesja */
#session{position:fixed;inset:0;background:var(--bg);z-index:20;display:flex;flex-direction:column;padding-top:env(safe-area-inset-top)}
#session .top{display:flex;align-items:center;gap:12px;padding:12px 16px}
#session .x{width:36px;height:36px;font-size:20px;color:var(--muted)}
#session .body{flex:1;overflow:auto;padding:0 16px 8px;max-width:680px;width:100%;margin:0 auto}
#session .foot{padding:8px 16px calc(16px + env(safe-area-inset-bottom));max-width:680px;width:100%;margin:0 auto}
.q{font:600 21px/1.35 var(--serif);margin:10px 0 16px}.tag{font-size:13px;font-weight:600}
.opt{display:flex;gap:12px;align-items:flex-start;width:100%;text-align:left;background:var(--surface);border:1.5px solid transparent;border-radius:16px;padding:14px;margin-bottom:10px}
.opt b{width:26px;height:26px;border-radius:50%;background:var(--fill);display:grid;place-items:center;font:700 13px var(--round);flex:none}
.opt.ok{border-color:var(--green);background:color-mix(in srgb,var(--green) 14%,var(--surface))}.opt.bad{border-color:var(--red);background:color-mix(in srgb,var(--red) 12%,var(--surface))}
.card{background:var(--surface);border-radius:24px;padding:22px;min-height:240px}.card .f{font:600 26px/1.3 var(--serif)}.card .b{font-size:19px;margin-top:16px;padding-top:16px;border-top:.5px solid var(--fill)}
.grades{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.grades button{border-radius:14px;padding:10px 4px;color:#fff;font-weight:600;font-size:14px;line-height:1.2}.grades small{display:block;font-weight:400;opacity:.85;font-size:11px}
.tf{background:var(--surface);border-radius:24px;padding:22px;min-height:260px;transition:transform .15s,background .2s;touch-action:pan-y}
.burst{position:fixed;left:50%;top:38%;transform:translateX(-50%);font:700 24px var(--round);color:var(--accent);pointer-events:none;animation:up .9s ease-out forwards;z-index:30}
@keyframes up{to{transform:translate(-50%,-70px);opacity:0}}
.toast{position:fixed;left:16px;right:16px;bottom:calc(86px + env(safe-area-inset-bottom));max-width:648px;margin:0 auto;background:var(--text);color:var(--bg);padding:12px 16px;border-radius:16px;display:flex;gap:12px;align-items:center;z-index:40}
.toast button{margin-left:auto;font-weight:700;color:var(--accent)}
input,select{font:inherit;width:100%;padding:12px;border-radius:12px;border:1px solid var(--fill);background:var(--bg);color:var(--text)}
label{display:block;font-size:13px;color:var(--muted);margin:12px 0 4px}
.lb{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:.5px solid var(--fill)}.lb .n{width:26px;font:700 16px var(--round);color:var(--muted);text-align:center}.lb.me{background:var(--accent-soft);margin:0 -16px;padding:10px 16px}
.seg{display:flex;background:var(--fill);border-radius:12px;padding:3px;margin-bottom:12px}.seg button{flex:1;padding:8px;border-radius:10px;font-weight:600;font-size:14px;color:var(--muted)}.seg button.on{background:var(--surface);color:var(--text)}
.chest{font-size:44px;text-align:center;animation:pop .5s}@keyframes pop{from{transform:scale(.3);opacity:0}}
