/* Liquify Time Tracker · portal.css
   Company portal preview (admins only): Dashboard cards and "coming soon" pages. */
.dgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;align-items:start}
.dgrid .card{margin-bottom:0}
.dcard .chead{margin-bottom:10px}
.dtime{background:var(--tNav)}
.dstreak{background:var(--tCar)}
.dbig{font-size:38px;font-weight:600;letter-spacing:-.03em;line-height:1.1;font-variant-numeric:tabular-nums;margin:2px 0 6px}
.dbig small{font-size:16px;font-weight:600;color:var(--mute);margin-left:4px}
.dcard p{margin:0 0 12px}
.plinks{display:grid;gap:6px}
.plink{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:var(--soft);color:var(--ink);border:1px solid var(--line);border-radius:12px;padding:10px 12px;font-weight:600}
.plink:hover{background:var(--soft2)}
.plink svg{flex:none;opacity:.85}
.plink .sub{display:block;font-weight:500}
.psoon{max-width:560px;text-align:left}
.psoon-ico{display:inline-flex;width:52px;height:52px;border-radius:16px;align-items:center;justify-content:center;background:var(--priSoft);color:var(--priInk);margin-bottom:10px}
.psoon h2{margin:0 0 8px}
.psoon p{margin:0 0 10px}
@media (max-width:820px){
  .dgrid{gap:12px}
  .dbig{font-size:32px}
}

/* ---------- Directory and org chart ---------- */
.dbanner{margin-bottom:12px}
.dtodo{margin:-4px 0 14px}
.dme p{margin:0}
.dchain{list-style:none;display:flex;flex-wrap:wrap;align-items:center;gap:6px 4px;margin:12px 0 0;padding:0}
.dchain li{display:flex;align-items:center;gap:8px;background:var(--soft);border:1px solid var(--line);border-radius:999px;padding:4px 12px 4px 4px;font-weight:600;font-size:14px}
.dchain li + li::before{content:"\2192";color:var(--mute);margin:0 4px 0 -2px;font-weight:400}
.dchain li span small{display:block;font-weight:500;font-size:11.5px;color:var(--mute)}
.dchain .dav{width:28px;height:28px;font-size:11px}
.dtools{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:4px 0 14px}
.dtools input{flex:1 1 220px;width:auto}.dtools select{flex:0 1 200px;width:auto}
.seg{display:inline-flex;background:var(--soft2);border-radius:12px;padding:3px}
.seg button{background:none;color:var(--ink);padding:7px 14px;border-radius:9px;font-weight:600}
.seg button.on{background:var(--card);box-shadow:0 1px 3px rgba(27,37,47,.12)}
.dav{flex:none;width:40px;height:40px;border-radius:50%;object-fit:cover;background:var(--soft2);color:var(--ink);font-weight:700;font-size:13px;display:inline-flex;align-items:center;justify-content:center}
.dav.big{width:56px;height:56px;font-size:16px}
.ocard{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px 12px;max-width:520px}
.ocard.me{border-color:var(--caramel);box-shadow:0 0 0 2px var(--priSoft)}
.ocard.editing{align-items:flex-start;max-width:520px}
.oinfo{flex:1;min-width:0}
.oinfo b{display:block;overflow:hidden;text-overflow:ellipsis}
.oinfo .sub{display:block}
.oinfo label{margin-top:8px}
.otog{flex:none;min-width:34px;height:30px;padding:0 8px;border-radius:999px;background:var(--soft2);color:var(--ink);font-size:13px}
.otree,.otree ul{list-style:none;margin:0;padding:0}
.otree ul{margin-left:22px;padding-left:18px;border-left:2px solid var(--line)}
.otree li{position:relative;margin:8px 0}
.otree ul > li::before{content:"";position:absolute;left:-18px;top:30px;width:16px;border-top:2px solid var(--line)}
.dgridp{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px}
.dgridp .ocard{max-width:none}
.dloose{font-size:15px;margin:22px 0 8px}
@media (max-width:820px){
  .otree ul{margin-left:12px;padding-left:12px}
  .otree ul > li::before{left:-12px;width:10px}
  .ocard{padding:9px 10px;gap:10px}
  .dav{width:36px;height:36px}
  .dgridp{grid-template-columns:1fr}
  .dtools select{flex:1 1 100%}
}

