/* ==========================================================================
   APP SHELL / LAYOUT
   --------------------------------------------------------------------------
   The shell is a fixed pane the height of the viewport, capped at
   --frame-width and centered, so it fills laptop screens without stretching on huge monitors.
   Header on top, then icon rail + content. Only .app-main scrolls
   (scrollbar hidden so it doesn't show on camera).
   ========================================================================== */
.app-shell{margin:0 auto;max-width:var(--frame-width);background:var(--surface);overflow:hidden;height:100vh;display:flex;flex-direction:column}
@media (min-width:1601px){ .app-shell{border-inline:1px solid var(--shell-border)} }   /* = --frame-width + 1 */
.app-body{display:flex;align-items:stretch;flex:1;min-height:0}

/* Global header — brand, search, profile. Search sits in the true center. */
.app-header{flex:0 0 var(--header-height);display:grid;grid-template-columns:1fr minmax(0,400px) 1fr;align-items:center;gap:var(--space-4);padding:0 var(--space-4);border-bottom:1px solid var(--shell-border);background:var(--surface);position:relative;z-index:100}
.brand{display:flex;align-items:center;gap:var(--space-2);min-width:0;text-decoration:none;justify-self:start;border-radius:var(--radius-2)}
.brand:focus-visible{outline:2px solid var(--accent);outline-offset:4px}
.brand-mark{width:28px;height:28px;border-radius:var(--radius-3);background:var(--gray-900);color:var(--text-on-accent);display:grid;place-items:center;flex:0 0 auto}
.brand-company{font-size:var(--fs-base);font-weight:700;color:var(--primary-text);letter-spacing:-.01em}
.brand-divider{width:1px;height:16px;margin:0 var(--space-1);background:var(--shell-border)}
.brand-product{font-size:var(--fs-base);font-weight:var(--fw-medium);color:var(--meta-text);white-space:nowrap}

.header-search{width:100%}
.header-search .search{background:var(--gray-50);border-color:var(--shell-border)}
.header-search .search:hover{border-color:var(--input-border)}
.header-search .search:focus{background:var(--surface);border-color:var(--accent)}

.profile{position:relative;justify-self:end}
.profile-trigger{display:flex;align-items:center;gap:var(--space-1);padding:2px var(--space-1) 2px 2px;border:0;border-radius:var(--radius-full);background:transparent;color:var(--meta-text);cursor:pointer;transition:background var(--motion-fast),color var(--motion-fast)}
.profile-trigger:hover,.profile-trigger[aria-expanded="true"]{background:var(--gray-100);color:var(--primary-text)}
.profile-trigger:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.profile-chevron{display:flex;transition:transform var(--motion-fast)}
.profile-trigger[aria-expanded="true"] .profile-chevron{transform:rotate(180deg)}
.profile-menu{right:0;top:calc(100% + var(--space-2));width:248px}

/* Signed-out screen: no rail, search or profile — just the brand */
[data-view="signed-out"] .app-sidebar{display:none}
[data-view="signed-out"] .header-search,[data-view="signed-out"] .profile{visibility:hidden}
.app-content{position:relative;display:flex;flex-direction:column;height:100%;min-width:0;flex:1}
.app-main{flex:1;min-height:0;overflow:auto;padding:0 var(--space-6) var(--space-6);scrollbar-width:none}
.app-main::-webkit-scrollbar{display:none}
.app-main.flush{padding:0 0 var(--space-6)}

/* Sidebar — nav, the Releases list (current + history), settings */
.app-sidebar{flex:0 0 var(--sidebar-width);display:flex;flex-direction:column;gap:var(--space-5);padding:var(--space-4) var(--space-3);background:var(--header-bg);border-right:1px solid var(--shell-border);overflow-y:auto;scrollbar-width:none;z-index:90}
.nav-section{display:flex;flex-direction:column;gap:2px}
.nav-item{display:flex;align-items:center;gap:var(--space-2);height:32px;padding:0 var(--space-2);border-radius:var(--radius-2);font-size:var(--fs-base);font-weight:var(--fw-medium);color:var(--category-text);text-decoration:none;transition:background var(--motion-fast),color var(--motion-fast)}
.nav-icon{display:flex;color:var(--meta-text)}
.nav-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nav-count{font-size:var(--fs-sm);color:var(--meta-text);font-variant-numeric:tabular-nums}
.nav-item:hover{background:var(--gray-100);color:var(--primary-text)}
.nav-item.active{background:var(--surface);color:var(--primary-text);box-shadow:0 0 0 1px var(--shell-border),var(--shadow-xs)}
.nav-item.active .nav-icon{color:var(--primary-text)}
.nav-item:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}

