@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url('/assets/fonts/Roboto-300-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-display:swap;src:url('/assets/fonts/Roboto-300.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/Roboto-400-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/Roboto-400.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/Roboto-500-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/Roboto-500.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-display:swap;src:url('/assets/fonts/Roboto-700-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-display:swap;src:url('/assets/fonts/Roboto-700.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
:root{
  --navy:#373D51; --charcoal:#323140; --stone:#B3AEA8; --taupe:#8A807B; --mist:#D6D3CF;
  --white:#FFFFFF; --bg:#F4F3F1;
  --green:#1FA97C; --amber:#F2A93B; --red:#E0554A; --blue-accent:#4C8FD1; --teal-accent:#2FB0A8;
  --text-dark:#232733; --text-mid:#5B5F6D;
  --radius:12px; --shadow:0 2px 10px rgba(35,39,51,0.08);
}
*{box-sizing:border-box;}
body{margin:0;font-family:'Roboto',system-ui,Arial,sans-serif;background:var(--bg);color:var(--text-dark);}
a{color:inherit;text-decoration:none;}
.app{display:flex;min-height:100vh;width:100%;}
.sidebar{width:230px;background:var(--navy);color:#fff;display:flex;flex-direction:column;flex-shrink:0;}
.sidebar .brand{padding:22px 20px;display:flex;align-items:center;gap:10px;border-bottom:1px solid rgba(255,255,255,.08);}
.sidebar .brand .logo{width:36px;height:36px;border-radius:8px;background:#fff;padding:3px;object-fit:contain;flex-shrink:0;}
.sidebar .brand .name{font-weight:700;font-size:15px;}
.sidebar .brand .sub{font-size:10px;color:var(--mist);opacity:.8;}
.nav{padding:14px 10px;flex:1;}
.nav .section-label{font-size:10px;text-transform:uppercase;letter-spacing:1px;color:var(--stone);padding:14px 12px 6px;}
.nav a{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;color:var(--mist);font-size:13px;margin-bottom:2px;}
.nav a:hover{background:rgba(255,255,255,.06);}
.nav a.active{background:rgba(255,255,255,.1);color:#fff;font-weight:600;}
.sidebar .user{padding:16px 20px;border-top:1px solid rgba(255,255,255,.08);display:flex;align-items:center;gap:10px;font-size:12px;color:var(--mist);}
.avatar{width:30px;height:30px;border-radius:50%;background:var(--stone);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:var(--charcoal);}
.main{flex:1;display:flex;flex-direction:column;min-width:0;}
.topbar{background:#fff;border-bottom:1px solid var(--mist);padding:16px 28px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;}
.topbar h1{font-size:19px;margin:0;color:var(--charcoal);}
.topbar .crumbs{font-size:11px;color:var(--taupe);margin-top:2px;}
.content{padding:24px 28px;flex:1;}
.grid{display:grid;gap:18px;} .grid > *{min-width:0;}
.cols-4{grid-template-columns:repeat(4,1fr);}
.cols-3{grid-template-columns:repeat(3,1fr);}
.cols-2{grid-template-columns:repeat(2,1fr);}
@media (max-width:900px){.cols-4,.cols-3,.cols-2{grid-template-columns:minmax(0,1fr);} .sidebar{display:none;}}
.card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 20px;}
.card h3{margin:0 0 12px;font-size:13px;color:var(--text-mid);text-transform:uppercase;letter-spacing:.4px;}
.kpi .value{font-size:26px;font-weight:800;color:var(--charcoal);}
.kpi .label{font-size:12px;color:var(--text-mid);margin-top:2px;}
a.card.kpi-link{display:block;cursor:pointer;transition:box-shadow .15s ease, transform .15s ease;}
a.card.kpi-link:hover{box-shadow:0 8px 22px rgba(35,39,51,0.16);transform:translateY(-2px);}
table{width:100%;border-collapse:collapse;font-size:13px;}
th{text-align:left;color:var(--text-mid);font-size:10.5px;text-transform:uppercase;padding:9px 10px;border-bottom:2px solid var(--bg);}
th a{color:inherit;}
th.sortable{cursor:pointer;white-space:nowrap;user-select:none;}
th.sortable:hover{color:var(--navy);}
th .sort-arrow{font-size:9px;margin-left:3px;color:var(--teal-accent);}
td{padding:10px;border-bottom:1px solid var(--bg);}
tr:hover td{background:#FAFAF9;}
tr.row-link{cursor:pointer;}
tr.row-link:hover td{background:#F0F3F7;}
.class-filter{position:relative;display:inline-block;}
.class-filter summary{list-style:none;display:inline-block;}
.class-filter summary::-webkit-details-marker{display:none;}
.class-filter .class-filter-panel{position:absolute;right:0;top:calc(100% + 6px);background:#fff;border:1px solid var(--mist);border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.16);padding:12px 14px;z-index:20;min-width:220px;max-height:260px;overflow-y:auto;}
.class-filter .class-filter-panel label{display:block;font-size:12.5px;padding:4px 0;}
.badge{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;padding:4px 10px;border-radius:20px;}
.badge-green{background:rgba(31,169,124,.14);color:var(--green);}
.badge-amber{background:rgba(242,169,59,.16);color:#9c6a10;}
.badge-red{background:rgba(224,85,74,.14);color:var(--red);}
.badge-grey{background:var(--mist);color:var(--taupe);}
.btn{display:inline-block;background:var(--navy);color:#fff;border:none;padding:9px 16px;border-radius:8px;font-size:12.5px;font-weight:600;cursor:pointer;}
.btn.outline{background:#fff;color:var(--navy);border:1px solid var(--mist);}
.btn.teal{background:var(--teal-accent);}
.btn.danger{background:var(--red);}
.form-group{margin-bottom:14px;}
.form-group label{display:block;font-size:11px;color:var(--taupe);text-transform:uppercase;letter-spacing:.4px;margin-bottom:5px;}
.form-group input, .form-group select, .form-group textarea{width:100%;padding:9px 12px;border:1px solid var(--mist);border-radius:8px;font-size:13.5px;font-family:inherit;background:#fff;}
button,input,select,textarea{font-family:inherit;}
.rag-choice{display:flex;gap:8px;}
.rag-choice label{flex:1;text-align:center;padding:10px 0;border-radius:8px;font-size:12px;font-weight:700;color:#fff;cursor:pointer;opacity:.45;border:2px solid transparent;transition:opacity .15s ease, transform .15s ease, box-shadow .15s ease;}
.rag-choice label:hover{opacity:.7;}
.rag-choice input{display:none;}
.rag-choice input:checked + span{opacity:1;}
/* The active/selected rating must read as a visibly richer, fuller colour
   than the flat unselected options - opacity alone on the inner <span>
   was not enough since the label's own background carried the muted
   opacity. JS toggles this .selected class on the parent label (see
   app.js); the :has() rule is a CSS-only fallback for the same effect. */
.rag-choice label.selected,
.rag-choice label:has(input:checked){
  opacity:1;
  border-color:rgba(0,0,0,.25);
  box-shadow:0 0 0 3px rgba(35,39,51,.12) inset, 0 6px 16px rgba(0,0,0,.22);
  transform:translateY(-2px);
  filter:saturate(1.25);
}
.rag-good{background:var(--green);} .rag-fair{background:var(--amber);} .rag-poor{background:var(--red);}
.alert{padding:12px 16px;border-radius:8px;margin-bottom:16px;font-size:13px;}
.alert-success{background:rgba(31,169,124,.12);color:#116644;border:1px solid var(--green);}
.alert-error{background:rgba(224,85,74,.1);color:#8a1f16;border:1px solid var(--red);}
.login-body{margin:0;}
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--navy),var(--charcoal));}
.login-card{background:#fff;border-radius:16px;padding:36px 34px;width:360px;box-shadow:0 20px 50px rgba(0,0,0,.3);}
.login-card h1{font-size:20px;color:var(--charcoal);margin:0 0 4px;}
.login-card p{font-size:12.5px;color:var(--taupe);margin:0 0 22px;}
.help-btn{width:36px;height:36px;border-radius:50%;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:15px;box-shadow:var(--shadow);border:none;cursor:pointer;}

/* Assistant panel */
#assistant-fab{position:fixed;right:24px;bottom:24px;width:52px;height:52px;border-radius:50%;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;font-size:20px;box-shadow:0 8px 24px rgba(0,0,0,.25);cursor:pointer;z-index:1000;border:none;}
#assistant-panel{position:fixed;right:24px;bottom:88px;width:320px;max-height:60vh;background:#fff;border-radius:14px;box-shadow:0 16px 44px rgba(0,0,0,.28);display:none;flex-direction:column;overflow:hidden;z-index:1000;}
#assistant-panel.open{display:flex;}
#assistant-panel .a-head{background:var(--navy);color:#fff;padding:12px 14px;font-size:13px;font-weight:700;}
#assistant-panel .a-body{flex:1;overflow-y:auto;padding:12px 14px;background:#F7F6F4;font-size:12.5px;}
#assistant-panel .a-msg{background:#fff;border:1px solid var(--mist);border-radius:10px;padding:8px 10px;margin-bottom:8px;}
#assistant-panel .a-msg.user{background:var(--navy);color:#fff;margin-left:20%;}
#assistant-panel .a-input{display:flex;border-top:1px solid var(--mist);}
#assistant-panel .a-input input{flex:1;border:none;padding:10px;font-size:12.5px;}
#assistant-panel .a-input button{background:var(--teal-accent);color:#fff;border:none;padding:0 14px;cursor:pointer;}

.map-container{height:520px;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);}
.markdown h1{color:var(--navy);} .markdown h2{color:var(--charcoal);margin-top:24px;}
.markdown table{margin:12px 0;} .markdown th, .markdown td{border:1px solid var(--mist);}

/* ---------------- v4 additions ---------------- */
.nav{overflow-y:auto;}
.nav .section-label{padding:12px 12px 4px;}
.sidebar{position:sticky;top:0;height:100vh;}
.muted{color:var(--taupe);}
.small{font-size:11.5px;}
.right{text-align:right;} .center{text-align:center;} .nowrap{white-space:nowrap;}
.mt{margin-top:18px;} .mb{margin-bottom:18px;}
.row{display:flex;gap:12px;flex-wrap:wrap;align-items:center;}
.row.between{justify-content:space-between;}
.grid.cols-5{grid-template-columns:repeat(5,1fr);}
.grid.cols-6{grid-template-columns:repeat(6,1fr);}
@media (max-width:900px){.grid.cols-5,.grid.cols-6{grid-template-columns:1fr 1fr;}}
.alert-warn{background:rgba(242,169,59,.14);color:#7a5200;border:1px solid var(--amber);}
.alert-info{background:rgba(76,143,209,.1);color:#1d4f80;border:1px solid var(--blue-accent);}
.btn.small{padding:5px 10px;font-size:11.5px;}
.btn.amber{background:var(--amber);color:#3b2a00;}
.btn:disabled{opacity:.5;cursor:not-allowed;}
.inline-form{display:inline;}
.tabs{display:flex;gap:4px;border-bottom:2px solid var(--mist);margin-bottom:18px;flex-wrap:wrap;}
.tabs a{padding:9px 16px;font-size:13px;color:var(--text-mid);border-bottom:3px solid transparent;margin-bottom:-2px;font-weight:600;}
.tabs a.active{color:var(--navy);border-bottom-color:var(--teal-accent);}
.tabs a:hover{color:var(--navy);}
.bar{display:inline-block;width:90px;height:8px;background:var(--bg);border-radius:6px;overflow:hidden;vertical-align:middle;margin-right:6px;}
.bar>div{height:100%;}
.bar-green{background:var(--green);} .bar-amber{background:var(--amber);} .bar-red{background:var(--red);}
.bar-label{font-size:11.5px;color:var(--text-mid);}
.kv{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid var(--bg);font-size:13px;}
.kv span{color:var(--taupe);font-size:11.5px;text-transform:uppercase;letter-spacing:.3px;}
.kv b{font-weight:600;text-align:right;}
.form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0 18px;}
.form-grid.two{grid-template-columns:repeat(2,1fr);}
.form-grid .span2{grid-column:span 2;} .form-grid .span3{grid-column:1/-1;}
@media (max-width:900px){.form-grid,.form-grid.two{grid-template-columns:1fr;} .form-grid .span2{grid-column:auto;}}
fieldset.group{border:1px solid var(--mist);border-radius:10px;padding:12px 16px 4px;margin:0 0 16px;}
fieldset.group legend{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--taupe);padding:0 8px;font-weight:700;}
.score-choice{display:flex;gap:6px;}
.score-choice label{flex:1;text-align:center;padding:9px 4px;border-radius:8px;font-size:11px;font-weight:700;color:#fff;cursor:pointer;opacity:.45;border:2px solid transparent;line-height:1.25;}
.score-choice label:hover{opacity:.75;}
.score-choice input{display:none;}
.score-choice label:has(input:checked),.score-choice label.selected{opacity:1;border-color:rgba(0,0,0,.25);box-shadow:0 6px 16px rgba(0,0,0,.2);transform:translateY(-2px);}
.score-5{background:#13805c;} .score-4{background:var(--green);} .score-3{background:var(--amber);color:#3b2a00;} .score-2{background:#e8803f;} .score-1{background:var(--red);}
.score-pill{display:inline-block;min-width:26px;text-align:center;padding:3px 8px;border-radius:14px;font-size:11px;font-weight:800;color:#fff;}
.stepper{display:flex;gap:6px;margin-bottom:20px;flex-wrap:wrap;}
.stepper .step{flex:1;min-width:110px;padding:9px 10px;border-radius:8px;background:#fff;border:1px solid var(--mist);font-size:11.5px;color:var(--taupe);text-align:center;}
.stepper .step b{display:block;font-size:11px;letter-spacing:.4px;text-transform:uppercase;}
.stepper .step.done{background:rgba(31,169,124,.1);border-color:var(--green);color:#116644;}
.stepper .step.current{background:var(--navy);color:#fff;border-color:var(--navy);}
table.compact td,table.compact th{padding:6px 8px;font-size:12.5px;}
.scroll-x{overflow-x:auto;}
code,.mono{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;}
pre.code{background:#232733;color:#e8e6e1;padding:12px 14px;border-radius:8px;overflow-x:auto;font-size:12px;}
.pill{display:inline-block;padding:2px 8px;border-radius:10px;background:var(--bg);font-size:11px;color:var(--text-mid);}
.help{font-size:11.5px;color:var(--taupe);margin-top:4px;}
.check-ok{color:var(--green);font-weight:700;} .check-bad{color:var(--red);font-weight:700;} .check-warn{color:#9c6a10;font-weight:700;}
.hier li{margin:4px 0;} .hier ul{list-style:none;padding-left:20px;border-left:2px solid var(--mist);margin:4px 0 4px 6px;}
.nqf-table td{vertical-align:top;font-size:12.5px;}
@media print{.sidebar,.topbar .actions,#assistant-fab,#assistant-panel,.btn{display:none !important;} .content{padding:0;}}


/* =====================================================================
   v5 shell: Roboto, collapsible sidebar, top bar, panels, banners
   ===================================================================== */
:root{--sidebar-w:252px;--rail-w:64px;--topbar-h:56px;--focus:#4C8FD1;}
html{font-family:'Roboto',system-ui,Arial,sans-serif;}
.skip-link{position:absolute;left:-999px;top:0;background:#fff;color:var(--navy);padding:8px 12px;z-index:3000;border-radius:0 0 8px 0;}
.skip-link:focus{left:0;}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px;}
.ic{flex-shrink:0;display:inline-block;vertical-align:middle;}
.sidebar{width:var(--sidebar-w);transition:width .18s ease, transform .2s ease;overflow:hidden;z-index:900;}
.sidebar .brand{padding:14px 16px;height:var(--topbar-h);border-bottom:1px solid rgba(255,255,255,.08);}
.sidebar .brand-text{white-space:nowrap;}
.nav{padding:10px 8px;overflow-y:auto;overflow-x:hidden;}
.nav-link,.nav-head{display:flex;align-items:center;gap:12px;width:100%;padding:10px 12px;border-radius:8px;color:var(--mist);font-size:13.5px;margin-bottom:2px;background:none;border:0;cursor:pointer;text-align:left;position:relative;}
.nav-link:hover,.nav-head:hover{background:rgba(255,255,255,.07);color:#fff;}
.nav-head .lbl{flex:1;font-weight:500;white-space:nowrap;}
.nav-head .ic:last-child{transition:transform .15s ease;opacity:.7;}
.nav-group.open>.nav-head .ic:last-child{transform:rotate(180deg);}
.nav-group.open>.nav-head{color:#fff;}
.nav-items{padding:2px 0 6px 0;}
.nav-items .nav-link{padding:8px 12px 8px 22px;font-size:13px;}
.nav-link .dot{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.28);flex-shrink:0;}
.nav-link.active{background:rgba(255,255,255,.13);color:#fff;font-weight:500;}
.nav-link.active .dot{background:var(--teal-accent);}
.nav-link .lbl{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.nav-link.top{font-weight:500;}
.side-foot{padding:10px 16px;font-size:11px;color:var(--stone);border-top:1px solid rgba(255,255,255,.08);}
/* collapsed rail */
.app.nav-collapsed .sidebar{width:var(--rail-w);}
.app.nav-collapsed .brand-text,.app.nav-collapsed .nav .lbl,.app.nav-collapsed .nav-head .ic:last-child,.app.nav-collapsed .side-foot{display:none;}
.app.nav-collapsed .nav-link,.app.nav-collapsed .nav-head{justify-content:center;padding:11px 0;}
.app.nav-collapsed .nav-items .nav-link{padding:9px 0;}
.app.nav-collapsed .nav-items .dot{display:block;}
.app.nav-collapsed .nav-group.open .nav-items{border-left:0;}
.app.nav-collapsed .sidebar .brand{justify-content:center;padding:14px 0;}
[data-tip]{position:relative;}
.app.nav-collapsed .sidebar [data-tip]:hover::after,.app.nav-collapsed .sidebar [data-tip]:focus-visible::after{content:attr(data-tip);position:fixed;left:calc(var(--rail-w) + 6px);background:#232733;color:#fff;font-size:12px;padding:6px 10px;border-radius:6px;white-space:nowrap;box-shadow:0 6px 18px rgba(0,0,0,.3);z-index:2000;pointer-events:none;transform:translateY(-8px);}
/* top bar */
.main{min-width:0;}
.topbar{height:var(--topbar-h);padding:0 16px;display:flex;align-items:center;gap:12px;flex-wrap:nowrap;position:sticky;top:0;z-index:800;}
.topbar .actions{display:block;}
.icon-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:10px;border:0;background:none;color:var(--charcoal);cursor:pointer;}
.icon-btn:hover,.icon-btn[aria-expanded="true"]{background:var(--bg);}
.count{position:absolute;top:2px;right:1px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:var(--red);color:#fff;font-size:10.5px;font-weight:700;display:flex;align-items:center;justify-content:center;line-height:1;}
.count[hidden]{display:none;}
.org-pill{position:relative;min-width:0;}
.org-btn{display:flex;align-items:center;gap:8px;border:1px solid var(--mist);background:#fff;border-radius:10px;padding:6px 10px;cursor:pointer;max-width:340px;color:var(--charcoal);font-size:13px;}
.org-btn:hover{background:var(--bg);}
.org-name{font-weight:700;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.lic-chip{font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:10px;white-space:nowrap;}
.lic-green{background:rgba(31,169,124,.14);color:#0f7a58;} .lic-amber{background:rgba(242,169,59,.2);color:#8a5d0c;} .lic-red{background:rgba(224,85,74,.16);color:#b3372d;} .lic-grey{background:var(--mist);color:var(--taupe);}
.search{position:relative;flex:1;max-width:460px;display:flex;align-items:center;gap:8px;background:var(--bg);border-radius:10px;padding:0 12px;height:38px;color:var(--taupe);}
.search input{flex:1;border:0;background:none;font-size:13.5px;height:100%;outline:none;color:var(--text-dark);min-width:0;}
.search:focus-within{box-shadow:0 0 0 2px var(--focus);}
.tb-icons{margin-left:auto;display:flex;align-items:center;gap:2px;}
.tb-wrap{position:relative;}
.avatar{width:30px;height:30px;}
.dropdown{position:absolute;top:calc(100% + 6px);left:0;background:#fff;border:1px solid var(--mist);border-radius:12px;box-shadow:0 14px 40px rgba(35,39,51,.2);z-index:1500;min-width:260px;overflow:hidden;}
.dropdown[hidden]{display:none;}
.tb-wrap .dropdown{left:auto;right:0;}
.panel{width:380px;max-width:92vw;} .panel.narrow{width:250px;}
.panel-head{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-bottom:1px solid var(--bg);font-size:13.5px;}
.panel-body{max-height:min(60vh,420px);overflow-y:auto;}
.panel-foot{display:block;text-align:center;padding:10px;border-top:1px solid var(--bg);font-size:12.5px;font-weight:500;color:var(--blue-accent);}
.panel-foot:hover{background:var(--bg);}
.pad{padding:14px;margin:0;}
.link-btn{background:none;border:0;color:var(--blue-accent);font-size:12.5px;cursor:pointer;font-weight:500;padding:0;}
.link-btn:hover{text-decoration:underline;}
.dd-title{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--taupe);padding:10px 14px 4px;}
.dd-item{display:flex;flex-direction:column;align-items:flex-start;gap:1px;width:100%;padding:9px 14px;font-size:13.5px;background:none;border:0;cursor:pointer;text-align:left;color:var(--text-dark);}
.dd-item small{color:var(--taupe);font-size:11.5px;}
.dd-item:hover:not(:disabled){background:var(--bg);} .dd-item.current{background:rgba(76,143,209,.1);font-weight:500;} .dd-item:disabled{opacity:.5;cursor:not-allowed;}
.item-row{display:flex;gap:10px;padding:11px 14px;border-bottom:1px solid var(--bg);font-size:13px;color:var(--text-dark);}
.item-row:hover{background:#FAFAF9;}
.item-row .sev{width:8px;height:8px;border-radius:50%;margin-top:6px;flex-shrink:0;background:var(--blue-accent);}
.item-row .sev.warning{background:var(--amber);} .item-row .sev.critical{background:var(--red);} .item-row .sev.read{background:var(--mist);}
.item-row.unread .t{font-weight:500;} .item-row .t{display:block;} .item-row .m{display:block;color:var(--taupe);font-size:11.5px;margin-top:2px;}
.sugg-actions{display:flex;gap:6px;margin-top:6px;}
.search-results{left:0;right:0;top:calc(100% + 6px);min-width:0;max-height:60vh;overflow-y:auto;}
.sr-group{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--taupe);padding:8px 14px 2px;}
.sr-item{display:flex;justify-content:space-between;gap:10px;padding:8px 14px;font-size:13px;color:var(--text-dark);}
.sr-item:hover,.sr-item.sel{background:var(--bg);} .sr-item small{color:var(--taupe);}
.pagebar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;padding:16px 28px 0;}
.pagebar h1{font-size:21px;font-weight:500;margin:0;color:var(--charcoal);}
.pagebar .crumbs{font-size:12px;color:var(--taupe);margin-top:2px;}
.content{padding:18px 28px 28px;}
/* banners */
.banner{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 20px;font-size:13px;border-bottom:1px solid rgba(0,0,0,.06);}
.banner-info{background:#e8f1fb;color:#1d4f80;} .banner-warning{background:#fdf0d5;color:#6f4a00;} .banner-critical{background:#fbe1de;color:#8a1f16;}
.banner-actions{display:flex;align-items:center;gap:10px;flex-shrink:0;} .banner-link{font-weight:700;text-decoration:underline;}
.banner-x{background:none;border:0;cursor:pointer;color:inherit;display:inline-flex;padding:2px;border-radius:6px;} .banner-x:hover{background:rgba(0,0,0,.08);}
.muted-in{opacity:.8;}
.nav-scrim{position:fixed;inset:0;background:rgba(20,22,32,.5);z-index:850;}
.nav-scrim[hidden]{display:none;}
/* mobile: off-canvas drawer */
@media (max-width:900px){
  .sidebar{display:flex !important;position:fixed;left:0;top:0;bottom:0;height:100vh;transform:translateX(-100%);width:min(300px,86vw);}
  .app.nav-open .sidebar{transform:none;box-shadow:0 0 40px rgba(0,0,0,.4);}
  .app.nav-collapsed .sidebar{width:min(300px,86vw);}
  .app.nav-collapsed .brand-text,.app.nav-collapsed .nav .lbl,.app.nav-collapsed .nav-head .ic:last-child,.app.nav-collapsed .side-foot{display:revert;}
  .app.nav-collapsed .nav-link,.app.nav-collapsed .nav-head{justify-content:flex-start;padding:10px 12px;}
  .topbar{gap:6px;padding:0 8px;} .org-btn .lic-chip{display:none;} .org-name{max-width:110px;} .search{display:none;}
  .pagebar,.content{padding-left:14px;padding-right:14px;}
  .tb-wrap .dropdown{position:fixed;left:8px;right:8px;top:calc(var(--topbar-h) + 4px);width:auto;max-width:none;}
}
@media print{.topbar,.banner,.pagebar .actions,.sidebar{display:none !important;}}
/* settings hub */
.settings-layout{display:grid;grid-template-columns:260px minmax(0,1fr);gap:20px;align-items:start;}
.settings-layout > *{min-width:0;}
.settings-nav{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:8px;position:sticky;top:calc(var(--topbar-h) + 12px);}
.settings-nav a{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:9px 12px;border-radius:8px;font-size:13.5px;color:var(--text-dark);}
.settings-nav a:hover{background:var(--bg);} .settings-nav a.active{background:var(--navy);color:#fff;font-weight:500;}
.settings-nav .grp{font-size:10.5px;text-transform:uppercase;letter-spacing:.8px;color:var(--taupe);padding:12px 12px 4px;}
.settings-nav .pip{width:8px;height:8px;border-radius:50%;background:var(--amber);flex-shrink:0;}
.secret-row{display:flex;gap:8px;align-items:center;} .secret-row input[readonly]{background:var(--bg);letter-spacing:2px;}
.test-result{margin-top:10px;font-size:13px;} .test-result ul{margin:6px 0 0;padding-left:0;list-style:none;} .test-result li{padding:3px 0;}
@media (max-width:900px){.settings-layout{grid-template-columns:minmax(0,1fr);}.settings-nav{position:static;}}
.thread-list .item-row{align-items:flex-start;} .msg-bubble{background:#fff;border:1px solid var(--mist);border-radius:12px;padding:10px 14px;margin-bottom:10px;max-width:720px;} .msg-bubble.mine{background:#eef4fb;margin-left:auto;} .msg-bubble .who{font-size:11.5px;color:var(--taupe);margin-bottom:3px;}
.vote-btn{display:inline-flex;flex-direction:column;align-items:center;border:1px solid var(--mist);background:#fff;border-radius:10px;padding:6px 12px;cursor:pointer;font-weight:700;min-width:52px;} .vote-btn.voted{background:var(--navy);color:#fff;border-color:var(--navy);}
/* small screens: wide tables scroll inside their card instead of widening the page */
@media (max-width:700px){main table,.card table{display:block;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;}}
@media (max-width:900px){.guide-grid{grid-template-columns:minmax(0,1fr) !important;} select,input:not([type=checkbox]):not([type=radio]),textarea{max-width:100%;}}
.dq-filter select{width:auto;flex:1 1 130px;min-width:0;}
