/* PORTAL-GUIDE 1.0: shared shell; palette comes from the canonical theme tokens. */
.portal-shell {
  position:fixed; inset:0 auto 0 0; z-index:50; width:236px; height:100dvh;
  box-sizing:border-box; min-height:0; display:flex; flex-direction:column;
  align-items:stretch; padding:22px 14px; gap:14px; overflow-y:auto;
  border-right:1px solid var(--bua-line); background:var(--bua-bg); color:var(--bua-text);
}
.portal-shell__links {display:flex; flex-direction:column; gap:4px;}
body[data-bua-management="true"] > main {width:auto; max-width:1500px;}
body[data-bua-management="true"] { padding-left:236px; }
.portal-shell__label { padding:8px; letter-spacing:.04em; display:flex; gap:10px; align-items:center; color:var(--bua-text); text-decoration:none; }
.portal-shell__label img { width:32px; height:32px; }
.portal-shell__label span { display:grid; gap:4px; }
.portal-shell__label strong { font:800 19px/1 var(--font-heading); }
.portal-shell__label small { font:500 8.5px/1.2 var(--font-data); letter-spacing:.2em; text-transform:uppercase; color:var(--bua-muted); }
.portal-shell__group {color:var(--bua-muted); font:500 9px/1.4 var(--font-data); text-transform:uppercase; letter-spacing:.14em; padding:20px 10px 5px;}
.portal-shell__links a {display:flex; align-items:center; padding:7px 10px; border-radius:8px; color:inherit; text-decoration:none; font-size:13px; font-weight:500; min-height:44px;}
.portal-shell__links a:hover {outline:2px solid var(--bua-action); outline-offset:-2px;}
.portal-shell__links a[aria-current="page"] { color:var(--bua-action); background:var(--bua-action-soft); outline:1px solid var(--bua-action); outline-offset:-1px; }
.portal-shell__foot { margin-top:auto; border-top:1px solid var(--bua-line); padding:14px 8px 0; display:grid; gap:10px; font:500 11px/1.5 var(--font-data); color:var(--bua-muted); }
.portal-shell__foot p { margin:0; overflow-wrap:anywhere; }
.portal-shell__foot a { color:var(--bua-channel); }
.portal-shell__foot button { min-height:44px; border:1px solid var(--bua-line); border-radius:6px; color:var(--bua-text); background:transparent; cursor:pointer; }
.portal-shell__roles { color:var(--bua-channel); }
body[data-bua-management="true"] :is(button,a,input,select,textarea,summary):focus-visible,
.portal-verification :is(button,input):focus-visible { outline:2px solid var(--bua-action); outline-offset:2px; }
body[data-bua-management="true"] h1 { font-size:22px; font-weight:600; letter-spacing:-.02em; }
.portal-verification { color:var(--bua-text); background:var(--bua-panel); border:1px solid var(--bua-line); border-radius:12px; padding:24px; width:min(460px,calc(100vw - 32px)); box-sizing:border-box; }
.portal-verification::backdrop { background:var(--bua-scrim); }
.portal-verification form { display:grid; gap:16px; }
.portal-verification :is(h2,p) { margin:0; }
.portal-verification h2 { font:600 22px/1.3 var(--font-heading); }
.portal-verification p { color:var(--bua-muted); line-height:1.5; }
.portal-verification__operation { font:500 11px/1.5 var(--font-data); overflow-wrap:anywhere; }
.portal-verification input { font:500 20px/1.5 var(--font-data); letter-spacing:.15em; background:var(--bua-bg); color:var(--bua-text); border:1px solid var(--bua-line); border-radius:6px; padding:10px; width:100%; box-sizing:border-box; }
.portal-verification__actions { display:flex; justify-content:flex-end; gap:12px; }
.portal-verification button { min-height:44px; padding:8px 18px; border:1px solid var(--bua-line); border-radius:6px; color:var(--bua-text); background:transparent; cursor:pointer; }
.portal-verification button.portal-verification__primary { color:var(--bua-action-contrast); background:var(--bua-action); border-color:var(--bua-action); }

.portal-shell__address {color:var(--bua-channel);font-family:var(--font-data);}

body[data-bua-management="true"] { --bua-panel:var(--bua-surface); font-family:var(--font-body); }
body[data-bua-management="true"] .portal-content { padding:22px 28px; }
body[data-bua-management="true"] :is(.chart-card,.measure-card,.management-signal) { border-radius:12px; }
body[data-bua-management="true"] :is(td,th) { min-height:48px; padding-block:14px; }
@media(max-width:1180px) {
  body[data-bua-management="true"] :is(.management-grid,.measure-grid) {grid-template-columns:minmax(0,1fr);}
}
@media(max-width:850px) {
  body[data-bua-management="true"] .portal-content {padding:18px 16px;}
}