/* ---------- top-down org chart (like the printed chart) ---------- */
.ochart-tools{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:0 0 8px;flex-wrap:wrap}
.ochart-tools .seg button{min-width:40px}
.ochart-wrap{position:relative;overflow:hidden;background:var(--soft);border:1px solid var(--line);border-radius:16px;touch-action:pan-y;user-select:none;-webkit-user-select:none}
.ochart-wrap.pan{cursor:grab;touch-action:none}
.ochart-wrap.pan:active{cursor:grabbing}
.ochart{display:inline-block;transform-origin:0 0;padding:22px 18px 26px;white-space:nowrap}
.ochart ul{display:flex;justify-content:center;margin:0;padding:22px 0 0;position:relative;list-style:none}
.ochart > ul{padding-top:0}
.ochart li{display:flex;flex-direction:column;align-items:center;position:relative;padding:22px 7px 0;list-style:none}
.ochart > ul > li{padding-top:0}
/* the lines: a horizontal bar above each row of siblings, and a drop to each box */
.ochart li::before,.ochart li::after{content:"";position:absolute;top:0;right:50%;width:50%;height:22px;border-top:2px solid var(--line2)}
.ochart li::after{right:auto;left:50%;border-left:2px solid var(--line2)}
.ochart li:only-child::before{display:none}
/* an only child keeps the same gap (so every level is the same height) with a straight line down */
.ochart li:only-child::after{border-top:0;width:0;left:50%;border-radius:0}
.ochart li:first-child::before,.ochart li:last-child::after{border:0 none}
.ochart li:last-child::before{border-right:2px solid var(--line2);border-radius:0 8px 0 0}
.ochart li:first-child::after{border-radius:8px 0 0 0}
.ochart > ul > li::before,.ochart > ul > li::after{display:none}
.ochart ul ul::before{content:"";position:absolute;top:0;left:50%;height:22px;border-left:2px solid var(--line2)}
/* a column of people under one lead */
.ostack{display:flex;flex-direction:column;align-items:center;gap:10px;padding-top:44px;position:relative}
.ostack::before{content:"";position:absolute;top:0;bottom:24px;left:50%;border-left:2px solid var(--line2)}
.ostack .obox{position:relative}
/* the boxes */
.obox{position:relative;display:flex;align-items:center;gap:8px;width:196px;height:72px;overflow:visible;padding:8px 10px;border-radius:12px;background:var(--card);border:1px solid var(--line2);color:var(--ink);text-align:left;white-space:normal;box-shadow:0 2px 8px rgba(27,37,47,.06)}
.obox[role="button"]{cursor:pointer}
.obox[role="button"]:hover{box-shadow:0 0 0 2px var(--caramel)}
.obox .dav{width:32px;height:32px;font-size:11px}
.ob-t{flex:1;min-width:0;line-height:1.2}
.ob-t b{display:block;font-size:12.5px;font-weight:700;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:anywhere}
.ob-t small{display:block;font-size:10.5px;font-weight:500;opacity:.8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ob-t small.ob-d{opacity:.62;text-transform:uppercase;letter-spacing:.04em;font-size:9.5px;font-weight:700}
.ob-me{position:absolute;top:-8px;right:8px;background:var(--caramel);color:var(--navy);font-size:9.5px;font-weight:800;padding:1px 7px;border-radius:999px}
.obtog{position:absolute;bottom:-11px;left:50%;transform:translateX(-50%);min-width:26px;height:20px;padding:0 6px;border-radius:999px;font-size:11px;line-height:1;background:var(--card);color:var(--ink);border:1px solid var(--line2);z-index:1}
.obox.lv1{background:var(--navy);color:var(--buttermilk);border-color:var(--navy)}
.obox.lv2{background:var(--caramel);color:var(--navy);border-color:var(--caramel)}
.obox.lv3{background:#f3e3cf;border-color:#d9b889;color:var(--navy)}
.obox.lv5{background:#4a545e;color:#f9f6f0;border-color:#4a545e}
.obox.me{box-shadow:0 0 0 3px var(--priSoft),0 0 0 4px var(--caramel)}
.obox.sel{box-shadow:0 0 0 3px var(--caramel)}
:root[data-theme="dark"] .obox.lv1{background:#0b1116;border-color:#3a4652}
:root[data-theme="dark"] .obox.lv3{background:#3a3226;border-color:#6b5638;color:#f9f6f0}
.deditp .ocard.editing{border:0;padding:0;max-width:560px}
@media (max-width:820px){
  .dchain{gap:4px}
  .dchain li{font-size:12.5px;padding:3px 10px 3px 3px}
  .dchain li span small{font-size:10.5px}
  .dchain .dav{width:24px;height:24px;font-size:10px}
  .dme p{font-size:14px}
}
/* levels: a supervisor tier (blue, like the printed chart), longer lines when someone sits lower */
.obox.lv4{background:#cfe0f5;border-color:#8fb4e3;color:var(--navy)}
:root[data-theme="dark"] .obox.lv4{background:#22374d;border-color:#40618a;color:#f9f6f0}
.olift{display:block;width:0;border-left:2px solid var(--line2);flex:none}
.olift.blank{border-left:0}
.ostack > .olift{margin-bottom:-10px}
.dlevel{display:flex;gap:6px;align-items:center}
.dlevel select{flex:1;min-width:0}

/* ---------- editing: side panel (bottom sheet on phones) and Edit all ---------- */
.ddrawer{position:fixed;top:12px;right:12px;bottom:12px;width:min(400px,calc(100% - 24px));z-index:30;background:var(--card);border:1px solid var(--line);border-radius:20px;box-shadow:0 20px 60px rgba(27,37,47,.3);padding:18px 20px;overflow:auto}
.ddhead{display:flex;align-items:center;gap:6px;margin-bottom:10px}
.ddhead h2{margin:0;flex:1}
.ddhead .sm{min-width:36px}
.ddrawer .ocard.editing{border:0;padding:0;box-shadow:none;max-width:none;background:none}
.bhead,.brow{display:grid;grid-template-columns:minmax(170px,1.2fr) minmax(140px,1.2fr) minmax(130px,1fr) minmax(140px,1.1fr) minmax(130px,1fr);gap:8px;align-items:center}
.bhead{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--mute);padding:0 10px 6px}
.brow{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:8px 10px;margin-bottom:6px}
.brow.chg{border-color:var(--caramel);background:var(--priSoft)}
.brow.bad{border-color:var(--bad);background:var(--badSoft)}
.bwho{display:flex;align-items:center;gap:10px;min-width:0}
.bwho b{display:block;font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bwho small{display:block;color:var(--mute);font-size:11.5px}
.bwho > span{min-width:0}
.bcell{margin:0}.bcell > span{display:none}
.bcell input,.bcell select{padding:8px 10px}
.berr{grid-column:1/-1;margin:0}
.bbar{position:sticky;bottom:12px;z-index:5;display:flex;align-items:center;gap:8px;justify-content:flex-end;margin-top:12px;padding:10px 12px;background:var(--navy);color:var(--buttermilk);border-radius:14px;box-shadow:0 10px 30px rgba(27,37,47,.3)}
.bbar span{flex:1;font-weight:600}
.bbar .ghost{color:var(--buttermilk);border-color:rgba(249,246,240,.4)}
.bbar.idle{background:var(--soft2);color:var(--mute);box-shadow:none}
.bbar.idle .ghost{color:var(--mute);border-color:var(--line2)}
@media (max-width:820px){
  .ddrawer{top:auto;left:0;right:0;bottom:0;width:auto;max-height:80vh;border-radius:20px 20px 0 0;padding:16px 16px calc(16px + env(safe-area-inset-bottom));z-index:40}
  .bhead{display:none}
  .brow{grid-template-columns:1fr;gap:6px}
  .bcell > span{display:block;font-size:11.5px;font-weight:600;color:var(--mute);margin:2px 0 2px}
  .bbar{bottom:calc(72px + env(safe-area-inset-bottom))}
}

/* Departments & roles (Settings) */
.lgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}
.lcard h2{margin-bottom:2px}.lcard>.mute{margin-bottom:12px}
.ladd{display:flex;gap:8px}.ladd .lin{flex:1;min-width:0}
.llist{list-style:none;margin:10px 0 0;padding:0}
.lrow{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;padding:10px 2px;border-top:1px solid var(--line)}
.lmain{display:flex;align-items:center;gap:8px;min-width:0;flex:1}.lmain .lin{flex:1;min-width:0}
.lname{font-weight:600;overflow-wrap:anywhere}
.lacts{display:flex;gap:6px}
.lconf{flex-basis:100%;background:var(--soft2);border-radius:12px;padding:10px 12px}.lconf p{margin:0 0 8px;font-size:14px}.lconf select{width:100%;margin-bottom:8px}
@media(max-width:760px){.lgrid{grid-template-columns:minmax(0,1fr)}}
.lhead{display:flex;justify-content:space-between;align-items:center;gap:10px}
.lunder{flex-basis:100%;display:flex;align-items:center;gap:8px}.lunder select{flex:1;min-width:0;padding:6px 8px;font-size:14px}
.lchart{overflow:auto;max-height:70vh;touch-action:auto;user-select:auto;-webkit-user-select:auto}
.lbox{width:auto;min-width:130px;padding:8px 12px;justify-content:center;text-align:center}
.lbox .ob-t{align-items:center}
@media(max-width:760px){.lgrid .lcard{overflow:hidden}.lunder select{font-size:16px}}

/* Main sidebar + sub-sidebar */
#subside{display:none}
.item .chev{display:none}.subgrp{display:none}
@media (min-width:821px){
  body.portal #app{grid-template-columns:auto auto minmax(0,1fr)}
  body.portal #subside{display:flex;flex-direction:column;gap:4px;box-sizing:border-box;width:0;margin:12px 0 12px 0;padding:18px 0;border:1px solid transparent;opacity:0;visibility:hidden;transform:translateX(-14px);background:var(--rail);border-radius:22px;position:sticky;top:28px;height:calc(100vh - 56px);overflow:hidden;z-index:24;
    transition:opacity .2s ease,transform .22s cubic-bezier(.22,.8,.3,1),border-color .2s ease,visibility 0s linear .2s}
  body.portal.hassub #subside{width:190px;margin:12px 0 12px 8px;padding:18px 10px;border-color:var(--line);opacity:1;visibility:visible;transform:none;overflow-x:hidden;overflow-y:auto;transition-delay:0s}
  body.portal #subside > *{min-width:168px}
  @media (prefers-reduced-motion:reduce){body.portal #subside{transition:none}}
  #subside h3{margin:2px 10px 12px;font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--mute);font-weight:700}
  .sbtn{display:flex;align-items:center;gap:10px;width:100%;height:40px;padding:0 12px;border-radius:12px;background:none;color:var(--ink);font-size:14.5px;font-weight:600;text-align:left}
  .sbtn:hover{background:var(--soft2)}
  .sbtn.on{background:var(--navy);color:var(--buttermilk)}
  :root[data-theme="dark"] .sbtn.on{background:var(--buttermilk);color:var(--navy)}
  .sbtn svg{flex:none}
  .sbtn:focus-visible{outline:2px solid var(--caramel);outline-offset:2px}
}
@media (max-width:820px){
  #subside{display:none!important}
  .item .chev{display:inline;margin-left:auto;font-size:18px;opacity:.6;transition:transform .15s}
  .subgrp.open{display:flex;flex-direction:column;gap:2px;margin:0 0 4px 22px;padding-left:10px;border-left:2px solid var(--line)}
  .sitem{display:flex;align-items:center;gap:10px;height:40px;padding:0 10px;border-radius:10px;background:none;color:var(--ink);font-size:14.5px;text-align:left}
  .sitem.on{background:var(--navy);color:var(--buttermilk)}
  :root[data-theme="dark"] .sitem.on{background:var(--buttermilk);color:var(--navy)}
}
@media (min-width:821px){.sitem{display:none}}
.lgrid.one{grid-template-columns:minmax(0,640px)}
.sech{margin:10px 10px 4px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--mute)}
#subside h3 + .sech{margin-top:0}
@media (max-width:820px){.subgrp .sech{margin:8px 4px 2px}}

/* Admin and Helpdesk pages use the main menu's sub-sidebar instead of the Settings list */
body.adm-page .subnav,body.adm-page #v-settings .slback{display:none!important}
body.adm-page .setwrap{display:block}

/* Org chart full screen */
.otools{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
body.chart-full{overflow:hidden}
.ofs.full{position:fixed;inset:0;z-index:28;background:var(--shell);padding:14px 16px 14px;display:flex;flex-direction:column}
.ofs.full .ochart-tools{flex:none}
.ofs.full .ochart-wrap{flex:1;max-height:none;border-radius:16px}
body.chart-full .dbanner,body.chart-full #botnav{display:none}
@media(min-width:821px){body.chart-full.drawer-open .ofs.full{right:424px}}
@media(max-width:820px){.ofs.full{padding:10px;padding-top:calc(10px + env(safe-area-inset-top))}.otools{justify-content:flex-end}}

/* Departments & roles: editable rows, fullscreen chart */
.lrow{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) auto;gap:8px 10px;align-items:center}
.lrow .lmain{flex-direction:column;align-items:stretch;gap:2px}
.lname-in{font-weight:600}
.lcount{padding-left:2px}
.lrow .lunder{flex-basis:auto}
.lrow .lconf{grid-column:1/-1}
.linkbtn{background:none;border:0;color:var(--mute);font-size:13px;text-decoration:underline;padding:6px 0 0;cursor:pointer}
textarea.lin{width:100%;resize:vertical;font:inherit}
.lbox{cursor:pointer}.lbox.sel{outline:2px solid var(--caramel);outline-offset:2px}
.lchart.lfull{flex:1;max-height:none;overflow:auto}
.lquick{width:180px;min-width:0}
.lerrline{flex:none;min-height:0;margin:0 0 6px}
#lDrawer label{display:block;margin:12px 0 4px;font-size:13px;font-weight:600}
#lDrawer select,#lDrawer .lin{width:100%}
#lDrawer .ladd .lin{width:auto;flex:1}
@media(max-width:760px){.lrow{grid-template-columns:minmax(0,1fr) auto}.lrow .lunder{grid-column:1/2}.lquick{width:120px}}

/* Roles inside departments, tiered */
.lsels{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center}
.lrow.role{grid-template-columns:minmax(0,1fr) auto}
.lrow.role .lsels{grid-column:1/-1;order:3}
.lsels .lunder{flex:1 1 150px;min-width:0}
.lsd{margin-top:8px}.lsd .lunder{flex-basis:100%}
.odept{min-width:210px;max-width:340px;background:var(--card);border:1px solid var(--line2);border-radius:14px;overflow:hidden;white-space:normal;text-align:left}
.odept-h{display:flex;align-items:baseline;justify-content:space-between;gap:10px;width:100%;padding:8px 12px;background:var(--navy);color:var(--buttermilk);font-weight:700;font-size:14px;border-radius:0}
.odept-h.plain{background:var(--soft2);color:var(--ink)}
.odept-h small{opacity:.75;font-weight:500;font-size:11.5px}
.odept-h.sel{outline:2px solid var(--caramel);outline-offset:-2px}
:root[data-theme="dark"] .odept-h:not(.plain){background:var(--buttermilk);color:var(--navy)}
.otier{padding:8px 10px 0}
.otl{display:block;font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--mute);margin-bottom:4px}
.orp{display:flex;flex-wrap:wrap;gap:6px;padding-bottom:6px}
.orole{display:flex;flex-direction:column;align-items:flex-start;gap:0;padding:6px 10px;border-radius:10px;background:var(--soft2);color:var(--ink);border:1px solid var(--line);font-size:13px;text-align:left}
.orole small{color:var(--mute);font-size:11px}
.orole:hover{border-color:var(--caramel)}.orole.sel{outline:2px solid var(--caramel);outline-offset:1px}
#lDrawer .ladd select{width:auto;max-width:130px}

/* One chart for departments and roles */
.lmaincard .ochart-tools{margin-top:10px}
.lempty{padding:24px;text-align:center;background:var(--soft);border:1px dashed var(--line2);border-radius:16px}
.ob-ic{flex:none;width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.28);color:inherit}
.obox.nd-dept{border-radius:6px;border-width:2px}
.obox.nd-dept .ob-ic{border-radius:6px}
.obadd{position:absolute;top:-10px;left:-10px;width:22px;height:22px;min-width:0;padding:0;border-radius:50%;line-height:1;font-size:15px;font-weight:700;background:var(--card);color:var(--ink);border:1px solid var(--line2);opacity:0;transition:opacity .12s;box-shadow:0 1px 4px rgba(27,37,47,.18)}
.obox:hover .obadd,.obox:focus-within .obadd,.obox.sel .obadd{opacity:1}
@media(hover:none){.obadd{opacity:1}}
.llegend{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.lgd{display:inline-block;width:14px;height:14px;border:2px solid var(--mute);vertical-align:-2px}
.lgd.dept{border-radius:3px}.lgd.role{border-radius:7px}
.ltag{display:inline-block;font-size:10.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;padding:2px 8px;border-radius:999px;background:var(--soft2);color:var(--ink)}
.ltag.dept{background:var(--navy);color:var(--buttermilk)}
:root[data-theme="dark"] .ltag.dept{background:var(--buttermilk);color:var(--navy)}
.lrow.nd{grid-template-columns:minmax(0,1.5fr) minmax(0,1.4fr) auto}
.lkind{display:flex;width:100%}.lkind .seg{flex:1}
.lmaincard .lchart{max-height:none}

/* Connect-under picker, drag to connect, pick from chart */
.lpk{position:relative}
.lpk-btn{display:flex;align-items:center;gap:8px;width:100%;padding:9px 12px;background:var(--card);color:var(--ink);border:1px solid var(--line2);border-radius:12px;font-size:14.5px;text-align:left;font-weight:500}
.lpk-btn span:nth-child(2){flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lpk-btn .mute{flex:1}.lpk-car{opacity:.6;font-size:12px}
.lpk-btn[aria-expanded="true"]{border-color:var(--caramel)}
.lpk-ic{flex:none;width:22px;height:22px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;background:var(--soft2);color:var(--ink)}
.lpk-ic.dept{background:var(--navy);color:var(--buttermilk)}
:root[data-theme="dark"] .lpk-ic.dept{background:var(--buttermilk);color:var(--navy)}
.lpk-ic.top{border-radius:50%;font-weight:800}
.lpk-panel{margin-top:6px;padding:8px;background:var(--card);border:1px solid var(--line2);border-radius:14px;box-shadow:0 8px 24px rgba(27,37,47,.12)}
.lpk-q{width:100%!important}
.lpk-tabs{display:flex;gap:4px;margin:8px 0 4px}
.lpk-tabs button{flex:1;padding:5px 8px;font-size:12.5px;border-radius:999px;background:var(--soft2);color:var(--ink);font-weight:600}
.lpk-tabs button.on{background:var(--navy);color:var(--buttermilk)}
:root[data-theme="dark"] .lpk-tabs button.on{background:var(--buttermilk);color:var(--navy)}
.lpk-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:6px 0}.lpk-row .sech{flex-basis:100%;margin:0}
.lpk-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px 4px 5px;border-radius:999px;background:var(--priSoft);color:var(--ink);border:1px solid var(--caramel);font-size:13px;font-weight:600}
.lpk-list{max-height:220px;overflow:auto;margin:4px -2px 0;padding:0 2px}
.lpk-i{display:flex;align-items:center;gap:8px;width:100%;padding:7px 8px;border-radius:10px;background:none;color:var(--ink);font-size:14px;text-align:left}
.lpk-i:hover,.lpk-i:focus-visible{background:var(--soft2)}
.lpk-i mark{background:var(--priSoft);color:inherit;border-radius:3px;padding:0 1px}
.lpk-none{padding:8px}.lpk-foot{margin-top:6px;display:flex;justify-content:flex-end}
.lrow .lunder .lpk-btn{padding:7px 10px;font-size:14px}
.lrow .lpk-panel{grid-column:1/-1}
body.picking .ddrawer{display:none!important}
body.picking #lCanvas .obox:not(.dim){cursor:crosshair;box-shadow:0 0 0 2px var(--caramel)}
.obox.dim{opacity:.35}
.lpickbar{position:fixed;top:12px;left:50%;transform:translateX(-50%);z-index:60;display:flex;align-items:center;gap:12px;padding:8px 10px 8px 16px;border-radius:999px;background:var(--navy);color:var(--buttermilk);font-weight:600;box-shadow:0 8px 24px rgba(0,0,0,.3)}
.lpickbar .ghost{color:var(--buttermilk);border-color:rgba(249,246,240,.5)}
body.dragging,body.dragging *{cursor:grabbing!important;user-select:none!important;-webkit-user-select:none!important}
.ldrag{position:fixed;z-index:70;pointer-events:none;padding:6px 12px;border-radius:10px;background:var(--navy);color:var(--buttermilk);font-weight:700;font-size:13px;box-shadow:0 8px 24px rgba(0,0,0,.35);max-width:240px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ldroptop{position:fixed;z-index:65;top:12px;left:50%;transform:translateX(-50%);padding:10px 18px;border-radius:999px;border:2px dashed var(--caramel);background:var(--card);color:var(--ink);font-weight:700;font-size:13px}
.ldroptop.on{background:var(--caramel);color:var(--navy);border-style:solid}
.obox.drop{outline:3px solid var(--caramel);outline-offset:3px;opacity:1}
#lCanvas .obox{touch-action:pan-x pan-y}

/* Two lanes: departments and roles keep separate tiers; curved lines are relationships */
.ochart{position:relative}
.llanes{display:flex;gap:150px;align-items:flex-start;position:relative}
.lane{padding:12px 16px 20px;border-radius:16px;border:1px dashed var(--line2)}
.lane-dept{background:rgba(27,37,47,.05)}
.lane-role{background:rgba(214,160,84,.10)}
:root[data-theme="dark"] .lane-dept{background:rgba(255,255,255,.04)}
.lanehd{display:flex;flex-direction:column;margin:0 0 14px}
.lanehd b{font-size:15px;letter-spacing:.04em;text-transform:uppercase}
.lanehd small{color:var(--mute);font-size:12px}
.lbody{display:flex;align-items:flex-start;gap:14px}
.lbody > ul{padding-top:0}
.lbody > ul > li{padding-top:0}
.lbody > ul > li::before,.lbody > ul > li::after{display:none}
.lrule{flex:none;width:96px;border-right:2px solid var(--line2)}
.lrc{height:116px;box-sizing:border-box;display:flex;flex-direction:column;justify-content:flex-start;padding-top:18px;white-space:normal}
.lrc b{font-size:12px;text-transform:uppercase;letter-spacing:.05em}.lrc small{color:var(--mute);font-size:11.5px}
.lane-none{padding:10px}
.llinks{position:absolute;left:0;top:0;pointer-events:none;z-index:1;overflow:visible}
.llinks path{fill:none;stroke:var(--caramel);stroke-width:1.6;opacity:.55}
.llinks path.faint{opacity:.12}
.llinks path.hot{opacity:1;stroke-width:3}
.lchart .obox{position:relative;z-index:2}
.obox.rel{outline:3px solid var(--caramel);outline-offset:2px}
.lgd.rel{border:0;border-top:2px solid var(--caramel);border-radius:0;height:0;width:22px;vertical-align:4px}
.lsec{padding:14px 4px 4px;list-style:none;font-size:13px;text-transform:uppercase;letter-spacing:.05em}
.lrels{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 8px}
.rchip{display:inline-flex;align-items:center;gap:6px;padding:3px 4px 3px 5px;border-radius:999px;background:var(--priSoft);border:1px solid var(--caramel);font-size:13px;font-weight:600}
.rchip button{min-width:0;width:20px;height:20px;padding:0;border-radius:50%;line-height:1;background:var(--card);color:var(--ink)}
.lane-role .lbody{flex-direction:row-reverse}
.lane-role .lrule{border-right:0;border-left:2px solid var(--line2);padding-left:10px}
/* single tree, rows hold one type */
.llanes{gap:14px}
.llanes > ul{padding-top:0}
.llanes > ul > li{padding-top:0}
.llanes > ul > li::before,.llanes > ul > li::after{display:none}
.llanes > .lrule{border-right:2px solid var(--line2);padding-right:10px}
.lrc.dept b{color:var(--navy)}.lrc.role b{color:var(--caramel)}
:root[data-theme="dark"] .lrc.dept b{color:var(--buttermilk)}
.lrc.dept{background:linear-gradient(90deg,rgba(27,37,47,.07),transparent)}
.lrc.role{background:linear-gradient(90deg,rgba(214,160,84,.16),transparent)}
.llinks path{stroke-dasharray:6 5}
/* tiers manager */
.ltiers{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:18px;margin-top:10px}
.ltcol{background:var(--soft);border:1px solid var(--line);border-radius:16px;padding:14px}
.ltcol h3{margin:0 0 10px;font-size:15px}
.ltl{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.lti{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 10px;background:var(--card);border:1px solid var(--line2);border-radius:12px;cursor:grab}
.lti.dragging{opacity:.4}.lti.over{border-color:var(--caramel);box-shadow:0 -3px 0 var(--caramel)}
.lth{color:var(--mute);letter-spacing:-2px;font-weight:700}
.ltn{width:22px;text-align:center;color:var(--mute)}
.lti .lin{flex:1 1 140px;min-width:0;padding:6px 10px}
.ltc{font-size:12.5px;white-space:nowrap}
.ltask{display:inline-flex;align-items:center;gap:6px;font-size:13px;flex-basis:100%}
.ltadd{display:flex;gap:8px;margin-top:10px}.ltadd .lin{flex:1}
/* chart: hand cursor, no scroll bars (drag to move, wheel to zoom) */
.lchart,.ofs.full .lchart,.lchart.lfull{overflow:hidden!important;cursor:grab;touch-action:none;scrollbar-width:none}
.lchart::-webkit-scrollbar{display:none}
.lchart.panning,.lchart.panning *{cursor:grabbing!important}
.lchart .obox{cursor:pointer}
body.dragging .lchart .obox{cursor:grabbing}
.lchart,.lchart *{user-select:none!important;-webkit-user-select:none!important}.lchart input{user-select:text!important}
/* people org chart: always a hand cursor, drag anywhere to move */
.ochart-wrap#ocWrap{cursor:grab;touch-action:none}
.ochart-wrap#ocWrap:active{cursor:grabbing}
#ocWrap .obox{cursor:pointer}

/* Edit-a-person popup (sits beside the clicked box) */
#dDrawer.ddrawer.dpop{position:fixed;right:auto;bottom:auto;width:340px;max-height:calc(100vh - 24px);padding:0;border-radius:20px;z-index:70;overflow:auto;animation:dpopin .14s ease-out}
#dDrawer.dpop.center{left:50%!important;top:50%!important;transform:translate(-50%,-50%)}
@keyframes dpopin{from{opacity:0;transform:translateY(6px) scale(.98)}to{opacity:1;transform:none}}
#dDrawer.dpop.center{animation:none}
.dpop-in{padding:16px 18px 18px}
.dpop-in label{display:block;margin:12px 0 5px;font-size:12.5px;font-weight:700;color:var(--mute);letter-spacing:.02em}
.dpop-in select{width:100%}
.dpop-who{display:flex;align-items:center;gap:12px;margin-bottom:4px}
.dpop-who > div{flex:1;min-width:0;display:flex;flex-direction:column}
.dpop-who b{font-size:16px;line-height:1.2}
.dpop-who span{font-size:12.5px;color:var(--mute);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dpop-who .avatar,.dpop-who img,.dpop-who .ph{width:42px;height:42px;border-radius:50%;flex:none}
.dpop-x{min-width:0;width:32px;height:32px;padding:0;border-radius:50%;background:var(--soft2);color:var(--ink);line-height:1}
.dpop-auto{margin-top:14px;padding:11px 13px;border-radius:14px;background:var(--priSoft);border:1px solid var(--line)}
.dpop-auto-h{font-size:11.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--caramel);margin-bottom:6px}
.dpop-row{display:flex;justify-content:space-between;gap:12px;padding:3px 0;font-size:13.5px}
.dpop-row span{color:var(--mute)}
.dpop-row b{text-align:right;font-weight:600;display:flex;flex-direction:column}
.dpop-row small{font-weight:400;color:var(--mute);font-size:11.5px}
.dpop-miss{margin-top:6px;font-size:12px;color:var(--mute)}
.dpop-adv{margin-top:10px}
.dpop-adv summary{cursor:pointer;font-size:13px;font-weight:600;color:var(--mute);padding:4px 0}
.dpop-acts{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}
@media(max-width:820px){#dDrawer.ddrawer.dpop{left:0!important;right:0;top:auto!important;bottom:0;width:auto;max-height:85vh;border-radius:20px 20px 0 0;transform:none}#dDrawer.dpop.center{transform:none}}

/* searchable pickers + multiple departments in the person popup */
.dp-btn{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:10px 12px;background:var(--card);color:var(--ink);border:1px solid var(--line2);border-radius:12px;font-size:14.5px;text-align:left;font-weight:500}
.dp-btn[aria-expanded="true"]{border-color:var(--caramel)}
.dp-btn i{font-style:normal;opacity:.55;font-size:12px}
.dp-panel{margin-top:6px;padding:8px;background:var(--card);border:1px solid var(--line2);border-radius:14px;box-shadow:0 8px 24px rgba(27,37,47,.12)}
.dp-panel .lin{width:100%}
.dp-list{max-height:210px;overflow:auto;margin:6px -2px 0;padding:0 2px}
.dp-list .sech{margin:8px 4px 2px}
.dp-i{display:flex;align-items:center;justify-content:space-between;width:100%;padding:8px 10px;border-radius:10px;background:none;color:var(--ink);font-size:14px;text-align:left;font-weight:500}
.dp-i:hover,.dp-i:focus-visible{background:var(--soft2)}
.dp-i.cur{background:var(--priSoft)}.dp-i em{font-style:normal;color:var(--caramel)}
.dp-i mark{background:var(--priSoft);color:inherit;border-radius:3px;padding:0 1px}
.dp-none{padding:8px}
.dp-chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.dp-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 4px 4px 11px;border-radius:999px;background:var(--soft2);border:1px solid var(--line2);font-size:13.5px;font-weight:600}
.dp-chip.pri{background:var(--priSoft);border-color:var(--caramel)}
.dp-chip em{font-style:normal;font-size:10.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--caramel)}
.dp-chip button{min-width:0;width:22px;height:22px;padding:0;border-radius:50%;line-height:1;background:var(--card);color:var(--ink);font-size:13px}
.dp-chip .dp-mk{color:var(--mute)}
.dp-add{min-width:0;padding:5px 12px;border-radius:999px;background:none;border:1px dashed var(--caramel);color:var(--ink);font-size:13px;font-weight:600}
/* department blocks inside the people chart */
.obox.dblk{cursor:default}
.obox.dblk .ob-ic{border-radius:6px}
.obox.dblk{background:var(--card);color:var(--ink);border:2px solid var(--navy);border-radius:8px}
.obox.dblk .ob-ic{background:var(--navy);color:var(--buttermilk)}
:root[data-theme="dark"] .obox.dblk{border-color:var(--buttermilk)}
:root[data-theme="dark"] .obox.dblk .ob-ic{background:var(--buttermilk);color:var(--navy)}
.dp-t{flex:1;min-width:0;text-align:left}

/* profile menu */
.mewrap{position:relative}
.memenu{position:absolute;right:0;top:calc(100% + 8px);min-width:180px;padding:6px;background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:0 12px 32px rgba(40,30,20,.16);z-index:60;display:flex;flex-direction:column;gap:2px}
.memenu.hide{display:none}
.memenu button{display:flex;align-items:center;gap:10px;width:100%;height:38px;padding:0 12px;border:0;border-radius:10px;background:transparent;color:var(--ink);font-size:14px;font-weight:500;text-align:left;cursor:pointer}
.memenu button:hover,.memenu button:focus-visible{background:var(--soft2)}

/* portal: bell, bug and theme buttons live elsewhere (News, Helpdesk, profile menu); Settings isn't highlighted */
body.portal .tbtns .tbtn{display:none}
body.portal .rbtn.on,:root[data-theme="dark"] body.portal .rbtn.on{background:transparent;color:var(--mute)}
body.portal .rbtn.on:hover{background:var(--soft2);color:var(--ink)}

/* Org Structure dropdown in the Directory sub-bar */
.sdrop-h{position:relative}
.sdrop-h::after{content:"";flex:none;margin:0 6px 0 auto;width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;border-radius:1px;opacity:.55;transform:rotate(-45deg);transition:transform .28s cubic-bezier(.2,.8,.2,1),opacity .15s}
.sdrop-h:hover::after{opacity:.9}
.sdrop-h[aria-expanded="true"]::after{transform:rotate(45deg)}
@media (prefers-reduced-motion:reduce){.sdrop-h::after{transition:none}}
/* the list slides open under its head, and its items drop in one after another */
.sdrop{display:flex;flex-direction:column;gap:2px;margin:0 0 0 26px;padding-left:10px;border-left:1px solid var(--line);max-height:0;opacity:0;overflow:hidden;visibility:hidden;
  transition:max-height .26s ease,opacity .18s ease,margin .26s ease,visibility 0s .26s}
.sdrop.open{max-height:260px;opacity:1;margin:2px 0 4px 26px;visibility:visible;
  transition:max-height .34s cubic-bezier(.2,.8,.2,1),opacity .22s ease,margin .26s ease,visibility 0s}
.sdc{height:34px;font-size:13.5px}
.sdrop .sdc{opacity:0;transform:translateY(-6px);transition:opacity .18s ease,transform .26s cubic-bezier(.2,.8,.2,1),background-color .15s,color .15s}
.sdrop.open .sdc{opacity:1;transform:none}
.sdrop.open .sdc:nth-child(2){transition-delay:.05s,.05s,0s,0s}
.sdrop.open .sdc:nth-child(3){transition-delay:.1s,.1s,0s,0s}
@media (prefers-reduced-motion:reduce){.sdrop,.sdrop.open,.sdrop .sdc{transition:none}}

/* compact "reports to" line on the directory */
.dme2{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:0 0 12px;font-size:13px}
.dme2 .dme-l{color:var(--mute);font-weight:500}
.dme2 .dme-t{color:var(--mute);margin-left:auto}
.dme2 .dchain{margin:0;gap:4px}
.dme2 .dchain li{background:none;border:0;border-radius:0;padding:0;gap:6px;font-size:13px;font-weight:600}
.dme2 .dchain li + li::before{content:"\203A";margin:0 2px 0 0}
.dme2 .dchain li span small{display:inline;margin-left:6px;font-size:12px}
.dme2 .dchain .dav{width:20px;height:20px;font-size:9px}

/* Org Structure: view-only until Edit is pressed */
.lro .ltadd,.lro .lti button,.lro .lth{display:none}
.lro .lti .lin{pointer-events:none;background:transparent;border-color:transparent}
.lro .obox{cursor:inherit}

/* org chart lines: keep every vertical exactly on the box centre, and don't lose the drop above an only child */
.ochart li::after{margin-left:-1px}
.ochart li:last-child::before{margin-right:-1px}
.ochart ul ul::before,.ostack::before{margin-left:-1px}
.ochart li:only-child::after{border-left:2px solid var(--line2);border-top:0;border-radius:0;width:0}
.ochart li:first-child:not(:only-child)::after{border-top:2px solid var(--line2)}
/* the spacer line is drawn the same way as the other verticals, so rounding can't push it 1px sideways */
.olift{position:relative;align-self:stretch;width:auto;border-left:0}
.olift::before{content:"";position:absolute;top:0;bottom:0;left:50%;margin-left:-1px;border-left:2px solid var(--line2)}
.olift.blank::before{display:none}

/* ===== Org Chart + Org Structure: cards and focus view (js/orgview.js) ===== */
.ovtools{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 14px}
.ovtools .grow{flex:1}
.ovq{flex:1 1 220px;max-width:320px;padding:9px 12px;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--ink);font:inherit}
.ovgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.ovcard{background:var(--soft);border:1px solid var(--line);border-radius:18px;padding:14px;display:flex;flex-direction:column;gap:10px;min-width:0;animation:ovin .22s ease both}
.ovcard header{display:flex;align-items:center;justify-content:space-between;gap:8px;cursor:pointer}
.ovtitle{display:inline-flex;align-items:center;gap:8px;min-width:0}.ovtitle b{font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ovcard .pill{flex:none;font-size:11.5px;font-weight:600;background:var(--soft2);color:var(--mute);border-radius:999px;padding:3px 9px}
.ovunder{font-size:12.5px;color:var(--mute);margin-top:-4px}.ovunder b{color:var(--ink);font-weight:600}
.ovlist{display:flex;flex-wrap:wrap;gap:6px}
.ovp{position:relative;display:flex;align-items:center;gap:9px;min-width:0;text-align:left;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:8px 10px;cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .15s}
.ovp:hover{border-color:var(--pri);box-shadow:0 4px 14px rgba(27,37,47,.10)}
.ovp:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.ovp.sel{border-color:var(--pri);box-shadow:0 0 0 2px var(--priSoft)}
.ovp.me{border-color:var(--pri)}
.ovt{display:flex;flex-direction:column;min-width:0;line-height:1.25}.ovt b{font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ovt small{font-size:12px;color:var(--mute);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ovhead{width:100%}.ovhead .dav,.ovkid .dav,.ovup .dav{width:36px;height:36px;font-size:12px}
.ovsm{padding:3px 10px 3px 4px;border-radius:999px;gap:7px}.ovsm .dav{width:24px;height:24px;font-size:9px}.ovsm .ovic{width:24px;height:24px}.ovsm .ovt small{display:none}.ovsm .ovt b{font-size:12.5px;font-weight:600}
.ovsm .ovedit{margin-left:2px}
.ovic{flex:none;width:36px;height:36px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--soft2);color:var(--ink)}
.ovic.dept{background:var(--ink);color:var(--card)}.ovic.big{width:52px;height:52px}
.ovmore{align-self:flex-start}
.ovedit{flex:none;border:0;background:var(--soft2);color:var(--ink);width:24px;height:24px;border-radius:50%;cursor:pointer;font-size:12px;line-height:1;padding:0;margin-left:auto}
.ovedit:hover{background:var(--pri);color:var(--onPri)}
.ovloose{margin-bottom:8px}
/* focus view */
.ovcrumbs{display:flex;flex-wrap:wrap;gap:4px;align-items:center;color:var(--mute);font-size:13px;margin:0 0 14px}
.ovcrumbs a{color:var(--ink);font-weight:600;cursor:pointer;text-decoration:none}.ovcrumbs a:hover{text-decoration:underline}.ovcrumbs b{color:var(--ink)}
.ovfocus{display:flex;flex-direction:column;align-items:center;animation:ovin .22s ease both}
.ovup{min-width:min(280px,100%)}
.ovv{width:2px;height:22px;background:var(--line2)}
.ovme{cursor:default;background:var(--ink);color:var(--card);border-color:var(--ink);padding:14px 18px;gap:14px;min-width:min(340px,100%);flex-wrap:wrap}
.ovme:hover{transform:none;box-shadow:none;border-color:var(--ink)}
.ovme .dav{width:52px;height:52px;font-size:17px;background:var(--pri);color:var(--onPri)}
.ovme .ovic{background:var(--pri);color:var(--onPri)}
.ovme .ovt b{font-size:17px;white-space:normal}.ovme .ovt small{color:inherit;opacity:.72;white-space:normal;font-size:12.5px}
.ovme .ovnote{opacity:.9;margin-top:4px}
.ovacts{display:flex;gap:6px;flex-wrap:wrap;margin-left:auto}
.ovme .ovacts .ghost{background:transparent;color:inherit;border-color:rgba(255,255,255,.35)}
.ovkids{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px;width:100%;max-width:960px;border-top:2px solid var(--line2);padding-top:18px;position:relative}
.ovkid{min-width:0}
.ovnone{margin-top:14px}
@keyframes ovin{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.ovcard,.ovfocus{animation:none}.ovp{transition:none}}
@media (max-width:820px){.ovq{max-width:none}.ovkids{grid-template-columns:1fr}}

/* ===== Dashboard (home): clock bar, shortcut row, news + who's in ===== */
.dhbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;width:100%;text-align:left;background:var(--ink);color:var(--card);border:0;border-radius:20px;padding:14px 20px;cursor:pointer;margin:0 0 14px;transition:transform .15s,box-shadow .15s}
.dhbar:hover{transform:translateY(-1px);box-shadow:0 10px 26px rgba(27,37,47,.22)}
.dhbar:focus-visible{outline:3px solid var(--pri);outline-offset:2px}
.dhpill{font-size:12px;font-weight:700;border-radius:999px;padding:3px 12px;background:rgba(255,255,255,.16)}
.dhtm{font-size:30px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1.1}
.dhsub{font-size:13px;opacity:.72}.dhgrow{flex:1}
.dhgo{font-size:13px;font-weight:700;background:var(--pri);color:var(--onPri);border-radius:12px;padding:9px 14px}
.dhtiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:10px;margin:0 0 14px}
.dhtile{display:flex;flex-direction:column;align-items:center;gap:7px;text-align:center;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:13px 6px;cursor:pointer;color:var(--ink);transition:transform .15s,box-shadow .15s,border-color .15s}
.dhtile:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(27,37,47,.10);border-color:var(--pri)}
.dhtile b{font-size:12.5px;font-weight:600}
.dhic{width:36px;height:36px;border-radius:11px;background:var(--soft2);display:inline-flex;align-items:center;justify-content:center}
.dhgrid{display:grid;grid-template-columns:minmax(0,1.9fr) minmax(0,1fr);gap:14px;align-items:start}
.dhgrid.solo{grid-template-columns:minmax(0,1fr)}
.dhgrid .card{margin-bottom:0}
.dhgrp{font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--mute);margin:14px 0 2px}.dhgrp:first-of-type{margin-top:2px}
.dhnews{list-style:none;margin:0;padding:0}
.dhnews li+li{border-top:1px solid var(--line)}
.dhnews button{display:flex;gap:12px;width:100%;text-align:left;background:none;border:0;padding:12px 4px;color:var(--ink);cursor:pointer;align-items:flex-start;border-radius:10px}
.dhnews button:hover{background:var(--soft)}
.dhnt{display:flex;flex-direction:column;gap:2px;min-width:0}.dhnt b{font-size:14.5px;font-weight:600;line-height:1.3}.dhnt .sub{font-size:12px;color:var(--mute)}
.dhnodot{width:9px;flex:none}
.dhnews .udot{margin-top:6px;flex:none}
.dhcounts{display:flex;gap:12px;flex-wrap:wrap;font-size:12.5px;color:var(--mute);margin:0 0 6px}.dhcounts b{color:var(--ink);font-size:15px}.dhcounts .late b{color:var(--bad)}
.dhwho{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px solid var(--line)}.dhwho:first-of-type{border-top:0}
.dhnm{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25}.dhnm b{font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dhnm span{font-size:12px;color:var(--mute);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dhst{font-size:12px;color:var(--mute);white-space:nowrap}
.dhdot{width:9px;height:9px;border-radius:50%;flex:none;background:var(--line2)}.dhdot.g{background:var(--go)}.dhdot.w{background:var(--wait)}.dhdot.r{background:var(--stop)}
.dhmore{margin-top:8px}
@media (max-width:820px){.dhgrid{grid-template-columns:1fr}.dhtm{font-size:26px}.dhgo{width:100%;text-align:center}.dhtiles{grid-template-columns:repeat(4,1fr);gap:8px}.dhtile{padding:10px 2px}.dhtile b{font-size:11px}}
@media (max-width:340px){.dhtiles{grid-template-columns:repeat(2,1fr)}}
@media (prefers-reduced-motion:reduce){.dhbar,.dhtile{transition:none}}

/* ---- News page: Pinned / Latest / Earlier, and the editors' Archive tab ---- */
.nzone{font-size:11.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--mute);margin:22px 0 8px;display:flex;align-items:center;gap:8px}
.nzone:first-child,.nswitch+.nzone{margin-top:4px}.nzone i{flex:1;height:1px;background:var(--line)}
.npost{margin-bottom:12px;position:relative}
.npost.npin{background:var(--soft);border-color:var(--line2);border-left:6px solid var(--pri)}
.npost.nlatest{border-color:var(--ink);box-shadow:0 6px 20px rgba(27,37,47,.08)}
.npost.unread{border-left-width:4px}.npost.npin.unread{border-left-width:6px}
.dotu{width:9px;height:9px;border-radius:50%;background:var(--pri);display:inline-block;flex:none}
.ntag{font-size:10.5px;font-weight:800;letter-spacing:.04em;border-radius:6px;padding:2px 7px;text-transform:uppercase}
.ntag.pin{background:var(--ink);color:var(--card)}.ntag.new{background:var(--pri);color:var(--onPri,#1b252f)}
.nclamp{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.nmore{margin-top:6px}
.npost .acts{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.ghost.warn:hover{border-color:var(--stop);color:var(--stop)}
.nchipw{position:relative;display:inline-block}
.nchip{font-size:11.5px;font-weight:600;border-radius:999px;padding:4px 11px;background:var(--soft2);color:var(--ink);border:1px solid var(--line2);cursor:pointer;min-height:0}
.nchip.keep{color:var(--go)}.nchip.static{cursor:default}
.nmenu{position:absolute;left:0;top:calc(100% + 6px);background:var(--card);border:1px solid var(--line2);border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,.18);padding:6px;z-index:6;min-width:230px}
.nmenu button{display:block;width:100%;text-align:left;border:0;background:none;color:var(--ink);padding:8px 10px;border-radius:8px;cursor:pointer;font-size:13px;min-height:0}
.nmenu button:hover{background:var(--soft)}
.ncmp{display:flex;gap:12px;align-items:flex-start;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin-bottom:8px}
.ncmp[data-na]{cursor:pointer}.ncmp[data-na]:hover{border-color:var(--line2)}.ncmp:focus-visible{outline:3px solid var(--pri);outline-offset:2px}
.ndot{width:9px;flex:none;margin-top:6px}
.ncmp .nt{flex:1;min-width:0}.ncmp .nt>b{font-size:14.5px;margin-right:6px}
.nsn{color:var(--mute);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nd{font-size:12px;color:var(--mute);white-space:nowrap}
.ncmp .meta{margin:6px 0;font-size:12px;color:var(--mute)}.ncmp .acts{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:10px}
.nswitch{display:inline-flex;background:var(--soft2);border-radius:999px;padding:3px;margin:0 0 14px}
.nswitch button{border:0;background:none;padding:6px 16px;border-radius:999px;font-weight:600;cursor:pointer;color:var(--mute);min-height:0}
.nswitch button.on{background:var(--card);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.15)}
.nlock{font-size:12.5px;color:var(--mute);margin:0 0 10px}
.nsrch{width:100%;max-width:340px;margin:0 0 12px}
.narow{display:flex;gap:10px;align-items:flex-start;flex-wrap:wrap;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin-bottom:8px}
.narow .nt{flex:1;min-width:200px}.narow b{display:block;font-size:14.5px}.narow small{color:var(--mute);font-size:12px}
.narow .body{margin-top:8px}
.ntoast{position:fixed;left:50%;bottom:22px;transform:translate(-50%,16px);opacity:0;pointer-events:none;background:var(--ink);color:var(--card);border-radius:12px;padding:10px 14px;display:flex;gap:14px;align-items:center;box-shadow:0 10px 30px rgba(0,0,0,.3);z-index:80;max-width:calc(100vw - 32px);transition:opacity .2s,transform .2s}
.ntoast.on{opacity:1;transform:translate(-50%,0);pointer-events:auto}
.ntoast button{background:none;border:0;color:var(--pri);font-weight:800;cursor:pointer;min-height:0;padding:0}
@media (prefers-reduced-motion:reduce){.ntoast{transition:none}}

/* ---- News reactions (Facebook-style picker) ---- */
.rxbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px;padding-top:10px;border-top:1px solid var(--line)}
.rxbtn{display:inline-flex;align-items:center;gap:7px;border:0;background:none;color:var(--mute);font-weight:600;font-size:13.5px;padding:7px 12px;border-radius:999px;cursor:pointer;min-height:36px;touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;transition:background .15s,color .15s}
.rxbtn:hover{background:var(--soft2);color:var(--ink)}
.rxbtn:focus-visible{outline:3px solid var(--pri);outline-offset:2px}
.rxe{font-size:18px;line-height:1;transition:transform .2s}.rxe.off{filter:grayscale(1);opacity:.7}
.rxbtn.on .rxe{animation:rxPop .35s cubic-bezier(.2,1.6,.4,1)}
.rxbtn.on{color:var(--ink)}.rx-like{color:#2f6fd6!important}.rx-love{color:#d6334a!important}.rx-care,.rx-haha,.rx-wow,.rx-sad{color:#b47a14!important}.rx-angry{color:#c8472a!important}
@keyframes rxPop{0%{transform:scale(.4) rotate(-12deg)}100%{transform:none}}
.rxsum{display:inline-flex;align-items:center;gap:2px;border:0;background:none;color:var(--mute);font-size:13px;padding:5px 8px;border-radius:999px;min-height:0;cursor:default}
button.rxsum{cursor:pointer}button.rxsum:hover{background:var(--soft2);color:var(--ink)}
.rxi{font-size:15px;margin-right:-3px}.rxi:last-of-type{margin-right:5px}.rxn{font-weight:600}
.rxwho{display:flex;flex-direction:column;gap:4px;margin:8px 0 2px;padding:10px 12px;background:var(--soft);border-radius:12px;font-size:13px;max-height:180px;overflow:auto}
.rxwho .rxi{margin-right:8px}
.rxmini{display:block;font-size:11.5px;color:var(--mute);margin-top:3px;text-align:right}
.rxpop{display:none;position:fixed;z-index:90;gap:2px;padding:6px 8px;background:var(--card);border:1px solid var(--line2);border-radius:999px;box-shadow:0 10px 32px rgba(0,0,0,.22)}
.rxpop button{position:relative;border:0;background:none;padding:2px 3px;font-size:30px;line-height:1.1;cursor:pointer;border-radius:50%;min-height:0;opacity:0;transform:translateY(14px) scale(.6);transition:transform .16s cubic-bezier(.2,1.5,.4,1)}
.rxpop.on button{opacity:1;transform:none;transition:transform .2s cubic-bezier(.2,1.6,.4,1) calc(var(--i)*28ms),opacity .15s calc(var(--i)*28ms)}
.rxpop.on button:hover,.rxpop.on button:focus-visible{transform:translateY(-8px) scale(1.4);transition-delay:0s;outline:none}
.rxpop button.on{background:var(--soft2)}
.rxpop button i{position:absolute;left:50%;top:-30px;transform:translateX(-50%);background:var(--ink);color:var(--card);font-style:normal;font-size:11px;font-weight:700;padding:3px 8px;border-radius:999px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .12s}
.rxpop button:hover i,.rxpop button:focus-visible i{opacity:1}
@media (prefers-reduced-motion:reduce){.rxpop button,.rxpop.on button,.rxbtn.on .rxe{transition:none;animation:none}.rxpop button{opacity:1;transform:none}}
@media (max-width:420px){.rxpop button{font-size:26px}}

/* "Soon" tag on pages that are still being built (Time Off, Documents) */
.soontag{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.02em;line-height:1;padding:3px 6px;border-radius:999px;background:var(--soft2);color:var(--mute);vertical-align:middle}
.dhtile{position:relative}
.dhtile .soontag{position:absolute;top:7px;right:7px}
.sitem .soontag{margin-left:auto}
#side .item .soontag{display:none}
#side.wide .item .soontag{display:inline-block;margin-left:auto}

/* =====================================================================
   Sidebar "folder tab" design (desktop): a soft rail and a cream sub-sidebar that read as one piece.
   The open section's icon becomes a cream tab that flows into the sub-sidebar, with a caramel marker on the rail edge.
   ===================================================================== */
:root{--sbRail:#f1ebe2;--sbPanel:var(--card);--sbShadow:0 14px 30px -18px rgba(27,37,47,.38)}
:root[data-theme="dark"]{--sbRail:#10171e;--sbShadow:0 14px 34px -16px rgba(0,0,0,.6)}
.rmewrap{position:relative}
.rme{display:none}
@media (min-width:821px){
  body.portal #side{background:var(--sbRail);border:0;box-shadow:var(--sbShadow)}
  body.portal #side .items,body.portal #side .navsec{align-items:stretch;width:100%}
  body.portal #side .item{margin:0 auto;color:var(--mute)}
  body.portal #side .item:hover{background:rgba(255,253,249,.75);color:var(--ink)}
  :root[data-theme="dark"] body.portal #side .item:hover{background:var(--card)}
  /* the open page (no sub-sidebar): a soft card */
  body.portal #side .item.on,:root[data-theme="dark"] body.portal #side .item.on{background:var(--sbPanel);color:var(--ink);box-shadow:0 2px 8px rgba(27,37,47,.08)}
  /* the open section with its sub-sidebar: the icon becomes a tab joined to the panel */
  body.portal.hassub #side{border-radius:22px 0 0 22px;z-index:26}
  body.portal.hassub #side .item.on,:root[data-theme="dark"] body.portal.hassub #side .item.on{width:61px;margin:0 0 0 15px;padding-right:15px;border-radius:23px 0 0 23px;background:var(--sbPanel);box-shadow:none}
  body.portal.hassub #side .item.on svg{stroke-width:2.2}
  body.portal.hassub #side .item.on::before{content:"";position:absolute;right:0;top:-16px;width:16px;height:calc(100% + 32px);pointer-events:none;
    background:radial-gradient(circle at 0 0,var(--sbRail) 15.5px,var(--sbPanel) 16px) top/16px 16px no-repeat,radial-gradient(circle at 0 100%,var(--sbRail) 15.5px,var(--sbPanel) 16px) bottom/16px 16px no-repeat}
  body.portal.hassub #side .item.on::after{display:none}
  /* caramel marker on the rail edge next to the open section */
  body.portal #side .item.on .chev{display:block!important;position:absolute;left:-15px;top:50%;transform:translateY(-50%);width:4px;height:22px;margin:0;border-radius:0 4px 4px 0;background:var(--caramel);font-size:0;opacity:1}
  body.portal #side .item .dbadge{box-shadow:0 0 0 2px var(--sbRail);border:0}

  /* sub-sidebar: same height, no gap, rounded on the outside only */
  body.portal.hassub #subside{width:232px;margin:12px 0;border:0;border-radius:0 22px 22px 0;background:var(--sbPanel);box-shadow:var(--sbShadow);padding:22px 10px 14px;gap:3px}
  body.portal #subside > *{min-width:200px}
  #subside .sbhead{padding:2px 10px 14px;margin:0 0 8px;border-bottom:1px solid var(--line)}
  #subside .sbhead h3{margin:0;font-size:19px;font-weight:800;letter-spacing:-.02em;text-transform:none;color:var(--ink)}
  #subside .sbhead p{margin:2px 0 0;font-size:12px;line-height:1.35;color:var(--mute)}
  #subside .sech{margin:12px 10px 4px;font-size:10.5px;font-weight:800;letter-spacing:.1em}
  #subside .sbhead + .sech{margin-top:4px}
  body.portal #subside .sbtn{font-size:14px}
  body.portal #subside .sbtn:hover{background:var(--soft)}
  body.portal #subside .sbtn.on,:root[data-theme="dark"] body.portal #subside .sbtn.on{background:var(--priSoft);color:var(--ink);font-weight:800;box-shadow:inset 3px 0 0 var(--caramel)}
  :root[data-theme="dark"] body.portal #subside .sbtn.on{color:var(--priInk)}
  body.portal #subside .sbtn .soontag{margin-left:auto;background:transparent;border:1px solid var(--line2);padding:2px 7px}
  .sbhide{margin-top:auto;flex:none;display:flex;align-items:center;gap:8px;width:100%;height:36px;padding:0 12px;border-radius:10px;background:none;color:var(--mute);font-size:12.5px;font-weight:600;text-align:left}
  .sbhide:hover{background:var(--soft);color:var(--ink)}

  /* account button at the bottom of the rail (Log out lives in its menu) */
  body.portal #side .rlogout{display:none}
  body.portal .rme{display:flex;align-items:center;justify-content:center;width:44px;height:44px;margin:4px auto 0;padding:0;border:0;border-radius:50%;background:none;cursor:pointer}
  body.portal .rme .avatar{width:38px;height:38px;font-size:13px;box-shadow:0 0 0 3px var(--sbRail),0 0 0 4px var(--line2)}
  body.portal .rme:hover .avatar{box-shadow:0 0 0 3px var(--sbRail),0 0 0 4px var(--caramel)}
  .rmenu{position:absolute;left:calc(100% + 14px);bottom:0;min-width:210px;padding:6px;background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:0 12px 32px rgba(40,30,20,.18);z-index:60;display:flex;flex-direction:column}
  .rmenu.hide{display:none}
  .rmenu button{display:flex;align-items:center;gap:10px;width:100%;height:38px;padding:0 12px;border:0;border-radius:10px;background:transparent;color:var(--ink);font-size:14px;font-weight:500;text-align:left;cursor:pointer}
  .rmenu button:hover{background:var(--soft2)}
  .rmhead{display:flex;flex-direction:column;padding:8px 12px 10px;margin-bottom:4px;border-bottom:1px solid var(--line)}
  .rmhead b{font-size:14px}.rmhead span{font-size:12px;color:var(--mute);text-transform:capitalize}
}
.mesep{height:1px;margin:4px 6px;background:var(--line)}
@media (prefers-reduced-motion:reduce){body.portal #side .item{transition:none}}

/* Sliding highlight: the tab in the rail and the tint in the panel glide to the button you pick (js/portal.js portalSlide) */
.rslide,.sslide{display:none}
@media (min-width:821px){
  body.portal #nav{position:relative}
  body.portal #nav .item{z-index:1}
  body.portal #side.slid .rslide{display:block;position:absolute;left:15px;top:0;width:46px;height:46px;border-radius:14px;background:var(--sbPanel);box-shadow:0 2px 8px rgba(27,37,47,.08);opacity:0;pointer-events:none;z-index:0;
    transition:top .42s cubic-bezier(.34,1.32,.5,1),height .3s ease,width .3s ease,border-radius .3s ease,box-shadow .3s ease,opacity .2s ease}
  body.portal #side.slid .rslide.show{opacity:1}
  body.portal.hassub #side.slid .rslide{width:61px;border-radius:23px 0 0 23px;box-shadow:none}
  body.portal #side.slid .rslide::before{content:"";position:absolute;right:0;top:-16px;width:16px;height:calc(100% + 32px);opacity:0;transition:opacity .2s ease;
    background:radial-gradient(circle at 0 0,var(--sbRail) 15.5px,var(--sbPanel) 16px) top/16px 16px no-repeat,radial-gradient(circle at 0 100%,var(--sbRail) 15.5px,var(--sbPanel) 16px) bottom/16px 16px no-repeat}
  body.portal.hassub #side.slid .rslide::before{opacity:1;transition-delay:.12s}
  body.portal #side.slid .rslide::after{content:"";position:absolute;left:-15px;top:50%;width:4px;height:22px;margin-top:-11px;border-radius:0 4px 4px 0;background:var(--caramel);opacity:0;transition:opacity .2s ease}
  body.portal.hassub #side.slid .rslide::after,body.portal.subhid #side.slid .rslide::after{opacity:1}
  /* while the slider is there, the button itself stays clear and the slider draws the tab */
  body.portal #side.slid #nav .item.on{background:transparent!important;box-shadow:none!important}
  body.portal #side.slid #nav .item.on::before{display:none}
  body.portal #side.slid #nav .item.on .chev{display:none!important}

  body.portal #subside .sbtn{position:relative;z-index:1}
  body.portal #side.slid ~ #subside .sslide{display:block;position:absolute;left:10px;right:10px;top:0;height:40px;min-width:0;border-radius:12px;background:var(--priSoft);box-shadow:inset 3px 0 0 var(--caramel);opacity:0;pointer-events:none;z-index:0;
    transition:top .36s cubic-bezier(.34,1.25,.5,1),height .3s ease,opacity .2s ease}
  body.portal #side.slid ~ #subside .sslide.show{opacity:1}
  body.portal #side.slid ~ #subside .sbtn.on:not(.sdc),:root[data-theme="dark"] body.portal #side.slid ~ #subside .sbtn.on:not(.sdc){background:transparent;box-shadow:none}
  .rslide.nomo,.sslide.nomo,.rslide.nomo::before{transition:none!important}

  /* a new section's panel content drifts in */
  #subside.sbin > :not(.sslide){animation:sbIn .34s cubic-bezier(.2,.8,.2,1) both}
  #subside.sbin > :nth-child(3){animation-delay:.02s}#subside.sbin > :nth-child(4){animation-delay:.04s}#subside.sbin > :nth-child(5){animation-delay:.06s}
  #subside.sbin > :nth-child(6){animation-delay:.08s}#subside.sbin > :nth-child(n+7){animation-delay:.1s}
}
@keyframes sbIn{from{opacity:0;transform:translateX(-10px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.rslide,.sslide,.rslide::before{transition:none!important}#subside.sbin > *{animation:none!important}}


/* the account pill in the header is redundant on desktop: the same menu opens from the avatar at the bottom of the rail */
@media (min-width:821px){body.portal .mewrap{display:none}}
.dchain-b{display:inline-flex;align-items:center;gap:inherit;padding:0;border:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer;border-radius:999px;box-shadow:none}
.dchain-b:hover span{text-decoration:underline}.dchain-b:hover{filter:none}
.dchain-b:focus-visible{outline:2px solid var(--caramel);outline-offset:3px}
.ovback{font-weight:700}
.ocard.go{cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .15s}
.ocard.go:hover{border-color:var(--caramel);box-shadow:0 6px 18px var(--shadow,rgba(27,37,47,.08));transform:translateY(-1px)}
.ocard.go:focus-visible{outline:2px solid var(--caramel);outline-offset:2px}
.dgsec{margin:0 0 22px}
.dgh{display:flex;align-items:center;gap:8px;margin:18px 0 10px;padding-bottom:8px;border-bottom:1px solid var(--line);font-size:15px}
.dgh svg{color:var(--caramel)}.dgh .pill{margin-left:auto}
@media (prefers-reduced-motion:reduce){.ocard.go{transition:none}}

/* Page action rows: the button sits on the same line as the tabs instead of a row of its own */
.view > .head{margin-bottom:10px}
#v-ann > .head{position:absolute;top:0;right:0;margin:0;z-index:1}
#v-ann > .head button{min-height:40px;padding-top:0;padding-bottom:0}
.feed > .nswitch{align-self:flex-start;width:fit-content}
@media (max-width:560px){
  #v-ann > .head{position:static;margin:0 0 10px}
}

/* Full-screen layout (Update bar release "full-frame", body.fullframe): the app fills the window instead of sitting in a rounded frame. */
@media (min-width:821px){
  body.fullframe #app{margin:0;min-height:100vh;border-radius:0;box-shadow:none}
  body.fullframe #side,body.fullframe.portal.hassub #side{margin:0;top:0;height:100vh;border-radius:0}
  body.fullframe.portal #subside,body.fullframe.portal.hassub #subside{margin:0;top:0;height:100vh;border-radius:0}
}

/* Installed app on desktop (Update bar release "full-frame"): the page runs up under the window's title bar, so the top edge blends in
   with the menu instead of sitting above it as a separate strip. The window buttons float at the top right (manifest: window-controls-overlay). */
@media (display-mode: window-controls-overlay) and (min-width:821px){
  body.fullframe::before{content:'';position:fixed;top:0;left:0;right:0;height:env(titlebar-area-height,0px);-webkit-app-region:drag;app-region:drag;z-index:4}
  body.fullframe main{padding-top:env(titlebar-area-height,0px)}
  /* a solid top bar the colour of the window buttons, running up to the menu, so the buttons never sit on a patch of another colour */
  body.fullframe{--titlebar:#d5b897}
  :root[data-theme="dark"] body.fullframe{--titlebar:#4b3b2c}
  /* full-screen org chart: its own solid strip under the window buttons, with the toolbar starting below it */
  body.fullframe .ofs.full{padding-top:calc(env(titlebar-area-height,0px) + 12px);padding-right:22px}
  body.fullframe .ofs.full::before{content:'';position:absolute;top:0;left:0;right:0;height:env(titlebar-area-height,0px);background:var(--shell);-webkit-app-region:drag;app-region:drag;z-index:1}
  body.fullframe.chart-full{--titlebar:var(--shell)}
  :root[data-theme="dark"] body.fullframe.chart-full{--titlebar:var(--shell)}
  body.fullframe::before{background:var(--titlebar)}
  body.fullframe:has(#login:not(.hide))::before{background:var(--shell)}
  body.fullframe #login .lg-left{padding-top:calc(env(titlebar-area-height,0px) + 28px)}
}

/* Updates button in the side menu (js/admin.js): always there for admins, a dot with a count when something is ready; employees only see it when a new version needs a reload. */
#btnUpd .rdot{position:absolute;top:2px;right:0;min-width:17px;height:17px;padding:0 3px;border-radius:9px;background:var(--caramel);color:var(--navy);font-size:10px;font-weight:700;line-height:13px;text-align:center;border:2px solid var(--rail);box-sizing:border-box}
#btnUpd .rdot.plain{min-width:0;width:12px;height:12px;padding:0;top:6px;right:6px}
#btnUpd .rdot.hide{display:none}
#btnUpd.upd-on svg{color:var(--caramel)}
#side.wide #btnUpd .rdot{position:static;margin-left:auto;border:0}
@media (max-width:820px){#btnUpd .rdot{position:static;margin-left:auto;border:0}}

/* login: "app already installed" notice */
.inst-box{margin-top:10px;display:flex;flex-direction:column;gap:8px;align-items:stretch;text-align:center}
.inst-t{display:flex;gap:8px;align-items:center;justify-content:center;font-size:14px;color:var(--muted,#5b6470)}
.inst-box .linkb{align-self:center;font-size:13px}

/* login: Mac install guide */
.mac-guide{margin-top:10px;padding:14px;border:1px solid #d8cdbb;border-radius:14px;background:rgba(255,255,255,.5);text-align:left}
.mac-h{font-weight:700;font-size:15px}.mac-sub{font-size:13px;color:var(--muted,#5b6470);margin:2px 0 10px}
.mac-step{display:flex;gap:10px;margin-bottom:12px}.mac-n{flex:none;width:22px;height:22px;border-radius:50%;background:#c08a4b;color:#fff;font-size:12px;font-weight:700;display:grid;place-items:center}
.mac-b{flex:1;min-width:0}.mac-t{font-size:13.5px;margin-bottom:6px}.mac-b svg{width:100%;height:auto;display:block}
.mac-note{font-size:12.5px;color:var(--muted,#5b6470);border-top:1px solid #e3dccd;padding-top:10px}
#macLink{display:block;margin:10px auto 0}

/* login: "Get the app" lives in the header */
.lg-top{position:relative;align-self:stretch}
.lg-app{margin-left:auto;white-space:nowrap;flex:none;display:inline-flex;align-items:center;gap:6px;background:none;border:0;padding:6px 10px;border-radius:999px;font:inherit;font-size:13.5px;font-weight:600;color:var(--ink);cursor:pointer;width:auto}
.lg-app:hover{background:var(--soft)}
.lg-pop{position:absolute;right:0;top:calc(100% + 8px);width:min(340px,calc(100vw - 44px));max-height:70vh;overflow:auto;z-index:20;padding:14px;border:1px solid var(--line2);border-radius:16px;background:var(--card);box-shadow:0 12px 32px rgba(27,37,47,.18)}
.lg-pop .gbtn{width:100%}
.lg-pop .mac-guide{background:none;border:0;padding:10px 0 0;margin-top:6px}
@media (max-width:820px){.lg-top{margin:0 0 30px}}

/* login: choose Google or email */
#lgPick{display:flex;flex-direction:column;gap:12px}
#lgPick button.gbtn.lg-g{margin-top:0}
.lg-or{display:flex;align-items:center;gap:12px;color:var(--mute);font-size:12.5px}
.lg-or::before,.lg-or::after{content:"";flex:1;height:1px;background:var(--line2)}
.lg-back{display:block;margin:14px auto 0}
/* login choice: keep the heading from jumping between the two views, even out the gaps */
#lgPick{min-height:293px;justify-content:flex-start;gap:14px}
.lg-or{margin:2px 0}
#lerr:empty{display:none}
@media (max-width:820px){#lgPick{min-height:0}}

/* "Get the app" card: more prominent */
.lg-pop{border:1.5px solid #c08a4b;border-top:4px solid #c08a4b;box-shadow:0 18px 44px rgba(27,37,47,.28),0 0 0 4px rgba(192,138,75,.14)}
.lg-pop-h{display:flex;gap:11px;align-items:center;margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid var(--line2)}
.lg-pop-i{flex:none;width:36px;height:36px;border-radius:11px;background:#c08a4b;color:#fff;display:grid;place-items:center}
.lg-pop-h b{font-size:14.5px;color:var(--ink)}.lg-pop-s{font-size:12.5px;color:var(--mute)}
.lg-pop #installBtn,.lg-pop #installedBox>button.gbtn{background:#c08a4b;border-color:#c08a4b;color:#1b252f;font-weight:600}
.lg-pop #installBtn:hover,.lg-pop #installedBox>button.gbtn:hover{background:#b27d3d}
.lg-app{border:1.5px solid #c08a4b;color:var(--ink)}
.lg-app[aria-expanded="true"]{background:#c08a4b;color:#fff}

/* loading screen */
#splash{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;background:var(--card,#fffdf9);transition:opacity .35s ease}
#splash.out{opacity:0;pointer-events:none}
#splash.hide{display:none}
.sp-in{display:flex;flex-direction:column;align-items:center;gap:26px}
#spLogo .liq{width:92px;height:84px;display:block}
.sp-bar{width:150px;height:4px;border-radius:99px;background:var(--line2,#e3dccd);overflow:hidden}
.sp-bar i{display:block;height:100%;width:0;border-radius:99px;background:#c08a4b;animation:spFill 2s ease-out forwards}
@keyframes spFill{to{width:100%}}

/* short windows: the menu scrolls, and Updates / Settings / your photo stay pinned at the bottom so they can always be reached */
@media (min-width:821px) and (max-height:800px){
  #side,body.portal #subside{overflow-y:auto;overflow-x:hidden;scrollbar-width:none}
  #side::-webkit-scrollbar,body.portal #subside::-webkit-scrollbar{display:none}
  #side{gap:4px}
  #side{padding-bottom:0}
  #side .foot{position:sticky;bottom:0;z-index:2;background:inherit;padding:8px 0 14px;flex:none}
  #side #nav{flex:none}
}

/* when the panel closes (a main button with no sub-menu), drop its highlight at once instead of letting it fade out over the closing panel */
@media (min-width:821px){
  body.portal:not(.hassub) #subside .sslide{opacity:0!important;transition:none!important}
}

/* login choice: roomy, even button spacing */
#lgPick{gap:20px}
#lgPick .lg-or{display:none}
#lgPick button.gbtn{min-height:50px;padding-top:0;padding-bottom:0;font-size:15.5px}
.lg-sub{margin-bottom:30px}
@media (max-height:820px){.lg-sub{margin-bottom:22px}}

/* The light/dark button that used to sit in the title bar was removed (Theme is in the account menu). The element stays hidden. */
.wco-theme{display:none!important}
.wco-theme svg{width:14px;height:14px;stroke-width:1.5}

/* login coin: its shadow on the dark panel (the light-mode navy shadow disappears there) */
:root[data-theme="dark"] .lg-shadow{width:70%;height:26px;background:radial-gradient(closest-side,rgba(0,0,0,.75),rgba(0,0,0,.35) 55%,rgba(0,0,0,0));filter:blur(4px)}

/* Home: Latest + Who's in now. The Documents page's ".dcard" style was squeezing these cards' contents to their own width (big empty space on the right), so undo it here, then use the room. */
.dhgrid .dcard{align-items:stretch;gap:0;text-align:left;padding:18px 20px;container-type:inline-size;transform:none;box-shadow:none}
.dhgrid .dcard:hover{transform:none;box-shadow:none}
.dhgrid .dcard>.chead{margin-bottom:8px}
.dhgrid .dcard>:not(.chead){min-width:0}
.dhnews button{padding:10px 6px}
@container (min-width:620px){
  .dhnews .dhnt{flex-direction:row;align-items:baseline;gap:16px;width:100%}
  .dhnews .dhnt>.sub:first-child{flex:none;width:158px}
  .dhnews .dhnt>b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .dhnews .dhnt>.sub:last-child{flex:none;margin-left:auto;color:var(--pri)}
  .dhnews .udot,.dhnews .dhnodot{margin-top:0;align-self:center}
}
#dhLive{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));column-gap:26px;align-content:start}
#dhLive>.dhcounts,#dhLive>.dhmore,#dhLive>p{grid-column:1/-1}
#dhLive>.dhmore{justify-self:start}
#dhLive>.dhwho:nth-of-type(2),#dhLive>.dhwho:nth-of-type(3){border-top:0}
@container (max-width:560px){#dhLive>.dhwho:nth-of-type(3){border-top:1px solid var(--line)}}

/* installed app: side panels start below the window buttons so the close button isn't tucked under them */
@media (display-mode: window-controls-overlay) and (min-width:821px){
  dialog.drawer .pfb{padding-top:calc(env(titlebar-area-height,0px) + 18px)}
}
