:root{--bg:#f5f4f0;--sf:#fff;--sf2:#f0efe9;--bd:rgba(0,0,0,.08);--bdm:rgba(0,0,0,.14);--tx:#1a1916;--tx2:#6b6a65;--tx3:#a09f9a;--ac:#1a1916;--acf:#fff;--r:10px;--rl:14px;--sw:214px;--th:52px;--dbg:#FCEBEB;--dfg:#791F1F;--pbg:#EEEDFE;--pfg:#3C3489;--tbg:#E1F5EE;--tfg:#085041;--abg:#FAEEDA;--afg:#633806;--cbg:#FAECE7;--cfg:#712B13;--bbg:#E6F1FB;--bfg:#0C447C;--gbg:#EAF3DE;--gfg:#27500A;--rbg:#FCEBEB;--rfg:#791F1F}
[data-theme=dark]{--bg:#111110;--sf:#1c1c1a;--sf2:#252523;--bd:rgba(255,255,255,.08);--bdm:rgba(255,255,255,.14);--tx:#e8e6e0;--tx2:#9b9991;--tx3:#5c5a56;--ac:#e8e6e0;--acf:#111110;--pbg:#26215C;--pfg:#AFA9EC;--tbg:#04342C;--tfg:#9FE1CB;--abg:#412402;--afg:#FAC775;--cbg:#4A1B0C;--cfg:#F0997B;--bbg:#042C53;--bfg:#85B7EB;--gbg:#173404;--gfg:#C0DD97;--rbg:#501313;--rfg:#F09595;--dbg:#501313;--dfg:#F09595}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{font-family:'DM Sans',sans-serif;background:var(--bg);color:var(--tx);font-size:14px;line-height:1.5;min-height:100vh}
button,input,select,textarea{font-family:inherit}

/* login */
.lwrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg)}
.lbox{background:var(--sf);border:1px solid var(--bd);border-radius:var(--rl);padding:32px;width:380px;max-width:95vw}
.lerr{font-size:13px;color:var(--rfg);background:var(--rbg);border-radius:7px;padding:10px 12px;margin-bottom:14px;display:none}
.lerr.on{display:block}

/* layout */
.topbar{height:var(--th);background:var(--sf);border-bottom:1px solid var(--bd);display:flex;align-items:center;justify-content:space-between;padding:0 20px;position:sticky;top:0;z-index:100}
.barea{display:flex;flex:1;min-height:calc(100vh - var(--th))}
.sidebar{width:var(--sw);background:var(--sf);border-right:1px solid var(--bd);padding:16px 10px;flex-shrink:0;position:sticky;top:var(--th);height:calc(100vh - var(--th));overflow-y:auto}
.main{flex:1;padding:28px 32px;min-width:0}
.logo{display:flex;align-items:center;gap:10px;cursor:pointer}
.lmark{width:30px;height:30px;border-radius:7px;background:var(--ac);display:flex;align-items:center;justify-content:center}
.lname{font-size:14px;font-weight:500;letter-spacing:-.2px}
.tr{display:flex;align-items:center;gap:6px}
.tnav{font-size:13px;color:var(--tx2);background:none;border:none;padding:5px 10px;border-radius:7px;cursor:pointer}
.tnav:hover,.tnav.on{background:var(--sf2);color:var(--tx)}.tnav.on{font-weight:500}
.thbtn{width:30px;height:30px;border-radius:7px;background:none;border:1px solid var(--bdm);display:flex;align-items:center;justify-content:center;color:var(--tx2);cursor:pointer}
.thbtn:hover{background:var(--sf2)}

/* avatar + menu */
.avt-wrap{position:relative}
.avt{width:30px;height:30px;border-radius:50%;background:var(--ac);color:var(--acf);font-size:11px;font-weight:500;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center}
.umenu{position:absolute;top:calc(100% + 8px);right:0;width:220px;background:var(--sf);border:1px solid var(--bdm);border-radius:var(--rl);box-shadow:0 4px 16px rgba(0,0,0,.12);z-index:300;overflow:hidden;display:none}
.umenu.on{display:block}
.umenu-hdr{padding:12px 14px;background:var(--sf2)}
.umenu-sep{height:1px;background:var(--bd);margin:4px 0}
.umenu-item{display:flex;align-items:center;gap:8px;width:100%;padding:9px 14px;font-size:13px;color:var(--tx2);background:none;border:none;text-align:left;cursor:pointer;transition:background .1s}
.umenu-item:hover{background:var(--sf2);color:var(--tx)}
.umenu-item svg{flex-shrink:0;opacity:.7}
.umenu-item.danger{color:var(--rfg)}.umenu-item.danger:hover{background:var(--rbg)}

