/* ===== estilos compartilhados: modal, formulário, botões, toasts ===== */
*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;height:100%}
body{font-family:var(--font);color:var(--text);background:var(--bg);font-size:14px;line-height:1.4;-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
.ic{width:16px;height:16px;flex:none;vertical-align:-3px}
.mut{color:var(--muted)}
.grow{flex:1}
code{font-family:ui-monospace,Consolas,monospace;font-size:.92em;background:var(--hover);padding:1px 5px;border-radius:4px}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.btn{display:inline-flex;align-items:center;gap:7px;min-height:34px;padding:0 14px;border-radius:var(--r-btn,6px);border:1px solid var(--line-strong);background:var(--surface);font-weight:600;font-size:13px;white-space:nowrap}
.btn:hover{background:var(--hover)}
.btn.pri{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.btn.pri:hover{filter:brightness(1.08);background:var(--accent)}
.btn.danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 45%,var(--line))}
.btn.danger:hover{background:color-mix(in srgb,var(--danger) 12%,var(--surface))}
.btn.ghost{border-color:transparent;background:transparent}
.btn.ghost:hover{background:var(--hover)}
.btn.lg{min-height:64px;width:100%;text-align:left;padding:10px 14px;white-space:normal;align-items:center}
.btn.lg span{display:flex;flex-direction:column;gap:2px}.btn.lg small{font-weight:400;color:var(--muted)}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.icon-btn{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:6px;border:0;background:transparent;color:var(--muted)}
.icon-btn:hover{background:var(--hover);color:var(--text)}
.icon-btn[disabled]{opacity:.35}
/* modal */
.m-back{position:fixed;inset:0;background:rgba(10,14,24,.5);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;padding:16px;z-index:200;animation:fade .15s}
.m-box{background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:var(--r-modal,10px);width:100%;max-height:calc(100vh - 32px);display:flex;flex-direction:column;box-shadow:0 24px 70px rgba(0,0,0,.35);outline:0;animation:pop .16s ease-out}
.m-box form{display:flex;flex-direction:column;min-height:0;max-height:calc(100vh - 34px)}
.m-h{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 18px;border-bottom:1px solid var(--line)}
.m-h h2{margin:0;font-size:16px;font-weight:700}
.m-b{padding:16px 18px;overflow:auto;min-height:0}
.m-f{display:flex;gap:8px;align-items:center;justify-content:flex-end;padding:12px 18px;border-top:1px solid var(--line);flex-wrap:wrap}
.m-f .left{margin-right:auto}
@keyframes fade{from{opacity:0}}@keyframes pop{from{opacity:0;transform:translateY(8px) scale(.985)}}
/* formulário */
.fld{display:flex;flex-direction:column;gap:5px;min-width:0}
.fld>span:first-child,.lbl{font-size:12px;font-weight:600;color:var(--muted)}
.fld input,.fld select,.fld textarea,.cm-name,.cm-tipo,#cm-newn{min-height:36px;padding:6px 10px;border:1px solid var(--line-strong);border-radius:6px;background:var(--field,var(--surface));width:100%;min-width:0}
.fld textarea{resize:vertical}
.fld input:focus,.fld select:focus,.fld textarea:focus{border-color:var(--accent);outline:2px solid color-mix(in srgb,var(--accent) 30%,transparent);outline-offset:0}
.fld.wide{margin-bottom:12px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}
.grid3{display:grid;grid-template-columns:1.4fr 1fr 1.2fr;gap:12px;margin-bottom:10px}
.when{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px;align-items:end}
.when .chk{grid-column:1/-1}
.pair{display:flex;gap:6px;align-items:center}.pair input[type=date]{flex:1.4}.pair input[type=time]{flex:1}
.chk{display:flex;align-items:center;gap:8px;font-size:13px}
.chk input{width:16px;height:16px;accent-color:var(--accent)}
.opts{display:flex;gap:16px;min-height:36px;align-items:center;flex-wrap:wrap}
.rep{border:1px solid var(--line);border-radius:8px;padding:12px;margin-bottom:12px;background:var(--hover-faint,transparent)}
.rep .grid3{margin-bottom:0}
.r-wk,.r-end{margin-top:10px}
.r-end{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.wd{display:flex;gap:6px;margin-top:5px;flex-wrap:wrap}
.wdb{width:34px;height:34px;border-radius:50%;border:1px solid var(--line-strong);background:var(--surface);font-weight:700;font-size:12px}
.wdb.on{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.invite{border:1px dashed var(--line-strong);border-radius:8px;padding:12px;margin-bottom:12px;display:flex;flex-direction:column;gap:10px}
.invite .fld.wide{margin:0}
.subj{font-size:12.5px;color:var(--muted);padding:8px 10px;background:var(--hover);border-radius:6px}.subj b{color:var(--text);font-family:ui-monospace,Consolas,monospace;font-weight:600;overflow-wrap:anywhere}
.err{color:var(--danger);min-height:18px;margin:8px 0 0;font-size:13px;font-weight:600}
.note{display:flex;gap:8px;align-items:center;padding:8px 10px;border-radius:6px;background:var(--hover);margin-bottom:12px;font-size:13px}
.note.warn{background:color-mix(in srgb,var(--warn) 18%,var(--surface))}
.selc{display:flex;align-items:center;gap:8px}.selc select{flex:1}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chipx{display:inline-flex;align-items:center;gap:6px;padding:4px 10px 4px 8px;border-radius:999px;border:1px solid var(--line-strong);background:var(--surface);font-size:12.5px}
.chipx i{width:10px;height:10px;border-radius:50%;background:var(--c)}
.chipx.on{background:color-mix(in srgb,var(--c) 18%,var(--surface));border-color:var(--c);font-weight:700}
.radios{border:0;padding:0;margin:12px 0;display:flex;flex-direction:column;gap:8px}.radios label{display:flex;gap:8px;align-items:center}
.choice{display:flex;flex-direction:column;gap:10px;margin-top:10px}
pre.ics{background:var(--hover);border:1px solid var(--line);border-radius:8px;padding:12px;overflow:auto;max-height:46vh;font:12px/1.5 ui-monospace,Consolas,monospace;margin:10px 0 0;white-space:pre}
.about ol{padding-left:20px}.about li{margin:8px 0}
/* swatches / categorias */
.sw{width:26px;height:26px;border-radius:6px;border:2px solid transparent;background:var(--c);display:inline-grid;place-items:center;color:#fff;padding:0;flex:none}
.sw .ic{width:14px;height:14px;color:#fff}
.sw.on{border-color:var(--text)}.sw.sm{width:16px;height:16px;border-radius:4px;display:inline-block}.sw.big{width:30px;height:30px;border-radius:8px}
.sw:hover{filter:brightness(1.1)}
.pop{position:fixed;z-index:300;background:var(--surface);border:1px solid var(--line-strong);border-radius:10px;box-shadow:0 14px 40px rgba(0,0,0,.28);padding:10px;width:232px}
.cp-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:6px}
.cp-custom{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:12px;color:var(--muted)}.cp-custom input{width:34px;height:26px;padding:0;border:0;background:none}
.cm-list{display:flex;flex-direction:column;gap:6px;margin:12px 0;max-height:42vh;overflow:auto;padding-right:4px}
.cm-row,.cm-add{display:grid;grid-template-columns:30px 1fr 110px 80px 32px;gap:8px;align-items:center}
.cm-add{grid-template-columns:30px 1fr auto;padding-top:10px;border-top:1px solid var(--line)}
.cm-n{font-size:12px;text-align:right}
/* toasts */
#toasts{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);display:flex;flex-direction:column;gap:8px;align-items:center;z-index:500;pointer-events:none;width:max-content;max-width:calc(100vw - 24px)}
.toast{pointer-events:auto;background:#1f2937;color:#fff;padding:10px 16px;border-radius:8px;font-size:13px;box-shadow:0 8px 24px rgba(0,0,0,.35);display:flex;gap:14px;align-items:center;animation:pop .2s;transition:opacity .3s}
.toast.out{opacity:0}.toast-undo{background:transparent;border:0;color:#7dd3fc;font-weight:700;padding:0}
/* login */
.lg-wrap{min-height:100vh;display:grid;place-items:center;padding:20px}
.lg-card{width:100%;max-width:420px;display:flex;flex-direction:column;gap:14px;padding:28px;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:0 20px 60px rgba(0,0,0,.18)}
.lg-brand{display:flex;gap:12px;align-items:center;margin-bottom:6px}.lg-brand b{font-size:19px;display:block}.lg-brand small{color:var(--muted)}
.lg-go{justify-content:center;min-height:42px;font-size:14px}
.lg-demo{border-top:1px solid var(--line);padding-top:14px;display:flex;flex-direction:column;gap:8px;font-size:12.5px}
.lg-users{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.lg-u{display:flex;gap:8px;align-items:center;padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:var(--surface);text-align:left}
.lg-u:hover{background:var(--hover)}
.lg-u i{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--c);color:#fff;font-style:normal;font-weight:700}
.lg-u span{display:flex;flex-direction:column;line-height:1.2}.lg-u small{color:var(--muted);font-size:10.5px;letter-spacing:.04em}
.lg-foot{margin:0;font-size:12px;text-align:center}
@media(max-width:620px){.grid2,.when,.r-end{grid-template-columns:1fr}.grid3{grid-template-columns:1fr 1fr}.cm-row{grid-template-columns:30px 1fr 32px}.cm-row .cm-tipo,.cm-row .cm-n{display:none}.m-back{padding:0;align-items:flex-end}.m-box{max-height:94vh;border-radius:14px 14px 0 0}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/*SHAREDCSS*/
:root{--font:"Segoe UI","Segoe UI Variable",system-ui,-apple-system,Roboto,sans-serif;--bg:#f3f2f1;--surface:#fff;--text:#201f1e;--muted:#5f5d5b;--line:#e1dfdd;--line-faint:#efeeec;--line-strong:#bdbbb9;--hover:#f3f2f1;--hover-faint:#faf9f8;--accent:#0f6cbd;--on-accent:#fff;--danger:#b3261e;--warn:#f7b500;--bar:#0f548c;--today:#e6f1fb;--r-btn:4px;--r-modal:8px}
:root[data-theme=dark]{--bg:#1b1a19;--surface:#292827;--text:#f3f2f1;--muted:#b9b6b3;--line:#3b3a39;--line-faint:#323130;--line-strong:#6b6967;--hover:#353433;--hover-faint:#2f2e2d;--accent:#479ef5;--on-accent:#0b0b0b;--danger:#ff8a80;--bar:#10253a;--today:#1c3350}
body{overflow:hidden}
.app{display:grid;grid-template-rows:auto auto 1fr;height:100vh}
.top{background:var(--bar);color:#fff;display:flex;align-items:center;gap:14px;padding:0 14px;height:48px}
.top .brand{display:flex;align-items:center;gap:9px;font-weight:700;font-size:15px;white-space:nowrap}
.top .brand i{width:26px;height:26px;border-radius:6px;background:#fff;color:var(--bar);display:grid;place-items:center;font-style:normal;font-weight:800;font-size:13px}
.top .srch{flex:1;max-width:560px;margin:0 auto;position:relative}
.top .srch input{width:100%;height:32px;border-radius:5px;border:1px solid rgba(255,255,255,.35);background:rgba(255,255,255,.16);color:#fff;padding:0 12px 0 34px}
.top .srch input::placeholder{color:rgba(255,255,255,.8)}
.top .srch input:focus{background:#fff;color:#201f1e;outline:0}.top .srch input:focus::placeholder{color:#777}
.top .srch .ic{position:absolute;left:10px;top:8px;width:16px;height:16px;opacity:.9}
.top .grp{display:flex;align-items:center;gap:4px;margin-left:auto}
.top .icon-btn{color:#fff}.top .icon-btn:hover{background:rgba(255,255,255,.18);color:#fff}
.sync{display:flex;align-items:center;gap:8px;height:30px;padding:0 10px;border-radius:15px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.25);color:#fff;font-size:12px}
.sync .dot{width:8px;height:8px;border-radius:50%;background:#6ee7a1}
.sync.busy .ic{animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.user{display:flex;align-items:center;gap:8px;padding:3px 8px 3px 3px;border-radius:20px;border:0;background:transparent;color:#fff}
.user:hover{background:rgba(255,255,255,.16)}
.av{width:28px;height:28px;border-radius:50%;background:var(--c);color:#fff;display:inline-grid;place-items:center;font-weight:700;font-size:12px;flex:none}
.user small{display:block;opacity:.8;font-size:10.5px;line-height:1}
.user span{line-height:1.15;text-align:left;font-size:12.5px;font-weight:600}
.tool{display:flex;align-items:center;gap:8px;padding:8px 14px;background:var(--surface);border-bottom:1px solid var(--line);flex-wrap:wrap}
.tool .lbl2{font-size:17px;font-weight:600;min-width:150px;margin:0 6px}
.tool .lbl2::first-letter{text-transform:uppercase}
.tool .sep{width:1px;height:22px;background:var(--line);margin:0 4px}
.seg{display:inline-flex;border:1px solid var(--line-strong);border-radius:5px;overflow:hidden}
.seg button{border:0;background:var(--surface);padding:0 12px;height:32px;font-size:13px;border-right:1px solid var(--line)}
.seg button:last-child{border:0}.seg button:hover{background:var(--hover)}
.seg button.on{background:var(--accent);color:var(--on-accent);font-weight:600}
.tool .chk{font-size:12.5px;color:var(--muted)}
.res{font-size:12.5px;color:var(--muted)}
.body{display:grid;grid-template-columns:272px 1fr;min-height:0}
.side{border-right:1px solid var(--line);background:var(--surface);overflow:auto;padding:12px 12px 24px;display:flex;flex-direction:column;gap:14px}
.sec h3{margin:0 0 6px;font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);display:flex;align-items:center;justify-content:space-between}
.sec h3 button{border:0;background:transparent;font-size:11.5px;color:var(--accent);font-weight:600;text-transform:none;letter-spacing:0;padding:2px 4px}
.mc-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.mc-h b{font-size:13.5px}
.mc{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;text-align:center}
.mc .w{font-size:10.5px;color:var(--muted);padding:3px 0;font-weight:600}
.mc button{border:0;background:transparent;aspect-ratio:1;border-radius:50%;font-size:12px;position:relative;padding:0;color:var(--text)}
.mc button:hover{background:var(--hover)}
.mc button.o{color:var(--muted);opacity:.55}
.mc button.in{background:var(--today);border-radius:0}
.mc button.t{background:var(--accent);color:var(--on-accent);font-weight:700;border-radius:50%}
.mc button.has::after{content:"";position:absolute;left:50%;bottom:3px;width:4px;height:4px;margin-left:-2px;border-radius:50%;background:var(--accent)}
.mc button.t::after{background:#fff}
.lst{display:flex;flex-direction:column;gap:1px}
.row{display:flex;align-items:center;gap:8px;padding:5px 6px;border-radius:5px;font-size:13px;text-align:left;border:0;background:transparent;width:100%}
.row:hover{background:var(--hover)}.row.on{background:var(--today);font-weight:600}
.row .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row .n{font-size:11.5px;color:var(--muted)}
.cb{width:16px;height:16px;border-radius:3px;border:2px solid var(--c);display:inline-grid;place-items:center;flex:none;color:#fff;background:transparent}
.cb.on{background:var(--c)}.cb .ic{width:11px;height:11px;stroke-width:3}
.sq{width:14px;height:14px;border-radius:3px;background:var(--c);flex:none;border:0;padding:0}
button.sq:hover{box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--c)}
.lnk{border:0;background:transparent;color:var(--accent);font-weight:600;font-size:12.5px;padding:6px;text-align:left}
.main{display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--surface)}
.tgs{overflow:auto;flex:1;position:relative}
.stk{position:sticky;top:0;z-index:6;background:var(--surface)}
.tgh{display:grid;grid-template-columns:56px repeat(var(--n),minmax(0,1fr));border-bottom:1px solid var(--line)}
.dh{padding:6px 4px 5px;text-align:center;border-left:1px solid var(--line);cursor:pointer;background:transparent;border-top:0;border-right:0;border-bottom:0}
.dh span{display:block;font-size:11.5px;text-transform:uppercase;color:var(--muted);font-weight:600;letter-spacing:.04em}
.dh b{font-size:21px;font-weight:400;display:inline-grid;place-items:center;min-width:34px;height:34px;border-radius:50%}
.dh.t b{background:var(--accent);color:var(--on-accent);font-weight:600}.dh.t span{color:var(--accent)}
.dh:hover b{background:var(--hover)}.dh.t:hover b{background:var(--accent)}
.adr{display:grid;grid-template-columns:56px repeat(var(--n),minmax(0,1fr));border-bottom:1px solid var(--line-strong);min-height:26px}
.adr .g{font-size:10.5px;color:var(--muted);padding:6px 6px 0 0;text-align:right}
.adc{border-left:1px solid var(--line);padding:2px;display:flex;flex-direction:column;gap:2px;min-width:0}
.chip{display:flex;align-items:center;gap:5px;border:0;border-left:4px solid var(--c);background:color-mix(in srgb,var(--c) 22%,var(--surface));color:var(--text);border-radius:3px;padding:2px 6px;font-size:12px;text-align:left;width:100%;min-width:0;height:20px}
.chip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.chip:hover{filter:brightness(.96)}
.chip.fill{background:var(--c);color:var(--ink,#fff);border-left-color:var(--c)}
.chip.off,.ev.off{opacity:.55;text-decoration:line-through}
.tgb{display:grid;grid-template-columns:56px repeat(var(--n),minmax(0,1fr));position:relative}
.gut{position:relative}
.gut i{position:absolute;right:8px;transform:translateY(-50%);font-style:normal;font-size:11px;color:var(--muted)}
.col{position:relative;border-left:1px solid var(--line);height:calc(24 * var(--hh));background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(var(--line-faint) 1px,transparent 1px);background-size:100% var(--hh),100% calc(var(--hh) / 2);cursor:cell}
.col.t{background-color:color-mix(in srgb,var(--today) 45%,transparent)}
.now{position:absolute;left:0;right:0;height:2px;background:#d13438;z-index:4;pointer-events:none}.now::before{content:"";position:absolute;left:-5px;top:-4px;width:10px;height:10px;border-radius:50%;background:#d13438}
.ev{position:absolute;border-radius:4px;border-left:5px solid var(--c);background:color-mix(in srgb,var(--c) 20%,var(--surface));color:var(--text);padding:2px 6px 2px 6px;overflow:hidden;font-size:12px;line-height:1.25;cursor:pointer;box-shadow:0 0 0 1px color-mix(in srgb,var(--c) 30%,transparent);z-index:2}
.ev:hover{z-index:3;filter:brightness(.97);box-shadow:0 2px 8px rgba(0,0,0,.2),0 0 0 1px var(--c)}
.ev .t{font-weight:700;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:18px}
.ev .s{display:block;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ev.short .t,.ev.short .s{display:inline}.ev.short .s{margin-left:6px}
.ev.tiny .s,.ev.tiny .ow{display:none}.ev.tiny .t{padding-right:0}
.ev.tentative{background-image:repeating-linear-gradient(135deg,transparent 0 6px,color-mix(in srgb,var(--c) 22%,transparent) 6px 12px)}
.ev.free{background:var(--surface);border-left-style:dashed;box-shadow:0 0 0 1px var(--c)}
.ev.oof{background:color-mix(in srgb,var(--c) 45%,var(--surface))}
.ev.drag{opacity:.85;z-index:8;box-shadow:0 8px 24px rgba(0,0,0,.35);cursor:grabbing}
.ev .rz{position:absolute;left:0;right:0;bottom:0;height:7px;cursor:ns-resize}
.ev .ow{position:absolute;right:3px;top:3px;width:16px;height:16px;border-radius:50%;background:var(--oc);color:#fff;font-size:9px;font-weight:800;display:grid;place-items:center}
.ev .cf{position:absolute;right:3px;bottom:3px;color:#d13438}.ev .cf .ic{width:13px;height:13px}
.ev .nv{display:inline-block;background:#d13438;color:#fff;border-radius:3px;font-size:9px;font-weight:800;padding:0 4px;margin-right:4px;vertical-align:1px}
.ghost{position:absolute;left:2px;right:2px;border-radius:4px;background:color-mix(in srgb,var(--accent) 28%,transparent);border:2px dashed var(--accent);z-index:7;pointer-events:none;font-size:11.5px;padding:2px 6px;color:var(--text)}
/* mês */
.mv{display:grid;grid-template-rows:auto 1fr;height:100%;min-height:560px}
.mv-h{display:grid;grid-template-columns:repeat(7,1fr);border-bottom:1px solid var(--line)}
.mv-h div{padding:6px 8px;font-size:11.5px;text-transform:uppercase;font-weight:600;color:var(--muted);letter-spacing:.04em}
.mv-g{display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:minmax(104px,1fr)}
.cell{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:2px 3px 3px;display:flex;flex-direction:column;gap:2px;min-width:0;cursor:cell;overflow:hidden}
.cell.o{background:var(--hover-faint)}
.cell .dn{align-self:flex-start;border:0;background:transparent;font-size:12.5px;min-width:24px;height:24px;border-radius:12px;padding:0 6px;font-weight:600}
.cell.o .dn{color:var(--muted);font-weight:400}.cell .dn:hover{background:var(--hover)}
.cell.t .dn{background:var(--accent);color:var(--on-accent)}
.cell .more{border:0;background:transparent;color:var(--accent);font-size:11.5px;font-weight:600;text-align:left;padding:1px 4px}
/* agenda */
.av-l{max-width:900px;margin:0 auto;padding:12px 20px 40px}
.av-d{display:grid;grid-template-columns:130px 1fr;gap:12px;border-bottom:1px solid var(--line);padding:12px 0}
.av-d h4{margin:0;font-size:14px;text-transform:capitalize}.av-d h4 small{display:block;color:var(--muted);font-weight:400;font-size:12px;text-transform:none}
.av-d.t h4{color:var(--accent)}
.av-i{display:grid;grid-template-columns:110px 1fr auto;gap:10px;align-items:center;border:0;background:transparent;border-left:4px solid var(--c);padding:6px 10px;border-radius:4px;width:100%;text-align:left;margin-bottom:4px}
.av-i:hover{background:var(--hover)}.av-i .tt{font-weight:600}.av-i .tm{color:var(--muted);font-size:12.5px}.av-i small{color:var(--muted)}
.cat-pill{font-size:11px;border-radius:10px;padding:1px 8px;background:color-mix(in srgb,var(--c) 22%,var(--surface));border:1px solid var(--c)}
.empty{padding:50px 20px;text-align:center;color:var(--muted)}
/* popover e menu */
.pv{position:fixed;z-index:150;width:340px;background:var(--surface);border:1px solid var(--line-strong);border-radius:8px;box-shadow:0 14px 44px rgba(0,0,0,.3);overflow:hidden}
.pv-bar{height:6px;background:var(--c)}
.pv-h{display:flex;justify-content:space-between;gap:8px;padding:10px 12px 4px}.pv-h b{font-size:15.5px;line-height:1.25;overflow-wrap:anywhere}
.pv-r{display:flex;gap:9px;align-items:flex-start;padding:3px 12px;font-size:13px}.pv-r .ic{margin-top:2px;color:var(--muted)}
.pv-f{display:flex;gap:6px;padding:10px 12px;border-top:1px solid var(--line);margin-top:8px;background:var(--hover-faint)}
.pv .cat-pill{margin-right:4px}
.ctx{position:fixed;z-index:160;min-width:230px;background:var(--surface);border:1px solid var(--line-strong);border-radius:8px;box-shadow:0 12px 36px rgba(0,0,0,.3);padding:4px}
.ctx .it{display:flex;gap:9px;align-items:center;width:100%;padding:7px 10px;border:0;background:transparent;border-radius:5px;text-align:left;font-size:13px}.ctx .it:hover{background:var(--hover)}
.ctx hr{border:0;border-top:1px solid var(--line);margin:4px 0}.ctx .h{font-size:11px;text-transform:uppercase;color:var(--muted);padding:6px 10px 2px;letter-spacing:.04em}
.ctx .cl{max-height:200px;overflow:auto}
.dd{position:fixed;z-index:160;min-width:240px;background:var(--surface);border:1px solid var(--line-strong);border-radius:8px;box-shadow:0 12px 36px rgba(0,0,0,.3);padding:4px}
.dd .it{display:flex;gap:9px;align-items:center;width:100%;padding:8px 10px;border:0;background:transparent;border-radius:5px;text-align:left;font-size:13px}.dd .it:hover{background:var(--hover)}
.dd hr{border:0;border-top:1px solid var(--line);margin:4px 0}
.hamb{display:none}
.lg-page{min-height:100vh;background:linear-gradient(135deg,#0f548c,#0f6cbd 55%,#2b88d8)}
@media(max-width:980px){.body{grid-template-columns:1fr}.side{position:fixed;left:0;top:48px;bottom:0;width:290px;z-index:120;transform:translateX(-100%);transition:transform .2s;box-shadow:8px 0 30px rgba(0,0,0,.3)}.side.open{transform:none}.hamb{display:inline-grid}.top .srch{max-width:none}.user span{display:none}.sync b{display:none}}
@media(max-width:640px){.seg button{padding:0 8px}.tool .lbl2{font-size:15px;min-width:0}.tgh,.adr,.tgb{grid-template-columns:40px repeat(var(--n),minmax(0,1fr))}}
@media print{.top,.tool,.side,.pv,.ctx{display:none!important}.body{display:block}body{overflow:visible}.app{display:block;height:auto}.tgs{overflow:visible}}

/* ---- produção ---- */
.toast.err{background:#9b1c1c}
.sync.err{background:rgba(179,38,30,.35);border-color:rgba(255,160,150,.7)}
.sync.err .dot{background:#ff6b5e}
.lg-page{background:var(--bg)}
.lg-foot{margin:4px 0 0;font-size:12px;text-align:center}
.ps-row{display:grid;grid-template-columns:28px minmax(120px,1.2fr) minmax(90px,.8fr) minmax(120px,1fr) minmax(150px,1fr);gap:8px;align-items:center;padding:6px 0;border-bottom:1px solid var(--line-faint)}
.ps-n{display:flex;flex-direction:column;min-width:0}.ps-n small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ps-row input,.ps-row select{min-width:0;height:30px}
.note.warn{border-color:var(--warn)}
@media(max-width:700px){.ps-row{grid-template-columns:28px 1fr;}.ps-row input,.ps-row select{grid-column:1/-1}}
