:root{
  --red:#E63329; --red-d:#C4241B; --red-t:#FDECEA;
  --ink:#1A1A1A; --ink2:#262626; --ink3:#333;
  --bg:#F4F4F4; --card:#FFFFFF; --line:#E5E5E5; --line2:#EFEFEF;
  --muted:#6B6B6B; --muted2:#8E8E8E;
  --ok:#1E8E4E; --ok-t:#E6F4EC; --warn:#B7791F; --warn-t:#FDF3E1;
  --info:#2563C9; --info-t:#E8F0FC; --vio:#6B4FD8; --vio-t:#EFEBFC;
  --teal:#0F7F7A; --teal-t:#E3F3F2; --org:#C2570C; --org-t:#FDEEE3;
  --gray-t:#EEEEEE;
  --r:10px; --sh:0 1px 2px rgba(0,0,0,.05),0 4px 14px rgba(0,0,0,.05);
  --side:244px; --top:62px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:'Open Sans',system-ui,sans-serif;font-size:14px;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;line-height:1.45}
h1,h2,h3,h4,.mont{font-family:'Montserrat',system-ui,sans-serif;margin:0;letter-spacing:-.01em}
h1{font-size:26px;font-weight:700}
h2{font-size:18px;font-weight:700}
h3{font-size:15px;font-weight:700}
a{color:var(--red)}
button{font-family:inherit;font-size:inherit;cursor:pointer}
input,select,textarea{font-family:inherit;font-size:14px;color:var(--ink)}
.eyebrow{font-family:'Montserrat';font-weight:700;font-size:10.5px;letter-spacing:.32em;text-transform:uppercase;color:var(--red)}
.muted{color:var(--muted)} .small{font-size:12.5px} .tiny{font-size:11.5px}
.row{display:flex;gap:10px;align-items:center} .wrap{flex-wrap:wrap} .grow{flex:1} .between{justify-content:space-between}
.hide{display:none!important}
svg.i{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}