/* sidebar */
.slbl{font-size:10px;font-weight:500;color:var(--tx3);text-transform:uppercase;letter-spacing:.7px;padding:12px 10px 5px;display:block}
.sbtn{display:flex;align-items:center;gap:8px;width:100%;padding:7px 10px;border-radius:7px;font-size:13px;color:var(--tx2);background:none;border:none;text-align:left;cursor:pointer;transition:background .1s}
.sbtn:hover{background:var(--sf2);color:var(--tx)}.sbtn.on{background:var(--sf2);color:var(--tx);font-weight:500}
.sbtn svg{flex-shrink:0;opacity:.6}.sbtn.on svg{opacity:1}
.dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}

/* page */
.bc{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--tx3);margin-bottom:8px;flex-wrap:wrap}
.bc span{color:var(--tx2);cursor:pointer}.bc span:hover{color:var(--tx);text-decoration:underline}
.bcs{color:var(--tx3)!important;cursor:default!important}
.ptitle{font-size:20px;font-weight:500;letter-spacing:-.3px}
.psub{font-size:13px;color:var(--tx2);margin-top:3px}.ph{margin-bottom:24px}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:24px}
.stat{background:var(--sf2);border-radius:var(--r);padding:14px 16px}
.sl{font-size:11px;color:var(--tx2);margin-bottom:4px}.sv{font-size:22px;font-weight:500;letter-spacing:-.5px}
.acts{display:flex;gap:8px;margin-bottom:22px;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:8px;font-size:13px;border:1px solid var(--bdm);background:var(--sf);color:var(--tx);cursor:pointer;transition:background .1s;white-space:nowrap}
.btn:hover{background:var(--sf2)}.btn svg{width:14px;height:14px;flex-shrink:0}
.btnp{background:var(--ac);color:var(--acf);border-color:var(--ac)}.btnp:hover{opacity:.88}
.btnd{background:var(--dbg);color:var(--dfg);border-color:transparent}.btnd:hover{opacity:.85}
.ibtn{width:28px;height:28px;border-radius:6px;background:none;border:none;display:inline-flex;align-items:center;justify-content:center;color:var(--tx3);cursor:pointer}
.ibtn:hover{background:var(--sf2);color:var(--tx)}.ibtn.del:hover{background:var(--dbg);color:var(--dfg)}
.card{background:var(--sf);border:1px solid var(--bd);border-radius:var(--rl);overflow:hidden}

/* empreendimentos */
.egrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px;margin-bottom:24px}
.ecard{background:var(--sf);border:1px solid var(--bd);border-radius:var(--rl);padding:18px;cursor:pointer;transition:border-color .15s;position:relative}
.ecard:hover{border-color:var(--bdm)}.ecard-a{position:absolute;top:12px;right:12px;display:none;gap:4px}.ecard:hover .ecard-a{display:flex}
.ebadge{display:inline-block;font-size:11px;font-weight:500;padding:3px 9px;border-radius:20px;margin-bottom:10px}
.bs{background:var(--pbg);color:var(--pfg)}.bb{background:var(--tbg);color:var(--tfg)}.bp{background:var(--abg);color:var(--afg)}
.en{font-size:14px;font-weight:500;margin-bottom:3px}.el{font-size:12px;color:var(--tx2);margin-bottom:14px}
.em{display:flex;justify-content:space-between;font-size:11px;color:var(--tx3);border-top:1px solid var(--bd);padding-top:10px}
.addc{border:1px dashed var(--bdm);border-radius:var(--rl);padding:18px;display:flex;align-items:center;justify-content:center;gap:8px;font-size:13px;color:var(--tx2);background:none;width:100%;cursor:pointer;transition:background .1s}
.addc:hover{background:var(--sf2);color:var(--tx)}

/* pastas */
.fgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px;margin-bottom:24px}
.fcard{background:var(--sf);border:1px solid var(--bd);border-radius:var(--r);padding:14px;cursor:pointer;transition:border-color .15s;position:relative}
.fcard:hover{border-color:var(--bdm)}.fcard-a{position:absolute;top:8px;right:8px;display:none;gap:2px}.fcard:hover .fcard-a{display:flex}
.ficon{width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;margin-bottom:10px}

