/* HarveyOS navigation v2 — stable intent-based workspaces.
   Desktop is a persistent rail; compact layouts use a contextual bottom dock. */
:root {
  --nav-width: 272px;
  --nav-bg: rgba(10,14,17,.975);
  --nav-line: rgba(126,145,159,.2);
  --nav-hover: rgba(112,177,152,.075);
  --nav-selected: linear-gradient(90deg,rgba(79,164,119,.18),rgba(95,143,170,.12));
}
.nav-symbols { position:absolute; width:0; height:0; overflow:hidden; }
.nav-icon { width:18px; height:18px; flex:0 0 18px; fill:none; stroke:currentColor; stroke-width:1.65; stroke-linecap:round; stroke-linejoin:round; }
.mobile-dock { display:none; }
.nav-custody-badge { display:inline-grid; place-items:center; min-width:20px; height:20px; padding:0 5px; border:1px solid rgba(112,177,152,.28); border-radius:10px; color:#8fc5b1; background:rgba(79,164,119,.075); font:700 .58rem/1 var(--exec-data); }
.nav-custody-badge.has-alert { border-color:rgba(226,167,93,.48); color:#f0bc7a; background:rgba(226,167,93,.1); }
.custody-mini { display:grid; gap:8px; margin:5px 0 9px; padding:10px; border:1px solid rgba(126,145,159,.18); border-radius:9px; background:rgba(4,8,10,.35); }
.custody-mini > header { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.custody-mini > header > div { display:flex; align-items:center; gap:6px; color:#dce6e2; }
.custody-mini > header .nav-icon { width:14px; height:14px; color:#70b198; }
.custody-mini > header b { font:650 .65rem/1 var(--exec-body); }
.custody-mini > header small { color:#84909b; font:.54rem/1 var(--exec-data); }
.custody-mini.has-alert > header small { color:#e2a75d; }
.custody-mini > div { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:4px; }
.custody-mini > div a { display:grid; grid-template-columns:auto minmax(0,1fr); align-items:baseline; gap:4px; min-width:0; min-height:0; padding:6px; border:1px solid rgba(255,255,255,.045); border-radius:6px; background:rgba(255,255,255,.018); color:#aeb8c1; }
.custody-mini > div a:hover { border-color:rgba(112,177,152,.25); color:#edf2f0; text-decoration:none; }
.custody-mini > div a b { color:#e3e8eb; font:700 .72rem/1 var(--exec-data); }
.custody-mini > div a span { min-width:0; overflow:hidden; text-overflow:ellipsis; color:inherit; font:.52rem/1 var(--exec-body); white-space:nowrap; }
.custody-mini > div a.is-critical b { color:#e9a0a0; }
.custody-mini > footer { display:flex; justify-content:space-between; align-items:center; gap:8px; padding-top:7px; border-top:1px solid rgba(126,145,159,.14); }
.custody-mini > footer a { color:#8fc5b1; font:570 .56rem/1 var(--exec-body); }
.custody-mini > footer span { color:#77828d; font:.5rem/1 var(--exec-data); }

@media (min-width:1024px) {
  body:not(.page-login) { padding-left:var(--nav-width); }
  body:not(.page-login) .topbar,
  body.page-today:not(.page-login) .topbar {
    position:fixed; inset:0 auto 0 0; z-index:90;
    display:flex; flex-direction:column; align-items:stretch; flex-wrap:nowrap; gap:0;
    width:var(--nav-width); height:100dvh; min-height:0; padding:22px 16px 14px;
    /* The whole sidebar scrolls as one — a nested scroll on .primary-nav got
       squeezed to nothing when the utilities block was tall, making lower nav
       items unreachable. Scrollbar stays thin and out of the way. */
    overflow-y:auto; overflow-x:hidden; overscroll-behavior:contain;
    scrollbar-width:thin; scrollbar-color:rgba(132,145,159,.28) transparent;
    border:0; border-right:1px solid var(--nav-line);
    background:
      radial-gradient(circle at 0 0,rgba(79,164,119,.08),transparent 33%),
      linear-gradient(180deg,rgba(13,19,23,.99),var(--nav-bg));
    backdrop-filter:blur(20px) saturate(118%);
  }
  .topbar .brand { align-self:flex-start; margin:0 8px 16px; color:#f4f6f8; font-size:1.15rem; }
  .topbar .brand span { margin-right:7px; }
  .topbar .brand small { color:#87919d; }
  .topbar .command-trigger {
    order:1; width:100%; min-height:42px; margin:0 0 15px; padding:8px 10px;
    justify-content:flex-start; gap:8px; border-color:rgba(95,143,170,.4); border-radius:8px;
    color:#dfe5ea; background:rgba(95,143,170,.045); box-shadow:none;
  }
  .topbar .command-trigger .command-search { display:inline; color:inherit; font:650 .86rem/1 var(--exec-body); }
  .topbar .command-trigger .command-key { display:inline-flex; align-items:center; gap:2px; margin-left:auto; color:#8f9aa6; font:.62rem/1 var(--exec-data); }
  .topbar .command-trigger .command-key i { font-style:normal; }
  .topbar .primary-nav {
    order:2; display:flex; flex:0 0 auto; flex-direction:column; align-items:stretch;
    width:100%; min-height:0; gap:2px; padding:0 2px 12px;
  }
  .topbar .nav-section-label {
    display:block; margin:14px 9px 5px; color:#7f8995;
    font:650 .68rem/1 var(--exec-data); letter-spacing:.14em; text-transform:uppercase;
  }
  .topbar .nav-parent,
  .topbar .primary-nav > a.nav-parent,
  .topbar .nav-menu > summary.nav-parent {
    display:flex; align-items:center; width:100%; min-height:38px; gap:9px; padding:8px 9px;
    border:0; border-radius:7px; color:#b9c1ca; background:transparent; box-shadow:none;
    font:560 .9rem/1.2 var(--exec-body); list-style:none; cursor:pointer;
  }
  .topbar .nav-parent b { font:inherit; color:inherit; }
  .topbar .nav-parent:hover { color:#f1f4f6; background:var(--nav-hover); text-decoration:none; }
  .topbar .nav-parent.on { color:#eef6f3; background:rgba(79,164,119,.07); box-shadow:none; }
  .topbar .nav-parent.on > .nav-icon:first-child { color:#70b198; }
  .topbar .nav-menu { position:static; flex:0 0 auto; width:100%; min-height:0; }
  .topbar .nav-menu > summary::-webkit-details-marker { display:none; }
  .topbar .nav-menu > summary::after { display:none; }
  .topbar .nav-menu > summary .nav-custody-badge { margin-left:auto; }
  .topbar .nav-menu > summary .nav-icon:last-child { width:14px; height:14px; margin-left:2px; color:#73808d; transition:transform .16s ease; }
  .topbar .nav-menu[open] > summary .nav-icon:last-child { transform:rotate(90deg); }
  .topbar .nav-popover.nav-children {
    position:static; display:grid; align-content:start; grid-auto-rows:min-content;
    width:auto; min-height:0; max-height:none; margin:1px 0 3px 18px; padding:0 0 0 15px;
    border:0; border-left:1px solid rgba(132,145,159,.22); border-radius:0;
    overflow:visible; background:none; box-shadow:none;
  }
  .topbar .nav-menu:not([open]) > .nav-children { display:none; }
  .topbar .nav-popover.nav-children a {
    position:relative; display:block; min-height:29px; padding:6px 9px; border-radius:5px;
    color:#a5afb9; font:520 .82rem/1.35 var(--exec-body);
  }
  .topbar .nav-popover.nav-children a::before {
    content:""; position:absolute; left:-16px; top:50%; width:6px; height:1px; background:#49545f;
  }
  .topbar .nav-popover.nav-children a:hover { color:#e5e9ed; background:rgba(255,255,255,.035); text-decoration:none; }
  .topbar .nav-popover.nav-children a.on {
    color:#f3f7f5; background:var(--nav-selected); box-shadow:inset 2px 0 0 #70b198;
  }
  .topbar .nav-popover.nav-children.nav-work-children { gap:1px; padding-top:3px; padding-bottom:4px; }
  .topbar .nav-popover.nav-children.nav-work-children .custody-mini { display:none; }
  .topbar .nav-popover.nav-children.nav-work-children > a {
    display:grid; gap:2px; min-height:40px; padding:6px 9px;
  }
  .topbar .nav-popover.nav-children.nav-work-children > a b {
    color:inherit; font:590 .82rem/1.15 var(--exec-body);
  }
  .topbar .nav-popover.nav-children.nav-work-children > a small {
    min-width:0; overflow:hidden; color:#7f8b96; font:440 .66rem/1.2 var(--exec-body);
    text-overflow:ellipsis; white-space:nowrap;
  }
  .topbar .nav-popover.nav-children.nav-work-children > a:hover small,
  .topbar .nav-popover.nav-children.nav-work-children > a.on small { color:#9eabb6; }
  .topbar .nav-popover.nav-children.nav-work-children > a.nav-work-overview {
    margin:0 0 4px; padding-bottom:9px; border-bottom:1px solid rgba(126,145,159,.14);
    border-radius:5px 5px 0 0; color:#8fc5b1;
  }
  .topbar .nav-source-entry { margin:1px 0 3px; }
  .topbar .nav-source-entry > span { min-width:0; display:grid; gap:2px; }
  .topbar .nav-source-entry small {
    color:#7f8b96; font:440 .64rem/1.2 var(--exec-body); white-space:normal;
  }
  .topbar .nav-source-entry.on small,.topbar .nav-source-entry:hover small { color:#a3aeb8; }
  .topbar .sidebar-utilities {
    /* margin-top:auto pins utilities to the bottom when the nav fits, and lets
       them scroll into reach with everything else when it doesn't. */
    order:3; display:grid; flex:0 0 auto; gap:1px; width:100%; margin-top:auto;
    padding:10px 2px 0; border-top:1px solid var(--nav-line);
  }
  .topbar .sidebar-utilities a {
    display:flex; align-items:center; gap:9px; min-height:34px; padding:7px 9px;
    border-radius:6px; color:#a4aeb8; font:540 .82rem/1.2 var(--exec-body);
  }
  .topbar .sidebar-utilities a b { font:inherit; }
  .topbar .sidebar-utilities a:hover,.topbar .sidebar-utilities a.on { color:#edf1f4; background:rgba(255,255,255,.04); text-decoration:none; }
  .topbar .sidebar-utilities .nav-icon { width:16px; height:16px; flex-basis:16px; }
  .topbar .sidebar-automation > summary {
    display:flex; align-items:center; gap:9px; min-height:34px; padding:7px 9px;
    border-radius:6px; color:#a4aeb8; font:540 .82rem/1.2 var(--exec-body); list-style:none;
  }
  .topbar .sidebar-automation > summary::-webkit-details-marker { display:none; }
  .topbar .sidebar-automation > summary b { font:inherit; }
  .topbar .sidebar-automation > summary .nav-icon:last-child { width:13px; height:13px; margin-left:auto; transition:transform .16s; }
  .topbar .sidebar-automation[open] > summary .nav-icon:last-child { transform:rotate(90deg); }
  .topbar .sidebar-automation > div { display:grid; grid-template-columns:1fr 1fr; padding:3px 3px 7px 25px; }
  .topbar .sidebar-automation > div a { min-height:26px; padding:5px 6px; font-size:.66rem; }
  body:not(.page-login) main {
    width:100%; max-width:none; margin:0; padding-left:max(28px,calc((100vw - var(--nav-width) - 1380px)/2 + 28px));
    padding-right:max(28px,calc((100vw - var(--nav-width) - 1380px)/2 + 28px));
  }
  body.page-today main { width:100%; max-width:none; margin:0; padding:0; }
  body:not(.page-login) .foot { margin-left:0; }
  .mobile-more-panel,.mobile-dock { display:none !important; }
}

@media (max-width:1023px) {
  body:not(.page-login) { padding-bottom:calc(76px + env(safe-area-inset-bottom)); }
  body:not(.page-login) .topbar,
  body.page-today:not(.page-login) .topbar {
    position:sticky; top:0; z-index:100; display:grid;
    grid-template-columns:minmax(0,1fr) 46px; align-items:center; gap:12px;
    width:100%; min-height:56px; height:auto; padding:7px max(14px,env(safe-area-inset-right)) 7px max(14px,env(safe-area-inset-left));
    border:0; border-bottom:1px solid var(--nav-line); background:rgba(9,13,16,.96);
    backdrop-filter:blur(18px) saturate(120%);
  }
  .topbar .brand { grid-column:1; margin:0; font-size:.95rem; }
  .topbar .brand small { display:none; }
  .topbar .brand span { margin-right:0; }
  .topbar .primary-nav,.topbar .sidebar-utilities { display:none; }
  .topbar .command-trigger {
    display:inline-flex; grid-column:2; justify-self:end; width:44px; min-width:44px; height:44px;
    margin:0; padding:0; border-color:rgba(95,143,170,.25); border-radius:10px;
    color:#a8cbc5; background:rgba(95,143,170,.025); box-shadow:none;
  }
  .topbar .command-trigger .nav-icon { width:19px; height:19px; }
  .topbar .command-trigger .command-search,.topbar .command-trigger .command-key { display:none; }
  .mobile-dock {
    position:fixed; z-index:130; left:0; right:0; bottom:0; display:grid;
    grid-template-columns:repeat(5,minmax(0,1fr)); align-items:center;
    min-height:calc(64px + env(safe-area-inset-bottom)); padding:4px 8px env(safe-area-inset-bottom);
    border-top:1px solid rgba(126,145,159,.25); background:rgba(10,14,17,.975);
    box-shadow:0 -14px 40px rgba(0,0,0,.34); backdrop-filter:blur(18px) saturate(125%);
  }
  .mobile-dock > :is(a,button) {
    position:relative; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px;
    grid-column:auto !important; grid-row:auto !important;
    min-width:0; min-height:54px; margin:0; padding:5px 2px; border:0; border-radius:10px;
    color:#8e99a5; background:transparent; font:570 .64rem/1 var(--exec-body); text-decoration:none;
  }
  .mobile-dock > :is(a,button) .nav-icon { width:20px; height:20px; }
  .mobile-dock > :is(a,button).on,.mobile-dock > :is(a,button).is-open {
    color:#82c8ae; background:rgba(79,164,119,.075);
  }
  .mobile-dock .mobile-more-trigger:is(.on,.is-open) { box-shadow:none; }
  .mobile-dock .mobile-more-trigger span { transform:none !important; transition:none; }
  .mobile-dock .mobile-more-trigger .nav-custody-badge { position:absolute; top:3px; right:max(7px,calc(50% - 25px)); min-width:17px; height:17px; padding:0 4px; font-size:.5rem; }
  .mobile-dock .mobile-ask { color:#9fb5c0; }
  .mobile-dock .mobile-ask.on { color:#8fc5cf; background:rgba(95,143,170,.09); }
  .mobile-dock .mobile-ask .nav-icon { color:inherit; }
  .mobile-more-panel {
    position:fixed; z-index:140; top:auto; left:max(8px,env(safe-area-inset-left)); right:max(8px,env(safe-area-inset-right));
    bottom:calc(70px + env(safe-area-inset-bottom)); display:block; max-height:min(70dvh,620px); padding:0 12px 12px;
    overflow-y:auto; border:1px solid rgba(95,143,170,.35); border-radius:18px 18px 12px 12px;
    background:linear-gradient(180deg,rgba(20,27,32,.995),rgba(10,14,17,.995));
    box-shadow:0 -8px 60px rgba(0,0,0,.72),inset 0 1px rgba(255,255,255,.045);
  }
  .mobile-more-panel[hidden] { display:none !important; }
  .mobile-more-panel > header {
    position:sticky; top:0; z-index:2; display:grid; grid-template-columns:1fr auto; align-items:center;
    min-height:58px; margin:0 -12px 4px; padding:13px 12px 9px; border-bottom:1px solid var(--nav-line);
    background:rgba(19,26,31,.98);
  }
  .mobile-sheet-handle { position:absolute; top:6px; left:50%; width:38px; height:4px; transform:translateX(-50%); border-radius:4px; background:#65717c; }
  .mobile-more-panel > header > div { display:flex; align-items:center; gap:9px; color:#eef2f4; }
  .mobile-more-panel > header b { font:680 1rem/1.2 var(--exec-body); }
  .mobile-more-panel > header button { display:grid; place-items:center; width:36px; height:36px; padding:0; border:0; color:#a8b1bb; background:transparent; }
  .mobile-sheet-view { display:grid; gap:2px; }
  .mobile-sheet-view[hidden] { display:none; }
  .mobile-sheet-view .nav-popover-label { padding:12px 10px 5px; }
  .mobile-sheet-view a {
    display:grid; gap:2px; min-height:52px; padding:8px 11px; border-radius:8px; color:#cbd2d9;
  }
  .mobile-sheet-view a b { color:inherit; font:620 .85rem/1.2 var(--exec-body); }
  .mobile-sheet-view a small { color:#8f99a4; font:.68rem/1.3 var(--exec-body); }
  .mobile-sheet-view a.on { color:#f2f6f4; background:var(--nav-selected); box-shadow:inset 2px 0 #70b198; }
  .mobile-sheet-view .custody-mini { margin:2px 0 8px; padding:11px; }
  .mobile-sheet-view .custody-mini > div { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .mobile-sheet-view .custody-mini > div a { min-height:44px; padding:7px; }
  .mobile-sheet-view .custody-mini > footer a { display:block; min-height:0; padding:0; }
  .mobile-all-destinations { grid-template-columns:1fr 1fr; }
  .mobile-all-destinations .nav-popover-label { grid-column:1/-1; }
  .mobile-all-trigger {
    display:flex; align-items:center; justify-content:space-between; width:100%; min-height:46px;
    margin-top:8px; padding:9px 11px; border:0; border-top:1px solid var(--nav-line); border-radius:0;
    color:#b5bec7; background:transparent; font:570 .76rem/1.2 var(--exec-body);
  }
  .mobile-all-trigger[hidden] { display:none; }
  .mobile-all-trigger .nav-icon { width:15px; height:15px; }
  body:not(.page-login) main { width:100%; max-width:none; margin:0; padding-bottom:34px; }
  body.page-today main { width:100%; margin:0; }
  body:not(.page-login) .foot { margin-bottom:0; }
}

@media (max-width:390px) {
  .topbar .brand { font-size:.88rem; }
  .mobile-dock { padding-inline:3px; }
  .mobile-dock > :is(a,button) { font-size:.59rem; }
  .mobile-all-destinations { grid-template-columns:1fr; }
  .mobile-all-destinations .nav-popover-label { grid-column:1; }
}

@media (prefers-reduced-motion:reduce) {
  .topbar .nav-menu > summary .nav-icon:last-child { transition:none; }
}

/* Turbo replaces only the page surface. The retained shell stays visually
   anchored while the destination is in flight. */
.turbo-progress-bar {
  z-index:181; height:3px;
  background:linear-gradient(90deg,var(--steel),var(--steel-soft));
  box-shadow:0 0 16px rgba(95,143,170,.65);
}
html.is-navigating #main-content {
  opacity:.9;
  transform:translateY(2px);
  transition:opacity .24s ease,transform .24s ease;
}

@media (prefers-reduced-motion:reduce) {
  html.is-navigating #main-content { transform:none; transition:none; }
}
