/* One shared shell and visual vocabulary. Habit tracking keeps its own controls. */
:root { --portal-rail:224px; --portal-header-height:72px; --portal-actions-bottom:0px; --radius:14px; }
.portal-icon { width:22px; height:22px; flex:none; vertical-align:middle; }
:where(a,button,input,select,textarea,summary):focus-visible { outline:3px solid var(--accent); outline-offset:3px; }
[hidden] { display:none !important; }
.portal-skip { position:fixed;left:1rem;top:-100px;z-index:200;background:var(--accent);color:var(--accent-ink);padding:.8rem 1rem;border-radius:8px; }
.portal-skip:focus { top:1rem; }
html { scroll-padding-top:calc(var(--portal-header-height) + 20px); }
.portal-shell { display:grid;grid-template-columns:var(--portal-rail) minmax(0,1fr); }
.portal-shell .portal-header { grid-column:1/-1;display:grid;grid-template-columns:calc(var(--portal-rail) - 16px) minmax(160px,1fr) auto;gap:16px;min-height:72px;padding:12px 24px 12px 16px;z-index:60; }
.portal-header .brand { display:flex;gap:10px;align-items:center;min-width:0;font-size:1rem;line-height:1.25; }
.portal-header .brand .portal-icon { width:30px;height:30px;color:var(--accent); }
.homebase-mark { display:inline-block;flex-shrink:0;border-radius:22%;vertical-align:middle; }
.login-card h1 { display:flex;align-items:center;justify-content:center;gap:12px; }
.portal-header .topsearch { margin:0;justify-self:end;width:min(100%,460px);max-width:none; }
.portal-header .topsearch input { width:100%;max-width:none;min-height:44px;border-radius:10px;font-size:.95rem; }
.portal-header .portal-quick-add { display:flex;align-items:center;gap:6px;white-space:nowrap; }
.portal-shell .portal-header .portal-menu-toggle { display:none; }
.portal-shell .portal-sidebar { position:fixed;top:var(--portal-header-height);bottom:0;left:0;width:var(--portal-rail);padding:10px 12px 16px;border-right:1px solid var(--line);background:var(--card);overflow-y:auto;z-index:50;scrollbar-width:thin; }
.portal-sidebar nav { display:flex;flex-direction:column;gap:4px; }
.portal-nav-label { font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin:12px 12px 5px; }
.portal-sidebar nav a { display:flex;align-items:center;gap:12px;min-height:44px;margin:2px 0;padding:9px 12px;border-radius:9px;color:var(--muted);font-size:.9rem;font-weight:550;line-height:1.25;border:1px solid transparent; }
.portal-sidebar nav a:hover { background:var(--bg);color:var(--text); }
.portal-sidebar nav a[aria-current="page"] { color:var(--accent);background:color-mix(in srgb,var(--accent) 11%,var(--card));border-color:color-mix(in srgb,var(--accent) 22%,var(--line));font-weight:700; }
.portal-account { margin:18px 8px 0;border-top:1px solid var(--line);padding-top:12px;font-size:.76rem;color:var(--muted); }
.portal-account>span { display:block;overflow-wrap:anywhere; }
.portal-account button { display:flex;align-items:center;gap:10px;min-height:44px; }
.portal-shell main { grid-column:2;max-width:1120px;width:100%;min-width:0;margin:0 auto;padding:24px 32px 64px; }
.portal-shell main:focus { outline:none; }
.portal-shell .portal-tools { grid-column:2;width:100%;max-width:1120px;margin:0 auto;padding:12px 32px 24px;gap:4px 20px; }
.portal-tools a { min-height:44px;display:inline-flex;align-items:center; }
.portal-shell h1 { font-size:1.55rem;letter-spacing:-.025em;line-height:1.25;margin:.5rem 0 1rem; }
.portal-shell h2 { font-size:1.05rem;line-height:1.35; }
.portal-shell .btn { min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:.9rem;line-height:1.25;border-radius:9px; }
.portal-shell .card { box-shadow:none; }
.portal-shell .pagehead,.portal-shell .page-head { margin-bottom:20px;gap:12px;align-items:center; }
.portal-shell .form input:not([type=checkbox]):not([type=radio]):not([type=file]),.portal-shell .form select { min-height:44px; }
.portal-shell .form input[type=checkbox],.portal-shell .form input[type=radio] { width:18px;height:18px;accent-color:var(--accent); }
.portal-shell .form label { font-weight:550; }
.portal-shell .dangerzone { padding-top:18px;border-top:1px solid var(--line); }
.portal-shell .taskrow .linklike,.portal-shell .checkrow .linklike { min-width:44px;min-height:44px; }
.portal-shell .checkrow .tick { min-width:44px;min-height:44px; }
.portal-shell .personal-dash-head { margin:0 0 20px; }
.portal-shell .greeting { margin:4px 0 0;font-size:1.75rem; }
.portal-eyebrow { margin:0;font-size:.8rem;color:var(--muted); }
.portal-glance { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0 0 20px; }
.portal-glance-card { display:flex;align-items:flex-start;gap:12px;border:1px solid var(--line);border-radius:12px;background:var(--card);padding:16px;color:var(--text); }
.portal-glance-card>.portal-icon { color:var(--accent);margin-top:3px; }
.portal-glance-card>span { display:flex;flex:1;flex-direction:column;gap:2px;min-width:0; }
.portal-glance-label { font-size:.8rem;font-weight:600; }
.portal-glance-card strong { font-size:1.7rem;font-weight:650;line-height:1.35;letter-spacing:-.04em; }
.portal-glance-card .hint { font-size:.76rem; }
.portal-glance-card .portal-glance-arrow { width:16px;color:var(--muted); }
.portal-attention { margin:0 0 22px;padding:0;box-shadow:none; }
.portal-attention .attention-title { padding:12px 16px 2px;font-size:.7rem; }
.portal-attention .attention-list { padding:2px 16px 8px; }
.portal-attention .attention-row { padding:7px 0;font-size:.86rem; }
.portal-attention .personal-attention-more { padding:0 16px 8px;font-size:.8rem; }
.portal-attention .personal-attention-more summary { min-height:32px;display:list-item;align-content:center; }
.portal-shell .tiles { grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px;margin-top:10px; }
.portal-shell .tile { display:flex;align-items:center;gap:14px;min-height:100px;padding:16px;box-shadow:none; }
.portal-shell .tile-icon { width:42px;height:42px;display:grid;place-items:center;flex:none;border-radius:11px;background:var(--bg);color:var(--accent); }
.portal-tile-copy { display:flex;flex-direction:column;gap:4px;min-width:0; }
.portal-shell .tile-name { font-size:.94rem;line-height:1.3;margin:0; }
.portal-shell .tile-sub { font-size:.8rem;line-height:1.4;margin:0; }
.portal-shell .portal-favorites .tile { min-height:84px;border-color:color-mix(in srgb,var(--accent) 25%,var(--line)); }
.portal-shell .personal-section-title { margin:22px 0 8px;font-size:.93rem; }
.portal-extra-tools { margin:24px 0 8px; }
.portal-extra-tools>summary { cursor:pointer;min-height:44px;font-size:.93rem;font-weight:600;align-content:center; }
.portal-extra-tools>summary .hint { font-weight:400;margin-left:8px; }
.portal-shell .dash-footnote { text-align:left;font-size:.76rem;margin-top:24px; }
.portal-shell .personal-choice { padding:5px 0; }
.portal-shell .personal-choice .check { gap:10px;min-height:44px; }
.portal-shell .personal-choice .portal-icon { color:var(--muted); }
@media(max-width:1200px) and (min-width:961px) { .portal-shell main { padding-inline:24px; }.portal-glance-card { padding:12px;gap:8px; }.portal-glance-arrow { display:none; } }
@media(max-width:960px) {
  :root { --portal-header-height:112px; }
  .portal-shell { display:block; }
  .portal-shell .portal-header { grid-template-columns:auto minmax(0,1fr) auto;padding:10px 16px;gap:8px 12px; }
  .portal-header .brand { grid-column:2;grid-row:1;font-size:.94rem; }
  .portal-header .brand .portal-icon,.portal-header .brand .homebase-mark { display:none; }
  .portal-shell .portal-header .portal-menu-toggle { display:inline-flex;grid-column:1;grid-row:1;padding:8px; }
  .portal-header .portal-menu-toggle .portal-icon { width:20px; }
  .portal-header .portal-menu-toggle span { font-size:.8rem; }
  .portal-header .portal-quick-add { grid-column:3;grid-row:1;padding:8px 10px;font-size:.8rem; }
  .portal-header .topsearch { grid-column:1/-1;grid-row:2;width:100%; }
  .portal-header .topsearch input { min-height:40px; }
  .portal-shell .portal-sidebar { position:static;width:auto;max-height:none;border-right:0;border-bottom:1px solid var(--line);padding:12px 16px; }
  .portal-nav-ready .portal-sidebar { display:none; }
  .portal-nav-ready .portal-sidebar.is-open { display:block;position:fixed;top:var(--portal-header-height);left:8px;right:8px;bottom:8px;width:auto;border:1px solid var(--line);border-radius:12px;box-shadow:0 20px 50px #0004; }
  .portal-sidebar nav { max-width:680px;margin:auto; }
  .portal-nav-group { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 8px; }
  .portal-nav-label { grid-column:1/-1; }
  .portal-account { max-width:660px;margin-inline:auto; }
  .portal-shell main { padding:20px 20px 64px; }
  .portal-shell .portal-tools { padding:12px 20px 24px; }
}
@media(max-width:600px) {
  .portal-shell main { padding:18px 16px 48px; }
  .portal-shell .portal-tools { padding:12px 16px 24px; }
  .portal-shell main:has(.hb-tabs),.portal-shell main.has-tabbar { padding-bottom:6rem; }
  .portal-shell:has(.hb-tabs) .portal-tools { padding-bottom:6rem; }
  .portal-shell h1 { font-size:1.35rem; }
  .portal-shell .greeting { font-size:1.5rem; }
  .portal-glance { gap:8px; }
  .portal-glance-card { padding:12px 10px;gap:4px; }
  .portal-glance-card>.portal-icon { display:none; }
  .portal-glance-label { font-size:.72rem; }
  .portal-glance-card strong { font-size:1.45rem; }
  .portal-glance-card .hint { font-size:.7rem; }
  .portal-shell .tiles { grid-template-columns:minmax(0,1fr); }
  .portal-shell .tile { min-height:84px;padding:14px; }
  .portal-shell .portal-favorites .tile { min-height:74px; }
  .portal-shell .portal-attention .attention-list { padding-inline:12px; }
  .portal-shell .portal-attention .attention-title { padding-inline:12px; }
}
@media(prefers-reduced-motion:reduce) { .portal-shell .tile { transition:none; }.portal-shell .tile:hover { transform:none; } }
@media print { .portal-header,.portal-sidebar,.portal-tools,.portal-skip { display:none !important; }.portal-shell { display:block; }.portal-shell main { max-width:none;padding:0; } }
