:root{--bg: #f7f9fd;--surface: #ffffff;--surface-2: #eef2f9;--surface-3: #e3e9f3;--text: #1b1c1f;--muted: #5b5f67;--outline: #c6cad3;--primary: #0b57d0;--on-primary: #ffffff;--primary-container: #d3e3fd;--on-primary-container: #041e49;--danger: #b3261e;--danger-container: #f9dedc;--success: #146c2e;--success-container: #c4eed0;--warning-container: #ffe08a;--on-warning-container: #3b2f00;--shadow: 0 1px 2px rgba(0, 0, 0, .06), 0 2px 8px rgba(0, 0, 0, .05);--radius: 20px;--nav-h: 76px;color-scheme:light}@media(prefers-color-scheme:dark){:root{--bg: #121316;--surface: #1d1f23;--surface-2: #26292e;--surface-3: #30343a;--text: #e8eaee;--muted: #a9adb6;--outline: #454a52;--primary: #a8c7fa;--on-primary: #062e6f;--primary-container: #0842a0;--on-primary-container: #d3e3fd;--danger: #f2b8b5;--danger-container: #8c1d18;--success: #6dd58c;--success-container: #0f5223;--warning-container: #594400;--on-warning-container: #ffe08a;--shadow: 0 1px 2px rgba(0, 0, 0, .4);color-scheme:dark}}*{box-sizing:border-box}html{font-size:112.5%;-webkit-text-size-adjust:100%}html[data-text=large]{font-size:125%}html[data-text=xlarge]{font-size:140%}body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.45}a{color:var(--primary)}h1{font-size:1.6rem;line-height:1.2;margin:0 0 .75rem}h2{font-size:1.2rem;margin:1.5rem 0 .6rem}h3{font-size:1.05rem;margin:1rem 0 .4rem}p{margin:.4rem 0}.muted{color:var(--muted)}.small{font-size:.85rem}.center{text-align:center}.row{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}.row.between{justify-content:space-between}.stack{display:flex;flex-direction:column;gap:.75rem}.grow{flex:1;min-width:0}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.app{min-height:100vh;min-height:100dvh}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:.5rem;padding:calc(env(safe-area-inset-top) + .5rem) 1rem .5rem;background:var(--bg)}.topbar .title{font-size:1.3rem;font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.main{padding:.25rem 1rem calc(var(--nav-h) + 6rem + env(safe-area-inset-bottom));max-width:1100px;margin:0 auto}.narrow{max-width:640px;margin:0 auto}.bottomnav{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;justify-content:space-around;background:var(--surface-2);padding:.4rem .25rem calc(.4rem + env(safe-area-inset-bottom));border-top:1px solid var(--surface-3)}.navitem{flex:1;display:flex;flex-direction:column;align-items:center;gap:.15rem;text-decoration:none;color:var(--muted);font-size:.8rem;font-weight:500;padding:.15rem 0;min-height:3.2rem;position:relative}.navitem .pill{display:grid;place-items:center;width:4rem;height:2rem;border-radius:999px}.navitem.active{color:var(--text)}.navitem.active .pill{background:var(--primary-container);color:var(--on-primary-container)}.navitem .badge{position:absolute;top:0;left:calc(50% + .6rem)}@media(min-width:900px){.app{display:grid;grid-template-columns:6.5rem 1fr}.bottomnav{position:sticky;top:0;height:100vh;flex-direction:column;justify-content:flex-start;gap:.75rem;padding:1.25rem .25rem;border-top:0;border-right:1px solid var(--surface-3)}.navitem{flex:0}.main{padding-bottom:6rem}}.card{background:var(--surface);border-radius:var(--radius);padding:1.1rem;box-shadow:var(--shadow)}.card+.card{margin-top:.9rem}.list{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.list>*+*{border-top:1px solid var(--surface-3)}.listrow{display:flex;align-items:center;gap:.8rem;padding:.85rem 1rem;color:inherit;text-decoration:none;min-height:3.5rem}a.listrow:hover,button.listrow:hover{background:var(--surface-2)}button.listrow{width:100%;border:0;background:none;font:inherit;text-align:left;cursor:pointer}button,.btn{font:inherit}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-height:3rem;padding:.6rem 1.3rem;border-radius:999px;border:0;cursor:pointer;background:var(--primary);color:var(--on-primary);font-weight:600;text-decoration:none}.btn:disabled{opacity:.55;cursor:default}.btn.secondary{background:var(--primary-container);color:var(--on-primary-container)}.btn.outline{background:transparent;color:var(--primary);border:1px solid var(--outline)}.btn.text{background:transparent;color:var(--primary);padding:.6rem .8rem}.btn.danger{background:var(--danger-container);color:var(--danger)}.btn.block{width:100%}.btn.small{min-height:2.4rem;padding:.35rem .9rem;font-size:.9rem}.iconbtn{display:inline-grid;place-items:center;width:3rem;height:3rem;border-radius:999px;border:0;background:transparent;color:var(--text);cursor:pointer;position:relative;text-decoration:none}.iconbtn:hover{background:var(--surface-2)}.fab{position:fixed;right:1rem;bottom:calc(var(--nav-h) + 1rem + env(safe-area-inset-bottom));z-index:25;display:inline-flex;align-items:center;gap:.5rem;min-height:3.6rem;padding:0 1.4rem;border-radius:1.1rem;background:var(--primary-container);color:var(--on-primary-container);font-weight:600;text-decoration:none;box-shadow:0 3px 10px #0000002e}@media(min-width:900px){.fab{bottom:2rem;right:2rem}}label.field{display:flex;flex-direction:column;gap:.3rem;font-weight:500}label.field>span.hint{font-weight:400;color:var(--muted);font-size:.85rem}input,select,textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--outline);border-radius:14px;padding:.75rem .9rem;min-height:3.1rem;width:100%}textarea{min-height:6rem;resize:vertical}input:focus,select:focus,textarea:focus,.btn:focus-visible,.iconbtn:focus-visible,a:focus-visible{outline:3px solid var(--primary);outline-offset:2px}input[type=checkbox],input[type=radio]{width:1.4rem;height:1.4rem;min-height:0;accent-color:var(--primary)}.error{background:var(--danger-container);color:var(--danger);padding:.75rem 1rem;border-radius:14px}.notice{background:var(--primary-container);color:var(--on-primary-container);padding:.75rem 1rem;border-radius:14px}.warning{background:var(--warning-container);color:var(--on-warning-container);padding:.75rem 1rem;border-radius:14px}.success{background:var(--success-container);color:var(--success);padding:.75rem 1rem;border-radius:14px}.badge{display:inline-grid;place-items:center;min-width:1.25rem;height:1.25rem;padding:0 .3rem;border-radius:999px;background:var(--danger);color:#fff;font-size:.7rem;font-weight:700}@media(prefers-color-scheme:dark){.badge{color:#3a0907}}.iconbtn .badge{position:absolute;top:.3rem;right:.2rem}.chip{display:inline-flex;align-items:center;gap:.3rem;padding:.3rem .75rem;border-radius:999px;background:var(--surface-2);font-size:.85rem;border:1px solid transparent}button.chip{cursor:pointer;font:inherit;font-size:.9rem;min-height:2.6rem;color:var(--text)}button.chip.on{background:var(--primary-container);color:var(--on-primary-container);border-color:var(--primary)}.avatar{display:inline-grid;place-items:center;flex:none;border-radius:999px;color:#fff;font-weight:600;width:2.5rem;height:2.5rem;font-size:1rem;-webkit-user-select:none;user-select:none}.avatar.sm{width:1.9rem;height:1.9rem;font-size:.8rem}.segmented{display:flex;border:1px solid var(--outline);border-radius:999px;overflow:hidden}.segmented button{flex:1;border:0;background:transparent;color:var(--text);min-height:3rem;padding:0 .6rem;cursor:pointer;font-weight:500;white-space:nowrap}.segmented button+button{border-left:1px solid var(--outline)}.segmented button.on{background:var(--primary-container);color:var(--on-primary-container);font-weight:700}.toggle{display:flex;align-items:flex-start;gap:.9rem;padding:.85rem 1rem;cursor:pointer}.toggle .text{flex:1}.toggle .text strong{display:block;font-weight:600}.switch{position:relative;width:3.25rem;height:2rem;flex:none;margin-top:.1rem}.switch input{opacity:0;width:100%;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;margin:0;cursor:pointer;z-index:1}.switch .track{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:999px;background:var(--surface-3);border:2px solid var(--outline);transition:.15s}.switch .track:after{content:"";position:absolute;top:50%;left:.3rem;width:1rem;height:1rem;border-radius:999px;background:var(--outline);transform:translateY(-50%);transition:.15s}.switch input:checked+.track{background:var(--primary);border-color:var(--primary)}.switch input:checked+.track:after{left:calc(100% - 1.55rem);width:1.25rem;height:1.25rem;background:var(--on-primary)}.switch input:focus-visible+.track{outline:3px solid var(--primary);outline-offset:2px}.calhead{display:flex;align-items:center;gap:.4rem;margin-bottom:.75rem;flex-wrap:wrap}.calhead .month{font-size:1.25rem;font-weight:600;flex:1;min-width:9rem}.agenda-day{margin-top:1.1rem}.agenda-day h3{font-size:.95rem;color:var(--muted);margin:0 0 .4rem .25rem;font-weight:600}.agenda-day.today h3{color:var(--primary)}.event-row{display:flex;gap:.85rem;align-items:stretch;padding:.8rem 1rem;text-decoration:none;color:inherit}.event-row:hover{background:var(--surface-2)}.event-row .bar{width:.35rem;border-radius:999px;flex:none}.event-row .title{font-weight:600}.event-row .meta{color:var(--muted);font-size:.88rem}.tag{font-size:.75rem;padding:.1rem .5rem;border-radius:999px;background:var(--surface-2);color:var(--muted);font-weight:600;white-space:nowrap}.tag.going{background:var(--success-container);color:var(--success)}.tag.pending{background:var(--warning-container);color:var(--on-warning-container)}.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));background:var(--surface);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.month-grid .dow{padding:.5rem .4rem;font-size:.75rem;color:var(--muted);font-weight:600;text-align:center;background:var(--surface-2)}.month-grid .cell{min-height:6.2rem;padding:.3rem;border-top:1px solid var(--surface-3);border-left:1px solid var(--surface-3);background:none;border-right:0;border-bottom:0;text-align:left;font:inherit;color:inherit;cursor:pointer;display:flex;flex-direction:column;gap:.15rem;min-width:0}.month-grid .cell:nth-child(7n+1){border-left:0}.month-grid .cell.other{color:var(--muted);background:color-mix(in srgb,var(--surface-2) 45%,transparent)}.month-grid .cell.selected{box-shadow:inset 0 0 0 2px var(--primary)}.month-grid .num{font-size:.85rem;font-weight:600;width:1.8rem;height:1.8rem;display:grid;place-items:center;border-radius:999px}.month-grid .cell.today .num{background:var(--primary);color:var(--on-primary)}.month-grid .pill-ev{font-size:.72rem;line-height:1.25;padding:.1rem .35rem;border-radius:6px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.month-grid .more{font-size:.72rem;color:var(--muted)}.dots{display:flex;gap:.2rem;flex-wrap:wrap}.dot{width:.45rem;height:.45rem;border-radius:999px}@media(max-width:640px){.month-grid .cell{min-height:3.6rem;align-items:center}.month-grid .pill-ev,.month-grid .more{display:none}}@media(min-width:641px){.month-grid .dots{display:none}}.event-hero{border-left:.45rem solid var(--primary)}.kv{display:flex;gap:.75rem;align-items:flex-start;margin:.6rem 0}.kv .icon{color:var(--muted);flex:none;margin-top:.1rem}.progress{height:.5rem;background:var(--surface-3);border-radius:999px;overflow:hidden}.progress>div{height:100%;background:var(--primary);border-radius:999px}.comment{display:flex;gap:.6rem;margin:.8rem 0}.bubble{background:var(--surface-2);padding:.6rem .9rem;border-radius:4px 18px 18px;flex:1;min-width:0;overflow-wrap:anywhere}.bubble.mine{background:var(--primary-container);color:var(--on-primary-container)}.colors{display:flex;gap:.5rem;flex-wrap:wrap}.colors button{width:2.6rem;height:2.6rem;border-radius:999px;border:3px solid transparent;cursor:pointer}.colors button.on{border-color:var(--text)}.auth{max-width:460px;margin:0 auto;padding:calc(env(safe-area-inset-top) + 2rem) 1rem 3rem}.brand{display:flex;align-items:center;gap:.75rem;margin-bottom:1.5rem;font-size:1.35rem;font-weight:700}.brand img{width:3rem;height:3rem}.menu{position:absolute;right:.5rem;top:3.6rem;z-index:40;min-width:15rem;background:var(--surface);border-radius:16px;box-shadow:0 6px 24px #0003;overflow:hidden}.backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:35}.spinner{padding:3rem;text-align:center;color:var(--muted)}
