:root{--bg:#fff;--sf:#f4f6fb;--fg:#1c1f26;--mut:#6b7280;--bd:#e3e6ee;--ac:#4f6bed;color-scheme:light dark}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#14161c;--sf:#1c1f27;--fg:#e8eaf0;--mut:#9aa1b0;--bd:#2c303b}}
:root[data-theme=dark]{--bg:#14161c;--sf:#1c1f27;--fg:#e8eaf0;--mut:#9aa1b0;--bd:#2c303b}
:root[data-theme=light]{color-scheme:light}
*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{display:flex;flex-direction:column;background:var(--bg);color:var(--fg);font:15px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}
button,input,select,textarea{font:inherit;color:inherit}
button{background:var(--sf);border:1px solid var(--bd);border-radius:8px;padding:6px 12px;cursor:pointer}
button.primary{background:var(--ac);border-color:var(--ac);color:#fff}
button.danger{color:#d9363e}
button.ic{padding:6px 10px}
.top{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--bd)}
.top h1{font-size:18px;margin:0;flex:1;min-width:120px;text-transform:capitalize}
.top nav{display:flex;gap:4px}
.seg button{border-radius:0}.seg button:first-child{border-radius:8px 0 0 8px}.seg button:last-child{border-radius:0 8px 8px 0}
.seg [aria-pressed=true]{background:var(--ac);color:#fff;border-color:var(--ac)}
#menu{display:none}
.layout{flex:1;display:flex;min-height:0}
#side{width:260px;padding:12px;border-right:1px solid var(--bd);background:var(--sf);overflow:auto}
#side h2{font-size:12px;text-transform:uppercase;color:var(--mut);margin:16px 0 6px}
#side .primary{width:100%}
#cals{list-style:none;margin:0;padding:0}
#cals li{display:flex;align-items:center;gap:6px;padding:4px 0}
#cals span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#cals code{font-size:11px;color:var(--mut)}
input[type=color]{width:30px;height:30px;padding:0;border:0;background:none}
#calForm{display:flex;gap:6px;margin-top:8px}#calForm input[name=n]{flex:1;min-width:0}
input:not([type=color]),select,textarea{background:var(--bg);border:1px solid var(--bd);border-radius:8px;padding:6px 8px;width:100%}
#main{flex:1;min-width:0;overflow:auto;display:flex;flex-direction:column}
#grid{flex:1;min-height:560px}
#grid.month{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-template-rows:auto repeat(6,minmax(84px,1fr))}
.dow{text-align:center;font-size:12px;color:var(--mut);padding:6px 0;text-transform:capitalize}
.dow.today{color:var(--ac);font-weight:700}
.cell{border-top:1px solid var(--bd);border-left:1px solid var(--bd);padding:2px 3px;min-width:0;cursor:pointer;overflow:hidden}
.cell.off{opacity:.45}
.num{display:inline-block;min-width:22px;text-align:center;font-size:12px;border-radius:11px}
.today .num{background:var(--ac);color:#fff}
.more{color:var(--mut);font-size:11px}
.chip,.ev{display:block;width:100%;text-align:left;font-size:12px;border:0;border-left:3px solid var(--c);border-radius:4px;padding:1px 5px;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:color-mix(in srgb,var(--c) 20%,transparent)}
#grid.week{display:flex;flex-direction:column;min-height:0}
.wh,.wb{display:grid;grid-template-columns:48px repeat(7,minmax(0,1fr))}
.wb{overflow:auto;flex:1}
.hrs span{display:block;height:48px;font-size:11px;color:var(--mut);text-align:right;padding-right:4px}
.col{position:relative;height:1152px;border-left:1px solid var(--bd);background:repeating-linear-gradient(var(--bd) 0 1px,transparent 1px 48px)}
.ev{position:absolute;left:2px;right:2px;width:auto;white-space:normal}
dialog{width:min(420px,92vw);border:1px solid var(--bd);border-radius:14px;background:var(--bg);color:var(--fg);padding:18px}
dialog::backdrop{background:#0006}
#evForm{display:grid;gap:10px}#evForm label{display:grid;gap:3px;font-size:13px;color:var(--mut)}
.row{display:flex;gap:8px}.row span{flex:1}
#ios{position:fixed;left:8px;right:8px;bottom:calc(8px + env(safe-area-inset-bottom));background:var(--fg);color:var(--bg);padding:12px;border-radius:12px;display:flex;gap:10px;align-items:center;z-index:9}
#ios p{margin:0;flex:1}#ios[hidden],[hidden]{display:none!important}
@media(max-width:720px){
  #menu{display:inline-block}
  #side{position:fixed;z-index:5;top:0;bottom:0;left:0;transform:translateX(-100%);transition:transform .2s;padding-top:calc(12px + env(safe-area-inset-top))}
  #side.open{transform:none;box-shadow:0 0 30px #0006}
}
