:root{--bg:#0f172a;--bg-elev:#1e293b;--fg:#f8fafc;--muted:#94a3b8;--accent:#38bdf8;--error:#f87171;--success:#4ade80;--key:#1e293b;--key-active:#334155;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--bg);min-height:100%;color:var(--fg);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}#app{flex-direction:column;min-height:100dvh;display:flex}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.lock{padding:max(1.5rem, env(safe-area-inset-top)) 1rem max(1.5rem, env(safe-area-inset-bottom));text-align:center;-webkit-user-select:none;user-select:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:1rem;display:flex}.lock__icon{color:var(--accent);transition:color .2s}.lock--success .lock__icon{color:var(--success)}.lock__title{margin:0;font-size:1.5rem;font-weight:600}.lock__hint{min-height:1.5em;color:var(--muted);margin:0;font-size:.95rem}.lock__hint--error{color:var(--error)}.lock__dots{gap:.9rem;margin:.5rem 0 1.25rem;display:flex}.dot{border:2px solid var(--muted);border-radius:50%;width:14px;height:14px;transition:background .12s,border-color .12s,transform .12s}.dot--filled{background:var(--fg);border-color:var(--fg);transform:scale(1.1)}.lock--success .dot--filled{background:var(--success);border-color:var(--success)}.lock__keypad{grid-template-columns:repeat(3,72px);gap:.9rem;display:grid}.key{background:var(--key);width:72px;height:72px;color:var(--fg);cursor:pointer;touch-action:manipulation;border:none;border-radius:50%;font-size:1.6rem;font-weight:500;transition:background .1s,transform .1s}.key:active{background:var(--key-active);transform:scale(.95)}.key:disabled{opacity:.4;cursor:not-allowed}.key--muted{color:var(--muted);background:0 0;font-size:1.3rem}.key:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.lock--shake{animation:.4s shake}@keyframes shake{10%,90%{transform:translate(-2px)}20%,80%{transform:translate(4px)}30%,50%,70%{transform:translate(-6px)}40%,60%{transform:translate(6px)}}.app{width:100%;max-width:640px;padding:max(1.25rem, env(safe-area-inset-top)) 1rem max(1.25rem, env(safe-area-inset-bottom));flex:1;margin:0 auto}.app__header{justify-content:space-between;align-items:center;margin-bottom:1.25rem;display:flex}.app__title{margin:0;font-size:1.5rem}.card{background:var(--bg-elev);border-radius:16px;padding:1.25rem;line-height:1.5}.card p{margin:0 0 .75rem}.card p:last-child{margin-bottom:0}.muted{color:var(--muted);font-size:.9rem}.btn{cursor:pointer;background:var(--accent);color:#0f172a;border:none;border-radius:999px;padding:.55rem 1.1rem;font-size:.95rem;font-weight:500}.btn--ghost{background:var(--bg-elev);color:var(--fg)}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app{max-width:720px}.app__header p{margin:.15rem 0 0}.card+.card{margin-top:1rem}.small{font-size:.8rem}.h2{margin:0;font-size:1.1rem;font-weight:600}.cal__toolbar{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.75rem;display:flex}.cal__head,.cal__grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;display:grid}.cal__head span{text-align:center;color:var(--muted);padding-bottom:2px;font-size:.7rem}.cal__cell{background:var(--bg);min-height:58px;color:var(--muted);font:inherit;cursor:pointer;text-align:left;border:1px solid #0000;border-radius:8px;flex-direction:column;align-items:flex-start;gap:4px;padding:4px 3px;display:flex}.cal__cell--pad{cursor:default;background:0 0}.cal__cell--open{color:var(--fg);background:#16304a}.cal__cell--today{border-color:var(--muted)}.cal__cell--selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.cal__cell:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.cal__day{font-size:.75rem;font-weight:600}.cal__dots{flex-wrap:wrap;align-items:center;gap:3px;display:flex}.cal__dot{background:hsl(var(--h,200) 70% 60%);border-radius:50%;flex:none;width:9px;height:9px;display:inline-block}.cal__dot--few{border:2px solid hsl(var(--h,200) 70% 60%);background:0 0;width:7px;height:7px}.cal__more{color:var(--muted);font-size:.65rem}.legend{color:var(--muted);gap:1rem;margin-top:.75rem;font-size:.8rem;display:flex}.legend span{align-items:center;gap:.35rem;display:inline-flex}.toggle{color:var(--muted);cursor:pointer;align-items:center;gap:.4rem;font-size:.85rem;display:inline-flex}.day-list,.rst-list{margin:0;padding:0;list-style:none}.day-list__item{border-top:1px solid var(--bg);align-items:center;gap:.6rem;padding:.5rem 0;display:flex}.day-list__item:first-child{border-top:0}.day-list a,.rst-list a{color:var(--fg);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;text-decoration:none;overflow:hidden}.badge{background:var(--key-active);color:var(--muted);white-space:nowrap;border-radius:999px;padding:.15rem .5rem;font-size:.7rem}.badge--available{color:var(--success);background:#14532d}.badge--few{color:#fde68a;background:#713f12}.badge--full{color:#fecaca;background:#7f1d1d}.rst-list__item{border-top:1px solid var(--bg);padding:.6rem 0}.rst-list__item:first-child{border-top:0}.rst-list__head{align-items:center;gap:.5rem;margin-bottom:.35rem;display:flex}.rst-list__head .muted{white-space:nowrap;font-size:.75rem}.rst-list__days{flex-wrap:wrap;gap:.3rem;display:flex}.chip{font:inherit;border:1px solid var(--success);color:var(--success);cursor:pointer;background:0 0;border-radius:999px;padding:.2rem .5rem;font-size:.75rem}.chip--few{color:#fde68a;border-color:#fde68a}.notes{margin-top:.75rem;font-size:.8rem}code{background:var(--bg);border-radius:4px;padding:.1rem .35rem;font-size:.85em}