/* Turn 10: the same authorized menu at 236 px or a 64 px rail. */
.portal-shell {transition:none;}
body[data-bua-management="true"] {transition:none;}
body[data-portal-motion="true"] .portal-shell {transition:width 180ms ease;}
body[data-bua-management="true"][data-portal-motion="true"] {transition:padding-left 180ms ease;}
.portal-shell__head {display:flex; align-items:center; gap:2px;}
.portal-shell__head .portal-shell__label {flex:1; min-width:0;}
.portal-nav-toggle {flex-shrink:0; width:28px; height:44px; border:0; background:transparent; color:var(--bua-action); font-size:24px; cursor:pointer;}
.portal-nav-list {list-style:none; padding:0; margin:0; display:grid; gap:4px;}
.portal-nav-list[hidden] {display:none!important;}
.portal-nav-group {min-height:48px; padding:10px; gap:8px; display:flex; align-items:center; justify-content:space-between; width:100%; border:0; background:transparent; text-align:left; cursor:pointer;}
.portal-nav-group[aria-disabled="true"] {cursor:default;}
.portal-nav-waiting {color:var(--bua-action); font-size:8px;}
.portal-shell__links a {gap:10px; position:relative;}
.portal-nav-glyph {flex-shrink:0; width:20px; height:20px;}
.portal-nav-badge {margin-left:auto; color:var(--bua-action); font:500 10px/1 var(--font-data); border:1px solid var(--bua-action); padding:3px; border-radius:4px;}
.portal-shell[data-collapsed="true"] {width:64px; padding:16px 8px;}
body[data-bua-management="true"][data-portal-collapsed="true"] {padding-left:64px;}
.portal-shell[data-collapsed="true"] .portal-shell__head {flex-direction:column;}
.portal-shell[data-collapsed="true"] .portal-shell__label {padding:0;}
.portal-shell[data-collapsed="true"] .portal-shell__label span,
.portal-shell[data-collapsed="true"] .portal-nav-label,
.portal-shell[data-collapsed="true"] .portal-shell__foot :is(p,strong,span,small,a),
.portal-shell[data-collapsed="true"] .portal-nav-group {display:none;}
.portal-shell[data-collapsed="true"] .portal-nav-list {border-top:1px solid var(--bua-line); padding-top:8px; margin-top:8px;}
.portal-shell[data-collapsed="true"] .portal-shell__links a {padding:0; justify-content:center; width:48px; height:48px; min-height:48px;}
.portal-shell[data-collapsed="true"] .portal-nav-badge {position:absolute; top:4px; right:3px; width:6px; height:6px; padding:0; border-radius:50%; background:var(--bua-action); font-size:0;}
.portal-shell[data-collapsed="true"] .portal-shell__foot {padding:8px 0 0;}
.portal-shell[data-collapsed="true"] .portal-shell__foot button {font-size:10px; line-height:1.2; padding:4px; overflow-wrap:normal;}
@media(max-width:850px) {
  .portal-shell {padding:16px 10px;}
  body[data-bua-management="true"] main {min-width:0; overflow-wrap:anywhere;}
}
@media(prefers-reduced-motion:reduce) {
  .portal-shell,body[data-bua-management="true"] {transition:none!important;}
}
.portal-shell[data-collapsed="true"] .portal-shell__links a:is(:hover,:focus) .portal-nav-label {
  display:block; position:fixed; left:72px; width:max-content; max-width:240px; padding:8px 12px;
  border:1px solid var(--bua-line); border-radius:6px; background:var(--bua-panel); color:var(--bua-text);
  z-index:100; pointer-events:none; font-size:12px;
}

.portal-nav-chevron {font-size:18px; color:var(--bua-action); flex-shrink:0;}
.portal-nav-waiting {margin-left:auto;}
.portal-nav-group:hover {color:var(--bua-action);}

/* Consistent menu grid: readable labels, equal gutters and a fixed trailing control. */
.portal-shell__group {font:600 13px/1.4 var(--font-body); text-transform:none; letter-spacing:normal; color:var(--bua-text);}
.portal-nav-group {box-sizing:border-box; display:grid; grid-template-columns:minmax(0,1fr) auto 24px; padding:12px; gap:8px;}
.portal-nav-waiting {font-size:11px; line-height:1.4; margin:0; text-align:right;}
.portal-nav-chevron {width:24px; text-align:center;}
.portal-shell__links a {box-sizing:border-box; min-height:48px; padding:12px; font-size:15px; line-height:1.4;}
.portal-nav-label {min-width:0; overflow-wrap:anywhere;}
.portal-nav-toggle {width:48px; height:48px;}