.release-dot{flex:0 0 auto;width:8px;height:8px;border-radius:var(--radius-circle);background:var(--gray-300)}
.release-dot.live{background:var(--accent);box-shadow:0 0 0 3px rgba(var(--accent-rgb),.18)}

/* Collapsed sidebar: icons only (labels and counts become tooltips) */
.app-sidebar{transition:flex-basis .2s var(--ease-out),padding .2s var(--ease-out)}
.app-sidebar.collapsed{flex-basis:56px;padding-inline:var(--space-2)}
.app-sidebar.collapsed .nav-label,.app-sidebar.collapsed .nav-count{display:none}
.app-sidebar.collapsed .nav-item{justify-content:center;padding:0}
.nav-bottom{display:flex;flex-direction:column;gap:2px;margin-top:auto}
/* Exit to the portfolio: a real button, dark slate rather than nav-link styling */
.nav-portfolio{display:flex;align-items:center;gap:var(--space-1h);height:36px;margin-bottom:var(--space-3);padding:0 var(--space-3) 0 var(--space-2);border-radius:var(--radius-3);background:var(--gray-700);color:var(--gray-50);font-size:var(--fs-base);font-weight:var(--fw-semibold);text-decoration:none;white-space:nowrap;box-shadow:var(--shadow-xs);transition:background var(--motion-fast)}
.nav-portfolio .nav-icon{color:inherit;opacity:.8}
.nav-portfolio:hover{background:var(--gray-900)}
.nav-portfolio:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.app-sidebar.collapsed .nav-portfolio{justify-content:center;padding:0}
.frame-mode .nav-portfolio{display:none}   /* off camera in ?frame recordings */
.nav-collapse{width:100%;border:0;background:none;font:inherit;font-size:var(--fs-base);font-weight:var(--fw-medium);cursor:pointer;text-align:left}
@media (prefers-reduced-motion: reduce){ .app-sidebar{transition:none} }

.title{font-size:var(--fs-2xl);margin:0;color:var(--primary-text)}

.search-wrap{position:relative}
.search{width:100%;height:32px;border:1px solid var(--input-border);padding:0 var(--space-3) 0 32px;border-radius:var(--radius-2);font:inherit;font-size:var(--fs-md);color:var(--body-text);background:var(--surface);transition:border-color var(--motion-fast),box-shadow var(--motion-fast)}
.search::placeholder{color:var(--faint-text)}
.search:hover{border-color:var(--gray-400)}
.search:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 var(--focus-ring-width) var(--focus-ring-color)}
.search::-webkit-search-cancel-button{display:none}
.search-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--faint-text);display:flex;pointer-events:none}

/* Signed-out screen */
.signed-out{display:flex;flex-direction:column;align-items:center;text-align:center;max-width:360px;margin:96px auto 0}
.signed-out-mark{width:48px;height:48px;border-radius:var(--radius-4);background:var(--gray-900);color:var(--text-on-accent);display:grid;place-items:center}
.signed-out-title{margin:var(--space-5) 0 0;font-size:var(--fs-3xl);font-weight:700;letter-spacing:-.02em;color:var(--primary-text)}
.signed-out-text{margin:var(--space-2) 0 0;font-size:var(--fs-base);line-height:1.5;color:var(--meta-text)}
.signed-out-btn{margin-top:var(--space-6);text-decoration:none;display:inline-flex;align-items:center;justify-content:center;min-width:160px;height:36px;padding:0 var(--space-4)}
.signed-out-foot{margin:var(--space-7) 0 0;font-size:var(--fs-sm);color:var(--faint-text)}

