/* Global Calendrier - colours come from the shared GLCH theme (theme-client.js sets --glch-*); the fallbacks are the plain light look. */
:root{
  --c-bg:var(--glch-background,#f3f4f6);--c-surface:var(--glch-surface,#ffffff);--c-raised:var(--glch-surface-raised,var(--c-surface));
  --c-text:var(--glch-text,#1f2937);--c-strong:var(--glch-text-strong,#0f172a);--c-muted:var(--glch-text-muted,#6b7280);
  --c-link:var(--glch-link,#2563eb);--c-border:var(--glch-border,#e2e5ea);--c-accent:var(--glch-accent,#2563eb);--c-on-accent:var(--glch-on-accent,#ffffff);
  --c-hover:var(--glch-hover,rgba(127,127,127,.13));--c-danger:var(--glch-danger,#dc2626);--c-ring:var(--glch-focus-ring,#2563eb);
  --c-sel:color-mix(in srgb,var(--c-accent) 16%,transparent);--c-grid:color-mix(in srgb,var(--c-border) 80%,transparent);
  --side:256px;--gut:56px;
}
*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{background:var(--c-bg);color:var(--c-text);font:14px/1.4 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;display:flex;flex-direction:column;overflow:hidden}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--c-ring);outline-offset:1px}
[hidden]{display:none!important}
.grow{flex:1;min-width:0}
.muted{color:var(--c-muted)}
svg.i{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none;vertical-align:middle}
.ib{background:none;border:0;border-radius:50%;padding:6px;display:inline-flex;align-items:center;justify-content:center;color:var(--c-muted);min-width:34px;height:34px}
.ib.sm{min-width:26px;height:26px;padding:3px}.ib.sm svg.i{width:15px;height:15px}
.ib:hover{background:var(--c-hover);color:var(--c-strong)}
.btn{background:var(--c-surface);border:1px solid var(--c-border);border-radius:18px;padding:6px 14px;display:inline-flex;align-items:center;gap:6px;color:var(--c-text)}
.btn:hover{background:var(--c-hover)}
.btn.primary,.primary{background:var(--c-accent);color:var(--c-on-accent);border:1px solid transparent}
.btn.primary:hover,.primary:hover{filter:brightness(1.08)}
.btn.danger{color:var(--c-danger);border-color:var(--c-danger);background:none}
.btn:disabled{opacity:.6;cursor:default}
.linkish{background:none;border:0;color:var(--c-link);padding:2px 4px;border-radius:4px}
.primary{border-radius:24px;padding:10px 20px;font-weight:600;display:inline-flex;align-items:center;gap:8px}
select,input[type=text],input[type=date],input[type=time],input[type=number],input[type=url],input[type=search],textarea{background:var(--c-surface);border:1px solid var(--c-border);border-radius:6px;padding:6px 8px;min-width:0}
textarea{resize:vertical;width:100%}
.ddot{width:10px;height:10px;border-radius:50%;flex:none;display:inline-block}.ddot.big{width:14px;height:14px;margin-top:4px}

/* top bar */
#top{display:flex;align-items:center;gap:8px;padding:6px 12px;background:var(--c-surface);border-bottom:1px solid var(--c-border);flex:none;min-height:52px}
.brand{display:flex;align-items:center;gap:8px;text-decoration:none;color:var(--c-strong);font-weight:700;font-size:16px;margin-right:8px;white-space:nowrap}
.logo{width:28px;height:28px;border-radius:7px;background:var(--c-accent);display:inline-flex;align-items:center;justify-content:center;color:var(--c-on-accent)}
#rangeTitle{font-size:19px;font-weight:500;margin:0 0 0 8px;color:var(--c-strong);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
#searchForm{margin:0}#q{width:170px;border-radius:18px;padding:6px 12px}
#viewPick,#themePick{border-radius:6px;padding:5px 6px}#themePick{max-width:120px}
#who{color:var(--c-muted);font-size:12.5px;white-space:nowrap}

/* layout */
#app{flex:1;display:flex;min-height:0;position:relative}
#side{width:var(--side);flex:none;background:var(--c-surface);border-right:1px solid var(--c-border);padding:14px 12px;overflow:auto;display:flex;flex-direction:column;gap:14px}
body.side-closed #side{display:none}
#main{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;background:var(--c-surface)}
#scrim{display:none}
#mini .mini-head{display:flex;align-items:center;gap:2px;margin-bottom:4px}#mini .mt{flex:1;font-weight:600;color:var(--c-strong)}
.mini-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;text-align:center}
.mini-grid .wd{font-size:11px;color:var(--c-muted);padding:2px 0}
.mini-grid .md{background:none;border:0;border-radius:50%;aspect-ratio:1;font-size:12px;padding:0;color:var(--c-text);max-width:30px;margin:0 auto;width:100%}
.mini-grid .md:hover{background:var(--c-hover)}.mini-grid .md.other{color:var(--c-muted);opacity:.65}
.mini-grid .md.inrange{background:var(--c-sel)}.mini-grid .md.today{background:var(--c-accent);color:var(--c-on-accent);opacity:1}
#calList .grp{display:flex;align-items:center;font-size:11px;text-transform:uppercase;letter-spacing:.7px;color:var(--c-muted);margin:10px 0 4px}#calList .grp span{flex:1}
.calrow{display:flex;align-items:center;gap:8px;padding:2px 0;border-radius:6px}.calrow:hover{background:var(--c-hover)}
.calbox{width:18px;height:18px;border:2px solid;border-radius:4px;padding:0;display:inline-flex;align-items:center;justify-content:center;background:none;flex:none}
.calbox svg.i{width:12px;height:12px;stroke-width:3}
.calname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}
.calrow .ib{visibility:hidden}.calrow:hover .ib,.calrow .ib:focus-visible{visibility:visible}

