:root{box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);--paper:#f5f7fa;--surface:#fff;--ink:#17233b;--muted:#5e6b82;--line:#dce2eb;--soft:#edf1f7;--accent:#2b54d9;--accent-ink:#fff;--danger:#c23a3a;--ev-blue:#2b54d9;--ev-green:#1e8a5a;--ev-amber:#b7791f;--ev-rose:#c8406a;--ev-violet:#7447c9;--ev-teal:#16808a;--ev-slate:#5b6b85;--display:"Bricolage Grotesque", "Avenir Next", "Segoe UI", system-ui, sans-serif;--body:"Figtree", "Segoe UI", system-ui, -apple-system, sans-serif}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#0f1522;--surface:#172033;--ink:#e7ecf5;--muted:#98a4ba;--line:#2a3550;--soft:#1d2840;--accent:#7c9bff;--accent-ink:#0f1522;--danger:#ff7b7b;--ev-blue:#7c9bff;--ev-green:#4fc98e;--ev-amber:#e7b04e;--ev-rose:#f07aa0;--ev-violet:#b394ff;--ev-teal:#4fc7cf;--ev-slate:#a3b1c9}}:root[data-theme=dark]{--paper:#0f1522;--surface:#172033;--ink:#e7ecf5;--muted:#98a4ba;--line:#2a3550;--soft:#1d2840;--accent:#7c9bff;--accent-ink:#0f1522;--danger:#ff7b7b;--ev-blue:#7c9bff;--ev-green:#4fc98e;--ev-amber:#e7b04e;--ev-rose:#f07aa0;--ev-violet:#b394ff;--ev-teal:#4fc7cf;--ev-slate:#a3b1c9}html{scroll-padding-top:env(safe-area-inset-top,0px)}*,:before,:after{box-sizing:border-box}body{background:var(--paper);color:var(--ink);font-family:var(--body);margin:0;font-size:15px;line-height:1.5}button,input,textarea,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}[hidden]{display:none!important}.app{max-width:1240px;margin:0 auto;padding:24px 20px 40px}header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:16px;display:flex}h1{font-family:var(--display);letter-spacing:-.03em;margin:0;font-size:clamp(2.4rem,6vw,4.5rem);font-weight:700;line-height:.95}h1 .year{color:var(--muted);font-weight:300}.title-wrap{position:relative}.title-btn{font:inherit;letter-spacing:inherit;line-height:inherit;cursor:pointer;text-align:left;background:0 0;border:0;border-radius:10px;align-items:baseline;gap:.25em;margin-left:-4px;padding:0 6px 0 4px;display:inline-flex}.title-btn:hover{background:var(--soft)}.title-btn .caret{color:var(--muted);align-self:center;font-size:.35em;transition:transform .15s}.title-btn[aria-expanded=true] .caret{transform:rotate(180deg)}.picker{z-index:20;background:var(--surface);border:1px solid var(--line);width:300px;max-width:calc(100vw - 24px);box-shadow:0 12px 32px color-mix(in srgb, var(--ink) 18%, transparent);border-radius:14px;padding:14px;position:absolute;top:calc(100% + 8px);left:0}.picker-year{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.picker-year span{font-family:var(--display);font-variant-numeric:tabular-nums;font-size:1.3rem;font-weight:700}.picker-months{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.picker-months button{background:var(--soft);cursor:pointer;border:1px solid #0000;border-radius:8px;padding:9px 0;font-weight:500}.picker-months button:hover{border-color:var(--line)}.picker-months button.current{background:var(--accent);color:var(--accent-ink)}.picker-months button.now:not(.current){border-color:var(--accent)}.picker-foot{justify-content:flex-end;margin-top:10px;display:flex}.nav{align-items:center;gap:8px;display:flex}.btn{border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:10px;padding:8px 14px;font-weight:500}.btn:hover{background:var(--soft)}.btn.icon{place-items:center;width:40px;padding:8px 0;font-size:1.1rem;line-height:1;display:inline-grid}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.btn.primary:hover{filter:brightness(1.08)}.btn.ghost{color:var(--muted);background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--soft)}.btn.small{padding:4px 10px;font-size:.85rem}.btn.danger{color:var(--danger)}.btn:disabled{opacity:.5;cursor:default}.filters{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:14px;display:flex}.filters .lbl{color:var(--muted);margin-right:4px;font-size:.85rem}.pill{border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:4px 12px 4px 8px;font-size:.88rem;font-weight:500;display:inline-flex}.pill .dot{background:var(--c);border-radius:50%;width:10px;height:10px}.pill[aria-pressed=false]{color:var(--muted);background:0 0}.pill[aria-pressed=false] .dot{box-shadow:inset 0 0 0 2px var(--c);background:0 0}.layout{grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:20px;display:grid}.month{background:var(--surface);border:1px solid var(--line);border-radius:14px;overflow:hidden}.weekdays,.grid{grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.weekdays div{color:var(--muted);border-bottom:1px solid var(--line);padding:10px 10px 8px;font-size:.8rem;font-weight:600}.day{text-align:left;border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);cursor:pointer;background:0 0;flex-direction:column;gap:3px;min-width:0;min-height:108px;padding:8px 8px 6px;display:flex;position:relative}.day:nth-child(7n){border-right:0}.day:nth-last-child(-n+7){border-bottom:0}.day:hover{background:var(--soft)}.day.outside .num{color:var(--muted);opacity:.55}.day .num{font-family:var(--display);font-variant-numeric:tabular-nums;border-radius:50%;place-items:center;width:28px;height:28px;font-size:1rem;font-weight:600;display:grid}.day.today .num{background:var(--accent);color:var(--accent-ink)}.day.selected{box-shadow:inset 0 0 0 2px var(--accent)}.chip{white-space:nowrap;text-overflow:ellipsis;background:color-mix(in srgb, var(--c) 16%, transparent);color:var(--ink);border-left:3px solid var(--c);border-radius:5px;padding:2px 6px;font-size:.75rem;line-height:1.3;display:block;overflow:hidden}.more{color:var(--muted);padding-left:4px;font-size:.72rem}.dots{gap:3px;display:none}.dots span{background:var(--c);border-radius:50%;width:6px;height:6px}aside{background:var(--surface);border:1px solid var(--line);top:calc(16px + env(safe-area-inset-top,0px));border-radius:14px;padding:18px;position:sticky}aside h2{font-family:var(--display);letter-spacing:-.01em;margin:0;font-size:1.5rem;font-weight:700}aside .sub{color:var(--muted);margin:0 0 14px;font-size:.9rem}.events{flex-direction:column;gap:8px;margin:0 0 16px;padding:0;list-style:none;display:flex}.event{background:var(--soft);border-radius:10px;grid-template-columns:4px 1fr auto;align-items:start;gap:10px;padding:10px 8px 10px 0;display:grid}.event .bar{background:var(--c);border-radius:0 3px 3px 0;align-self:stretch}.event .t{word-break:break-word;font-weight:600}.event .time{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.82rem}.event .who{color:var(--ink);align-items:center;gap:5px;margin-right:8px;font-size:.82rem;font-weight:600;display:inline-flex}.event .who:before{content:"";background:var(--pc);border-radius:50%;width:8px;height:8px}.event .with{color:var(--muted);font-size:.82rem}.event .with .pn{color:var(--ink);align-items:center;gap:4px;display:inline-flex}.event .with .pn:before{content:"";background:var(--pc);border-radius:50%;width:7px;height:7px}.others{flex-wrap:wrap;gap:6px;display:flex}.others label{border:1px solid var(--line);color:var(--ink);cursor:pointer;border-radius:999px;flex-direction:row;align-items:center;gap:6px;padding:3px 10px 3px 6px;font-weight:500}.others label:has(input:checked){border-color:var(--c);background:color-mix(in srgb, var(--c) 12%, transparent)}.others input{accent-color:var(--c);margin:0}.others .none{color:var(--muted);font-size:.85rem}.owner-note{color:var(--muted);align-items:center;gap:6px;font-size:.85rem;display:flex}.owner-note:before{content:"";background:var(--c);border-radius:50%;width:12px;height:12px}.event .by{color:var(--muted);margin-top:2px;font-size:.78rem}.event .loc{color:var(--accent);word-break:break-word;align-items:center;gap:4px;margin-top:2px;font-size:.85rem;text-decoration:none;display:inline-flex}.event .loc:hover{text-decoration:underline}.event .loc svg{flex:none}.event .src{color:var(--muted);border:1px solid var(--line);vertical-align:2px;border-radius:999px;margin-left:6px;padding:0 7px;font-size:.72rem;font-weight:600;display:inline-block}.event .link{color:var(--accent);word-break:break-all;margin-top:2px;font-size:.85rem;text-decoration:none;display:inline-block}.event .link:hover{text-decoration:underline}.importer{border:1px solid var(--line);background:var(--paper);border-radius:12px}.importer summary{cursor:pointer;justify-content:space-between;align-items:center;padding:10px 12px;font-size:.92rem;font-weight:600;list-style:none;display:flex}.importer summary::-webkit-details-marker{display:none}.importer summary:after{content:"▾";color:var(--muted);transition:transform .15s}.importer[open] summary:after{transform:rotate(180deg)}.importer .ib{flex-direction:column;gap:10px;padding:0 12px 12px;display:flex}.importer .help{color:var(--muted);margin:0;font-size:.82rem}.importer input[type=url]{border:1px solid var(--line);background:var(--surface);width:100%;color:var(--ink);border-radius:8px;padding:8px 10px}.importer textarea{background:var(--surface);min-height:80px}.shot{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;font-size:.85rem;display:flex}.shot .filebtn{color:var(--ink);flex-direction:row;align-items:center;font-weight:500;display:inline-flex;position:relative;overflow:hidden}.shot .filebtn input{opacity:0;cursor:pointer;width:100%;position:absolute;inset:0}.shot .filebtn:focus-within{outline:2px solid var(--accent);outline-offset:2px}.importer.drag{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.shot img{border:1px solid var(--line);border-radius:6px;max-width:100px;max-height:56px}.imp-msg{color:var(--muted);margin:0;font-size:.85rem}.imp-msg.ok{color:var(--ev-green)}.imp-msg.err{color:var(--danger)}.event .notes{color:var(--muted);white-space:pre-wrap;word-break:break-word;margin-top:2px;font-size:.85rem}.event .actions{gap:2px;display:flex}.event .actions button{padding:4px 8px;font-size:.8rem}.empty{color:var(--muted);margin:0 0 16px;font-size:.92rem}.readonly{color:var(--muted);border-top:1px solid var(--line);margin:0;padding-top:14px;font-size:.88rem}form.ev{border-top:1px solid var(--line);flex-direction:column;gap:12px;padding-top:16px;display:flex}form.ev h3{margin:0;font-size:1rem;font-weight:600}label{color:var(--muted);flex-direction:column;gap:4px;font-size:.85rem;font-weight:500;display:flex}input[type=text],input[type=time],input[type=date],input[type=search],input[type=email],textarea,select{border:1px solid var(--line);background:var(--paper);width:100%;color:var(--ink);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;border-radius:8px;padding:8px 10px}@media (prefers-color-scheme:dark){input[type=text],input[type=time],input[type=date],input[type=search],input[type=email],textarea,select{--lightningcss-light: ;--lightningcss-dark:initial}}textarea{resize:vertical;min-height:60px}.row{grid-template-columns:1fr 1fr;gap:10px;display:grid}.check{color:var(--ink);flex-direction:row;align-items:center;gap:8px}.swatches{flex-wrap:wrap;gap:8px;display:flex}.swatches input{opacity:0;pointer-events:none;position:absolute}.swatches label{cursor:pointer}.swatches span{background:var(--c);width:26px;height:26px;box-shadow:0 0 0 2px var(--surface), 0 0 0 2px transparent;border-radius:50%;display:block}.swatches input:checked+span{box-shadow:0 0 0 2px var(--surface), 0 0 0 4px var(--c)}.swatches input:focus-visible+span{outline:2px solid var(--accent);outline-offset:4px}.form-actions{gap:8px;display:flex}.error{color:var(--danger);margin:0;font-size:.85rem}.status,.sync{color:var(--muted);margin:14px 0 0;font-size:.8rem}.sync{margin-top:4px}dialog.settings{width:min(560px,100vw - 24px);max-height:calc(100vh - 48px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:16px;padding:0}dialog.settings::backdrop{background:#00000073}.s-head{background:var(--surface);z-index:1;justify-content:space-between;align-items:center;padding:18px 20px 10px;display:flex;position:sticky;top:0}.s-head h2{font-family:var(--display);letter-spacing:-.01em;margin:0;font-size:1.6rem}.s-body{padding:0 20px 22px}.s-body section+section{border-top:1px solid var(--line);margin-top:20px;padding-top:18px}.s-body h3{margin:0 0 4px;font-size:1.05rem}.s-body .help{color:var(--muted);margin:0 0 12px;font-size:.88rem}.people{flex-direction:column;gap:8px;margin:0 0 12px;padding:0;list-style:none;display:flex}.person{border:1px solid var(--line);border-radius:12px;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:10px;display:grid}.person .cdot{background:var(--c);cursor:pointer;border:0;border-radius:50%;width:28px;height:28px}.person .cdot:disabled{cursor:default}.person input[type=text]{font-weight:600}.person .acct{color:var(--muted);flex-wrap:wrap;grid-column:2/4;align-items:center;gap:6px;font-size:.85rem;display:flex}.person .acct strong{color:var(--ink);font-weight:600}.linker{grid-column:1/4;position:relative}.palette{border:1px solid var(--line);border-radius:10px;flex-wrap:wrap;grid-column:1/4;gap:6px;padding:8px;display:flex}.palette button{border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:4px 12px 4px 6px;font-size:.85rem;font-weight:500;display:inline-flex}.palette button:hover{background:var(--soft)}.palette button .sw{background:var(--c);border-radius:50%;width:18px;height:18px}.palette button[aria-pressed=true]{border-color:var(--c);box-shadow:inset 0 0 0 1px var(--c)}.palette button[aria-pressed=true]:after{content:"✓";font-size:.8rem}.results{border:1px solid var(--line);background:var(--surface);border-radius:10px;margin:4px 0 0;padding:4px;list-style:none}.results li button{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:7px;align-items:center;gap:8px;width:100%;padding:7px 8px;display:flex}.results li button:hover,.results li button:focus-visible{background:var(--soft)}.results img{border-radius:50%;width:22px;height:22px}.results .none{color:var(--muted);padding:7px 8px;font-size:.85rem}.add-person{gap:8px;display:flex}.me{align-items:center;gap:10px;margin-bottom:12px;display:flex}.me img{border-radius:50%;width:34px;height:34px}.me .role{color:var(--muted);font-size:.85rem}.levels{margin:0;padding-left:18px;font-size:.9rem}.levels li+li{margin-top:4px}@media (width<=860px){.layout{grid-template-columns:1fr}aside{position:static}}@media (width<=560px){.app{padding:16px 12px 32px}.day{align-items:center;min-height:58px;padding:5px 2px}.day .chip,.day .more{display:none}.dots{display:flex}.weekdays div{text-align:center;padding:8px 0 6px;font-size:.72rem}}@media (prefers-reduced-motion:no-preference){.day,.btn,.pill{transition:background-color .12s}}.auth{place-items:center;min-height:100dvh;padding:24px 16px;display:grid}.auth-card{background:var(--surface);border:1px solid var(--line);border-radius:16px;width:min(380px,100%);padding:24px}.auth-card h1{margin-bottom:12px;font-size:2.6rem}.auth-card form{flex-direction:column;gap:12px;display:flex}.auth-card .help{color:var(--muted);margin:0;font-size:.92rem}.auth-card #authCode{letter-spacing:.2em;font-variant-numeric:tabular-nums;font-size:1.3rem}.auth-card .imp-msg{margin-top:12px}