/* Settings + Help pages */
.page{max-width:760px;padding:var(--space-6) var(--space-6) var(--space-7)}
.page-head{margin-bottom:var(--space-5)}
.page-sub{margin:var(--space-1) 0 0;font-size:var(--fs-base);color:var(--meta-text)}
.settings-card{border:1px solid var(--shell-border);border-radius:var(--radius-3);background:var(--surface);box-shadow:var(--shadow-xs)}
.settings-card + .settings-card{margin-top:var(--space-5)}
.settings-card-head{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--row-divider)}
.settings-card-title{margin:0;font-size:var(--fs-xl);font-weight:var(--fw-semibold);color:var(--primary-text)}
.settings-card-desc{margin:2px 0 0;font-size:var(--fs-md);color:var(--meta-text)}
.settings-card-body{padding:var(--space-4) var(--space-5)}
.account-who{display:flex;align-items:center;gap:var(--space-3)}
.account-who .avatar-xl{width:44px;height:44px;font-size:var(--fs-base)}
.account-name{font-size:var(--fs-lg);font-weight:var(--fw-semibold);color:var(--primary-text)}
.account-role{font-size:var(--fs-md);color:var(--meta-text)}
.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4) var(--space-6);margin:var(--space-5) 0 0}
.settings-field dt{font-size:var(--fs-sm);color:var(--meta-text)}
.settings-field dd{margin:var(--space-1) 0 0;font-size:var(--fs-base);color:var(--primary-text)}
.settings-rows{margin:calc(var(--space-2) * -1) 0}
.settings-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-5);padding:var(--space-3) 0;cursor:pointer}
.settings-row + .settings-row{border-top:1px solid var(--row-divider)}
.settings-row-title{font-size:var(--fs-base);font-weight:var(--fw-medium);color:var(--primary-text)}
.settings-row-desc{margin-top:2px;font-size:var(--fs-md);color:var(--meta-text)}
.settings-select{flex:0 0 auto;height:32px;padding:0 var(--space-7) 0 var(--space-3);border:1px solid var(--input-border);border-radius:var(--radius-2);background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%2364748B'%3E%3Cpath d='M11.9999 13.1714L16.9497 8.22168L18.3639 9.63589L11.9999 15.9999L5.63599 9.63589L7.0502 8.22168L11.9999 13.1714Z'/%3E%3C/svg%3E") no-repeat right 8px center/16px;font:inherit;font-size:var(--fs-md);color:var(--primary-text);appearance:none;cursor:pointer}
.settings-select:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.switch{flex:0 0 auto;position:relative;width:36px;height:20px;margin:0;border-radius:var(--radius-full);background:var(--gray-300);appearance:none;cursor:pointer;transition:background var(--motion-fast)}
.switch::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:var(--radius-circle);background:var(--surface);box-shadow:var(--shadow-xs);transition:transform var(--motion-fast) var(--ease-out)}
.switch:checked{background:var(--accent)}
.switch:checked::after{transform:translateX(16px)}
.switch:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

.faq{overflow:hidden;border:1px solid var(--shell-border);border-radius:var(--radius-3);background:var(--surface);box-shadow:var(--shadow-xs)}
.faq-item + .faq-item{border-top:1px solid var(--row-divider)}
.faq-q{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-4) var(--space-5);list-style:none;font-size:var(--fs-base);font-weight:var(--fw-medium);color:var(--primary-text);cursor:pointer}
.faq-q::-webkit-details-marker{display:none}
.faq-q:hover{background:var(--gray-50)}
.faq-q:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.faq-chev{display:flex;color:var(--meta-text);transition:transform var(--motion-fast)}
.faq-item[open] .faq-chev{transform:rotate(180deg)}
.faq-a{margin:0;padding:0 var(--space-5) var(--space-4);max-width:64ch;font-size:var(--fs-base);line-height:1.6;color:var(--body-text)}
.faq-more{display:flex;align-items:center;gap:var(--space-3);margin-top:var(--space-5);font-size:var(--fs-md);color:var(--meta-text)}