/* ===== Login ===== */
.login{min-height:100vh;display:grid;grid-template-columns:1.05fr 1fr}
.login-brand{background:var(--ink);color:#fff;position:relative;padding:56px 56px 40px 92px;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden}
.login-brand:before{content:"";position:absolute;left:0;top:0;bottom:0;width:44px;background:var(--red)}
.login-brand:after{content:"";position:absolute;right:-120px;bottom:-120px;width:380px;height:380px;border-radius:50%;border:56px solid rgba(230,51,41,.12)}
.login-brand img{width:92px;height:auto;filter:drop-shadow(0 6px 18px rgba(0,0,0,.35))}
.login-brand .big{font-family:'Montserrat';font-weight:800;font-size:54px;line-height:1.02;margin:22px 0 14px;letter-spacing:-.01em}
.login-brand .big span{color:var(--red);display:block}
.login-brand .tag{font-style:italic;color:#d6d6d6;font-size:17px}
.login-brand .feat{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:40px;max-width:520px;position:relative;z-index:1}
.login-brand .feat div{border-left:3px solid var(--red);padding:4px 0 4px 12px;color:#e9e9e9;font-size:13px}
.login-brand .feat b{display:block;font-family:'Montserrat';color:#fff;font-size:13.5px}
.login-brand .foot{color:#8a8a8a;font-size:11px;letter-spacing:.25em;text-transform:uppercase;position:relative;z-index:1}
.login-form{background:#fff;display:flex;align-items:center;justify-content:center;padding:40px 28px}
.login-box{width:100%;max-width:420px}
.login-box h1{font-size:28px;margin:8px 0 6px}
.demo-list{display:grid;gap:8px;margin-top:10px}
.demo{display:flex;align-items:center;gap:12px;border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px 12px;text-align:left;transition:.15s}
.demo:hover{border-color:var(--red);box-shadow:0 0 0 3px var(--red-t)}
.demo .av{width:36px;height:36px;border-radius:8px;display:grid;place-items:center;font-family:'Montserrat';font-weight:800;color:#fff;font-size:12px;flex:none}
.demo b{font-family:'Montserrat';font-size:13.5px;display:block}
.sep{display:flex;align-items:center;gap:12px;color:var(--muted2);font-size:12px;margin:22px 0 6px}
.sep:before,.sep:after{content:"";flex:1;height:1px;background:var(--line)}

/* ===== Shell ===== */
.top{position:sticky;top:0;z-index:30;height:var(--top);background:var(--ink);color:#fff;display:flex;align-items:center;gap:14px;padding:0 18px 0 0;border-bottom:3px solid var(--red)}
.top .brand{width:var(--side);display:flex;align-items:center;gap:10px;padding-left:18px;flex:none}
.top .brand img{width:38px;height:38px}
.top .brand b{font-family:'Montserrat';font-weight:800;font-size:14px;line-height:1.05;letter-spacing:.01em}
.top .brand b span{color:var(--red)}
.top .ctx{font-family:'Montserrat';font-weight:700;font-size:11px;letter-spacing:.28em;text-transform:uppercase;color:#bdbdbd}
.top .proto{background:#333;border:1px solid #444;color:#ddd;border-radius:20px;padding:4px 10px 4px 12px;font-size:12px;display:flex;align-items:center;gap:8px}
.top .proto select{background:transparent;border:0;color:#fff;font-weight:600;max-width:190px;outline:none}
.top .proto select option{color:#000}
.iconbtn{position:relative;background:transparent;border:0;color:#fff;width:38px;height:38px;border-radius:8px;display:grid;place-items:center}
.iconbtn:hover{background:#2e2e2e}
.badge{position:absolute;top:4px;right:3px;background:var(--red);color:#fff;font-size:10px;font-weight:700;min-width:17px;height:17px;border-radius:9px;display:grid;place-items:center;padding:0 4px;border:2px solid var(--ink)}
.user{display:flex;align-items:center;gap:9px;padding:4px 6px 4px 4px;border-radius:24px;background:#2a2a2a;border:1px solid #3a3a3a}
.user .av{width:30px;height:30px;border-radius:50%;background:var(--red);display:grid;place-items:center;font-weight:700;font-size:12px;font-family:'Montserrat'}
.user .nm{font-size:12.5px;line-height:1.15;padding-right:6px}
.user .nm small{display:block;color:#a9a9a9;font-size:11px}
.layout{display:flex;min-height:calc(100vh - var(--top))}
.side{width:var(--side);background:#fff;border-right:1px solid var(--line);padding:16px 12px;position:sticky;top:var(--top);height:calc(100vh - var(--top));overflow:auto;flex:none;display:flex;flex-direction:column;gap:3px}
.nav{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:8px;color:var(--ink3);font-weight:600;background:none;border:0;width:100%;text-align:left;position:relative}
.nav:hover{background:var(--bg)}
.nav.on{background:var(--red-t);color:var(--red-d)}
.nav.on:before{content:"";position:absolute;left:-12px;top:8px;bottom:8px;width:4px;border-radius:0 4px 4px 0;background:var(--red)}
.nav .cnt{margin-left:auto;background:var(--red);color:#fff;font-size:11px;border-radius:10px;padding:1px 7px}
.side .lbl{font-size:10.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--muted2);font-weight:700;padding:14px 12px 6px;font-family:'Montserrat'}
.side .help{margin-top:auto;background:var(--ink);color:#fff;border-radius:10px;padding:14px;font-size:12.5px}
.side .help b{font-family:'Montserrat'}
.side .help .ln{display:flex;gap:8px;align-items:center;margin-top:6px;color:#ddd}
.side .help svg.i{width:15px;height:15px;color:var(--red)}
main{flex:1;min-width:0;padding:26px 30px 60px}
.ph{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:20px;flex-wrap:wrap}
.ph h1{margin-top:6px}
.ph p{margin:6px 0 0;color:var(--muted);max-width:720px}
.bnav{display:none}

/* ===== Elements ===== */
.btn{display:inline-flex;align-items:center;gap:8px;border-radius:8px;padding:9px 15px;font-weight:700;border:1px solid transparent;background:var(--red);color:#fff;font-size:13.5px;white-space:nowrap;transition:.15s;text-decoration:none}
.btn:hover{background:var(--red-d)}
.btn svg.i{width:17px;height:17px}
.btn.dark{background:var(--ink)} .btn.dark:hover{background:#000}
.btn.ghost{background:#fff;color:var(--ink);border-color:var(--line)} .btn.ghost:hover{border-color:#cfcfcf;background:#fafafa}
.btn.line{background:transparent;color:var(--red);border-color:var(--red)} .btn.line:hover{background:var(--red-t)}
.btn.okb{background:var(--ok)} .btn.okb:hover{background:#17733f}
.btn.sm{padding:6px 11px;font-size:12.5px}
.btn:disabled{opacity:.45;cursor:not-allowed}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh)}
.card.p{padding:18px}
.card-h{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 18px;border-bottom:1px solid var(--line2)}
.card-b{padding:14px 18px}
.grid{display:grid;gap:16px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))} .g3{grid-template-columns:repeat(3,minmax(0,1fr))} .g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.g-main{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr)}
.kpi{padding:16px 18px;position:relative;overflow:hidden}
.kpi .v{font-family:'Montserrat';font-weight:800;font-size:28px;color:var(--ink);margin-top:4px}
.kpi .l{color:var(--muted);font-size:12.5px;font-weight:600}
.kpi .s{font-size:12px;color:var(--muted2);margin-top:2px}
.kpi.red{background:var(--red);border-color:var(--red)} .kpi.red .v,.kpi.red .l,.kpi.red .s{color:#fff}
.kpi.dark{background:var(--ink);border-color:var(--ink)} .kpi.dark .v{color:var(--red)} .kpi.dark .l{color:#ddd} .kpi.dark .s{color:#9a9a9a}
.chip{display:inline-flex;align-items:center;gap:6px;border-radius:20px;padding:3px 10px;font-size:11.5px;font-weight:700;white-space:nowrap;background:var(--gray-t);color:#555}
.chip:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.chip.nodot:before{display:none}
.c-info{background:var(--info-t);color:var(--info)} .c-vio{background:var(--vio-t);color:var(--vio)} .c-warn{background:var(--warn-t);color:var(--warn)}
.c-teal{background:var(--teal-t);color:var(--teal)} .c-org{background:var(--org-t);color:var(--org)} .c-ok{background:var(--ok-t);color:var(--ok)}
.c-red{background:var(--red-t);color:var(--red-d)} .c-gray{background:var(--gray-t);color:#666}
.hero{background:var(--ink);color:#fff;border-radius:14px;padding:24px 26px;position:relative;overflow:hidden;display:flex;justify-content:space-between;gap:20px;align-items:center;flex-wrap:wrap}
.hero:before{content:"";position:absolute;left:0;top:0;bottom:0;width:8px;background:var(--red)}
.hero:after{content:"";position:absolute;right:-60px;top:-80px;width:260px;height:260px;border-radius:50%;border:40px solid rgba(230,51,41,.13)}
.hero h1{font-size:25px;color:#fff}
.hero p{color:#cfcfcf;margin:6px 0 0}
.hero .acts{display:flex;gap:10px;flex-wrap:wrap;position:relative;z-index:1}
.hero .btn.ghost{background:#2b2b2b;color:#fff;border-color:#444} .hero .btn.ghost:hover{background:#333}
.tbl-w{overflow:auto}
table.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th{text-align:left;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:700;padding:10px 12px;border-bottom:1px solid var(--line);background:#FAFAFA;position:sticky;top:0;z-index:1;white-space:nowrap}
.tbl td{padding:10px 12px;border-bottom:1px solid var(--line2);vertical-align:middle}
.tbl tr.click{cursor:pointer} .tbl tr.click:hover td{background:#FFF7F6}
.tbl td.n,.tbl th.n{text-align:right;font-variant-numeric:tabular-nums}
.it{display:flex;gap:11px;align-items:center;min-width:240px}
.tile{width:36px;height:36px;border-radius:8px;display:grid;place-items:center;font-family:'Montserrat';font-weight:800;font-size:11px;flex:none;background:#F2F2F2;color:#555;border:1px solid var(--line)}
.it b{display:block;font-weight:600;line-height:1.25}
.it small{color:var(--muted2);font-size:11.5px}
.tools{display:flex;gap:10px;flex-wrap:wrap;align-items:center;padding:12px 14px;border-bottom:1px solid var(--line2)}
.inp,.sel,textarea.inp{border:1px solid #DADADA;border-radius:8px;padding:9px 11px;background:#fff;outline:none;min-width:0;width:100%}
.inp:focus,.sel:focus{border-color:var(--red);box-shadow:0 0 0 3px var(--red-t)}
.search{position:relative;flex:1;min-width:200px}
.search svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--muted2);width:17px;height:17px}
.search .inp{padding-left:34px}
.tools .sel{width:auto;min-width:150px}
.fgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px 16px}
.f{display:flex;flex-direction:column;gap:6px}
.f.full{grid-column:1/-1}
.f label{font-weight:600;font-size:12.5px;color:var(--ink3)}
.f label i{color:var(--red);font-style:normal}
.f .hint{font-size:11.5px;color:var(--muted2)}
.chk{display:flex;gap:9px;align-items:center;font-weight:600;font-size:13px}
.chk input{width:17px;height:17px;accent-color:var(--red)}
textarea.inp{min-height:84px;resize:vertical}
.list{display:flex;flex-direction:column}
.li{display:flex;gap:12px;align-items:center;padding:12px 18px;border-bottom:1px solid var(--line2)}
.li:last-child{border-bottom:0}
.li.click{cursor:pointer} .li.click:hover{background:#FFF7F6}
.li .ic{width:36px;height:36px;border-radius:9px;background:var(--red-t);color:var(--red);display:grid;place-items:center;flex:none}
.li .ic svg{width:18px;height:18px}
.li b{font-weight:600}
.empty{padding:28px 18px;text-align:center;color:var(--muted)}
.empty svg{width:34px;height:34px;color:#c9c9c9;margin-bottom:6px}
.svc{display:flex;flex-direction:column;gap:10px;padding:18px;text-align:left;background:#fff;border:1px solid var(--line);border-radius:12px;transition:.15s;box-shadow:var(--sh)}
.svc:hover{border-color:var(--red);transform:translateY(-2px);box-shadow:0 8px 24px rgba(230,51,41,.12)}
.svc .ic{width:44px;height:44px;border-radius:50%;background:var(--red);color:#fff;display:grid;place-items:center}
.svc .ic svg{width:22px;height:22px}
.svc b{font-family:'Montserrat';font-size:14.5px}
.svc span{color:var(--muted);font-size:12.5px}
.alert{display:flex;gap:10px;align-items:flex-start;padding:11px 14px;border-radius:9px;font-size:13px}
.alert svg{width:18px;height:18px;margin-top:1px}
.alert.warn{background:var(--warn-t);color:#7a4f0e} .alert.red{background:var(--red-t);color:#8f1d16} .alert.info{background:var(--info-t);color:#1d4a96} .alert.ok{background:var(--ok-t);color:#14603a}
.tabs{display:flex;gap:4px;background:#EAEAEA;padding:4px;border-radius:10px;width:max-content;max-width:100%;overflow:auto}
.tab{border:0;background:transparent;padding:8px 14px;border-radius:7px;font-weight:700;color:var(--muted);white-space:nowrap}
.tab.on{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.1)}

/* steps */
.steps{display:flex;gap:0;margin:6px 0 4px;overflow:auto;padding-bottom:4px}
.st{flex:1;min-width:84px;text-align:center;position:relative;font-size:11px;color:var(--muted2);font-weight:600;padding-top:30px}
.st:before{content:"";position:absolute;top:10px;left:-50%;right:50%;height:3px;background:#E3E3E3}
.st:first-child:before{display:none}
.st i{position:absolute;top:2px;left:50%;transform:translateX(-50%);width:19px;height:19px;border-radius:50%;background:#fff;border:3px solid #DADADA;z-index:1}
.st.done{color:var(--ink3)} .st.done i{background:var(--red);border-color:var(--red)} .st.done:before{background:var(--red)}
.st.cur{color:var(--red-d);font-weight:800} .st.cur i{border-color:var(--red);box-shadow:0 0 0 4px var(--red-t)} .st.cur:before{background:var(--red)}

/* kanban */
.kb{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(232px,1fr);gap:12px;overflow:auto;padding-bottom:10px;align-items:start}
.col{background:#EBEBEB;border-radius:10px;padding:8px;min-height:120px}
.col-h{display:flex;justify-content:space-between;align-items:center;padding:6px 6px 10px;font-family:'Montserrat';font-weight:700;font-size:12.5px}
.kc{background:#fff;border-radius:8px;padding:11px 12px;margin-bottom:8px;border:1px solid var(--line);cursor:pointer;box-shadow:0 1px 2px rgba(0,0,0,.04);border-left:4px solid var(--red)}
.kc:hover{box-shadow:0 4px 14px rgba(0,0,0,.1)}
.kc .cd{font-size:11px;color:var(--muted2);font-weight:700;letter-spacing:.04em}
.kc b{display:block;font-size:13px;margin:3px 0 6px;line-height:1.3}

/* bars */
.bars{display:flex;flex-direction:column;gap:9px}
.bar{display:grid;grid-template-columns:150px 1fr 54px;gap:10px;align-items:center;font-size:12.5px}
.bar .t{height:12px;background:#F0F0F0;border-radius:6px;overflow:hidden}
.bar .t span{display:block;height:100%;background:var(--red);border-radius:6px}
.bar .n{text-align:right;font-weight:700;font-variant-numeric:tabular-nums}
.bar .lb{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* overlay */
.ovl{position:fixed;inset:0;background:rgba(20,20,20,.5);z-index:60;display:flex;justify-content:flex-end;animation:fd .15s}
.ovl.center{justify-content:center;align-items:center;padding:20px}
@keyframes fd{from{opacity:0}}
.drawer{width:min(720px,100%);background:var(--bg);height:100%;overflow:auto;box-shadow:-10px 0 40px rgba(0,0,0,.2);animation:sl .2s ease-out;display:flex;flex-direction:column}
@keyframes sl{from{transform:translateX(30px);opacity:.6}}
.dr-h{background:var(--ink);color:#fff;padding:18px 22px;display:flex;gap:14px;align-items:flex-start;justify-content:space-between;border-bottom:3px solid var(--red);position:sticky;top:0;z-index:2}
.dr-h h2{color:#fff;font-size:19px;margin-top:4px}
.dr-h .x{background:#2c2c2c;border:0;color:#fff;border-radius:8px;width:34px;height:34px;display:grid;place-items:center;flex:none}
.dr-b{padding:18px 22px;display:flex;flex-direction:column;gap:14px}
.modal{background:#fff;border-radius:14px;width:min(620px,100%);max-height:92vh;overflow:auto;box-shadow:0 20px 60px rgba(0,0,0,.3);animation:pop .16s}
@keyframes pop{from{transform:scale(.97);opacity:.6}}
.modal .mh{padding:18px 22px 12px;border-bottom:1px solid var(--line2);display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.modal .mb{padding:18px 22px}
.modal .mf{padding:14px 22px;border-top:1px solid var(--line2);display:flex;justify-content:flex-end;gap:10px;background:#FAFAFA;border-radius:0 0 14px 14px}
.kv{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 18px}
.kv div small{display:block;color:var(--muted2);font-size:11px;text-transform:uppercase;letter-spacing:.06em;font-weight:700}
.kv div span{font-weight:600;word-break:break-word}
.msgs{display:flex;flex-direction:column;gap:8px;max-height:280px;overflow:auto;padding:4px}
.msg{max-width:82%;padding:9px 12px;border-radius:12px;font-size:13px;background:#F1F1F1}
.msg.me{align-self:flex-end;background:var(--ink);color:#fff;border-bottom-right-radius:3px}
.msg.them{border-bottom-left-radius:3px}
.msg small{display:block;font-size:10.5px;opacity:.65;margin-top:3px}
.tl{display:flex;flex-direction:column;gap:0}
.tl div{display:grid;grid-template-columns:14px 1fr;gap:10px;font-size:12.5px;padding-bottom:10px;position:relative}
.tl div:before{content:"";width:10px;height:10px;border-radius:50%;background:var(--red);margin-top:4px}
.tl div:after{content:"";position:absolute;left:4px;top:16px;bottom:0;width:2px;background:#E5E5E5}
.tl div:last-child:after{display:none}
.quote{background:#fff;border:2px solid var(--red);border-radius:12px;padding:16px 18px}
.quote .v{font-family:'Montserrat';font-weight:800;font-size:28px;color:var(--red)}
.picker{max-height:330px;overflow:auto;border:1px solid var(--line);border-radius:10px}
.picker .tbl td{padding:7px 10px}
.qty{width:76px;text-align:right;padding:7px 8px}
.label{width:340px;max-width:100%;border:2px dashed #BDBDBD;border-radius:10px;padding:14px;background:#fff;margin:0 auto}
.label .lh{display:flex;align-items:center;gap:8px;border-bottom:2px solid var(--ink);padding-bottom:8px;margin-bottom:8px}
.label .lh img{width:30px}
.label .lh b{font-family:'Montserrat';font-size:12px;line-height:1.1}
.label svg.bc{width:100%;height:auto}
svg.bc:empty{display:none}
.label .big{font-family:'Montserrat';font-weight:800;font-size:18px}
.toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);background:var(--ink);color:#fff;padding:12px 18px;border-radius:10px;z-index:90;display:flex;gap:10px;align-items:center;box-shadow:0 10px 30px rgba(0,0,0,.3);border-left:4px solid var(--red);font-weight:600;animation:up .2s}
@keyframes up{from{transform:translate(-50%,10px);opacity:0}}
.dd{position:absolute;right:0;top:46px;width:360px;max-width:92vw;background:#fff;color:var(--ink);border-radius:12px;box-shadow:0 18px 50px rgba(0,0,0,.25);z-index:50;overflow:hidden}
.dd .li{padding:11px 14px}
.dd .unread{background:#FFF6F5}
.pill{display:inline-block;background:var(--ink);color:#fff;border-radius:6px;padding:2px 8px;font-size:11px;font-weight:700}
.note{background:#FFF8E6;border:1px solid #F3DFAE;color:#6c4d0b;border-radius:10px;padding:10px 14px;font-size:12.5px;display:flex;gap:10px;align-items:flex-start}
.note svg{width:18px;height:18px;flex:none;margin-top:1px}
.mini-bars{display:flex;align-items:flex-end;gap:10px;height:170px;padding:10px 4px 0;border-bottom:1px solid var(--line)}
.mb-g{flex:1;display:flex;gap:3px;align-items:flex-end;height:100%;position:relative}
.mb-g span{flex:1;border-radius:4px 4px 0 0;min-height:2px}
.mb-l{display:flex;gap:10px;padding:6px 4px 0}
.mb-l div{flex:1;text-align:center;font-size:10.5px;color:var(--muted2)}
.legend{display:flex;gap:14px;font-size:12px;color:var(--muted)}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.svc-row{display:grid;grid-template-columns:44px 1fr 1.6fr 90px;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line2)}
.switch{position:relative;width:42px;height:24px;flex:none}
.switch input{opacity:0;width:0;height:0}
.switch span{position:absolute;inset:0;background:#CFCFCF;border-radius:12px;transition:.15s;cursor:pointer}
.switch span:before{content:"";position:absolute;width:18px;height:18px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.15s}
.switch input:checked+span{background:var(--red)}
.switch input:checked+span:before{transform:translateX(18px)}
.idea{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--line2);font-size:13px}
.idea input{margin-top:3px;accent-color:var(--red);width:16px;height:16px}
.idea.done span{text-decoration:line-through;color:var(--muted2)}

@media (max-width:1100px){.g4{grid-template-columns:repeat(2,minmax(0,1fr))}.g-main{grid-template-columns:1fr}.g3{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:860px){
  :root{--top:56px}
  .login{grid-template-columns:1fr}
  .login-brand{padding:34px 24px 28px 46px;min-height:auto}
  .login-brand:before{width:18px}
  .login-brand .big{font-size:38px}
  .login-brand .feat{display:none}
  .top .brand{width:auto}
  .top .brand b,.top .ctx,.user .nm{display:none}
  .top .proto{padding:3px 8px;font-size:11px}
  .top .proto .lb{display:none}
  .top .proto select{max-width:130px}
  .side{display:none}
  main{padding:18px 14px 96px}
  h1{font-size:22px}
  .g2,.g3,.g4{grid-template-columns:1fr 1fr}
  .fgrid,.kv{grid-template-columns:1fr}
  .bnav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:40;background:#fff;border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom));overflow-x:auto;gap:2px}
  .bnav button{flex:1;min-width:64px;background:none;border:0;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:10.5px;font-weight:700;color:var(--muted);padding:5px 2px;border-radius:8px}
  .bnav button.on{color:var(--red)}
  .bar{grid-template-columns:110px 1fr 44px}
  .svc-row{grid-template-columns:44px 1fr;}
  .svc-row .d{grid-column:1/-1}
  .hero{padding:20px 20px 20px 26px}
}
@media (max-width:520px){.g2,.g3,.g4{grid-template-columns:1fr}.kpi .v{font-size:24px}}

/* ---------- portal conectado ---------- */
body.ocupado{cursor:progress}
body.ocupado .btn,body.ocupado .iconbtn{pointer-events:none;opacity:.7}
.toast.erro{background:#7a1510;border-left-color:#fff}
.tela-carga{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;color:var(--muted);font-weight:600}
.tela-carga img{width:84px;animation:gira 1.4s linear infinite}
@keyframes gira{to{transform:rotate(360deg)}}
.login-box a{color:var(--red-d);font-weight:700}
@media print{body.imprimindo *{visibility:hidden}body.imprimindo #etiqueta,body.imprimindo #etiqueta *{visibility:visible}body.imprimindo #etiqueta{position:fixed;left:0;top:0;border:0;width:100mm}}
