.portal{--sidew:256px;--railw:72px;--topbar-h:64px;--gutter:32px;--content-max:1200px;--ink:var(--ruo-text);--violet:var(--ruo-violet);flex:1 0 auto;min-width:0}.portal.is-collapsed{--sidew:var(--railw)}.portal .app{display:grid;grid-template-columns:var(--sidew) minmax(0,1fr);min-height:100dvh;background:var(--ruo-bg)}.portal .side{position:sticky;top:0;height:100dvh;z-index:40;display:flex;flex-direction:column;min-height:0;color:var(--ruo-muted);background:var(--ruo-bg);border-right:1px solid var(--ruo-line);transition:width .2s ease}.portal .side__brand{display:flex;align-items:center;gap:11px;padding:18px 16px;min-height:var(--topbar-h);border-bottom:1px solid var(--ruo-line)}.portal .side__mark{width:36px;height:36px;border-radius:9px;flex-shrink:0;background:linear-gradient(135deg,var(--ruo-violet),var(--ruo-violet-2));color:var(--ruo-on-violet);display:grid;place-items:center;box-shadow:0 4px 14px -4px color-mix(in oklab,var(--ruo-violet) 60%,transparent)}.portal .side__mark svg{width:20px;height:20px}.portal .side__brandtext{min-width:0}.portal .side__name{display:block;font-family:var(--f-display);font-weight:700;font-size:17px;color:var(--ruo-text);line-height:1.2;white-space:nowrap}.portal .side__sub{display:block;font-family:var(--f-mono);font-size:9px;letter-spacing:.16em;color:var(--ruo-muted);text-transform:uppercase;line-height:1.3;white-space:nowrap}.portal .side__patient{margin:var(--s-3) var(--s-3) var(--s-2);padding:var(--s-3);border-radius:var(--ruo-radius-md);background:var(--ruo-surface);border:1px solid var(--ruo-line);display:flex;align-items:center;gap:10px;min-width:0}.portal .side__avatar{width:38px;height:38px;border-radius:50%;flex-shrink:0;background:linear-gradient(135deg,var(--ruo-violet),var(--ruo-violet-2));color:var(--ruo-on-violet);display:grid;place-items:center;font-family:var(--f-display);font-weight:600;font-size:var(--t-base)}.portal .side__patienttext{min-width:0}.portal .side__patientname{color:var(--ruo-text);font-size:var(--t-base);font-weight:600}.portal .side__patientname,.portal .side__patientplan{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portal .side__patientplan{font-size:var(--t-xs);color:var(--ruo-muted)}.portal .side__nav{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:var(--s-1) var(--s-3) var(--s-3);display:flex;flex-direction:column;gap:2px;scrollbar-width:thin;scrollbar-color:var(--ruo-surface-2) transparent}.portal .side__nav::-webkit-scrollbar{width:6px}.portal .side__nav::-webkit-scrollbar-thumb{background:var(--ruo-surface-2);border-radius:3px}.portal .side__label{font-family:var(--f-mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--ruo-muted);padding:var(--s-4) 10px var(--s-1);white-space:nowrap}.portal .nav-item{display:flex;align-items:center;gap:var(--s-3);padding:9px 11px;border-radius:9px;color:var(--ruo-muted);font-size:var(--t-base);font-weight:500;border:none;background:none;width:100%;text-align:left;min-height:38px;position:relative;transition:color .15s ease,background-color .15s ease}.portal .nav-item svg{width:18px;height:18px;flex-shrink:0;color:var(--ruo-muted);transition:color .15s ease}.portal .nav-item:hover{background:var(--ruo-surface);color:var(--ruo-text)}.portal .nav-item:hover svg{color:var(--ruo-text)}.portal .nav-item.is-active{background:var(--ruo-violet-tint);color:var(--ruo-text)}.portal .nav-item.is-active:before{content:"";position:absolute;left:0;top:9px;bottom:9px;width:3px;border-radius:0 3px 3px 0;background:var(--ruo-violet-2)}.portal .nav-item.is-active svg{color:var(--ruo-violet-2)}.portal .nav-item__label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portal .side__foot{padding:var(--s-3);border-top:1px solid var(--ruo-line);display:grid;gap:2px}.portal .side__foot .nav-item{color:var(--ruo-muted)}.portal .side__foot .nav-item:hover{color:var(--ruo-text)}.portal .side__collapse{display:flex}.portal .side__collapse svg{transition:transform .2s ease}.portal.is-collapsed .side__collapse svg{transform:rotate(180deg)}.portal.is-collapsed .nav-item__label,.portal.is-collapsed .side__brandtext,.portal.is-collapsed .side__label,.portal.is-collapsed .side__patienttext{display:none}.portal.is-collapsed .side__brand{justify-content:center;padding-inline:0}.portal.is-collapsed .side__patient{justify-content:center;padding:var(--s-2);margin-inline:var(--s-2)}.portal.is-collapsed .side__foot,.portal.is-collapsed .side__nav{padding-inline:var(--s-2)}.portal.is-collapsed .nav-item{justify-content:center;padding-inline:0;gap:0}.portal.is-collapsed .side__group+.side__group{border-top:1px solid var(--ruo-line);margin-top:var(--s-2);padding-top:var(--s-2)}.portal .main{display:flex;flex-direction:column;min-width:0}.portal .topbar{position:sticky;top:0;z-index:20;height:var(--topbar-h);background:var(--ruo-bar-bg);backdrop-filter:var(--ruo-bar-blur);border-bottom:1px solid var(--ruo-line)}.portal .topbar__in{height:100%;max-width:var(--content-max);margin-inline:auto;padding-inline:var(--gutter);display:flex;align-items:center;gap:var(--s-3)}.portal .topbar__right{margin-left:auto;display:flex;align-items:center;gap:var(--s-2);flex-shrink:0}.portal .content{width:100%;max-width:var(--content-max);margin-inline:auto;padding:var(--s-6) var(--gutter) var(--s-12);flex:1}.portal .scrim{position:fixed;inset:0;z-index:45;background:var(--scrim-bg);opacity:0;pointer-events:none;transition:opacity .2s ease}.portal .side__close{display:none}@media (max-width:1100px){.portal{--gutter:24px}}@media (max-width:900px){.portal,.portal.is-collapsed{--sidew:264px}.portal .app{grid-template-columns:minmax(0,1fr)}.portal .side{position:fixed;left:0;top:0;width:var(--sidew);z-index:50;transform:translateX(-100%);transition:transform .22s ease;box-shadow:0 20px 60px rgba(0,0,0,.4)}.portal .side.is-open{transform:none}.portal .scrim.is-open{opacity:1;pointer-events:auto}.portal .side__collapse{display:none}.portal .side__close{display:inline-grid;margin-left:auto}.portal.is-collapsed .nav-item__label,.portal.is-collapsed .side__brandtext,.portal.is-collapsed .side__label,.portal.is-collapsed .side__patienttext{display:revert}.portal.is-collapsed .side__brand{justify-content:flex-start;padding-inline:16px}.portal.is-collapsed .side__patient{justify-content:flex-start;padding:var(--s-3);margin-inline:var(--s-3)}.portal.is-collapsed .nav-item{justify-content:flex-start;padding-inline:12px;gap:var(--s-3)}.portal.is-collapsed .side__foot,.portal.is-collapsed .side__nav{padding-inline:var(--s-3)}.portal.is-collapsed .side__group+.side__group{border-top:0;margin-top:0;padding-top:0}}@media (max-width:640px){.portal{--gutter:16px}.portal .content{padding-block:var(--s-5) var(--s-10)}}