:root{--navy:#2A2270;--orange:#F2A23A;--pink:#C42D68;--green:#6BB144;--ink:#1B1740;--muted:#5E5A80;--bg:#F6F4EF;--line:#E4E0EE;--field:#D9D4E6;--lilac:#E9E5F3;--cream:#FFF6E6}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{font-family:'DM Sans',system-ui,sans-serif;background:var(--bg);color:var(--ink);-webkit-text-size-adjust:100%;font-size:16px}
button,input,select,textarea{font-family:inherit;color:inherit}
h1,h2,h3,.disp{font-family:'Bricolage Grotesque','DM Sans',sans-serif;color:var(--navy);margin:0}
a{color:var(--navy)}
#app{height:100%}
.phone{width:100%;max-width:430px;height:100dvh;margin:0 auto;display:flex;flex-direction:column;position:relative;background:var(--bg);overflow:hidden}
@media(min-width:700px){body{background:#E9E5F3}.phone{height:min(900px,100dvh);margin-top:max(0px,calc((100dvh - 900px)/2));box-shadow:0 8px 40px rgba(42,34,112,.18);border-radius:0}}
.scroll{flex:1;overflow-y:auto;overscroll-behavior:contain}
.pad{padding:12px 24px}
.center{display:flex;flex-direction:column;align-items:center;text-align:center}
.field{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}
.field>label,.lbl{font-size:13px;font-weight:600;color:#4A4570}
.in{height:46px;width:100%;min-width:0;padding:0 14px;border:1px solid var(--field);border-radius:12px;background:#fff;font-size:16px}
.in:focus,select:focus,textarea:focus{outline:2px solid var(--orange);outline-offset:1px}
textarea.in{height:auto;padding:12px 14px;line-height:1.4;resize:vertical}
.in[readonly],.in:disabled{background:#EFEDF5;color:#6B6890}
select.in{appearance:none;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%232A2270' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") no-repeat right 14px center}
.btn{height:52px;width:100%;padding:0 20px;border:0;border-radius:14px;background:var(--navy);color:#fff;font-size:16px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;white-space:nowrap;text-decoration:none}
.btn:disabled{opacity:.5;cursor:default}
.btn.alt{background:#fff;color:var(--navy);border:2px solid var(--navy)}
.btn.org{background:var(--orange);color:var(--ink)}
.btn.danger{background:#fff;color:var(--pink);border:2px solid var(--pink)}
.btn.sm{height:40px;width:auto;padding:0 16px;border-radius:20px;font-size:15px}
.chk{display:flex;align-items:flex-start;gap:10px;min-height:44px;font-size:14px;line-height:1.4;cursor:pointer}
.chk input{width:20px;height:20px;flex-shrink:0;accent-color:var(--navy);margin-top:2px}
.err{background:#FDE8EF;color:#8A1C47;border-radius:12px;padding:10px 14px;font-size:14px;margin:0 0 12px}
.okbox{background:#E3F2DA;color:#2F5F18;border-radius:12px;padding:10px 14px;font-size:14px;margin:0 0 12px}
.hint{font-size:13px;color:var(--muted);line-height:1.4}
.pill{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}
.pill.g{background:#E3F2DA;color:#2F5F18}.pill.o{background:#FFF1DA;color:#7A4A00}.pill.n{background:var(--lilac);color:var(--navy)}.pill.p{background:#FDE8EF;color:#8A1C47}
.card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:16px;margin:0 20px 14px}
.hdr{background:var(--navy);color:#fff;display:flex;align-items:center;gap:12px;padding:16px 16px;min-height:64px}
.hdr .t{font-family:'Bricolage Grotesque',sans-serif;font-weight:700;font-size:20px;line-height:1.1}
.hdr .s{font-size:12px;opacity:.85}
.iconbtn{width:44px;height:44px;border-radius:22px;border:0;background:transparent;color:inherit;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0}
.av{width:48px;height:48px;border-radius:24px;display:flex;align-items:center;justify-content:center;font-weight:700;flex-shrink:0;color:#fff}
.row{display:flex;align-items:center;gap:14px;padding:11px 20px;cursor:pointer;background:transparent;border:0;width:100%;text-align:left}
.row:hover{background:rgba(42,34,112,.04)}
.badge{min-width:22px;height:22px;padding:0 6px;border-radius:11px;background:var(--pink);color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center}
.tabs{display:flex;background:#fff;border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}
.tabs button{flex:1;height:68px;border:0;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:var(--muted);font-size:12px;font-weight:500;cursor:pointer}
.tabs button.on{color:var(--navy);font-weight:700;box-shadow:inset 0 3px 0 var(--orange)}
.chips{display:flex;gap:8px;padding:4px 20px 0;overflow-x:auto}
.chipb{height:40px;padding:0 16px;border:1px solid var(--line);border-radius:20px;background:#fff;color:var(--navy);font-size:15px;font-weight:600;cursor:pointer;white-space:nowrap}
.chipb.on{background:var(--navy);color:#fff;border-color:var(--navy)}
.bubbles{display:flex;flex-direction:column;gap:6px;padding:12px 16px}
.who{font-size:12px;font-weight:700;color:var(--pink);margin:6px 0 0 4px}
.b{max-width:82%;padding:10px 14px;border-radius:18px;background:#fff;border:1px solid var(--line);align-self:flex-start;white-space:pre-wrap;word-break:break-word;line-height:1.35;font-size:16px}
.b.me{align-self:flex-end;background:var(--navy);color:#fff;border-color:var(--navy)}
.b .tm{display:block;font-size:11px;opacity:.7;margin-top:4px;text-align:right}
.sysmsg{align-self:center;font-size:12px;color:var(--muted);background:var(--lilac);border-radius:12px;padding:4px 12px;margin:6px 0}
.compose{display:flex;gap:8px;padding:10px 12px;background:#fff;border-top:1px solid var(--line);align-items:flex-end}
.compose textarea{flex:1;border:1px solid var(--field);border-radius:22px;padding:11px 16px;font-size:16px;max-height:120px;resize:none;background:var(--bg)}
.send{width:44px;height:44px;border-radius:22px;border:0;background:var(--orange);color:var(--ink);display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0}
.gridg{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:0 20px 14px}
.gcard{background:#fff;border:1px solid var(--line);border-radius:18px;padding:14px;display:flex;flex-direction:column;gap:8px;align-items:flex-start;cursor:pointer;text-align:left}
.gic{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:14px}
.modal{position:fixed;inset:0;background:rgba(27,23,64,.55);display:flex;align-items:center;justify-content:center;padding:20px;z-index:50}
.modal .box{background:#fff;border-radius:18px;padding:22px;width:100%;max-width:400px;box-shadow:0 10px 40px rgba(0,0,0,.3)}
.otp{letter-spacing:.5em;text-align:center;font-size:24px;font-weight:700}
.steps{display:flex;gap:4px;padding:0 24px 8px}.steps i{flex:1;height:4px;border-radius:2px;background:var(--line)}.steps i.on{background:var(--orange)}
.seg{display:flex;gap:10px}.seg label{flex:1;display:flex;align-items:center;gap:8px;border:1px solid var(--field);background:#fff;border-radius:12px;height:46px;padding:0 14px;cursor:pointer}.seg input{accent-color:var(--navy);width:18px;height:18px}
.opt{display:flex;align-items:center;gap:10px;border:1px solid var(--field);background:#fff;border-radius:12px;min-height:50px;padding:10px 14px;cursor:pointer;margin-bottom:8px;font-size:15px}
.opt input{accent-color:var(--navy);width:18px;height:18px;flex-shrink:0}
.opt.on{border-color:var(--navy);background:var(--lilac)}
/* admin console */
.admin{display:flex;min-height:100dvh;background:var(--bg)}
.side{width:236px;background:var(--navy);color:#fff;padding:20px 12px;display:flex;flex-direction:column;gap:2px;position:sticky;top:0;height:100dvh;overflow-y:auto;flex-shrink:0}
.side .brand{display:flex;gap:10px;align-items:center;padding:0 8px 16px;font-family:'Bricolage Grotesque',sans-serif;font-weight:700;line-height:1.1}
.side button.nv{display:flex;align-items:center;gap:12px;height:44px;border:0;border-radius:10px;background:transparent;color:#E9E5F3;font-size:15px;padding:0 12px;cursor:pointer;text-align:left;width:100%}
.side button.nv.on{background:rgba(255,255,255,.14);box-shadow:inset 3px 0 0 var(--orange);font-weight:700;color:#fff}
.side .cnt{margin-left:auto;background:var(--pink);border-radius:10px;font-size:12px;font-weight:700;padding:1px 7px}
.main{flex:1;padding:24px 32px;min-width:0;max-width:1180px}
.main h1{font-size:30px}
.topbar{display:flex;align-items:flex-start;gap:12px;margin-bottom:18px}
.panel{background:#fff;border:1px solid var(--line);border-radius:20px;padding:20px}
.panel h2{font-size:20px;margin-bottom:10px}
table.tb{width:100%;border-collapse:collapse;font-size:14px}
table.tb th{font-size:11px;letter-spacing:.07em;color:var(--muted);text-align:left;padding:8px 8px;border-bottom:2px solid var(--line);text-transform:uppercase}
table.tb td{padding:10px 8px;border-bottom:1px solid var(--line);vertical-align:middle}
.cols{display:grid;grid-template-columns:minmax(300px,380px) 1fr;gap:20px;align-items:start}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin-bottom:18px}
.kpi{background:#fff;border:1px solid var(--line);border-radius:18px;padding:16px}.kpi b{display:block;font-family:'Bricolage Grotesque',sans-serif;font-size:30px;color:var(--navy)}
.tag{display:inline-block;border-radius:999px;font-size:12px;font-weight:700;padding:3px 10px;background:var(--lilac);color:var(--navy)}
.tag.super{background:var(--navy);color:#fff}.tag.deputy{background:#5B4FB0;color:#fff}.tag.admin{background:var(--orange);color:var(--ink)}
.sbtn{height:36px;padding:0 14px;border:2px solid var(--navy);border-radius:18px;background:#fff;color:var(--navy);font-weight:700;font-size:14px;cursor:pointer}
.sbtn.fill{background:var(--navy);color:#fff}.sbtn.org{background:var(--orange);border-color:var(--orange);color:var(--ink)}
@media(max-width:860px){.admin{flex-direction:column}.side{width:100%;height:auto;position:static;flex-direction:row;flex-wrap:wrap;padding:10px}.side .brand{width:100%}.side button.nv{width:auto;height:38px}.main{padding:16px}.cols{grid-template-columns:1fr}.panel{overflow-x:auto}}
