:root{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#302b27;background:#fdfdfb;font-size:14px;font-synthesis:none;--border:#d8d8d4;--muted:#6d6660;--blue:#75665b;--accent:#75665b;--soft:#f7f7f3}*{box-sizing:border-box}body{margin:0}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,p{margin-top:0}h1{font-size:30px;letter-spacing:-.7px;font-weight:600;margin-bottom:10px}h2{font-size:18px;font-weight:600;margin-bottom:12px}h3{font-size:16px}p{line-height:1.65;margin-bottom:14px}button,input,select,textarea{font:inherit}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:34px;border:1px solid var(--border);border-radius:6px;background:var(--soft);color:#302b27;padding:6px 13px;font-weight:600;cursor:pointer;box-shadow:0 1px 0 #302b270a;text-decoration:none;vertical-align:middle}button:where(:not([class*=backdrop])):hover,.button:hover{background:#eeefeb;text-decoration:none}button:disabled{opacity:.5;cursor:not-allowed}.primary{background:var(--accent);border-color:#5f5148;color:white}.primary:hover{background:#5f5148}.danger{color:#cf222e}.subtle{background:transparent;box-shadow:none;margin-left:6px}.link-button{color:var(--blue);border:0;background:none;box-shadow:none;padding:4px 0;font-weight:400}.link-button:hover{background:none;text-decoration:underline}input:not([type=checkbox]),select,textarea{display:block;width:100%;min-height:36px;border:1px solid var(--border);border-radius:6px;background:#fff;color:#302b27;padding:7px 11px;margin-top:7px;line-height:1.5;font-weight:400}textarea{resize:vertical}input[type=checkbox]{accent-color:var(--blue);width:16px;height:16px;flex-shrink:0}label{display:block;font-weight:600;margin:18px 0 14px}.check{display:flex;align-items:center;gap:9px;font-weight:400}.field-help{display:block;color:var(--muted);font-size:12px;font-weight:400;line-height:1.6;margin-top:8px}.muted{color:var(--muted)}.small,small{font-size:12px}code,pre,.code-input{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px}code{overflow-wrap:anywhere}pre{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.7;background:var(--soft);border:1px solid var(--border);border-radius:6px;padding:16px}hr{border:0;border-top:1px solid var(--border);margin:26px 0}:focus-visible{outline:2px solid var(--blue);outline-offset:3px}h1:focus{outline:none}.site-header{height:76px;background:var(--soft);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 40px;gap:20px}.brand{display:flex;align-items:center;gap:11px;font-size:18px;font-weight:650;color:#302b27;white-space:nowrap}.brand:hover{text-decoration:none}.preview-label{font-size:11px;color:var(--muted);font-weight:500;border:1px solid var(--border);border-radius:20px;padding:2px 7px;margin-left:3px}.header-actions{display:flex;align-items:center;gap:24px}.account-link{font-size:12px;color:var(--muted)}.workspace-nav{display:flex;gap:8px;padding:0 40px;background:var(--soft);border-bottom:1px solid var(--border);overflow-x:auto}.workspace-nav a{display:block;padding:17px 13px 14px;white-space:nowrap;color:#302b27;border-bottom:3px solid transparent}.workspace-nav a:hover{background:#eeefeb;text-decoration:none}.workspace-nav a.active{border-bottom-color:#b7774d;font-weight:600}.workspace{max-width:1200px;padding:40px;margin:0 auto;min-height:0;flex:1;width:100%}.site-footer{max-width:1200px;margin:0 auto;padding:24px 40px;border-top:1px solid #e7e7e2;display:flex;justify-content:space-between;gap:20px;color:var(--muted);font-size:12px}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:26px}.page-heading p:last-child{margin:0}.eyebrow{font-size:10px;font-weight:650;letter-spacing:1.8px;color:var(--muted);margin-bottom:12px}.panel,.item-list{border:1px solid var(--border);border-radius:7px;background:#fff;overflow:hidden}.panel{margin-bottom:22px}.form-panel{padding:24px}.form-panel>h2:first-child{margin-top:0}.form-panel button+button{margin-left:6px}.list-header{display:flex;justify-content:space-between;gap:12px;padding:14px 18px;background:var(--soft);border:1px solid var(--border);border-bottom:0;border-radius:7px 7px 0 0}.list-header+.item-list{border-radius:0 0 7px 7px}.list-row{display:flex;align-items:flex-start;gap:16px;padding:23px 22px;border-bottom:1px solid #e7e7e2}.list-row:last-child{border-bottom:0}.list-row:hover{background:#fbfbf8}.row-content{flex:1;min-width:0}.row-content h2{font-size:18px;margin:0 0 8px}.row-content p{color:var(--muted);margin:0 0 12px;overflow-wrap:anywhere}.row-icon{font-size:23px;color:var(--muted);line-height:1.15}.metadata{display:flex;flex-wrap:wrap;gap:8px 20px;color:var(--muted);font-size:12px}.badge{display:inline-block;font-size:11px;font-weight:500;color:var(--muted);border:1px solid var(--border);border-radius:20px;padding:2px 8px;vertical-align:middle;white-space:nowrap;letter-spacing:0}.badge.approved{color:#5f5148;border-color:#d9cdc2;background:#f4eee8}.badge.pending{color:#7d4e00;border-color:#eac54f;background:#fff8c5}.badge.rejected{color:#cf222e;background:#ffebe9;border-color:#ffbcb7}.arrow-link{font-size:23px;color:var(--muted)}.empty{text-align:center;padding:64px 24px;color:var(--muted)}.empty h2{color:#302b27;font-size:22px}.empty p{max-width:470px;margin:0 auto 22px}.empty-symbol{display:block;font-size:36px;margin-bottom:20px}.guide-strip{display:flex;justify-content:space-between;align-items:center;gap:24px;margin:30px 0;padding:22px 0}.guide-strip p{margin:5px 0 0}.two-columns{display:grid;grid-template-columns:1fr 1fr;gap:22px}.editor-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(250px,1fr);gap:24px;align-items:start}.search-bar{display:flex;gap:10px;margin-bottom:22px}.search-bar input{margin:0}.tabs{display:flex;border-bottom:1px solid var(--border);margin:0 0 24px;gap:12px}.tabs button{border:0;border-bottom:3px solid transparent;border-radius:0;background:transparent;padding:12px;box-shadow:none}.tabs .selected{border-bottom-color:#b7774d}.revision{border-top:1px solid #e7e7e2;margin-top:15px;padding-top:15px}.revision strong,.revision small{display:block;margin-top:8px}.revision small{color:var(--muted)}.member-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:15px 0;border-bottom:1px solid #e7e7e2;overflow-wrap:anywhere}.notice{padding:16px 18px;border:1px solid var(--border);border-radius:6px;margin:0 0 22px;line-height:1.6}.notice.success{background:#f4eee8;border-color:#d9cdc2}.notice.error{background:#ffebe9;border-color:#ffbcb7;color:#82071e}.notice.warning{background:#fff8c5;border-color:#eac54f}.secret{display:block;background:white;border:1px solid #d9cdc2;padding:14px;margin:12px 0;user-select:all}.full{width:100%}.login-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:100px;align-items:center;min-height:calc(100vh - 260px);padding:30px 20px 60px}.login-intro h1{font-size:43px;line-height:1.17;letter-spacing:-1.8px;margin:28px 0 22px;font-weight:650}.login-intro .lead{font-size:17px;line-height:1.75;color:var(--muted);max-width:440px}.intro-symbol{display:inline-flex;padding:14px;background:var(--soft);border:1px solid var(--border);border-radius:20px;transform:rotate(-5deg)}.intro-symbol img{transform:rotate(5deg)}.workflow{display:flex;align-items:center;gap:12px;color:#302b27;font-size:12px;font-weight:600;margin:32px 0 18px}.workflow span:not(.workflow-line){border:1px solid var(--border);border-radius:5px;padding:6px 13px;background:var(--soft)}.workflow-line{width:25px;height:1px;background:var(--border)}.login-panel{border:1px solid var(--border);border-radius:9px;padding:30px;background:var(--soft)}.login-panel h2{font-size:22px;letter-spacing:-.4px}.login-panel>p{color:var(--muted)}.login-panel .primary{margin:10px 0 18px;min-height:40px}.login-footnote{border-top:1px solid var(--border);padding-top:20px;margin-top:24px;font-size:12px;line-height:1.7;color:var(--muted)}.login-panel .resume-session{font-size:12px}.narrow{max-width:480px;margin:60px auto}.prose{max-width:850px}.prose h2{margin-top:30px}.prose li{line-height:1.8;margin-bottom:8px}.prose .panel{padding:24px}.skip-link{position:absolute;top:-100px;left:12px;z-index:999;background:white;padding:12px;border:2px solid var(--blue)}.skip-link:focus{top:10px}#blazor-error-ui{display:none;position:fixed;bottom:0;width:100%;background:#fff8c5;border-top:1px solid #eac54f;padding:16px 24px;z-index:1000}#blazor-error-ui .dismiss{float:right;padding:0 8px;min-height:25px}.validation-message{color:#cf222e}
@media(max-width:900px){.login-grid{gap:40px;padding:15px 0}.login-intro h1{font-size:34px}.workspace{padding:30px 24px}.site-header{padding:0 24px}.workspace-nav{padding:0 16px}.editor-grid{grid-template-columns:minmax(0,1.5fr) minmax(230px,1fr)}}
@media(max-width:640px){.site-header{height:auto;min-height:70px;padding:16px;gap:12px}.brand{font-size:16px;gap:8px}.preview-label,.account-link{display:none}.header-actions{gap:12px}.workspace{padding:25px 16px}.workspace-nav{padding:0 4px;gap:0}.workspace-nav a{padding:14px 10px 11px}.login-grid{grid-template-columns:1fr;gap:28px;padding:10px 0 25px}.login-intro h1{font-size:32px;margin-top:0}.intro-symbol,.workflow,.login-intro>.muted{display:none}.login-intro .lead{font-size:15px;margin-bottom:0}.login-panel{padding:22px}.login-intro h1 br{display:none}.page-heading{align-items:flex-start;flex-wrap:wrap}.page-heading h1{font-size:27px}.two-columns,.editor-grid{grid-template-columns:1fr;gap:0}.form-panel{padding:20px}.list-row{padding:20px 16px;gap:12px;flex-wrap:wrap}.list-header>span{display:none}.guide-strip{align-items:flex-start;flex-direction:column;gap:12px}.site-footer{padding:22px 16px;flex-wrap:wrap}.site-footer>span:nth-child(2){display:none}.tabs{gap:0;overflow-x:auto}.tabs button{white-space:nowrap;font-size:12px;padding:10px}.member-row{flex-wrap:wrap}.empty{padding:42px 20px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}
.page-heading{align-items:flex-start}.page-heading>div:first-child{flex:1 1 0;min-width:0}.page-heading .action-row{flex:0 1 auto;justify-content:flex-end}.page-heading h1{overflow-wrap:anywhere}.page-heading h1:last-child{margin-bottom:0}.task-heading-title{font-weight:500;margin-bottom:0}.task-heading-copy{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;width:28px;height:28px;padding:4px;border:0;background:transparent;color:var(--muted)}.task-heading-copy:hover{background:transparent;color:inherit}.task-heading-copy svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.75}.task-heading-number{font-size:inherit;font-weight:500;color:var(--muted);letter-spacing:0}.task-meta-row{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:10px}.task-meta-row .muted{margin:0}.task-status-badge{font-size:13px;line-height:1.2;padding:5px 10px;border-color:transparent}.task-status-badge[data-status="open"]{background:#e7e1dc;color:#514942}.task-status-badge[data-status="in_progress"]{background:#a9653f;color:#fff}.task-status-badge[data-status="blocked"]{background:#a64f46;color:#fff}.task-status-badge[data-status="done"]{background:#62765f;color:#fff}.task-status-badge[data-status="canceled"]{background:#746f6a;color:#fff}
@media(max-width:520px){.page-heading .action-row{flex-basis:100%;justify-content:flex-start}}
.guide-grid{display:grid;grid-template-columns:minmax(0,2.5fr) minmax(230px,1fr);gap:32px}.guide-grid>.prose{padding:28px}.side-panel{padding:14px 0;color:var(--muted)}.side-panel h3{color:#302b27;margin-top:24px}@media(max-width:700px){.guide-grid{grid-template-columns:1fr}}
.confirm-panel{padding:30px}.confirm-panel h1{font-size:26px}.confirm-panel>p{color:var(--muted)}.confirm-panel .primary{margin-top:8px;min-height:38px}@media(max-width:640px){.confirm-panel{padding:22px;margin:24px auto}}
.inline-labels{display:flex;align-items:center;flex-wrap:wrap;gap:8px 10px}.inline-labels h2,.inline-labels h3{margin:0}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start}.section-actions{margin-top:20px}.section-help{margin-top:18px;margin-bottom:0}.device-row{display:grid;gap:10px;padding:18px 0;border-bottom:1px solid #e7e7e2}.device-id{color:var(--muted);font-size:11px}.sessions-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:24px}.sessions-heading p{margin:10px 0 0}.session-row{display:flex;align-items:flex-start;gap:16px;border-top:1px solid #e7e7e2;padding:24px}.session-symbol{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:38px;height:38px;background:var(--soft);border:1px solid var(--border);border-radius:8px;color:var(--accent);font-size:22px}.session-content{flex:1;min-width:0}.session-content h3{font-size:15px}.session-lifetime{font-size:12px;color:var(--muted)}.session-dates{display:flex;flex-wrap:wrap;gap:16px 32px;margin:17px 0 0}.session-dates dt{color:var(--muted);font-size:11px;margin-bottom:5px}.session-dates dd{margin:0;font-size:12px}.session-action{flex-shrink:0;margin:0}.session-signout{background:white;color:var(--muted);font-weight:500;min-width:84px}.session-signout:hover{color:#9b322f;background:#fff7f4;border-color:#d9aaa2}.session-confirm{margin-top:18px;padding:16px;background:var(--soft);border:1px solid var(--border);border-radius:6px}.session-confirm p{margin-bottom:12px}.action-row{display:flex;gap:10px;flex-wrap:wrap}.sessions-footer{padding:18px 24px;background:var(--soft);border-top:1px solid var(--border);font-size:12px;color:var(--muted)}.sessions-footer p{margin:0}.sessions-footer p+p{margin-top:6px}.row-content h2>.badge{margin-left:8px}.member-row>span>.badge{margin-left:8px}.form-panel>form+form{margin-top:12px}
@media(max-width:750px){.settings-grid{grid-template-columns:1fr;gap:0}.session-row{gap:12px;padding:20px}.session-dates{gap:14px 20px}.sessions-heading{padding:20px;align-items:flex-start;flex-wrap:wrap}.session-symbol{display:none}}
@media(max-width:480px){.session-row{flex-wrap:wrap}.session-content{flex-basis:100%}.session-action{margin-top:6px}.sessions-footer{padding:18px 20px}}

.brand-path{display:flex;align-items:center;gap:12px;min-width:0}.brand-separator{color:#a29a94;font-size:20px}.brand-project{color:#302b27;font-size:16px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.workspace-frame{display:flex;flex:1;min-height:0}.workspace-column{display:flex;flex:1;min-width:0;flex-direction:column}.project-sidebar{width:248px;flex:0 0 248px;border-right:1px solid var(--border);background:var(--soft);padding:22px 14px}.project-sidebar-heading{display:flex;align-items:center;justify-content:space-between;padding:0 8px 12px;font-weight:650}.project-sidebar-heading>a:last-child{display:flex;align-items:center;justify-content:center;width:27px;height:27px;border:1px solid var(--border);border-radius:6px;background:white;font-size:18px}.project-sidebar-heading>a:last-child:hover{text-decoration:none;background:#eeefeb}.project-list{display:grid;gap:2px;max-height:48vh;overflow-y:auto}.project-list a{display:flex;align-items:center;gap:9px;padding:8px;border-radius:6px;color:#302b27;min-width:0}.project-list a span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-list a:hover,.project-list a.selected{background:#ebe8e2;text-decoration:none}.project-list a.selected{font-weight:600}.project-sidebar-icon{display:flex;align-items:center;justify-content:center;width:20px;height:20px;flex:0 0 20px;color:#75665b}.project-sidebar-icon svg{width:16px;height:16px}.project-sidebar-icon.github svg{fill:currentColor}.project-sidebar-icon.git svg,.project-sidebar-icon.local svg{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.project-list a:hover .project-sidebar-icon,.project-list a.selected .project-sidebar-icon{color:var(--accent)}.project-section-nav{display:grid;gap:2px;margin-top:18px;padding-top:18px;border-top:1px solid var(--border)}.project-section-nav a{padding:9px 10px;border-radius:6px;color:#4a433e}.project-section-nav a:hover,.project-section-nav a.active{background:#ebe8e2;text-decoration:none}.project-section-nav a.active{font-weight:600;color:#302b27}.user-menu{position:relative}.user-menu summary{display:flex;align-items:center;cursor:pointer;list-style:none;border-radius:50%}.user-menu summary::-webkit-details-marker{display:none}.user-menu summary img{border-radius:50%;border:1px solid #c9c3bd;background:white}.user-menu-panel{position:absolute;right:0;top:40px;z-index:50;width:230px;padding:10px;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 12px 35px #302b2726}.user-menu-panel strong{display:block;padding:8px 9px 12px;overflow:hidden;text-overflow:ellipsis;font-size:12px}.user-menu-panel a,.menu-signout{display:block;width:100%;min-height:0;padding:8px 9px;border:0;border-radius:5px;background:none;box-shadow:none;text-align:left;font-weight:400;color:#302b27}.user-menu-panel a:hover,.menu-signout:hover{background:var(--soft);text-decoration:none}.menu-label{display:block;margin:6px 9px 3px;padding-top:8px;border-top:1px solid #eceae6;color:var(--muted);font-size:10px;font-weight:650;letter-spacing:1px;text-transform:uppercase}.user-menu-panel form{margin:5px 0 0;padding-top:5px;border-top:1px solid #eceae6}.project-welcome{min-height:360px;display:flex;flex-direction:column;align-items:center;justify-content:center}
@media(max-width:760px){.brand-project,.brand-separator,.header-actions>a{display:none}.user-menu-panel{position:fixed;right:12px;top:66px}.workspace{padding:25px 16px}}
.task-toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:-8px 0 16px;color:var(--muted);font-size:12px}.task-toolbar .check{margin:0}.toolbar-end{display:flex;align-items:center;gap:14px;margin-left:auto}
.sort-control{display:flex;align-items:center;gap:7px;margin:0;color:var(--muted);font-size:11px;letter-spacing:.2px}.sort-control select{margin:0;padding:5px 8px;min-height:auto;background:#fff;color:#302b27;font-size:12px;font-weight:400}.knowledge-filters .sort-control{display:block}.knowledge-filters .sort-control select{margin-top:6px;padding:9px 10px;width:100%;font-size:13px}
@media(max-width:560px){.task-toolbar{align-items:flex-start;flex-direction:column;gap:10px}.toolbar-end{margin-left:0}}.task-list{border:1px solid var(--border);border-radius:7px;background:white;overflow:hidden}.task-row{display:flex;align-items:flex-start;gap:14px;padding:18px 20px 18px calc(20px + min(var(--task-depth),4)*24px);border-bottom:1px solid #e7e7e2}.task-row:last-child{border-bottom:0}.task-row.subtask{background:#fbfbf8}.task-row:hover{background:#f7f7f3}.task-status{display:inline-block;width:12px;height:12px;margin-top:5px;border:2px solid #9f8d80;border-radius:50%;flex-shrink:0}.task-status.in_progress{border-color:#b7774d;border-right-color:transparent}.task-status.blocked{border-color:#b04c45;border-radius:3px}.task-status.done{border-color:#75665b;background:#75665b}.task-status.canceled{border-color:#aaa29c;background:linear-gradient(135deg,transparent 42%,#aaa29c 43%,#aaa29c 57%,transparent 58%)}.task-content{flex:1;min-width:0}.task-content h2{font-size:16px;margin:0 0 7px}.task-content p{margin:0 0 10px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task-content .badge{margin-left:7px}.priority-high{color:#9b322f;border-color:#d9aaa2}.priority-low{opacity:.8}.task-form{max-width:760px}.subtask-link{display:grid;grid-template-columns:14px minmax(0,1fr) auto;align-items:start;gap:9px;padding:11px 0;border-bottom:1px solid #eceae6}.subtask-link .task-status{margin-top:3px}.subtask-link .badge{margin:0}
.export-panel{scroll-margin-top:24px}.export-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:24px}.export-heading h2{margin:0}.export-heading p{margin:10px 0 0;max-width:680px}.export-list{border-top:1px solid var(--border)}.export-row{display:flex;align-items:center;gap:16px;padding:20px 24px;border-bottom:1px solid #e7e7e2}.export-mark{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border:1px solid #d9cdc2;border-radius:50%;background:#f4eee8;color:#8b552e;font-size:18px;flex-shrink:0}.export-content{flex:1;min-width:0}.export-content p{margin:7px 0 0;color:var(--muted);font-size:12px}.export-download{background:white;flex-shrink:0}.export-empty{padding:26px 24px;margin:0;border-top:1px solid var(--border);color:var(--muted)}.export-note{padding:17px 24px;background:var(--soft);color:var(--muted);font-size:12px;line-height:1.65}
@media(max-width:640px){.export-heading{align-items:flex-start;flex-direction:column;padding:20px}.export-heading .primary{width:100%}.export-row{align-items:flex-start;flex-wrap:wrap;padding:20px}.export-mark{display:none}.export-content{flex-basis:100%}.export-download{width:100%}.export-note{padding:17px 20px}}

.app-shell{display:flex;flex-direction:column;min-height:100vh;min-height:100svh}.app-shell>.site-header,.app-shell>.workspace-nav,.app-shell>.site-footer{flex-shrink:0}.app-shell>.site-footer{width:100%}
.check-row{display:flex;flex-wrap:wrap;gap:8px 24px;margin:14px 0 4px}.check-row .check{margin:0}.snippet-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:20px 0 12px}.setup-prompt{background:var(--soft)!important;font-size:12px;line-height:1.7!important}.connection-details{display:grid;grid-template-columns:110px minmax(0,1fr);gap:12px;margin:20px 0}.connection-details dt{font-weight:600}.connection-details dd{margin:0;overflow-wrap:anywhere}@media(max-width:640px){.header-actions{flex-wrap:wrap;justify-content:flex-end;font-size:12px}.header-actions>a[href="/guide"]{display:none}.connection-details{grid-template-columns:1fr;gap:6px}.connection-details dd{margin-bottom:12px}}
.project-selection{margin:8px 0 20px;padding:18px;border:1px solid var(--border);border-radius:6px;background:var(--soft);max-height:320px;overflow:auto}.project-selection .check{margin:14px 0}.creation-hint{color:#8b552e;font-weight:500}

body:has(.key-dialog[open]){overflow:hidden}
.key-dialog{padding:0;border:1px solid var(--border);border-radius:12px;background:#fdfdfb;color:#302b27;width:min(640px,calc(100% - 32px));height:min(880px,calc(100svh - 40px));max-height:calc(100svh - 40px);box-shadow:0 24px 80px #302b2733;overflow:hidden}
.key-dialog[open]{display:flex;flex-direction:column}
.key-dialog::backdrop{background:#302b2780}
.key-dialog-heading{padding:24px 28px 18px;border-bottom:1px solid var(--border);flex-shrink:0}
.key-dialog-heading h2{font-size:22px;margin-bottom:6px}.key-dialog-heading p{margin:0}
.key-dialog-body{flex:1;padding:4px 28px 20px;overflow-y:auto;overscroll-behavior:contain;min-height:0}
.key-dialog-footer{padding:16px 28px;background:var(--soft);border-top:1px solid var(--border);flex-shrink:0}
.key-dialog-footer .action-row{justify-content:flex-end}.key-dialog-footer .creation-hint{margin:0 0 12px}
.identity-dialog{width:min(520px,calc(100% - 32px));height:fit-content;max-height:calc(100svh - 40px)}.identity-dialog .key-dialog-body{flex:0 1 auto;padding-top:8px}.identity-dialog .key-dialog-body label{margin-top:14px}
.greeting-preview-dialog{height:min(760px,calc(100svh - 40px))}.greeting-preview-body{padding-top:22px}.effective-greeting{margin:0;min-height:280px;max-height:calc(100svh - 290px);overflow:auto;background:#fff;color:#302b27}.greeting-preview-body>.field-help{margin:14px 0 0}
.instruction-section-tabs{margin-top:22px}.instruction-section-tabs .badge{margin-left:4px}.instruction-history-empty{padding:34px 20px;text-align:center;background:var(--soft);border:1px solid var(--border);border-radius:6px}.instruction-history-empty p{margin-bottom:2px;font-weight:600}.instruction-history-layout{display:grid;grid-template-columns:minmax(180px,240px) minmax(0,1fr);min-height:260px;border:1px solid var(--border);border-radius:6px;overflow:hidden}.instruction-history-list{display:flex;flex-direction:column;background:var(--soft);border-right:1px solid var(--border)}.instruction-history-item{justify-content:space-between;width:100%;border:0;border-bottom:1px solid var(--border);border-radius:0;background:transparent;box-shadow:none;padding:13px 14px;text-align:left;font-weight:500}.instruction-history-item:hover{background:#eeefeb}.instruction-history-item.selected{background:#fff;box-shadow:inset 3px 0 #b7774d}.instruction-history-content{min-width:0;padding:22px 24px}.instruction-revision-meta{display:flex;flex-wrap:wrap;gap:6px 18px;padding-bottom:14px;margin-bottom:18px;border-bottom:1px solid #e7e7e2;color:var(--muted);font-size:12px}.instruction-editor{margin:0 0 20px}.instruction-write{margin:0;padding:18px}.instruction-write textarea{margin-bottom:0}.instruction-preview{min-height:300px;padding:22px;background:#fff}.instruction-preview>.muted{margin:0}
@media(max-width:700px){.instruction-history-layout{grid-template-columns:1fr}.instruction-history-list{border-right:0;border-bottom:1px solid var(--border);max-height:180px;overflow:auto}.instruction-history-content{padding:18px}.instruction-preview{min-height:220px;padding:18px}}
.key-projects{border:0;border-top:1px solid var(--border);padding:16px 0 0;margin:24px 0 0;min-width:0}
.key-projects legend{font-size:16px;font-weight:600;padding:0 10px 0 0}.key-projects .all-projects{margin:0}
.project-checklist .check{margin:0;padding:12px 0;border-bottom:1px solid var(--border)}.project-choice-name{flex:1;min-width:0;overflow-wrap:anywhere}
@media(max-width:640px){.key-dialog-heading{padding:20px}.key-dialog-body{padding:0 20px 16px}.key-dialog-footer{padding:14px 20px}}

.permission-grid{display:grid;grid-template-columns:minmax(0,1fr) 52px 52px 74px;gap:8px;align-items:center;padding:12px 0;border-bottom:1px solid var(--border)}
.permission-grid>input{justify-self:center;margin:0}.permission-grid>strong{font-size:13px}
.permission-heading{font-size:12px;color:var(--muted);border:0;padding-bottom:4px}.permission-heading>span:not(:first-child){text-align:center}
.all-access-help{min-height:40px}.key-dialog-footer .creation-hint{min-height:20px}
@media(max-width:420px){.permission-grid{grid-template-columns:minmax(0,1fr) 38px 38px 62px;gap:4px}.permission-grid>strong{font-size:12px}}
/* Task history: one line of when and who, then the changes as compact chips. Long fields become a
   labelled tag with the full before-and-after in its tooltip, so the panel stays readable. */
.history-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin:24px 0 12px}.history-heading h2{font-size:15px;margin:0 0 3px}.history-heading p{margin:0}
.history-list{list-style:none;margin:0;padding:0;border-top:1px solid #eceae6}.history-entry{padding:9px 0;border-bottom:1px solid #eceae6}
.history-when{display:flex;align-items:baseline;justify-content:space-between;gap:10px;color:var(--muted);font-size:11px}.history-when time{font-variant-numeric:tabular-nums;white-space:nowrap}.history-actor{color:#4a433e;font-weight:500;text-align:right;overflow-wrap:anywhere}
.history-changes{display:flex;flex-wrap:wrap;align-items:center;gap:5px 12px;margin-top:5px;font-size:12px;color:#4a433e}.history-changes:empty{display:none}
.history-change{display:inline-flex;align-items:center;gap:6px}.history-change .task-status{width:9px;height:9px;margin:0;border-width:2px}
.history-icon{width:12px;height:12px;fill:currentColor;color:var(--muted);flex:0 0 auto}
.history-tag{cursor:help}
@media(max-width:480px){.history-when{flex-direction:column;gap:2px}.history-actor{text-align:left}}

.relation-panel{margin-bottom:22px}.relation-panel-embedded{margin:22px -24px -24px;padding:18px 24px 0;border-top:1px solid #e7e7e2}.relation-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:14px}.relation-heading h2{font-size:15px;margin:0 0 3px}.relation-heading p{margin:0}.relation-add{min-height:30px;padding:4px 9px;font-size:12px;background:#fff}.relation-list{border-top:1px solid #eceae6}.relation-row{padding:10px 0;border-bottom:1px solid #eceae6}.relation-link{display:flex;align-items:baseline;gap:7px;width:100%;min-width:0;font-weight:500}.relation-number{color:var(--muted);font-variant-numeric:tabular-nums;flex:0 0 auto}.relation-title{overflow-wrap:anywhere}.relation-meta{display:flex;align-items:center;gap:7px;margin-top:6px}.relation-meta .badge{background:var(--soft)}.relation-overlay{position:fixed;inset:0;z-index:30;display:flex;align-items:center;justify-content:center;padding:18px;background:#302b2759}.relation-dialog{width:min(460px,100%);padding:24px;border:1px solid var(--border);border-radius:10px;background:#fdfdfb;box-shadow:0 24px 80px #302b2733}.relation-dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.relation-dialog-heading h2{margin:0}.relation-dialog>p{margin:10px 0 18px}.relation-form{display:grid;grid-template-columns:1fr 1fr;gap:14px}.relation-form label{margin:0;font-size:12px}.relation-form input,.relation-form select{margin-top:6px}.relation-dialog-actions{justify-content:flex-end;margin-top:20px}
@media(max-width:640px){.relation-panel-embedded{margin-left:-20px;margin-right:-20px;margin-bottom:-20px;padding-left:20px;padding-right:20px}.relation-meta{padding-left:0;flex-wrap:wrap}.relation-form{grid-template-columns:1fr}.relation-dialog{padding:20px}.relation-heading{align-items:center}}
.inactive-toggle{margin:20px 0 14px}.icon-button{width:36px;padding:5px;font-size:16px;background:white}.delete-dialog{position:fixed;inset:0;margin:auto;width:min(430px,calc(100% - 32px));border:1px solid var(--border);border-radius:10px;padding:26px;background:#fdfdfb;color:#302b27;box-shadow:0 24px 80px #302b2733;z-index:20}.delete-dialog::backdrop{background:#302b2780}.delete-dialog h2{margin-bottom:10px}.delete-dialog p{color:var(--muted)}.delete-dialog .action-row{justify-content:flex-end;margin-top:22px}

.oauth-consent{max-width:680px;margin:40px auto;padding:28px}.oauth-consent h1{margin-top:16px}.oauth-consent .action-row{justify-content:flex-end;margin-top:24px}@media(max-width:700px){.oauth-consent{margin:16px;padding:20px}}

.full-card{position:relative;cursor:pointer}.full-card-link{position:absolute;inset:0;z-index:1;border-radius:6px}.full-card-link:focus-visible{outline:2px solid var(--blue);outline-offset:-3px}.remote-link{position:relative;z-index:2;display:inline-flex;align-items:center;gap:5px}.remote-link svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.project-source-icon{display:flex;align-items:center;justify-content:center;width:26px;height:26px;flex:0 0 26px;color:#75665b}.project-source-icon svg{width:22px;height:22px}.project-source-icon.github svg{fill:currentColor}.project-source-icon.git svg,.project-source-icon.local svg{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}

.knowledge-filters{display:grid;grid-template-columns:repeat(4,minmax(140px,1fr));gap:12px 16px;margin:-6px 0 22px;padding:16px 18px 12px;border:1px solid var(--border);border-radius:7px;background:var(--soft)}.knowledge-filters label{margin:0;color:var(--muted);font-size:11px;letter-spacing:.2px}.knowledge-filters select{margin-top:6px;background:#fff;color:#302b27;font-size:13px;font-weight:400}.filter-summary{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:28px;padding-top:2px;color:var(--muted);font-size:12px}.filter-summary .link-button{min-height:auto}
@media(max-width:800px){.knowledge-filters{grid-template-columns:repeat(2,minmax(140px,1fr))}}
@media(max-width:480px){.knowledge-filters{grid-template-columns:1fr}.filter-summary{align-items:flex-start;flex-direction:column;gap:4px}}

/* Project navigation: a GitHub-style tab row, with the project chooser in a user-controlled drawer. */
.sidebar-toggle{width:32px;min-width:32px;height:32px;min-height:32px;padding:0;background:transparent;border-color:transparent;font-size:19px;font-weight:400;color:#4a433e}.sidebar-toggle:hover{background:#ebe8e2;border-color:var(--border)}
.project-sidebar{overflow:hidden;transition:width .16s ease,flex-basis .16s ease,padding .16s ease,border-color .16s ease}.project-sidebar>*{transition:opacity .1s ease}.sidebar-closed .project-sidebar{width:0;flex-basis:0;padding-left:0;padding-right:0;border-right-color:transparent}.sidebar-closed .project-sidebar>*{opacity:0;pointer-events:none}
.project-tabs{border-bottom:1px solid var(--border);background:var(--soft)}.project-tabs-inner{display:flex;gap:4px;max-width:1200px;width:100%;margin:0 auto;padding:0 40px;overflow-x:auto;scrollbar-width:none}.project-tabs a{display:block;flex:0 0 auto;white-space:nowrap;padding:14px 13px 11px;color:#4a433e;border-bottom:3px solid transparent}.project-tabs a:hover{background:#eeefeb;text-decoration:none}.project-tabs a.active{border-bottom-color:#b7774d;color:#302b27;font-weight:600}
@media(max-width:760px){.workspace-frame{position:relative}.project-sidebar{position:fixed;z-index:40;top:70px;bottom:0;left:0;width:280px;flex-basis:280px;padding:18px 14px;background:var(--soft);box-shadow:12px 0 28px #302b2726;transform:translateX(0);transition:transform .16s ease;overflow-y:auto}.sidebar-closed .project-sidebar{width:280px;flex-basis:280px;padding:18px 14px;border-right-color:var(--border);transform:translateX(-100%);box-shadow:none}.sidebar-closed .project-sidebar>*{opacity:1;pointer-events:auto}.project-sidebar-heading{padding:0 3px 10px}.project-tabs-inner{padding:0 16px}}

/* The chooser floats above the project, so opening it never shifts the current work. */
.project-sidebar{position:fixed;z-index:46;top:76px;bottom:0;left:0;width:280px;flex-basis:280px;padding:22px 14px;background:var(--soft);box-shadow:12px 0 28px #302b2726;transform:translateX(0);transition:transform .16s ease;overflow-y:auto}.sidebar-closed .project-sidebar{width:280px;flex-basis:280px;padding:22px 14px;border-right-color:var(--border);transform:translateX(-100%);box-shadow:none}.sidebar-closed .project-sidebar>*{opacity:1;pointer-events:auto}.sidebar-backdrop{display:none}.sidebar-open .sidebar-backdrop{display:block;position:fixed;z-index:45;inset:76px 0 0;border:0;border-radius:0;background:#302b2714;cursor:default;padding:0}body:has(.sidebar-open){overflow:hidden}
@media(max-width:760px){.project-sidebar,.sidebar-closed .project-sidebar{top:70px;padding:18px 14px}.sidebar-open .sidebar-backdrop{inset:70px 0 0}.project-tabs-inner{padding:0 16px}}

/* A project chooser is a modal drawer: it owns the whole viewport until closed. */
.project-sidebar,.sidebar-closed .project-sidebar{top:0;display:flex;flex-direction:column}.project-sidebar .project-list{max-height:none;min-height:0;flex:1}.sidebar-open .sidebar-backdrop{inset:0}.project-sidebar-heading>a:last-child{background:var(--accent);border-color:#5f5148;color:white}.project-sidebar-heading>a:last-child:hover{background:#5f5148}.sidebar-backdrop{cursor:default}html{scrollbar-gutter:stable}body:has(.sidebar-open){overflow-y:scroll}

.project-row{padding:17px 18px}.project-row .row-content p{margin-bottom:8px}.project-source-icon{width:20px;height:20px;flex-basis:20px}.project-source-icon svg{width:16px;height:16px}

/* Reserve scrollbar space on the root, then hide it while the modal drawer owns input. */
body:has(.sidebar-open){overflow:hidden}

/* A flexible grid stretches its rows by default; project names should stay compact at the top. */
.project-sidebar .project-list{align-content:start}

/* Keep the project switcher closer to the window edge. */
.site-header{padding:0 40px 0 24px}
/* The account menu owns input while open, without moving the header or page. */
.user-menu{position:relative;z-index:52}.user-menu:not(.open) .user-menu-backdrop,.user-menu:not(.open) .user-menu-panel{display:none}.user-menu-trigger{position:relative;z-index:1;display:flex;align-items:center;min-height:0;padding:0;border:0;border-radius:50%;background:transparent;box-shadow:none}.user-menu-trigger:hover{background:transparent}.user-menu-trigger img{border-radius:50%;border:1px solid #c9c3bd;background:white}.user-menu-backdrop{position:fixed;z-index:0;inset:0;min-height:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;cursor:default}.user-menu-backdrop:hover{background:transparent}.user-menu-panel{z-index:1}.user-menu-panel a,.user-menu-panel form{position:relative;z-index:1}

  /* Keep the sidebar heading fixed; only the project list scrolls to the outer edge. */
.project-sidebar,.sidebar-closed .project-sidebar{padding-left:0;padding-right:0;overflow:hidden}.project-sidebar-heading{padding-left:14px;padding-right:14px}.project-sidebar .project-list{overflow-y:auto;overflow-x:hidden;padding-bottom:14px}.project-sidebar .project-list a{padding-left:14px;padding-right:14px}

/* Overlay scroll lock: keep the root scrollbar reserved while any drawer or native dialog owns the viewport. */
html{overflow-y:scroll;scrollbar-gutter:stable}
body:has(.sidebar-open),body:has(.key-dialog[open]){overflow:hidden;overscroll-behavior:none}
.project-sidebar .project-list{overscroll-behavior:contain}
.task-status.in_progress{position:relative;border-color:#d8d8d4;animation:task-status-spin 1.2s linear infinite}
.task-row.subtask{align-items:center;padding-top:10px;padding-bottom:10px;gap:10px}
.task-row.subtask .task-status{margin-top:0}
.task-subtask-content{display:flex;align-items:baseline;gap:8px;min-width:0;line-height:1.4}
.task-subtask-number{color:var(--muted);font-size:12px;flex:0 0 auto}
.task-subtask-title{min-width:0;overflow-wrap:anywhere}
.task-status.in_progress::after{content:"";position:absolute;inset:-2px;border:2px solid transparent;border-top-color:#b7774d;border-right-color:#b7774d;border-bottom-color:#b7774d;border-radius:50%}
@keyframes task-status-spin{to{transform:rotate(360deg)}}

/* Explore keeps its controls within the reading column instead of widening the page. */
.explore-heading{margin-bottom:12px}.explore-search{max-width:680px;margin:0 0 22px}.explore-search>label{font-weight:500;margin:0 0 7px}.explore-search>div{display:flex;gap:10px}.explore-search input{flex:1;min-width:0;margin:0}.explore-search button{flex:0 0 auto}.explore-pagination{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:14px;margin:20px 0}.explore-pagination>a:last-child{text-align:right;justify-self:end}.explore-pagination>span:last-child{text-align:right}@media(max-width:640px){.explore-search>div{align-items:stretch;flex-direction:column}.explore-search button{width:100%}.explore-pagination{font-size:12px;gap:8px}}

/* Circuit-local feedback never participates in page layout. */
.toast-host{position:fixed;z-index:80;left:24px;bottom:24px;display:grid;gap:10px;width:min(380px,calc(100vw - 48px));pointer-events:none}.toast{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:start;padding:14px 14px 14px 16px;border:1px solid var(--border);border-left:3px solid #8b552e;border-radius:8px;background:#fff;box-shadow:0 12px 28px #302b2720;pointer-events:auto}.toast p{margin:0;line-height:1.5}.toast-success{border-left-color:#8b552e}.toast-error{border-left-color:#cf222e;background:#fffafa}.toast-warning{border-left-color:#b67a14;background:#fffdf5}.toast-dismiss{min-width:28px;min-height:28px;padding:0;border:0;background:transparent;box-shadow:none;color:var(--muted);font-size:20px;font-weight:400;line-height:1}.toast-dismiss:hover{background:var(--soft);color:#302b27}@media(max-width:640px){.toast-host{left:12px;bottom:12px;width:calc(100vw - 24px)}}
/* The dismiss action is a card-corner affordance, not inline copy. */
.toast{position:relative;display:block;padding:16px 46px 16px 16px}.toast-dismiss{position:absolute;top:5px;right:5px}
.memory-heading-title{font-weight:500;margin-bottom:0}
.memory-heading-number{font-size:inherit;font-weight:500;color:var(--muted);letter-spacing:0}
.memory-meta-row{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:10px}
.memory-meta-row .muted{margin:0}
.memory-status-badge{font-size:13px;line-height:1.2;padding:5px 10px;border-color:transparent}
.memory-status-badge[data-status="approved"]{background:#62765f;color:#fff}
.memory-status-badge[data-status="pending"]{background:#a9653f;color:#fff}
.memory-status-badge[data-status="rejected"]{background:#a64f46;color:#fff}
.memory-status-badge[data-status="archived"]{background:#746f6a;color:#fff}
.memory-status-badge[data-status="expired"]{background:#b17a36;color:#fff}
.memory-heading-copy{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;width:28px;height:28px;padding:4px;border:0;background:transparent;color:var(--muted)}
.memory-heading-copy:hover{background:transparent;color:inherit}
.memory-heading-copy svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.75}

/* Task actions align with the title cap height; adding a subtask remains visually separate from the list. */
.task-detail-actions{margin-top:7px}.task-subtasks-add{margin-top:16px}@media(max-width:520px){.task-detail-actions{margin-top:0}}

/* Sign-in and registration are distinct journeys; make the alternative route explicit. */
.account-path {
    align-items: center;
    display: flex;
    font-size: .875rem;
    gap: 1rem;
    justify-content: space-between;
    margin-top: 1.25rem;
}
.account-path-action {
    flex: 0 0 auto;
    font-size: .8125rem;
    padding: .45rem .75rem;
}
@media (max-width: 28rem) {
    .account-path { align-items: stretch; flex-direction: column; gap: .625rem; }
    .account-path-action { text-align: center; }
}

/* Public landing page. Extends the workspace vocabulary rather than introducing a second
   visual language: the proposal panel reuses .badge pending/approved so a visitor sees the
   same states the product actually shows. */
.landing-hero{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:64px;align-items:center;padding:34px 0 66px}
.landing-intro h1{font-size:45px;line-height:1.12;letter-spacing:-1.9px;font-weight:650;margin-bottom:22px;max-width:16ch}
.landing-lead{font-size:17px;line-height:1.75;color:var(--muted);max-width:52ch;margin-bottom:26px}
.landing-actions{display:flex;flex-wrap:wrap;gap:10px}
.landing-actions .button{min-height:40px;padding:8px 18px}
.landing-note{color:var(--muted);font-size:12px;line-height:1.7;margin:18px 0 0;max-width:56ch}

/* The gate: one fact moving from proposal to approval to recall. */
/* One panel, three rows: the same object moving through review, not three loose cards.
   Borrows .item-list's shape so it reads as something the product would actually render. */
.landing-gate{border:1px solid var(--border);border-radius:9px;background:#fff;overflow:hidden;min-width:0}
.gate-step{padding:18px 20px;border-bottom:1px solid #e7e7e2}
.gate-step:last-child{border-bottom:0}
.gate-step header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:9px}
.gate-actor{font-size:12px;font-weight:600;color:#302b27}
.gate-step h2{font-size:15px;line-height:1.45;margin:0 0 7px;max-width:40ch}
.gate-step p{font-size:12px;line-height:1.7;color:var(--muted);margin:0;max-width:52ch}
.gate-step .badge{flex-shrink:0}
.gate-decision{background:var(--soft)}
.gate-number{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px;color:var(--muted)}

.landing-band{border-top:1px solid var(--border);padding:38px 0 4px}
.landing-band>h2{font-size:22px;letter-spacing:-.4px;margin-bottom:20px}
.landing-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 48px;max-width:72rem}
.landing-columns p{max-width:62ch;margin-bottom:12px}

.landing-points{display:grid;gap:0;margin:0;max-width:60rem}
.landing-points>div{display:grid;grid-template-columns:minmax(0,15rem) minmax(0,1fr);gap:10px 40px;padding:20px 0;border-top:1px solid #e7e7e2}
.landing-points>div:first-child{border-top:0}
.landing-points dt{font-size:15px;font-weight:600;line-height:1.45}
.landing-points dd{margin:0;color:var(--muted);line-height:1.75;max-width:66ch}

.landing-close{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:26px;margin:44px 0 10px;padding:30px;background:var(--soft);border:1px solid var(--border);border-radius:9px}
.landing-close>div:first-child{flex:1 1 30rem;min-width:0}
.landing-close h2{font-size:20px;letter-spacing:-.3px}
.landing-close p{max-width:60ch;margin-bottom:0}
.landing-close p+p{margin-top:12px}
.landing-close-actions{display:flex;flex-wrap:wrap;gap:10px}
.landing-close-actions .button{min-height:40px;padding:8px 18px}

@media(max-width:980px){
.landing-hero{grid-template-columns:1fr;gap:40px;padding:22px 0 46px}
.landing-intro h1{font-size:38px;letter-spacing:-1.4px;max-width:20ch}
.landing-columns{grid-template-columns:1fr;gap:0}
.landing-points>div{grid-template-columns:1fr;gap:8px}
}
@media(max-width:640px){
.landing-intro h1{font-size:31px;letter-spacing:-1px;max-width:none}
.landing-lead{font-size:15px}
.landing-actions .button,.landing-close-actions .button{flex:1 1 100%}
.landing-band{padding-top:30px}
.landing-band>h2{font-size:19px}
.landing-close{padding:22px;margin-top:34px}
}

/* The legal and service links have to stay reachable from every page, including on a phone,
   so the footer wraps instead of hiding entries the way the old tagline did. */
.footer-links{display:flex;flex-wrap:wrap;gap:8px 22px;justify-content:flex-end}
.footer-links a{color:var(--muted)}
/* Honeypot. Off-screen rather than display:none, because a bot that skips hidden inputs would
   also skip the bait. Never focusable: aria-hidden plus tabindex=-1 keeps it out of reach. */
.decoy{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.site-footer mark,.prose mark{background:#fff8c5;color:#7d4e00;padding:1px 5px;border-radius:4px;font-weight:600}
@media(max-width:640px){.footer-links{justify-content:flex-start;gap:8px 16px}}
/* 404. Sits where page content starts rather than centred in the viewport: the header and footer stay put,
   so the page reads as part of the site, not as a crash. */
.not-found{max-width:36rem;padding-block:48px 64px}
.not-found h1{margin-bottom:14px}
.not-found-lead{font-size:16px;line-height:1.6;margin:0 0 10px}
.not-found .muted{margin:0 0 26px;line-height:1.6}
/* Leave-with-unsaved-changes dialog. Save leads because it is the choice that loses nothing; Keep editing
   sits apart on the right, since it cancels the navigation rather than deciding what happens to the data. */
body:has(.confirm-dialog[open]){overflow:hidden}
.confirm-dialog{padding:24px 26px 20px;border:1px solid var(--border);border-radius:12px;background:#fdfdfb;color:#302b27;width:min(460px,calc(100% - 32px))}
.confirm-dialog::backdrop{background:#302b2780}
.confirm-dialog h2{font-size:20px;margin:0 0 8px}
.confirm-dialog p{margin:0 0 22px;line-height:1.55;color:var(--muted)}
.confirm-dialog-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.confirm-dialog-stay{margin-left:auto}
@media(max-width:480px){.confirm-dialog-actions{flex-direction:column;align-items:stretch}.confirm-dialog-stay{margin-left:0}}
/* Wide screens: the drawer covers only itself, so the page beside it stays clickable and scrollable (#200).
   session.js closes the drawer on a click outside it. Narrow screens keep the modal backdrop. */
@media(min-width:761px){
.sidebar-open .sidebar-backdrop{pointer-events:none;background:transparent}
body:has(.sidebar-open):not(:has(.key-dialog[open])):not(:has(.confirm-dialog[open])){overflow:visible;overscroll-behavior:auto}
}
/* Documentation: a page tree beside the page, modelled on a wiki (#274). The tree scrolls on its own, so a
   long page never pushes it out of reach. */
.docs-layout{display:grid;grid-template-columns:minmax(220px,300px) minmax(0,1fr);align-items:start;min-height:calc(100vh - 170px);border:1px solid var(--border);border-radius:10px;background:#fff;overflow:clip}
.docs-tree-panel{align-self:stretch;background:var(--soft);border-right:1px solid var(--border)}
.docs-tree-sticky{position:sticky;top:0;display:flex;flex-direction:column;gap:10px;padding:14px 10px 16px;max-height:100vh;overflow:auto}
.docs-filter{display:flex;align-items:center;gap:8px;padding:0 10px;height:38px;border:1px solid var(--border);border-radius:7px;background:#ecebe6}
.docs-filter:focus-within{border-color:var(--accent);background:#fff}
.docs-filter svg{width:16px;height:16px;flex-shrink:0;fill:none;stroke:var(--muted);stroke-width:1.8;stroke-linecap:round}
.docs-filter input{flex:1;min-width:0;height:100%;padding:0;border:0;background:transparent;font:inherit;outline:none;box-shadow:none}
.docs-filter-clear{padding:0 4px;border:0;background:transparent;color:var(--muted);font-size:18px;line-height:1;cursor:pointer}
.docs-tree{list-style:none;margin:0;padding:0}
.docs-tree-row{position:relative;display:flex;align-items:center;gap:2px;min-height:34px;padding-left:calc(var(--depth,0) * 18px);border-radius:6px}
.docs-tree-row:hover{background:#ecebe6}
.docs-tree-row.selected{background:#e3e1db}
.docs-tree-chevron,.docs-tree-chevron-space{flex:0 0 24px;width:24px;height:24px}
.docs-tree-chevron{display:grid;place-items:center;padding:0;border:0;border-radius:5px;background:transparent;color:var(--muted);cursor:pointer}
.docs-tree-chevron svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;transition:transform .12s ease}
.docs-tree-chevron.open svg{transform:rotate(90deg)}
.docs-tree-link{display:flex;align-items:center;gap:8px;flex:1;min-width:0;padding:6px 4px;color:#302b27;text-decoration:none}
.docs-tree-row.selected .docs-tree-link{font-weight:600}
.docs-tree-icon{width:16px;height:16px;flex-shrink:0;fill:none;stroke:#75665b;stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round}
.docs-tree-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.docs-tree-menu{display:grid;place-items:center;flex:0 0 28px;width:28px;height:28px;padding:0;border:0;border-radius:5px;background:transparent;color:var(--muted);cursor:pointer;opacity:0}
.docs-tree-row:hover .docs-tree-menu,.docs-tree-row.selected .docs-tree-menu,.docs-tree-menu:focus-visible,.docs-tree-menu[aria-expanded="true"]{opacity:1}
.docs-tree-menu:hover{background:#dcd9d2}
.docs-tree-menu svg{width:16px;height:16px;fill:currentColor}
.docs-menu-backdrop{position:fixed;inset:0;z-index:20;border:0;background:transparent;cursor:default}
.docs-tree-actions{position:absolute;z-index:21;top:calc(100% - 2px);right:4px;display:grid;min-width:170px;padding:5px;border:1px solid var(--border);border-radius:8px;background:#fff;box-shadow:0 10px 24px #302b271f}
.docs-tree-actions a,.docs-tree-actions button{display:block;width:100%;padding:8px 10px;border:0;border-radius:5px;background:transparent;color:#302b27;font:inherit;text-align:left;text-decoration:none;cursor:pointer}
.docs-tree-actions a:hover,.docs-tree-actions button:hover:not(:disabled){background:var(--soft)}
.docs-tree-actions button:disabled{color:#b3aca6;cursor:default}
.docs-tree-actions .docs-tree-action-danger:not(:disabled){color:#9b2c2c}
.docs-tree-empty{margin:6px 10px;color:var(--muted)}
.docs-new-page{align-self:flex-start;margin:6px 10px 0}
.docs-page{min-width:0;padding:30px 40px 48px}
.docs-page-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}
.docs-page-heading h1{margin:0;font-size:30px;line-height:1.2}
.docs-page-meta{display:flex;align-items:center;gap:4px;margin:6px 0 26px;color:var(--muted);font-size:12px}.docs-page-meta .docs-copy-link{width:24px;height:24px;min-height:24px}.docs-page-meta .docs-copy-link svg{width:14px;height:14px}
.danger-link{color:#cf222e}.revision-delete-confirm{display:block;margin:8px 0 6px;color:#82071e;font-size:12px;line-height:1.6}.docs-versions{margin-top:36px;padding-top:22px;border-top:1px solid var(--border)}.docs-version{border:1px solid var(--border);border-radius:6px;margin-bottom:10px;background:#fff}.docs-version>summary{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;padding:10px 14px;cursor:pointer}.docs-version[open]>summary{border-bottom:1px solid #e7e7e2}.docs-version>:not(summary){margin-left:14px;margin-right:14px}.docs-version>h3{margin-top:14px}.docs-version .action-row{margin-bottom:14px;flex-wrap:wrap}
.docs-page .markdown-content{max-width:52rem;line-height:1.65}
.docs-empty{max-width:40rem;padding-top:12px}
.docs-empty p{color:var(--muted);line-height:1.6}
.docs-editor-text{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:13px;line-height:1.55}
.docs-tree-toggle-small{display:none}
/* Fullscreen reading: the page alone under the project tabs, without the tree, the footer or the workspace's width.
   The text takes the full width up to 1400px, about an A4 page on a 4K screen, and grows with the screen there. */
.workspace:has(.docs-fullscreen){display:flex;flex-direction:column;max-width:none;padding:0}
.workspace:has(.docs-fullscreen)~.site-footer{display:none}
.docs-layout.docs-fullscreen{display:flex;justify-content:center;flex:1;min-height:0;border:0;border-radius:0;background:var(--soft);overflow:visible}
.docs-fullscreen .docs-tree-panel,.docs-fullscreen .docs-tree-toggle-small{display:none}
.docs-fullscreen .docs-page{width:100%;max-width:1400px;padding:2.6em 3.4em 4em;border-inline:1px solid var(--border);background:#fff;font-size:max(15px,.68vw)}
.docs-fullscreen .docs-page-heading h1{font-size:2.15em}
.docs-fullscreen .docs-page-meta{font-size:.86em}
.docs-fullscreen .docs-page .markdown-content{max-width:none}
.docs-layout.docs-fullscreen .markdown-content h1{font-size:1.35em}.docs-layout.docs-fullscreen .markdown-content h2{font-size:1.18em}.docs-layout.docs-fullscreen .markdown-content h3{font-size:1em}
.docs-fullscreen pre{font-size:.86em}
/* Mermaid source stays invisible until it is drawn, so a diagram never flashes up as code first. */
/* Markdig emits a mermaid block as <pre class="mermaid">; once drawn it holds an SVG, not code. */
.markdown-content>.mermaid{margin:18px 0;padding:0;border:0;background:transparent;overflow-x:auto;text-align:center;white-space:normal}
.markdown-content>.mermaid:not([data-diagram="rendered"]):not([data-diagram="failed"]){min-height:60px;color:transparent}
.markdown-content>.mermaid svg{max-width:100%;height:auto}
.markdown-content>.mermaid pre{text-align:left;white-space:pre-wrap}
.diagram-error{margin:0 0 8px;color:#9b2c2c;font-size:13px;text-align:left}
@media(max-width:760px){
.docs-layout{grid-template-columns:1fr;border-radius:8px}
.docs-tree-panel{display:none;border-right:0;border-bottom:1px solid var(--border)}.docs-tree-sticky{position:static;max-height:none}
.docs-tree-shown .docs-tree-panel{display:block}
.docs-tree-toggle-small{display:inline-flex;margin-bottom:16px}
.docs-page{padding:20px 18px 32px}
.docs-page-heading{flex-wrap:wrap;gap:10px}.docs-page-heading h1{font-size:24px}
.docs-tree-menu{opacity:1}
.docs-fullscreen .docs-page{padding:20px 18px 32px;border:0}
}
.markdown-editor{border:1px solid var(--border);border-radius:6px;background:#fff;overflow:hidden}.markdown-editor-tabs{display:flex;gap:4px;padding:0 10px;border-bottom:1px solid var(--border);background:var(--soft)}.markdown-editor-tabs button{min-height:38px;padding:8px 10px 6px;border:0;border-bottom:2px solid transparent;border-radius:0;margin-bottom:-1px;background:transparent;box-shadow:none;color:var(--muted);font-weight:500}.markdown-editor-tabs button:hover{background:transparent;color:#302b27}.markdown-editor-tabs button.active{border-bottom-color:#b7774d;color:#302b27;font-weight:600}.markdown-editor>textarea{margin:0;border:0;border-radius:0;box-shadow:none;display:block}.markdown-editor>.markdown-content,.markdown-editor>h3{padding:10px 14px;margin:0}.markdown-editor>.markdown-content{min-height:120px}.markdown-editor>label{margin:12px 14px}
.confirm-dialog-check{align-items:flex-start;margin:0 0 22px}.confirm-dialog-check input{margin-top:2px}.confirm-dialog-check .field-help{margin-top:4px}
.docs-breadcrumbs{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin:0 0 8px;font-size:13px;color:var(--muted)}.docs-breadcrumbs a{color:var(--muted)}.docs-breadcrumbs a:hover{color:#302b27}
.docs-archived{margin:14px 10px 0;padding-top:12px;border-top:1px solid var(--border);font-size:13px}.docs-archived summary{cursor:pointer;color:var(--muted)}.docs-archived ul{list-style:none;margin:8px 0 0;padding:0}.docs-archived li{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:30px}.docs-archived-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}.docs-archived .link-button{min-height:0;flex:0 0 auto}
.filter-panel{display:grid;gap:10px;margin:-4px 0 22px;padding:14px 16px;border:1px solid var(--border);border-radius:7px;background:var(--soft)}.filter-row{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:0}.filter-label{flex:0 0 58px;color:var(--muted);font-size:11px;font-weight:650;letter-spacing:.6px;text-transform:uppercase}.filter-group{display:flex;flex-wrap:wrap;gap:6px}.filter-row .button,.filter-row button{min-height:30px;padding:4px 11px;font-size:13px;font-weight:500;background:#fff}.filter-row .button.primary{background:var(--accent);border-color:#5f5148;color:#fff}.filter-row input{width:auto;min-width:220px;min-height:30px;margin-top:0;padding:4px 10px;font-size:13px}@media(max-width:620px){.filter-label{flex-basis:100%}.filter-row input{flex:1 1 auto;min-width:0}}
.change-list{padding:0}.change-row{border-bottom:1px solid #eceae6}.change-row:last-child{border-bottom:0}.change-summary{display:grid;grid-template-columns:86px minmax(0,1fr) auto auto;align-items:center;gap:14px;width:100%;min-height:44px;padding:9px 18px;border:0;border-radius:0;background:transparent;box-shadow:none;text-align:left;font-weight:400}.change-summary:hover{background:var(--soft)}.change-summary .change-what{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.change-summary .change-who{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:190px;font-size:12px}.change-summary .change-when{font-size:12px;white-space:nowrap}.change-state{justify-self:start;font-size:11px}.change-state[data-state="pending"]{border-color:#b08968;color:#8a5a2b}.change-state[data-state="failed"]{border-color:#cf222e;color:#cf222e}.change-state[data-state="rejected"],.change-state[data-state="withdrawn"]{color:var(--muted)}.change-detail{padding:4px 18px 18px;border-top:1px solid #f1efeb;background:var(--soft)}.change-detail pre{max-height:320px;overflow:auto;white-space:pre-wrap;word-break:break-word;background:#fff;border:1px solid var(--border);border-radius:6px;padding:10px 12px;font-size:12px}.change-detail .two-columns{gap:16px}.change-detail label{margin:10px 0 0}.change-set{margin:0}.pager{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:-8px 0 26px}.pager .button{min-height:30px;padding:4px 12px;font-size:13px}.pager .button.disabled{opacity:.45;pointer-events:none}@media(max-width:700px){.change-summary{grid-template-columns:76px minmax(0,1fr);row-gap:4px}.change-summary .change-who,.change-summary .change-when{grid-column:2;max-width:none}}
.project-search{position:relative;margin:0 14px 10px}.project-search input{margin:0;min-height:32px;padding:5px 30px 5px 10px;font-size:13px}.project-search input::-webkit-search-cancel-button{display:none}.project-search button{position:absolute;top:50%;right:4px;width:24px;min-width:0;height:24px;min-height:0;padding:0;border:0;border-radius:4px;background:transparent;box-shadow:none;color:var(--muted);font-size:17px;font-weight:400;line-height:1;transform:translateY(-50%)}.project-search button:hover{background:#ebe8e2;color:#302b27}.project-search input:placeholder-shown+button{display:none}.project-recent{display:contents}.project-list [hidden]{display:none}.project-list-label{padding:10px 14px 4px;color:var(--muted);font-size:10px;font-weight:650;letter-spacing:1px;text-transform:uppercase}.project-list>.project-list-label:first-child,.project-list>.project-recent:first-child>.project-list-label:first-child{padding-top:2px}.project-search-empty{margin:4px 0 0;padding:0 14px;color:var(--muted);font-size:13px}
.favorite-toggle{position:relative;z-index:2;flex:0 0 auto;width:32px;min-width:0;height:32px;min-height:0;padding:0;border:0;border-radius:6px;background:transparent;box-shadow:none;color:#a29a94;vertical-align:middle}.favorite-toggle:hover{background:#ebe8e2;color:var(--accent)}.favorite-toggle svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;transition:transform .15s ease}.favorite-toggle .favorite-spark{opacity:0;transition:opacity .15s ease}.favorite-toggle.active{color:#b7774d}.favorite-toggle.active svg path:first-child{fill:currentColor}.favorite-toggle.active .favorite-spark,.favorite-toggle:hover .favorite-spark{opacity:1}.favorite-toggle:active svg{transform:scale(.85)}.project-row .favorite-toggle{align-self:center;margin-left:4px}.project-row:not(:hover) .favorite-toggle:not(.active):not(:focus-visible){opacity:0}h1 .favorite-toggle{margin-left:2px;margin-top:-4px}@media(hover:none){.project-row:not(:hover) .favorite-toggle:not(.active){opacity:1}}
.project-sidebar{--sparkle:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2c.7 5.4 3.6 8.3 10 10-6.4 1.7-9.3 4.6-10 10-.7-5.4-3.6-8.3-10-10 6.4-1.7 9.3-4.6 10-10Z'/%3E%3C/svg%3E")}
.project-list-label.favorites{display:flex;align-items:center;gap:5px}.project-list-label.favorites::before{content:"";width:10px;height:10px;background:#b7774d;-webkit-mask:var(--sparkle) center/contain no-repeat;mask:var(--sparkle) center/contain no-repeat}.project-list[data-searching] .project-list-label{display:none}
.task-waiting{font-size:12px;padding:4px 9px;color:#7d4e00;border-color:#eac54f;background:#fff8c5}.task-waiting:hover{text-decoration:none;border-color:#d4a72c}.task-waiting.canceled{color:#82071e;border-color:#ffbcb7;background:#ffebe9}
.task-content h2 .task-waiting,.task-subtask-content .task-waiting{flex-shrink:0;font-size:11px;padding:2px 8px;white-space:nowrap}
.task-dependency{font-size:12px;padding:4px 9px;color:#4a433e;background:#f4f2ee}.task-dependency a{color:inherit;font-weight:600}.task-dependency.done{color:#3f5a3c;border-color:#b9ccb5;background:#eef5ec}.task-dependency:hover,.task-dependency a:hover{text-decoration:none}
.task-ready{font-size:12px;padding:4px 9px;color:#3f5a3c;border-color:#b9ccb5;background:#eef5ec}
.task-view-switch{display:inline-flex;padding:2px;border:1px solid var(--border);border-radius:7px;background:var(--soft)}.task-view-switch a{padding:4px 11px;border-radius:5px;color:var(--muted);font-weight:600;white-space:nowrap}.task-view-switch a:hover{text-decoration:none;color:#302b27}.task-view-switch a.active{background:#fff;color:#302b27;box-shadow:0 1px 2px #302b271a}.task-toolbar{flex-wrap:wrap}
.dependency-panel{margin-top:22px;padding-top:18px;border-top:1px solid #eceae6}.dependency-label{margin:14px 0 6px;color:var(--muted);font-size:10px;font-weight:650;letter-spacing:1px;text-transform:uppercase}.dependency-list{list-style:none;margin:0;padding:0}.dependency-row{display:grid;grid-template-columns:14px minmax(0,1fr) auto auto;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid #eceae6}.dependency-row .task-status{margin-top:0}.dependency-row a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#302b27}.dependency-row .badge{margin:0}.dependency-done{color:#3f5a3c;border-color:#b9ccb5;background:#eef5ec}.dependency-canceled{color:#82071e;border-color:#ffbcb7;background:#ffebe9}.dependency-remove{width:26px;min-width:0;height:26px;min-height:0;padding:0;border:0;background:transparent;box-shadow:none;color:var(--muted);font-size:17px;font-weight:400}.dependency-remove:hover{background:#ebe8e2;color:#9b322f}.dependency-empty{margin:0 0 8px}.dependency-add{display:flex;gap:8px;margin-top:10px}.dependency-add input{margin:0;min-height:32px;padding:5px 10px;font-size:13px}.dependency-add button{min-height:32px}.dependency-error{margin:8px 0 0;font-size:13px}
.admin-totals{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px}.admin-total{display:flex;flex-direction:column;gap:4px;padding:22px 24px;margin:0}.admin-number{font-size:34px;font-weight:650;letter-spacing:-1px;color:#302b27;font-variant-numeric:tabular-nums}
/* The address a username opens (#351), shown while it is being chosen. */
.username-preview{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:13px;color:var(--muted);background:var(--soft);border:1px solid var(--border);border-radius:6px;padding:9px 12px;overflow-wrap:anywhere}.username-preview strong{color:#302b27}
/* Danger zone rows and the visibility dialog (GitHub style): what changes, then the button. */
.danger-row{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;padding:16px 0;border-top:1px solid #e7e7e2}.danger-row:first-of-type{border-top:0}.danger-row h3{font-size:14px;margin:0 0 4px}.danger-row p{margin:0}.danger-row>div{flex:1;min-width:0}.danger-row label{margin:12px 0 0}.danger-row>button{flex-shrink:0}
.visibility-consequences{margin:0 0 18px;padding-left:18px;color:var(--muted);line-height:1.55}.visibility-consequences li{margin-bottom:6px}.visibility-dialog label{margin:0 0 20px;font-weight:400}
@media (max-width:760px){.danger-row{flex-direction:column}.danger-row>button{align-self:flex-start}}
/* The original a workbench sits on, under the workbench title. */
.page-heading .workbench-origin{margin:4px 0 0;font-size:13px;color:var(--muted)}
/* A proposal decided on the item page itself (#361). */
.proposal-inline label{margin:10px 0 8px}.proposal-inline .action-row{gap:8px;align-items:center}.proposal-fields{display:grid;grid-template-columns:max-content 1fr;gap:4px 12px;margin:8px 0;font-size:13px}.proposal-fields dt{font-weight:600}.proposal-fields dd{margin:0;overflow-wrap:anywhere}
.outside-help{margin-top:12px}.workbench-original-tasks{margin-top:22px}
/* Project list on a phone (#377): the whole card is the link, so the arrow goes and its width goes to the text; the
   favorite sits beside the title instead of in a column of its own. Long names and remotes wrap instead of overflowing. */
.metadata>*{min-width:0;overflow-wrap:anywhere}.row-content h2{overflow-wrap:anywhere}
@media(max-width:640px){.project-row{display:grid;grid-template-columns:20px minmax(0,1fr) auto;column-gap:12px;align-items:start;padding:16px 12px 16px 16px}.project-row .arrow-link{display:none}.project-row .favorite-toggle{align-self:start;margin:-4px 0 0}.project-row .row-icon{margin-top:2px}}
/* An open drawer on a phone is modal: the page behind it stays put, and scrolling the drawer past its end does not
   carry over to the page. */
@media(max-width:760px){html:has(.workspace-frame.sidebar-open),html:has(.workspace-frame.sidebar-open) body{overflow:hidden}.project-sidebar{overscroll-behavior:contain}}
