/* Estate CRM — dense working UI. Cool tracing-paper ground, ink text, survey-blue actions, inventory colours as the only loud thing. */
:root{--paper:#e8ebed;--panel:#fff;--tint:#f2f4f5;--line:#cfd5da;--line2:#e1e5e8;--ink:#15212a;--muted:#5b6872;--acc:#1c5a8a;--acc2:#e6eef5;
--ok:#2b7a4b;--warn:#a76a00;--bad:#b3261e;--avail:#3f9b5f;--hold:#e0a526;--blocked:#8a96a3;--booked:#2a3844;--reg:#6f4e9c;--cancel:#c9ced3;
--f:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;--fc:'IBM Plex Sans Condensed','IBM Plex Sans',system-ui,sans-serif}
*{box-sizing:border-box}html{font-size:13px}
body{margin:0;background:var(--paper);color:var(--ink);font:400 13px/1.35 var(--f);font-variant-numeric:tabular-nums}
a{color:var(--acc);text-decoration:none}a:hover{text-decoration:underline}
h1,h2,h3{margin:0;font-weight:600}
.muted{color:var(--muted)}.r{text-align:right}.c{text-align:center}.nw{white-space:nowrap}.sm{font-size:12px}
.shell{display:grid;grid-template-columns:184px 1fr;min-height:100vh}
.side{background:var(--panel);border-right:1px solid var(--line);padding:0 0 20px;position:sticky;top:0;height:100vh;overflow:auto}
.brand{display:block;padding:11px 14px 10px;border-bottom:1px solid var(--line);color:var(--ink)}.brand:hover{text-decoration:none}
.brand b{display:block;font:600 15px var(--fc);letter-spacing:.1px}.brand small{color:var(--muted);font-size:11px}
.side nav{padding:8px 0 2px}.gl{padding:0 14px 3px;color:var(--muted);font:500 11px var(--fc)}
.side nav a{display:flex;justify-content:space-between;align-items:center;padding:4px 14px;color:var(--ink);border-left:3px solid transparent}
.side nav a:hover{background:var(--tint);text-decoration:none}.side nav a.on{background:var(--acc2);border-left-color:var(--acc);font-weight:500}
.cnt{font-style:normal;background:var(--bad);color:#fff;border-radius:8px;padding:0 5px;font-size:11px;margin-left:5px}
.top{display:flex;align-items:center;gap:10px;height:42px;padding:0 14px;background:var(--panel);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}
.gsearch{flex:1;max-width:420px}.gsearch input{width:100%;height:28px;border:1px solid var(--line);border-radius:2px;padding:0 9px;background:var(--tint)}
.who{margin-left:auto;font-weight:500;text-align:right;line-height:1.1}.who small{display:block;color:var(--muted);font-weight:400;font-size:11px}
.bell{color:var(--ink);margin-left:6px}.att{margin:0}.burger{display:none}
.content{padding:14px 16px 40px;max-width:1500px}
.ptitle{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:10px;flex-wrap:wrap}.ptitle h1{font:600 18px var(--fc)}.acts{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:3px;margin-bottom:12px}
.ph{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 10px;background:var(--tint);border-bottom:1px solid var(--line);border-radius:3px 3px 0 0}
.ph h2{font:600 13px var(--fc)}.pb{padding:10px}.pb.flush{padding:0}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.g3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.g21{display:grid;grid-template-columns:2fr 1fr;gap:12px}.g12{display:grid;grid-template-columns:1fr 2fr;gap:12px}
.g2>.panel,.g3>.panel,.g21>.panel,.g12>.panel{margin-bottom:0}.g2,.g3,.g21,.g12{margin-bottom:12px}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));background:var(--panel);border:1px solid var(--line);border-radius:3px;margin-bottom:12px}
.kpi{padding:8px 12px;border-right:1px solid var(--line2);border-bottom:1px solid var(--line2)}
.kpi label{display:block;color:var(--muted);font-size:11.5px}.kpi b{display:block;font:600 19px/1.15 var(--fc)}.kpi small{color:var(--muted);font-size:11px}
.kpi.bad b{color:var(--bad)}.kpi.ok b{color:var(--ok)}
.tw{overflow:auto;max-height:620px}
table.dt{width:100%;border-collapse:collapse}
.dt th{position:sticky;top:0;background:var(--tint);text-align:left;font:600 12px var(--fc);padding:5px 8px;border-bottom:1px solid var(--line);white-space:nowrap;color:#33424d}
.dt td{padding:4px 8px;border-bottom:1px solid var(--line2);vertical-align:top}
.dt tbody tr:hover{background:#f7f9fa}.dt th.r,.dt td.r{text-align:right}.dt tr.late td{background:#fdf1f0}.dt tr.sel td{background:var(--acc2)}
.dt tfoot td{font-weight:600;background:var(--tint);border-top:1px solid var(--line)}
.empty{padding:16px;color:var(--muted);text-align:center}
.chip{display:inline-block;padding:0 6px;border:1px solid var(--c);color:var(--c);background:color-mix(in srgb,var(--c) 9%,#fff);border-radius:2px;font-size:11.5px;line-height:17px;white-space:nowrap}
.btn,button.btn{display:inline-flex;align-items:center;gap:4px;height:28px;padding:0 11px;border:1px solid var(--line);border-radius:2px;background:#fff;color:var(--ink);font:500 12.5px var(--f);cursor:pointer}
.btn:hover{background:var(--tint);text-decoration:none}.btn.pri{background:var(--acc);border-color:var(--acc);color:#fff}.btn.pri:hover{background:#174a72}
.btn.sm{height:24px;padding:0 8px;font-size:12px}.btn.bad{color:var(--bad);border-color:#e4b9b6}.btn.ok{background:var(--ok);border-color:var(--ok);color:#fff}.btn.wa{background:#1f8f55;border-color:#1f8f55;color:#fff}
input,select,textarea{font:400 13px var(--f);color:var(--ink);border:1px solid var(--line);border-radius:2px;background:#fff;padding:0 7px;height:28px;max-width:100%}
textarea{height:auto;padding:5px 7px;width:100%}input:focus,select:focus,textarea:focus,.btn:focus-visible,a:focus-visible{outline:2px solid var(--acc);outline-offset:-1px}
.f{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px 12px}.f label{display:block;color:var(--muted);font-size:11.5px;margin-bottom:2px}.f input,.f select{width:100%}.f .w2{grid-column:span 2}.f .wf{grid-column:1/-1}
.inl{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.inl input,.inl select{height:26px}
.flash{padding:7px 11px;margin-bottom:10px;border-left:4px solid var(--ok);background:#e9f5ee}.flash.err{border-color:var(--bad);background:#fbeceb}
.rbar{display:flex;gap:4px;align-items:center;flex-wrap:wrap}.rbar button{height:24px;padding:0 9px;border:1px solid var(--line);background:#fff;border-radius:2px;font:500 12px var(--f);cursor:pointer}.rbar button.on{background:var(--ink);color:#fff;border-color:var(--ink)}.rbar input{height:24px}.sep{width:8px}
.bar{display:inline-block;width:80px;height:7px;background:var(--line2);border-radius:1px;vertical-align:middle;margin-right:5px}.bar i{display:block;height:100%}
.fun{display:grid;grid-template-columns:130px 1fr 54px 46px;gap:2px 8px;align-items:center;padding:2px 0}.fun .bar{width:100%;height:12px}
.tabs{display:flex;gap:0;border-bottom:1px solid var(--line);background:var(--tint);overflow:auto}.tabs button{border:0;background:none;padding:7px 12px;font:500 12.5px var(--f);cursor:pointer;color:var(--muted);border-bottom:2px solid transparent;white-space:nowrap}
.tabs button.on{color:var(--ink);border-bottom-color:var(--acc);background:#fff}.tp{display:none}.tp.on{display:block}
.tl{list-style:none;margin:0;padding:0;max-height:430px;overflow:auto}.tl li{display:grid;grid-template-columns:88px 1fr;gap:8px;padding:5px 10px;border-bottom:1px solid var(--line2)}.tl time{color:var(--muted);font-size:11.5px}.tl .t{font-weight:500;color:var(--acc)}
.kv{display:grid;grid-template-columns:105px 1fr;gap:3px 8px}.kv dt{color:var(--muted)}.kv dd{margin:0}
.split{display:grid;grid-template-columns:330px 1fr;gap:12px;align-items:start}.ql{max-height:76vh;overflow:auto}.ql a{display:block;padding:6px 10px;border-bottom:1px solid var(--line2);color:var(--ink)}.ql a:hover{background:var(--tint);text-decoration:none}.ql a.on{background:var(--acc2);box-shadow:inset 3px 0 var(--acc)}
.ql b{font-weight:500}.ql small{display:flex;justify-content:space-between;color:var(--muted)}
.disp{display:flex;flex-wrap:wrap;gap:4px}.disp label{margin:0}.disp input{position:absolute;opacity:0;width:0}.disp span{display:inline-block;padding:3px 8px;border:1px solid var(--line);border-radius:2px;cursor:pointer;background:#fff;font-size:12px}.disp input:checked+span{background:var(--ink);color:#fff;border-color:var(--ink)}
.kb{display:flex;gap:8px;overflow:auto;align-items:flex-start;padding-bottom:8px}.kc{flex:0 0 218px;background:#dde2e5;border-radius:3px}.kc h3{padding:6px 8px;font:600 12px var(--fc);display:flex;justify-content:space-between;border-top:3px solid var(--c)}
.kc .cards{padding:0 5px 5px;min-height:40px}.card{background:#fff;border:1px solid var(--line);border-radius:2px;padding:5px 7px;margin-bottom:5px;cursor:grab;font-size:12px}.card b{font-weight:500}.card small{display:flex;justify-content:space-between;color:var(--muted)}.kc.over{outline:2px dashed var(--acc)}
.elev{border-collapse:separate;border-spacing:2px;margin:0 auto}.elev th{font:500 11px var(--fc);color:var(--muted);padding:0 6px;white-space:nowrap}
.u{min-width:62px;height:38px;text-align:center;font-size:11px;line-height:1.15;padding:3px;border-radius:1px;color:#fff;cursor:pointer;vertical-align:middle}.u b{display:block;font-size:12px}
.u.available{background:var(--avail)}.u.hold{background:var(--hold);color:#2a1d00}.u.blocked{background:var(--blocked)}.u.booked{background:var(--booked);background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.12) 0 3px,transparent 3px 6px)}.u.registered{background:var(--reg)}.u.cancelled{background:var(--cancel);color:#455}.u.none{background:transparent}
.u.sel{outline:3px solid var(--acc)}.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:12px}.legend i{display:inline-block;width:11px;height:11px;margin-right:4px;vertical-align:-1px}
.alert{display:flex;gap:8px;padding:5px 10px;border-bottom:1px solid var(--line2)}.alert:before{content:'';flex:0 0 3px;background:var(--bad)}.alert.w:before{background:var(--hold)}.alert.i:before{background:var(--acc)}
.login{max-width:340px;margin:12vh auto}.login .panel{padding:0}.login h1{font:600 22px var(--fc);margin-bottom:2px}
.sheet{background:#fff;max-width:820px;margin:0 auto;padding:28px 34px;border:1px solid var(--line)}.sheet h1{font:600 20px var(--fc)}.sheet table{width:100%;border-collapse:collapse}.sheet td,.sheet th{padding:4px 6px;border-bottom:1px solid var(--line2);text-align:left}.sheet td.r,.sheet th.r{text-align:right}.sheet tr.tot td{font-weight:600;border-top:2px solid var(--ink)}
.score{display:inline-block;min-width:26px;text-align:center;font-weight:600;border-radius:2px;padding:0 4px;color:#fff;background:var(--blocked)}.score.h{background:var(--bad)}.score.m{background:var(--hold);color:#2a1d00}
.ai{white-space:pre-wrap;background:var(--tint);border-left:3px solid var(--acc);padding:8px 10px}
@media(max-width:980px){.shell{grid-template-columns:1fr}.side{position:fixed;z-index:30;left:-200px;width:184px;transition:left .15s}.side.open{left:0}.burger{display:inline-block}.g2,.g3,.g21,.g12,.split{grid-template-columns:1fr}.who small{display:none}.gsearch{display:none}}
@media print{.side,.top,.noprint,.flash{display:none!important}.shell{display:block}.content{padding:0}.sheet{border:0;max-width:none;padding:0}body{background:#fff}}