/* month */
.month{flex:1;display:flex;flex-direction:column;min-height:0}
.mhead{display:grid;grid-template-columns:repeat(7,1fr);border-bottom:1px solid var(--c-border)}
.mhead div{padding:6px 8px;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--c-muted);text-align:center}
.mrows{flex:1;display:grid;grid-template-rows:repeat(6,1fr);min-height:0}
.mrow{position:relative;min-height:0;border-bottom:1px solid var(--c-grid);overflow:hidden}
.mcells{position:absolute;inset:0;display:grid;grid-template-columns:repeat(7,1fr)}
.mcell{border-right:1px solid var(--c-grid);padding:2px;cursor:pointer;min-width:0}.mcell:last-child{border-right:0}
.mcell.other .dnum{color:var(--c-muted)}.mcell:hover{background:color-mix(in srgb,var(--c-hover) 50%,transparent)}
.dnum{background:none;border:0;border-radius:12px;font-size:12px;padding:1px 6px;min-width:24px;height:22px;color:var(--c-text)}
.dnum:hover{background:var(--c-hover)}.dnum.today{background:var(--c-accent);color:var(--c-on-accent);font-weight:600}
.mlanes{position:absolute;left:0;right:0;top:26px;bottom:0;display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:20px;gap:1px 0;pointer-events:none;padding:0 2px}
.mlanes>*{pointer-events:auto}
.mev{display:flex;align-items:center;gap:4px;font-size:12px;border-radius:4px;padding:0 5px;height:19px;min-width:0;overflow:hidden;cursor:pointer;margin:0 1px}
.mev.dot:hover{background:var(--c-hover)}.mev.solid:hover{filter:brightness(1.08)}
.mev .mtx{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.mev .mt{color:var(--c-muted);font-size:11px;flex:none}
.mev.c0{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:0}.mev.c1{border-top-right-radius:0;border-bottom-right-radius:0;margin-right:0}
.more{background:none;border:0;color:var(--c-muted);font-size:11.5px;font-weight:600;text-align:left;padding:0 6px;height:19px;border-radius:4px}.more:hover{background:var(--c-hover);color:var(--c-strong)}

/* time grid */
.tg{flex:1;display:flex;flex-direction:column;min-height:0}
.tg-head,.tg-allday{display:flex;flex:none}
.tg-head{border-bottom:1px solid var(--c-border)}
.tg-gut{width:var(--gut);flex:none;position:relative}
.tg-days{flex:1;display:grid;min-width:0}
.tg-dh{background:none;border:0;border-left:1px solid var(--c-grid);padding:6px 4px;display:flex;flex-direction:column;align-items:center;gap:2px;color:var(--c-muted)}
.tg-dh:hover{background:var(--c-hover)}.tg-dh .dw{font-size:11px;text-transform:uppercase;letter-spacing:.5px}.tg-dh .dd{font-size:22px;line-height:32px;min-width:34px;border-radius:17px;color:var(--c-text)}
.tg-dh.today .dd{background:var(--c-accent);color:var(--c-on-accent)}.tg-dh.today .dw{color:var(--c-accent)}
.tg-allday{border-bottom:1px solid var(--c-border);min-height:26px}
.adbody{flex:1;display:grid;grid-auto-rows:20px;gap:1px 0;padding:3px 0;min-width:0;position:relative}
.adcell{border-left:1px solid var(--c-grid);cursor:pointer}
.tg-scroll{flex:1;overflow-y:auto;min-height:0;position:relative}
.tg-body{display:flex;position:relative}
.tg-gut.hours{position:relative}.hl{position:absolute;right:8px;font-size:10.5px;color:var(--c-muted);white-space:nowrap}
.tg-cols{flex:1;display:grid;min-width:0}
.tg-col{position:relative;border-left:1px solid var(--c-grid);background-image:repeating-linear-gradient(to bottom,transparent 0,transparent 47px,var(--c-grid) 47px,var(--c-grid) 48px);touch-action:pan-y;cursor:cell}
.tg-col.today{background-color:color-mix(in srgb,var(--c-accent) 5%,transparent)}
.tev{position:absolute;border-radius:5px;padding:2px 5px;font-size:12px;overflow:hidden;cursor:pointer;border:1px solid color-mix(in srgb,var(--c-surface) 70%,transparent);line-height:1.25;user-select:none}
.tev:hover{filter:brightness(1.07)}.tev.dragging{opacity:.8;z-index:5;box-shadow:0 4px 14px rgba(0,0,0,.3)}
.tev .tt{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tev.short{display:flex;gap:6px;align-items:center;padding-top:0;padding-bottom:0}.tev .tm{font-size:11px;opacity:.9;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tev .rz{position:absolute;left:0;right:0;bottom:0;height:6px;cursor:ns-resize}
.tev.ghost{background:var(--c-sel);border:1px dashed var(--c-accent);color:var(--c-strong);width:calc(100% - 2px);left:0;z-index:4;pointer-events:none}
.nowline{position:absolute;left:0;right:0;height:0;border-top:2px solid #ea4335;z-index:3;pointer-events:none}
.nowdot{position:absolute;left:-6px;top:-6px;width:10px;height:10px;border-radius:50%;background:#ea4335}

/* schedule */
.agenda{flex:1;overflow:auto;padding:8px 16px 24px;max-width:900px;width:100%;margin:0 auto}
.ag-day{display:flex;gap:16px;border-bottom:1px solid var(--c-grid);padding:10px 0}
.ag-date{background:none;border:0;display:flex;align-items:center;gap:8px;width:130px;flex:none;align-self:flex-start;text-align:left;color:var(--c-muted);font-size:12px;padding:0}
.ag-date .n{font-size:22px;line-height:36px;min-width:36px;text-align:center;border-radius:18px;color:var(--c-text)}
.ag-date.today .n{background:var(--c-accent);color:var(--c-on-accent)}.ag-date.today{color:var(--c-accent);font-weight:600}
.ag-list{flex:1;min-width:0}.ag-ev{display:flex;align-items:center;gap:10px;padding:6px 8px;border-radius:6px;cursor:pointer}.ag-ev:hover{background:var(--c-hover)}
.ag-ev .when{width:130px;flex:none;color:var(--c-muted);font-size:12.5px}.ag-ev .what{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ag-ev .ttl{font-weight:600;color:var(--c-strong)}.ag-ev .loc{color:var(--c-muted)}.ag-ev .calname{color:var(--c-muted);font-size:12px;flex:none;cursor:inherit;max-width:140px}
.ag-more{text-align:center;padding:16px}.empty{padding:40px;text-align:center;color:var(--c-muted)}

/* popover, modal, menu, toasts */
#layer{position:fixed;inset:0;pointer-events:none;z-index:50}#layer>*{pointer-events:auto}
.pop{position:fixed;width:340px;max-width:calc(100vw - 16px);background:var(--c-raised);border:1px solid var(--c-border);border-radius:10px;box-shadow:0 8px 30px rgba(0,0,0,.28);padding:6px 16px 14px;z-index:60}
.pop.sheet{left:8px;right:8px;bottom:8px;top:auto;width:auto;max-height:70vh;overflow:auto}
.pop-bar{display:flex;justify-content:flex-end;gap:2px}.pop-title{display:flex;gap:12px;margin:2px 0 10px}.pt{font-size:19px;color:var(--c-strong);word-break:break-word}.pw{color:var(--c-muted);font-size:13px}
.pop-row{display:flex;gap:12px;align-items:flex-start;margin:7px 0;font-size:13.5px;word-break:break-word}.pop-row svg.i{margin-top:1px;color:var(--c-muted)}.pop-row.desc span{white-space:pre-wrap}.pop-row.muted{color:var(--c-muted)}.pop-row a{color:var(--c-link)}
.modal-back{position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:flex-start;justify-content:center;padding:6vh 12px 12px;overflow:auto;z-index:70}
.modal{background:var(--c-raised);border:1px solid var(--c-border);border-radius:12px;width:100%;max-width:460px;box-shadow:0 14px 50px rgba(0,0,0,.4)}.modal.wide{max-width:560px}
.mhd{display:flex;align-items:center;gap:8px;padding:12px 14px 4px 20px}.mhd h2{flex:1;margin:0;font-size:17px;font-weight:600;color:var(--c-strong)}
.mbd{padding:6px 20px 12px}.mft{display:flex;justify-content:flex-end;gap:8px;padding:10px 20px 16px}.mft .btn.danger{margin-right:auto}
.menu{position:fixed;background:var(--c-raised);border:1px solid var(--c-border);border-radius:8px;box-shadow:0 6px 24px rgba(0,0,0,.25);padding:4px;min-width:200px;z-index:80}
.menu button{display:block;width:100%;text-align:left;background:none;border:0;padding:7px 12px;border-radius:5px}.menu button:hover{background:var(--c-hover)}
#toasts{position:fixed;left:50%;transform:translateX(-50%);bottom:18px;display:flex;flex-direction:column;gap:8px;z-index:90;align-items:center;pointer-events:none;width:max-content;max-width:calc(100vw - 24px)}
.toast{pointer-events:auto;background:#2b2f36;color:#fff;border-radius:8px;padding:8px 8px 8px 16px;display:flex;align-items:center;gap:10px;box-shadow:0 4px 18px rgba(0,0,0,.35)}.toast.err{background:#b3261e}.toast .linkish{color:#8ab4f8}.toast .ib{color:#ddd}

/* forms */
.fld{margin:8px 0}.fld>label{display:block;font-size:12px;color:var(--c-muted);margin-bottom:3px}.fld>select,.fld>input{width:100%}
.form select,.form input[type=text]{width:100%}
.editor{display:flex;flex-direction:column;gap:10px}
.editor .big{width:100%;font-size:21px;border:0;border-bottom:2px solid var(--c-border);border-radius:0;padding:6px 2px;background:none}.editor .big:focus{border-bottom-color:var(--c-accent);outline:0}
.check{display:flex;align-items:center;gap:8px;cursor:pointer}
.when-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.when-row .to{color:var(--c-muted)}
.when-row input[type=date]{flex:1 1 130px}.when-row input[type=time]{flex:1 1 100px}
.ico-row{display:flex;gap:12px;align-items:center}.ico-row.top{align-items:flex-start}.ico-row>svg.i{color:var(--c-muted);margin-top:8px}.ico-row>input,.ico-row>textarea{flex:1}
.ico-row>select{flex:1}.reminders{flex:1;display:flex;flex-direction:column;gap:6px;align-items:flex-start}.rem{display:flex;align-items:center;gap:8px}.rem>svg{display:none}
.custom,.ends{display:flex;flex-direction:column;gap:8px;padding-left:2px}.crow{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.num{width:72px}
.days{display:flex;gap:4px;flex-wrap:wrap}.daypick{position:relative}.daypick input{position:absolute;opacity:0}.daypick span{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;border:1px solid var(--c-border);cursor:pointer;font-size:12px}
.daypick input:checked+span{background:var(--c-accent);color:var(--c-on-accent);border-color:transparent}.daypick input:focus-visible+span{outline:2px solid var(--c-ring)}
.scope{display:flex;flex-direction:column;gap:8px}.radio{display:flex;align-items:center;gap:8px;cursor:pointer}
.swatches{display:flex;gap:8px;flex-wrap:wrap}.sw{width:26px;height:26px;border-radius:50%;border:2px solid transparent;padding:0}.sw.on{border-color:var(--c-strong);box-shadow:0 0 0 2px var(--c-surface) inset}
.share-add{display:flex;gap:6px;margin:10px 0}.share-add input{flex:1}.share-row{display:flex;gap:8px;align-items:center;padding:4px 0}.share-row .who{flex:1;overflow:hidden;text-overflow:ellipsis}
.tools{display:flex;gap:8px;flex-wrap:wrap}.checks{display:flex;flex-direction:column;gap:6px;max-height:200px;overflow:auto}
.import-result .ok{color:var(--c-accent);font-weight:600}.results{display:flex;flex-direction:column;max-height:60vh;overflow:auto}
.result{display:flex;align-items:center;gap:10px;background:none;border:0;border-bottom:1px solid var(--c-grid);padding:9px 4px;text-align:left;width:100%}.result:hover{background:var(--c-hover)}.result .rt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}

.small{font-size:12.5px;margin:6px 2px}
.tools.alt{align-items:center;margin-bottom:8px}
.cx{opacity:.7}.cx .mtx,.cx .tt,.cx .ttl{text-decoration:line-through}
.rules .rule{display:flex;gap:6px;align-items:center;margin:4px 0}.rules .rule input[type=text]{flex:1}.rules .rule input[type=color]{width:38px;height:32px;padding:0;border:1px solid var(--c-border);border-radius:6px;background:none}
.gacct{border:1px solid var(--c-border);border-radius:8px;padding:8px 12px;margin:8px 0}.gacct h3{margin:2px 0 6px}.gacct .grow{display:block}.gacct .tools{align-items:center;margin-top:6px}.gacct .tools input{width:170px}
.copybox{display:flex;gap:6px}.copybox input{flex:1;font-size:12px}.form h3{margin:14px 0 4px;font-size:14px;color:var(--c-strong)}.howto{margin:6px 0;padding-left:18px;color:var(--c-muted);font-size:13px}.err{color:var(--c-danger)}
.result .rt .muted{font-weight:400;font-size:12px}

/* narrow screens */
@media (max-width:719px){
  #top{flex-wrap:wrap;gap:2px 6px;padding:4px 8px;min-height:0}
  .brand{display:none}#rangeTitle{order:9;flex:1 1 100%;margin:0 4px 2px;font-size:16px}
  #who,#themePick{display:none}#q{width:84px}#q:focus{width:150px}.btn{padding:5px 11px}
  #side{position:absolute;left:0;top:0;bottom:0;z-index:40;transform:translateX(-102%);transition:transform .18s}
  body.side-open #side{transform:none;box-shadow:4px 0 20px rgba(0,0,0,.3)}body.side-open #scrim{display:block;position:absolute;inset:0;background:rgba(0,0,0,.35);z-index:35}
  body.side-closed #side{display:flex}
  :root{--gut:40px}.ag-date{width:90px}.ag-ev .when{width:86px}.ag-ev .calname{display:none}
  .mev .mt{display:none}.agenda{padding:8px 8px 24px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