/* arquivos */
.frow{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--bd);cursor:pointer;transition:background .1s}
.frow:last-child{border-bottom:none}.frow:hover{background:var(--sf2)}
.frow-a{display:none;gap:2px;margin-left:auto;flex-shrink:0}.frow:hover .frow-a{display:flex}
.fext{width:34px;height:34px;border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:500;flex-shrink:0;font-family:'DM Mono',monospace}
.xpdf{background:var(--rbg);color:var(--rfg)}.xdwg{background:var(--pbg);color:var(--pfg)}.ximg{background:var(--tbg);color:var(--tfg)}.xxls{background:var(--gbg);color:var(--gfg)}.xdoc{background:var(--bbg);color:var(--bfg)}.xzip{background:var(--abg);color:var(--afg)}
.fi2{flex:1;min-width:0}.fn2{font-weight:500;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fm2{font-size:11px;color:var(--tx3);margin-top:2px}
.fsz{font-size:11px;color:var(--tx3);flex-shrink:0;font-family:'DM Mono',monospace;margin-right:6px}

/* badges */
.badge{display:inline-block;font-size:11px;font-weight:500;padding:3px 8px;border-radius:20px}
.ba{background:var(--rbg);color:var(--rfg)}.be{background:var(--tbg);color:var(--tfg)}.bv{background:var(--sf2);color:var(--tx2)}

/* calendário */
.cwrap{display:grid;grid-template-columns:1fr 290px;gap:20px}
.cgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.ch{font-size:11px;color:var(--tx3);text-align:center;padding:6px 0}
.cd{font-size:12px;text-align:center;padding:8px 4px;border-radius:6px;cursor:pointer;color:var(--tx2);position:relative}
.cd:hover{background:var(--sf2)}.cd.tod{background:var(--ac);color:var(--acf);font-weight:500}.cd.oth{color:var(--tx3)}
.cd.evt::after{content:'';position:absolute;bottom:3px;left:50%;transform:translateX(-50%);width:3px;height:3px;border-radius:50%;background:#378ADD}
.cd.tod.evt::after{background:rgba(255,255,255,.7)}
.evlist{display:flex;flex-direction:column;gap:8px;margin-top:4px}
.evitem{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;background:var(--sf2);border-radius:8px}
.evitem-a{display:none;gap:2px;margin-left:auto;flex-shrink:0}.evitem:hover .evitem-a{display:flex}
.evdot{width:7px;height:7px;border-radius:50%;margin-top:4px;flex-shrink:0}

/* notas */
.ncard{background:var(--sf);border:1px solid var(--bd);border-radius:var(--r);padding:16px;margin-bottom:12px;position:relative}
.ncard-a{position:absolute;top:12px;right:12px;display:none;gap:2px}.ncard:hover .ncard-a{display:flex}

/* usuários */
.urow{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--bd)}.urow:last-child{border-bottom:none}
.uavt{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:500;flex-shrink:0;background:var(--sf2);color:var(--tx)}

/* share panel */
.spanel{background:var(--sf2);border-radius:var(--r);padding:16px;margin-bottom:16px;border:1px solid var(--bd)}
.prow{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--bd);font-size:13px}
.prow:last-child{border-bottom:none}
.nsel{padding:4px 8px;border-radius:6px;border:1px solid var(--bdm);font-size:12px;background:var(--sf);color:var(--tx);cursor:pointer}

/* viewer */
.vbar{display:flex;align-items:center;gap:10px;padding:12px 16px;background:var(--sf);border-bottom:1px solid var(--bd)}
.vbody{background:var(--sf2);min-height:400px;display:flex;align-items:center;justify-content:center}
.vbody img{max-width:100%;max-height:500px;border-radius:4px}
.vbody iframe{width:100%;height:500px;border:none}
.vph{text-align:center;padding:40px;color:var(--tx3)}

/* modal */
.movl{display:none;position:fixed;inset:0;z-index:200;background:rgba(0,0,0,.45);align-items:center;justify-content:center;padding:20px}
.movl.on{display:flex}
.modal{background:var(--sf);border-radius:var(--rl);padding:24px;width:440px;max-width:100%;border:1px solid var(--bdm);max-height:90vh;overflow-y:auto}
.mhdr{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}
.mtitle{font-size:16px;font-weight:500}
.fg{margin-bottom:14px}.fl{font-size:12px;color:var(--tx2);margin-bottom:5px;display:block}
.fi,.fsel,.fta{width:100%;padding:8px 10px;border-radius:7px;border:1px solid var(--bdm);font-size:13px;background:var(--sf);color:var(--tx);outline:none}
.fi:focus,.fsel:focus,.fta:focus{border-color:var(--ac)}.fta{resize:vertical}
.macts{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}

/* toast */
.toast{position:fixed;bottom:24px;right:24px;background:var(--ac);color:var(--acf);padding:10px 18px;border-radius:8px;font-size:13px;z-index:9999;opacity:0;transform:translateY(8px);transition:opacity .2s,transform .2s;pointer-events:none}
.toast.on{opacity:1;transform:translateY(0)}

/* spin inline (usado no botão de login) */
.spin-inline{width:14px;height:14px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:sp .6s linear infinite;display:inline-block;vertical-align:middle;margin-right:6px}
@keyframes sp{to{transform:rotate(360deg)}}

@media(max-width:700px){.sidebar{display:none}.main{padding:16px}.stats{grid-template-columns:1fr 1fr}.cwrap{grid-template-columns:1fr}}
