/* BananaWiki: Customizable Professional Theme */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
/* Accessibility: skip-to-main link, visible only on keyboard focus (WCAG 2.4.1). */
.skip-link{position:absolute;left:0;top:0;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;z-index:1000}
.skip-link:focus{width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
html{font-size:16px;-webkit-text-size-adjust:100%;text-size-adjust:100%}
:root{color-scheme:dark;--primary:#8fa0d4;--secondary:#1e1e2c;--accent:#7e9ada;--text:#c8ccd8;--sidebar:#1a1a24;--bg:#16161f;--card-color:var(--secondary);--bg-color:var(--bg);--text-color:var(--text);--primary-color:var(--primary);--accent-color:var(--accent);--card-bg:var(--secondary);--border-color:rgba(255,255,255,.1);--font-ui:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;--font-mono:'SFMono-Regular',Consolas,'Liberation Mono',Menlo,monospace;--bw-topbar-height:50px;--bw-topbar-control-height:32px}
body{font-family:var(--font-ui);-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;text-rendering:auto;background-color:var(--bg);background-image:var(--bg-image,none);background-size:cover;background-position:center;background-attachment:fixed;color:var(--text);height:100vh;overflow:hidden;display:flex;flex-direction:column;line-height:calc(1.6 * var(--a11y-line-height-mul,1));letter-spacing:var(--a11y-letter-spacing,normal)}
button,input,select,textarea{font:inherit;color:inherit}
button{letter-spacing:inherit}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}

/* Topbar */
.topbar{display:flex;justify-content:space-between;align-items:center;min-height:var(--bw-topbar-height);padding:.4rem 1.2rem;background:var(--secondary);border-bottom:1px solid rgba(255,255,255,.06);position:sticky;top:0;z-index:100;flex-shrink:0;will-change:transform;overflow:hidden;gap:.75rem}
.topbar-left{display:flex;align-items:center;gap:.6rem;min-width:0;flex-shrink:1}
.topbar-left .logo{display:inline-flex;align-items:center;min-height:var(--bw-topbar-control-height);font-size:1.1rem;font-weight:600;line-height:1.15;color:var(--text);text-decoration:none;letter-spacing:0;white-space:nowrap;background:transparent;padding:.4rem .9rem .4rem 0;border-radius:4px}
.topbar-right{display:flex;align-items:center;gap:.6rem;flex-shrink:0;white-space:nowrap}
.topbar-right form{margin:0}
.topbar-right .btn{min-height:var(--bw-topbar-control-height);line-height:1.15;white-space:nowrap}
.user-info{font-size:.85rem;line-height:1.15;opacity:.55}
.topbar-user-cluster{display:inline-flex;align-items:center;min-height:var(--bw-topbar-control-height);gap:.45rem;flex-shrink:0}
/* `.btn.topbar-avatar-link` raises specificity to (0,2,0) so the topbar-avatar
   styles win over the generic `.btn` rule defined later in this file. */
.topbar-avatar-link,.btn.topbar-avatar-link{display:flex;align-items:center;text-decoration:none;flex-shrink:0;background:transparent;color:inherit;padding:0;border-radius:50%;transform:none}
.topbar-avatar-link:hover,.btn.topbar-avatar-link:hover{background:transparent;transform:none;opacity:1}
.topbar-avatar-img{width:28px;height:28px;border-radius:50%;object-fit:cover;border:2px solid rgba(255,255,255,.15)}
.topbar-avatar-placeholder{width:28px;height:28px;border-radius:50%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;border:2px solid rgba(255,255,255,.15);line-height:1}
.topbar-btn-icon{display:none}
.topbar-btn-label{display:inline}
.topbar-settings-btn .topbar-btn-icon,.topbar-logout-btn .topbar-btn-icon,.a11y-toggle .topbar-btn-icon{display:none}
.topbar-icon-btn{align-items:center;justify-content:center}
.topbar-actions-separator{display:none}
.topbar-ea-balance{display:none}
.mobile-account-menu-toggle,.btn.mobile-account-menu-toggle,.mobile-account-menu{display:none}
.mobile-account-logout-form{margin:0}
/* Animated page title in topbar */
.topbar-page-title{font-size:.95rem;font-weight:600;opacity:0;transform:translateY(8px);transition:opacity .25s,transform .25s;max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;padding-left:.6rem;border-left:1px solid rgba(255,255,255,.12);margin-left:.4rem}
.topbar-page-title.visible{opacity:1;transform:translateY(0)}

/* Sidebar toggle (hamburger): hidden on desktop, shown on mobile */
.sidebar-toggle,.btn.sidebar-toggle{display:none}
.sidebar-toggle-bar{display:block;width:20px;height:2px;background:currentColor;border-radius:2px}
@media(max-width:768px){
.sidebar-toggle,.btn.sidebar-toggle{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;width:34px;height:34px;padding:0;font-size:1.2rem;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.12);color:var(--text);border-radius:7px;cursor:pointer;flex:0 0 34px}
.sidebar-toggle-bar{width:19px;height:2px}
.sidebar-toggle:hover,.btn.sidebar-toggle:hover{opacity:1;background:rgba(255,255,255,.08);transform:none}
.sidebar-toggle[aria-expanded="true"],.btn.sidebar-toggle[aria-expanded="true"]{color:var(--primary);border-color:rgba(143,160,212,.35);background:rgba(143,160,212,.1)}
}

/* Layout */
.layout{display:flex;flex:1;overflow:hidden;min-height:0}

/* Sidebar */
/* Do NOT set an explicit `height` here.  The sidebar is a flex child of
   `.layout` and the flex container's default `align-items:stretch` already
   sizes it to the layout's used height.  An explicit `height:100%` or
   `height:100dvh` resolves to the viewport instead and overflows
   `.layout`, pushing `.sidebar-chat-links` (Kanban / Canvas / Chats /
   Groups / …) off-screen: that was the real reason "enabled plugins
   don't show up" on desktop installs with a long page list.  Note that
   a separate mobile-only `height:100dvh` rule lives in the @supports
   block lower down so the mobile drawer continues to fill the dynamic
   viewport. */
.sidebar{width:250px;min-width:180px;max-width:500px;background:var(--sidebar);border-right:1px solid rgba(255,255,255,.06);padding:.5rem 0;flex-shrink:0;transition:width 0s;display:flex;flex-direction:column;overflow:hidden;min-height:0}
.sidebar-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.45rem;padding:.6rem .8rem;font-size:.85rem;font-weight:600;text-transform:uppercase;letter-spacing:.6px;opacity:.75;border-bottom:1px solid rgba(255,255,255,.06);margin-bottom:.3rem}
.sidebar-actions{display:flex;align-items:center;gap:.35rem;text-transform:none;letter-spacing:normal;opacity:1}
.sidebar-action-btn{display:inline-flex;align-items:center;justify-content:center;gap:.2rem;min-height:24px;padding:.2rem .45rem;font-size:.72rem;line-height:1.15;text-transform:none;letter-spacing:0;font-weight:700;white-space:nowrap;text-align:center}
.sidebar-action-plus{font-size:.9rem;font-weight:800;line-height:1;opacity:.9}
.sidebar-action-label{white-space:nowrap}
.sidebar-search{padding:.3rem .6rem .4rem;border-bottom:1px solid rgba(255,255,255,.06);position:relative}
.sidebar-search-input-wrap{display:flex;gap:.3rem;align-items:center}
.sidebar-search-input-wrap .input{flex:1;padding:.28rem .5rem;font-size:.82rem;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:4px;color:var(--text);outline:none;min-width:0}
.sidebar-search-input-wrap .input:focus{border-color:rgba(255,255,255,.25);background:rgba(255,255,255,.09)}
.sidebar-search-scope-btn{font-size:.7rem;padding:.22rem .4rem;opacity:.5;transition:opacity .15s,background .15s;white-space:nowrap;flex-shrink:0}
.sidebar-search-scope-btn.active{opacity:1;background:rgba(255,255,255,.12)}
.sidebar-search-results{position:absolute;left:.6rem;right:.6rem;top:100%;z-index:200;background:var(--secondary,#1e1e2c);border:1px solid rgba(255,255,255,.12);border-radius:5px;max-height:320px;overflow-y:auto;box-shadow:0 4px 16px rgba(0,0,0,.4)}
.sidebar-search-results[hidden]{display:none}
.sidebar-search-result{display:flex;align-items:center;gap:.35rem;padding:.4rem .7rem;font-size:.83rem;color:var(--text);text-decoration:none;line-height:1.4;transition:background .12s}
.sidebar-search-result:hover{background:rgba(255,255,255,.07);text-decoration:none}
.sidebar-search-result-type{font-size:.7rem;opacity:.45;text-transform:uppercase;letter-spacing:.4px;margin-right:.3rem;flex-shrink:0}
.sidebar-search-empty{padding:.5rem .7rem;font-size:.82rem;opacity:.5;font-style:italic}
.sidebar-category-controls{display:grid;grid-template-columns:1fr 1fr;gap:.35rem;padding:.35rem .6rem .45rem;border-bottom:1px solid rgba(255,255,255,.06)}
.sidebar-category-control-btn{min-width:0;min-height:26px;padding:.22rem .38rem;font-size:.7rem;font-weight:700;line-height:1.1;text-transform:none;letter-spacing:0;white-space:nowrap;text-align:center;opacity:.72}
.sidebar-category-control-btn:hover{opacity:1;background:rgba(255,255,255,.08)}

/* Advanced search */
.advanced-search-page{max-width:980px;margin:0 auto;padding-bottom:2rem}
.advanced-search-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}
.advanced-search-header h1{font-size:2rem;line-height:1.15}
.advanced-search-form{display:flex;flex-direction:column;gap:.65rem;margin-bottom:.7rem}
.advanced-search-query-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.55rem;align-items:center}
.advanced-search-input{min-height:42px;font-size:1rem}
.advanced-search-submit{min-height:42px;padding-left:1rem;padding-right:1rem}
.advanced-search-options{display:flex;gap:.55rem;flex-wrap:wrap;align-items:center}
.advanced-search-options label{display:inline-flex;align-items:center;gap:.35rem;font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;opacity:.78}
.advanced-search-options .input-sm{min-width:132px}
.advanced-search-help{display:flex;gap:.35rem;flex-wrap:wrap;margin:.25rem 0 1.1rem}
.advanced-search-help code{display:inline-flex;align-items:center;min-height:24px;padding:.18rem .42rem;border:1px solid rgba(255,255,255,.1);border-radius:4px;background:rgba(255,255,255,.045);font-size:.78rem;color:var(--text)}
.advanced-search-summary{margin:.2rem 0 1rem;font-size:.92rem;opacity:.82}
.advanced-search-empty-state{padding:.8rem .95rem;border:1px solid rgba(255,255,255,.08);border-radius:7px;background:rgba(255,255,255,.035);font-size:.92rem;opacity:.82}
.advanced-search-section{margin-top:1.35rem}
.advanced-search-section h2{font-size:1rem;margin-bottom:.65rem;opacity:.72;text-transform:uppercase;letter-spacing:.04em}
.advanced-search-results{display:flex;flex-direction:column;gap:.65rem}
.advanced-search-result{padding:.85rem .95rem;border:1px solid rgba(255,255,255,.08);border-radius:7px;background:rgba(255,255,255,.035)}
.advanced-search-result-title{display:inline-flex;align-items:center;color:var(--text);font-size:1.05rem;font-weight:800;line-height:1.25;text-decoration:none}
.advanced-search-result-title:hover{text-decoration:underline}
.advanced-search-result-meta{display:flex;gap:.55rem;flex-wrap:wrap;margin-top:.3rem;font-size:.78rem;opacity:.58}
.advanced-search-snippet{margin-top:.55rem;line-height:1.55;font-size:.92rem;opacity:.88}
.advanced-search-page mark{padding:0 .12em;border-radius:2px;background:color-mix(in srgb,var(--primary) 48%,transparent);color:var(--text)}
/* min-height:0 + flex-shrink:1 (the flex:1 default) lets sidebar-nav shrink
   inside .sidebar so .sidebar-chat-links (Kanban, Canvas, Chats, Groups …)
   remains in-flow at the bottom instead of being pushed below the viewport. */
.sidebar-nav{flex:1 1 auto;min-height:0;overflow-y:auto}
.sidebar-chat-links{flex-shrink:0}
.sidebar-bottom-section{flex-shrink:0}
.sidebar-mobile-actions{display:none}
.nav-item{display:block;padding:.4rem .8rem .4rem 1.2rem;font-size:.87rem;color:var(--text);transition:background .15s;opacity:.8;line-height:1.5}
.nav-item-with-icon{display:flex;align-items:center;gap:.35rem}
.nav-item-label{min-width:0}
.nav-item:hover{background:rgba(255,255,255,.04);text-decoration:none;opacity:1}
.nav-item.active{background:rgba(255,255,255,.06);border-left:2px solid var(--primary);font-weight:600;opacity:1}
.nav-section{margin-top:.3rem}
.nav-section-header{display:flex;justify-content:space-between;align-items:center;padding:.45rem .8rem;cursor:pointer}
.nav-section-title{font-size:.82rem;font-weight:700;text-transform:uppercase;opacity:.75;letter-spacing:.6px;padding:.3rem .8rem;flex:1;text-align:left;color:var(--primary);cursor:pointer}
.nav-section-header .nav-section-title{padding:0}

/* Page row with reorder buttons */
.nav-item-row{display:flex;align-items:center;position:relative}
.nav-item-row .nav-item{flex:1;min-width:0}
.sidebar-page-status-icons{display:inline-flex;align-items:center;gap:.2rem;flex-shrink:0}
.sidebar-reservation-indicator{--sidebar-reservation-icon-size:.82rem;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:#ff6b6b}
.sidebar-reservation-indicator-self{color:#66a8ff}
.sidebar-reservation-indicator-cooldown{color:#9fe7ff}
.sidebar-reservation-indicator-icon{width:var(--sidebar-reservation-icon-size);height:var(--sidebar-reservation-icon-size);display:block;flex-shrink:0}
.page-order-btns{display:none;gap:.1rem;flex-shrink:0;padding-right:.3rem}
.nav-item-row:hover .page-order-btns{display:inline-flex}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* Collapsible categories */
.btn.cat-toggle{background:none;border:none;color:var(--text);cursor:pointer;font-size:.7rem;opacity:.35;padding:.35rem .4rem;transition:transform .15s,opacity .15s;line-height:1;flex-shrink:0}
.btn.cat-toggle:hover{opacity:.7}
.nav-section.collapsed .btn.cat-toggle{transform:rotate(-90deg)}
.nav-section.collapsed>.nav-section-body{display:none}

/* Tree-style indentation for nested categories.
   Each .nav-section-body draws a subtle vertical guide line, making the
   parent-child relationship between categories and pages immediately
   visible. Indentation grows linearly per nesting level thanks to the
   natural box-model accumulation, and there is no upper depth cap. */
.nav-section-body{margin-left:.6rem;padding-left:.4rem;border-left:1px solid rgba(255,255,255,.08);transition:border-left-color .15s}
.nav-section:hover>.nav-section-body{border-left-color:rgba(255,255,255,.18)}
.nav-section:has(.nav-item.active)>.nav-section-body{border-left-color:color-mix(in srgb, var(--primary) 65%, transparent)}
.nav-section-body>.nav-item-row .nav-item{padding-left:.7rem}

/* Category manage modal */
.cat-manage-row{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap;margin-bottom:.4rem}
.cat-delete-options{width:100%;margin-bottom:.3rem}
.cat-radio{display:block;font-size:.85rem;opacity:.85;padding:.2rem 0;cursor:pointer}
.cat-radio input{margin-right:.4rem}

/* Sidebar resize handle */
/* `position:relative` so the absolutely-positioned collapse button below can
   anchor to the handle and sit at its vertical centre, straddling the
   sidebar/content boundary like a VSCode-style collapse pill. */
.sidebar-resize-handle{width:4px;cursor:col-resize;background:transparent;flex-shrink:0;transition:background .15s;position:relative;z-index:10}
.sidebar-resize-handle:hover,.sidebar-resize-handle.resizing{background:var(--primary);opacity:.6}

/* Sidebar collapse button (desktop): pinned to the vertical centre of the
   resize handle so it sits exactly on the sidebar/content boundary.  We
   use `cursor:pointer` (not the handle's `col-resize`) and stop the
   handle's drag-resize from firing in JS so the button feels like a
   discrete control rather than part of the resize region. */
.sidebar-collapse-btn{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;line-height:1;color:var(--text);background:var(--secondary);border:1px solid rgba(255,255,255,.12);border-radius:50%;cursor:pointer;opacity:.85;transition:opacity .15s,background .15s,border-color .15s;z-index:11}
.sidebar-collapse-btn:hover{opacity:1;background:var(--primary);color:#0d0d14;border-color:var(--primary)}
.sidebar-collapse-icon{width:12px;height:12px;display:block}

/* Collapsed sidebar state (desktop only).

   The sidebar itself is removed, but the resize handle is repurposed
   as a thin fixed-position rail on the left edge of the viewport so
   the collapse pill stays visible at the same vertical centre. The
   same affordance, in the same screen position, with the chevron
   flipped to point right ("expand sidebar").  This is what users
   expect from a VSCode-style collapsible sidebar: the toggle never
   moves to the topbar, it sits where the user last clicked it.  The
   topbar hamburger stays hidden on desktop in both states; it is
   only for the mobile drawer. */
@media(min-width:769px){
    body.sidebar-collapsed .sidebar{display:none}
    body.sidebar-collapsed .sidebar-resize-handle{
        position:fixed;
        top:0;
        left:0;
        bottom:0;
        width:24px;
        cursor:default;
        background:transparent;
        pointer-events:none;
        z-index:48;
    }
    body.sidebar-collapsed .sidebar-resize-handle:hover{
        /* Suppress the resize-handle hover highlight when collapsed.
           There is no sidebar to resize, just the pill button. */
        background:transparent;
    }
    body.sidebar-collapsed .sidebar-collapse-btn{
        pointer-events:auto;
        left:12px;
    }
    body.sidebar-collapsed .sidebar-collapse-icon{
        /* Chevron flips to point right when the pill becomes an
           "expand sidebar" affordance. */
        transform:rotate(180deg);
    }
}

/* Sidebar overlay for mobile */
.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:49}
html[data-theme="light"] .sidebar-overlay{background:rgba(32,37,52,.35)}

/* Content */
.content{flex:1;padding:1.5rem 2.5rem;max-width:var(--content-max-width,100%);overflow-y:auto;height:100%}

/* Content resize handle */
.content-resize-handle{width:4px;cursor:col-resize;background:transparent;flex-shrink:0;transition:background .15s;position:relative;z-index:10;align-self:stretch}
.content-resize-handle:hover,.content-resize-handle.resizing{background:var(--primary);opacity:.6}

/* Settings navigation */
.settings-nav{display:flex;gap:.3rem;flex-wrap:wrap;margin-bottom:1.2rem;padding-bottom:.6rem;border-bottom:1px solid rgba(255,255,255,.08)}
.settings-nav-btn{background:transparent;border:1px solid rgba(255,255,255,.1);border-radius:4px;padding:.35rem .75rem;font-size:.82rem;color:var(--text);cursor:pointer;opacity:.6;transition:all .15s}
.settings-nav-btn:hover{opacity:.85;border-color:rgba(255,255,255,.2);background:rgba(255,255,255,.04)}
.settings-nav-btn.active{opacity:1;border-color:var(--primary);background:rgba(143,160,212,.1);font-weight:600}

/* First-run onboarding */
.onboarding-page{max-width:1180px;margin:0 auto 2rem}
.onboarding-hero{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem;padding:1.1rem;background:linear-gradient(135deg,rgba(143,160,212,.16),rgba(126,154,218,.06));border:1px solid rgba(255,255,255,.08);border-radius:8px}
.onboarding-hero h1,.intro-copy h1{font-size:2rem;line-height:1.15;margin:.1rem 0 .45rem}
.onboarding-hero p,.intro-copy p{max-width:650px;opacity:.78}
.onboarding-kicker{font-size:.76rem;text-transform:uppercase;letter-spacing:.08em;font-weight:800;color:var(--primary);margin-bottom:.15rem}
.onboarding-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,.45fr);gap:1rem;align-items:start}
.onboarding-panel{background:var(--secondary);border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:1rem}
.onboarding-panel h2{font-size:1rem;margin-bottom:.8rem}
.onboarding-panel-wide{grid-column:1/-1}
.onboarding-mode-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}
.onboarding-mode-card{display:flex;flex-direction:column;gap:.35rem;min-height:150px;padding:1rem;border:1px solid rgba(255,255,255,.1);border-radius:8px;background:rgba(255,255,255,.035);cursor:pointer}
.onboarding-mode-card input{align-self:flex-start}
.onboarding-mode-card.selected{border-color:var(--primary);background:rgba(143,160,212,.12)}
.onboarding-mode-title{font-size:1.05rem;font-weight:800}
.onboarding-mode-copy{opacity:.8;line-height:1.45}
.onboarding-mode-list{margin-top:auto;font-size:.78rem;font-weight:700;color:var(--accent)}
.onboarding-check,.onboarding-feature{display:flex;gap:.65rem;align-items:flex-start;cursor:pointer}
.onboarding-check small,.onboarding-feature small,.onboarding-section-head p{display:block;margin-top:.18rem;opacity:.68;line-height:1.45}
.onboarding-feature-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem}
.onboarding-feature{min-height:86px;padding:.75rem;border:1px solid rgba(255,255,255,.08);border-radius:7px;background:rgba(255,255,255,.035)}
.onboarding-section-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.8rem}
.onboarding-section-head h2{margin-bottom:.15rem}
.onboarding-users{display:flex;flex-direction:column;gap:.55rem}
.onboarding-user-row{display:grid;grid-template-columns:minmax(140px,1fr) minmax(160px,1fr) minmax(120px,.35fr);gap:.55rem}
.onboarding-user-force{grid-column:1/-1}

.intro-tour{display:grid;grid-template-columns:1fr;gap:1rem;align-items:stretch;max-width:760px;margin:0 auto}
.intro-copy{display:flex;flex-direction:column;gap:.9rem;background:var(--secondary);border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:1.2rem}
.intro-tour-card{padding:.9rem;border:1px solid rgba(143,160,212,.24);border-radius:8px;background:rgba(143,160,212,.08)}
.intro-tour-card h2{font-size:1.05rem;margin:.55rem 0 .35rem}
.intro-tour-card p{opacity:.82;line-height:1.5}
.intro-tour-progress{display:flex;align-items:center;justify-content:space-between;gap:.7rem;font-size:.78rem;font-weight:800;color:var(--primary);text-transform:uppercase;letter-spacing:.04em}
.intro-tour-actions{display:flex;gap:.65rem;flex-wrap:wrap;align-items:flex-end;margin-top:1rem}
.intro-tour-actions form:first-child{display:flex;flex-direction:column;gap:.75rem}
.intro-tour-actions .btn[disabled]{opacity:.45;cursor:not-allowed;transform:none}
.intro-role-picker{padding:.8rem;border:1px solid rgba(143,160,212,.28);border-radius:8px;background:rgba(143,160,212,.075)}
.intro-role-picker-head{display:flex;justify-content:space-between;gap:1rem;margin-bottom:.65rem}
.intro-role-picker-head strong{font-size:.92rem}
.intro-role-picker-head span{font-size:.78rem;line-height:1.35;opacity:.72}
.intro-role-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem;margin:0}
.intro-role-option{display:flex;align-items:flex-start;gap:.55rem;min-width:0;padding:.7rem;border:1px solid rgba(143,160,212,.32);border-radius:8px;background:rgba(255,255,255,.04);font-size:.88rem;cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s,transform .15s}
.intro-role-option:hover{border-color:rgba(143,160,212,.62);background:rgba(143,160,212,.12);transform:translateY(-1px)}
.intro-role-option:has(input:checked){border-color:var(--primary);background:rgba(143,160,212,.18);box-shadow:0 0 0 2px color-mix(in srgb,var(--primary) 32%,transparent)}
.intro-role-option input{flex:0 0 auto;margin:.15rem 0 0;accent-color:var(--primary)}
.intro-role-option span{display:flex;flex-direction:column;gap:.12rem;min-width:0}
.intro-role-option strong{font-size:.95rem;line-height:1.2}
.intro-role-option small{font-size:.75rem;line-height:1.25;opacity:.72}
.intro-tour-primary,.intro-tour-secondary{min-height:40px;padding:.55rem 1rem;font-size:.92rem}
.intro-tour-primary{box-shadow:0 0 0 2px color-mix(in srgb,var(--primary) 28%,transparent),0 10px 28px rgba(0,0,0,.18)}
.intro-tour-secondary{min-width:150px;border-color:rgba(255,255,255,.22)}
.live-tour-role-switch{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.75rem;padding-top:.7rem;border-top:1px solid rgba(255,255,255,.08)}
.live-tour-role-switch-label{flex:0 0 100%;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;opacity:.68}
.live-tour-role-switch form{margin:0}
.live-tour-role-switch .btn[aria-current="true"]{outline:2px solid var(--primary);outline-offset:2px}
.intro-step-list{margin:.7rem 0 0;padding-left:1.2rem;line-height:1.55}
.intro-step-list li{margin:.2rem 0}
.live-tour{position:fixed;inset:0;z-index:2147483000;pointer-events:none}
.live-tour-scrim{position:fixed;background:rgba(3,4,10,.72);z-index:1;pointer-events:auto}
.live-tour-spotlight{position:fixed;border:2px solid var(--primary);border-radius:8px;z-index:2;pointer-events:none;box-shadow:0 0 0 1px rgba(255,255,255,.16),0 0 34px color-mix(in srgb,var(--primary) 45%,transparent)}
.live-tour-popover{position:fixed;z-index:3;pointer-events:auto;box-sizing:border-box;padding:1rem;border:1px solid rgba(143,160,212,.34);border-radius:8px;background:var(--secondary);color:var(--text);box-shadow:0 22px 70px rgba(0,0,0,.45)}
.live-tour-popover h2{font-size:1.08rem;margin:.65rem 0 .35rem}
.live-tour-popover p{line-height:1.48;opacity:.86}
.live-tour-preview-note{padding:.55rem .65rem;border:1px solid rgba(143,160,212,.28);border-radius:6px;background:rgba(143,160,212,.1);font-size:.84rem}
.live-tour-hint{margin-top:.55rem;font-size:.82rem;color:var(--primary);font-weight:700}
.live-tour-target-active{position:relative!important;z-index:2147482999!important;box-shadow:0 0 0 2px color-mix(in srgb,var(--primary) 60%,transparent),0 0 30px rgba(143,160,212,.28)!important;outline:2px solid var(--primary)!important;outline-offset:5px!important;cursor:pointer!important}
.sidebar.live-tour-surface-active{z-index:2147482998}
html[data-theme="light"] .onboarding-hero,
html[data-theme="light"] .onboarding-panel,
html[data-theme="light"] .intro-copy{border-color:rgba(32,37,52,.1)}
html[data-theme="light"] .onboarding-panel,
html[data-theme="light"] .intro-copy{background:var(--light-secondary-color,#fff)}
html[data-theme="light"] .onboarding-mode-card,
html[data-theme="light"] .onboarding-feature{border-color:rgba(32,37,52,.1);background:rgba(32,37,52,.035)}
html[data-theme="light"] .intro-tour-card{background:rgba(75,99,182,.07);border-color:rgba(75,99,182,.2)}
html[data-theme="light"] .live-tour-popover{background:#fff;border-color:rgba(75,99,182,.24);box-shadow:0 22px 70px rgba(24,32,56,.26)}

@media(max-width:900px){
    .onboarding-grid{grid-template-columns:1fr}
    .onboarding-feature-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
    .intro-role-options{grid-template-columns:1fr}
    .intro-role-picker-head{flex-direction:column;gap:.25rem}
    .admin-create-user-form{grid-template-columns:repeat(2,minmax(130px,1fr))}
}
@media(max-width:640px){
    .onboarding-hero,.onboarding-section-head{flex-direction:column}
    .onboarding-mode-grid,.onboarding-feature-grid{grid-template-columns:1fr}
    .onboarding-user-row{grid-template-columns:1fr}
    .intro-tour-progress{align-items:flex-start;flex-direction:column}
    .intro-tour-actions,.intro-tour-actions form{width:100%}
    .intro-tour-primary,.intro-tour-secondary{width:100%;text-align:center}
    .admin-create-user-form{grid-template-columns:1fr}
    .advanced-search-query-row{grid-template-columns:1fr}
    .advanced-search-submit{width:100%}
    .advanced-search-options{align-items:stretch}
    .advanced-search-options label{width:100%;justify-content:space-between}
    .advanced-search-options .input-sm{width:auto;min-width:150px}
    .live-tour-popover{max-width:calc(100vw - 24px);padding:.85rem}
}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;min-height:32px;padding:.4rem .9rem;border-radius:4px;font-family:var(--font-ui);font-size:.84rem;border:none;cursor:pointer;background:var(--primary);color:#0d0d14;font-weight:600;text-align:center;vertical-align:middle;transition:all .15s;line-height:1.2}
.btn:hover{opacity:.85;text-decoration:none;transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
.btn-sm{min-height:28px;padding:.25rem .6rem;font-size:.8rem;line-height:1.2}
.btn-outline{background:transparent;border:1px solid rgba(255,255,255,.12);color:var(--text)}
.btn-outline:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,.03)}
.btn-danger{background:#c45c6a;color:#fff}
.btn-danger:hover{background:#a84d5a}
.btn-danger-outline{background:transparent;border:1px solid rgba(196,92,106,.4);color:#e88898}
.btn-danger-outline:hover{border-color:#c45c6a;background:rgba(196,92,106,.12)}
.btn-primary{background:var(--primary);color:#0d0d14}
.btn-success{background:#4a9e5f;color:#fff}
.btn-warning{background:#d4905a;color:#fff}
.btn-warning:hover{background:#b8793d}
.btn-icon{background:none;border:none;cursor:pointer;font-size:.85rem;color:var(--text);padding:.15rem .3rem;border-radius:3px;opacity:.7}
.btn-icon:hover{background:rgba(255,255,255,.08);text-decoration:none;opacity:1}
.btn-icon-tiny{background:none;border:none;color:inherit;cursor:pointer;font-size:.75rem;padding:.1rem .2rem}
.btn-danger-icon{color:#c45c6a}

/* Forms */
.input{width:100%;padding:.45rem .7rem;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.18);border-radius:4px;color:var(--text);font-size:.9rem;transition:border-color .15s}
.input:focus{outline:none;border-color:var(--primary);background:rgba(255,255,255,.1)}
.input-sm{padding:.25rem .5rem;font-size:.8rem;width:auto}
input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"],input[type="week"]{min-width:200px}
.form-group{margin-bottom:.8rem}
.form-group label{display:block;font-size:.8rem;margin-bottom:.3rem;font-weight:500;opacity:.7;text-transform:uppercase;letter-spacing:.3px}
.form-actions{display:flex;gap:.5rem;margin-top:.8rem;position:relative;z-index:1}
.inline-form{display:inline-flex;align-items:center;gap:.3rem}
.inline-edit{margin-top:.3rem;padding:.3rem .8rem}
select.input{appearance:auto}

input[type="checkbox"], input[type="radio"] {
    accent-color: var(--primary);
    cursor: pointer;
    width: 15px;
    height: 15px;
    flex-shrink: 0;
}

/* Flash messages */
.flash-messages{margin-bottom:1rem}
.flash{position:relative;display:flex;align-items:flex-start;gap:.5rem;padding:.45rem .75rem;border-radius:4px;font-size:.83rem;margin-bottom:.35rem;padding-right:2.5rem;transition:opacity .18s ease,transform .18s ease,filter .18s ease;backdrop-filter:blur(2px)}
.flash-success{background:rgba(100,180,100,.12);border:1px solid rgba(100,180,100,.3);color:#7cc07c}
.flash-error{background:rgba(196,92,106,.12);border:1px solid rgba(196,92,106,.3);color:#c45c6a}
.flash-warning{background:rgba(210,170,90,.12);border:1px solid rgba(210,170,90,.3);color:#d2aa5a}
.flash-info{background:rgba(110,138,202,.12);border:1px solid rgba(110,138,202,.3);color:#6e8aca}
/* `.btn.flash-close` raises specificity to (0,2,0) and explicitly resets
   padding/margin/transform so the generic `.btn` rule (defined earlier in
   this file) does not bleed through.  The button is anchored to the top-right
   corner (`top:.4rem`) so it stays there even when the message wraps to
   multiple lines, using `top:50%;transform:translateY(-50%)` caused the ×
   to appear centred over the text for longer messages. */
.flash-close,.btn.flash-close{position:absolute;top:.4rem;right:6px;background:none;border:none;color:inherit;font-weight:700;font-size:1rem;cursor:pointer;line-height:1;width:24px;height:24px;padding:0;margin:0;display:inline-flex;align-items:center;justify-content:center;opacity:.6;border-radius:4px;transform:none;transition:opacity .15s,background .15s}
.flash-close:hover,.btn.flash-close:hover{opacity:1;background:rgba(255,255,255,.08);transform:none}
.flash-message{flex:1}
.flash-hiding{opacity:0;transform:translateY(-4px);filter:saturate(.85)}
.editing-indicator{display:none;align-items:center;gap:.4rem;padding:.25rem .6rem;border-radius:4px;font-size:.8rem;background:rgba(210,170,90,.12);border:1px solid rgba(210,170,90,.25);color:#d2aa5a;margin-left:.5rem}
.editing-indicator-text{white-space:nowrap}
.info-callout{margin-bottom:1rem;padding:.75rem .9rem;background:rgba(110,138,202,.12);border:1px solid rgba(110,138,202,.25);border-radius:4px;font-size:.9rem}

/* Wiki content */
.wiki-content{line-height:1.8;font-size:1rem}
.wiki-content h1{font-size:1.8rem;margin:1.2rem 0 .7rem;color:var(--text);font-weight:600}
.wiki-content h2{font-size:1.4rem;margin:1.1rem 0 .6rem}
.wiki-content h3{font-size:1.15rem;margin:.9rem 0 .5rem}
.wiki-content p{margin:.6rem 0}
.wiki-content pre{background:rgba(255,255,255,.06);padding:.9rem 1rem;border-radius:6px;overflow-x:auto;font-size:.88rem;border:1px solid rgba(255,255,255,.12);font-family:'SFMono-Regular',Consolas,'Liberation Mono',Menlo,monospace;line-height:1.65}
.wiki-content code{background:rgba(255,255,255,.1);padding:.15rem .4rem;border-radius:4px;font-size:.88rem;font-family:'SFMono-Regular',Consolas,'Liberation Mono',Menlo,monospace;border:1px solid rgba(255,255,255,.08)}
.wiki-content pre code{background:none;padding:0;border:none}
.wiki-content .codehilite,.preview-content .codehilite{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);border-radius:6px;overflow-x:auto}
.wiki-content .codehilite pre,.preview-content .codehilite pre{margin:0;background:none;border:none;padding:.9rem 1rem}
.wiki-content .codehilite .c,.preview-content .codehilite .c,.wiki-content .codehilite .c1,.preview-content .codehilite .c1,.wiki-content .codehilite .cm,.preview-content .codehilite .cm,.wiki-content .codehilite .ch,.preview-content .codehilite .ch,.wiki-content .codehilite .cp,.preview-content .codehilite .cp{color:#7f848e;font-style:italic}
.wiki-content .codehilite .k,.preview-content .codehilite .k,.wiki-content .codehilite .kc,.preview-content .codehilite .kc,.wiki-content .codehilite .kd,.preview-content .codehilite .kd,.wiki-content .codehilite .kn,.preview-content .codehilite .kn,.wiki-content .codehilite .kp,.preview-content .codehilite .kp,.wiki-content .codehilite .kr,.preview-content .codehilite .kr,.wiki-content .codehilite .ow,.preview-content .codehilite .ow{color:#c678dd;font-weight:700}
.wiki-content .codehilite .nb,.preview-content .codehilite .nb,.wiki-content .codehilite .bp,.preview-content .codehilite .bp{color:#e5c07b}
.wiki-content .codehilite .nf,.preview-content .codehilite .nf,.wiki-content .codehilite .fm,.preview-content .codehilite .fm{color:#61afef}
.wiki-content .codehilite .nc,.preview-content .codehilite .nc,.wiki-content .codehilite .nn,.preview-content .codehilite .nn,.wiki-content .codehilite .nt,.preview-content .codehilite .nt{color:#56b6c2}
.wiki-content .codehilite .na,.preview-content .codehilite .na,.wiki-content .codehilite .nv,.preview-content .codehilite .nv{color:#d19a66}
.wiki-content .codehilite .s,.preview-content .codehilite .s,.wiki-content .codehilite .s1,.preview-content .codehilite .s1,.wiki-content .codehilite .s2,.preview-content .codehilite .s2,.wiki-content .codehilite .sa,.preview-content .codehilite .sa,.wiki-content .codehilite .sb,.preview-content .codehilite .sb,.wiki-content .codehilite .sc,.preview-content .codehilite .sc,.wiki-content .codehilite .dl,.preview-content .codehilite .dl,.wiki-content .codehilite .sd,.preview-content .codehilite .sd{color:#98c379}
.wiki-content .codehilite .m,.preview-content .codehilite .m,.wiki-content .codehilite .mi,.preview-content .codehilite .mi,.wiki-content .codehilite .mf,.preview-content .codehilite .mf,.wiki-content .codehilite .mh,.preview-content .codehilite .mh,.wiki-content .codehilite .mo,.preview-content .codehilite .mo,.wiki-content .codehilite .mb,.preview-content .codehilite .mb{color:#d19a66}
.wiki-content .codehilite .o,.preview-content .codehilite .o,.wiki-content .codehilite .p,.preview-content .codehilite .p{color:var(--text)}
.wiki-content img{max-width:100%;border-radius:4px;margin:.5rem 0}
.wiki-content figure.wiki-img-right{float:right;clear:right;margin:0 0 1rem 1.5rem;max-width:100%}
.wiki-content figure.wiki-img-left{float:left;clear:left;margin:0 1.5rem 1rem 0;max-width:100%}
.wiki-content figure.wiki-img-center{display:table;margin:1rem auto;text-align:center}
.wiki-content figure img{max-width:100%;height:auto;display:block;border-radius:4px}
.wiki-content figure figcaption{font-size:.82rem;opacity:.65;margin-top:.3rem;text-align:center}
.wiki-content .video-embed{position:relative;max-width:100%}
.wiki-content .video-embed-left{float:left;clear:left}
.wiki-content .video-embed-right{float:right;clear:right}
.wiki-content .video-embed-center{display:block}
/* Unified responsive media classes */
.media-responsive{max-width:var(--media-max-width,100%);height:auto;aspect-ratio:var(--media-aspect-ratio,auto);margin-top:var(--media-margin-top,0);margin-bottom:var(--media-margin-bottom,0);padding:var(--media-padding,0)}
.media-figure{max-width:100%;margin-top:var(--media-margin-top,.5rem);margin-bottom:var(--media-margin-bottom,.5rem);padding:var(--media-padding,0)}
.media-figure.media-left{float:left;clear:left;margin-right:1.5rem}
.media-figure.media-right{float:right;clear:right;margin-left:1.5rem}
.media-figure.media-center{display:table;margin-left:auto;margin-right:auto;text-align:center}
.media-figure img{max-width:100%;height:auto;display:block;border-radius:4px}
.media-figure figcaption{font-size:.82rem;opacity:.65;margin-top:.3rem;text-align:center}
.media-video-container{position:relative;max-width:100%;overflow:hidden;margin-top:var(--media-margin-top,.5rem);margin-bottom:var(--media-margin-bottom,.5rem)}
.media-video-container.media-left{float:left;clear:left;margin-right:1.5rem}
.media-video-container.media-right{float:right;clear:right;margin-left:1.5rem}
.media-video-container.media-center{margin-left:auto;margin-right:auto}
.media-responsive-iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0}
@media(max-width:600px){.media-figure,.media-video-container{float:none!important;margin-left:auto!important;margin-right:auto!important;width:100%!important;max-width:100%!important}.media-figure.media-left,.media-figure.media-right,.media-video-container.media-left,.media-video-container.media-right{float:none!important}}
@media(min-width:601px) and (max-width:1024px){.media-figure,.media-video-container{max-width:90%}}
.wiki-content::after{content:"";display:table;clear:both}
.wiki-content blockquote{border-left:3px solid var(--primary);padding:.4rem .8rem;margin:.6rem 0;opacity:.8}
.wiki-content table{border-collapse:collapse;width:100%;margin:.6rem 0}
.wiki-content th,.wiki-content td{border:1px solid rgba(255,255,255,.08);padding:.45rem .65rem;text-align:left}
.wiki-content th{background:rgba(255,255,255,.03)}
.wiki-content ul,.wiki-content ol{margin:.6rem 0 .6rem 1.5rem}

/* Page header */
.page-header{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem}
.page-header h1{flex:1;margin:0}
.edit-info{font-size:.8rem;opacity:.4;margin-top:1.5rem;padding-top:.5rem;border-top:1px solid rgba(255,255,255,.06)}

/* Editor: split pane layout */
.editor-container{display:flex;gap:0;border:1px solid rgba(255,255,255,.1);border-radius:6px 6px 0 0;overflow:hidden;min-height:500px;height:calc(100vh - 220px);background:rgba(255,255,255,.02)}
.editor-pane{flex:1;display:flex;flex-direction:column;min-width:0}
.editor-pane-header{display:flex;align-items:center;justify-content:space-between;padding:.4rem .8rem;background:rgba(255,255,255,.03);border-bottom:1px solid rgba(255,255,255,.08);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;opacity:.5}
.editor-area{width:100%;flex:1;min-height:400px;background:transparent;border:none;color:var(--text);font-family:'SFMono-Regular',Consolas,'Liberation Mono',Menlo,monospace;font-size:.88rem;padding:.8rem 1rem;resize:none;line-height:1.7;outline:none}
.editor-area:focus{background:rgba(255,255,255,.01);border-left:2px solid var(--primary)}
.editor-divider{width:1px;background:rgba(255,255,255,.08)}
.preview-pane{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden}
.preview-content{flex:1;padding:.8rem 1rem;overflow-y:auto;line-height:1.75}
/* Vertical resize handle for editor container; taller for easier touch targeting */
.editor-resize-handle{height:10px;cursor:row-resize;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-top:none;border-radius:0 0 6px 6px;transition:background .15s;position:relative;z-index:10;touch-action:none}
.editor-resize-handle:hover,.editor-resize-handle.resizing{background:var(--primary);opacity:.6}
.preview-content h1{font-size:1.6rem;margin:.8rem 0 .5rem;font-weight:600}
.preview-content h2{font-size:1.3rem;margin:.8rem 0 .4rem}
.preview-content h3{font-size:1.1rem;margin:.6rem 0 .3rem}
.preview-content p{margin:.4rem 0}
.preview-content pre{background:rgba(255,255,255,.06);padding:.7rem .9rem;border-radius:6px;overflow-x:auto;font-size:.84rem;border:1px solid rgba(255,255,255,.12);font-family:'SFMono-Regular',Consolas,'Liberation Mono',Menlo,monospace;line-height:1.65}
.preview-content code{background:rgba(255,255,255,.1);padding:.12rem .35rem;border-radius:4px;font-size:.84rem;font-family:'SFMono-Regular',Consolas,'Liberation Mono',Menlo,monospace;border:1px solid rgba(255,255,255,.08)}
.preview-content pre code{background:none;padding:0;border:none}
.preview-content img{max-width:100%;border-radius:4px;margin:.4rem 0}
.preview-content figure.wiki-img-right{float:right;clear:right;margin:0 0 1rem 1.5rem;max-width:100%}
.preview-content figure.wiki-img-left{float:left;clear:left;margin:0 1.5rem 1rem 0;max-width:100%}
.preview-content figure.wiki-img-center{display:table;margin:1rem auto;text-align:center}
.preview-content figure img{max-width:100%;height:auto;display:block;border-radius:4px}
.preview-content figure figcaption{font-size:.82rem;opacity:.65;margin-top:.3rem;text-align:center}
.preview-content .video-embed{position:relative;max-width:100%}
.preview-content .video-embed-left{float:left;clear:left}
.preview-content .video-embed-right{float:right;clear:right}
.preview-content .video-embed-center{display:block}
.preview-content .media-figure{max-width:100%;margin-top:var(--media-margin-top,.5rem);margin-bottom:var(--media-margin-bottom,.5rem);padding:var(--media-padding,0)}
.preview-content .media-figure.media-left{float:left;clear:left;margin-right:1.5rem}
.preview-content .media-figure.media-right{float:right;clear:right;margin-left:1.5rem}
.preview-content .media-figure.media-center{display:table;margin-left:auto;margin-right:auto;text-align:center}
.preview-content .media-figure img{max-width:100%;height:auto;display:block;border-radius:4px}
.preview-content .media-figure figcaption{font-size:.82rem;opacity:.65;margin-top:.3rem;text-align:center}
.preview-content .media-video-container{position:relative;max-width:100%;overflow:hidden;margin-top:var(--media-margin-top,.5rem);margin-bottom:var(--media-margin-bottom,.5rem)}
.preview-content .media-video-container.media-left{float:left;clear:left;margin-right:1.5rem}
.preview-content .media-video-container.media-right{float:right;clear:right;margin-left:1.5rem}
.preview-content .media-video-container.media-center{margin-left:auto;margin-right:auto}
.preview-content .media-responsive-iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0}
.preview-content::after{content:"";display:table;clear:both}
/* Resizable images in edit preview */
.preview-img-wrap{position:relative;display:inline-block;max-width:100%}
.preview-img-wrap.resizing{outline:2px dashed var(--primary);outline-offset:2px;border-radius:4px}
.preview-img-resize-handle{position:absolute;bottom:-4px;right:-4px;width:20px;height:20px;background:var(--primary);border:2px solid var(--bg);border-radius:50%;cursor:ew-resize;opacity:0;transition:opacity .15s,transform .15s;z-index:5;touch-action:none;box-shadow:0 1px 4px rgba(0,0,0,.3)}
.preview-img-wrap:hover .preview-img-resize-handle,.preview-content figure:hover .preview-img-resize-handle,.preview-content .video-embed:hover .preview-img-resize-handle{opacity:.9}
.preview-img-resize-handle:hover{transform:scale(1.15);opacity:1}
.preview-img-resize-handle:focus-visible{opacity:1;outline:2px solid var(--accent);outline-offset:2px}
.preview-img-resize-tooltip{position:absolute;bottom:-28px;right:0;background:var(--primary);color:#fff;font-size:11px;font-weight:600;padding:2px 8px;border-radius:4px;white-space:nowrap;pointer-events:none;z-index:6;box-shadow:0 1px 4px rgba(0,0,0,.25);transform:translateX(25%);opacity:0;transition:opacity .15s}
.preview-img-wrap.resizing .preview-img-resize-tooltip{opacity:1}
/* Bottom-right resize handle on video embeds: bigger hit area + always above iframe */
.preview-video-resize-handle{width:18px;height:18px;bottom:8px;right:8px;z-index:11}
/* Floating "edit video" pencil button (top-right corner of a video embed). */
.preview-video-edit-btn{position:absolute;top:8px;right:8px;z-index:12;width:28px;height:28px;padding:0;border-radius:50%;border:0;background:rgba(20,22,32,.78);color:#fff;font-size:14px;line-height:1;cursor:pointer;opacity:0;transition:opacity .15s,background .15s;display:inline-flex;align-items:center;justify-content:center}
.preview-content .video-embed:hover .preview-video-edit-btn,.preview-video-edit-btn:focus-visible{opacity:1}
.preview-video-edit-btn:hover{background:var(--primary);color:#fff}
.preview-video-edit-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.preview-content blockquote{border-left:3px solid var(--primary);padding:.3rem .8rem;margin:.4rem 0;opacity:.8}
.preview-content table{border-collapse:collapse;width:100%;margin:.4rem 0}
.preview-content th,.preview-content td{border:1px solid rgba(255,255,255,.08);padding:.3rem .5rem;text-align:left}
.preview-content th{background:rgba(255,255,255,.03)}
.preview-content ul,.preview-content ol{margin:.4rem 0 .4rem 1.5rem}

/* Editor import / export row (sits above the editor toolbar) */
.editor-io-row{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;margin:.4rem 0 .5rem}
.editor-io-row .btn{display:inline-flex;align-items:center;gap:.3rem}
.editor-io-status{opacity:.7}
.editor-io-status-error{color:#e57373;opacity:1}
.editor-hint-row{display:flex;align-items:center;gap:.45rem;flex-wrap:wrap;margin:0 0 .55rem;padding:.45rem .6rem;border:1px solid rgba(255,255,255,.08);border-radius:5px;background:rgba(255,255,255,.025);font-size:.82rem;color:rgba(200,204,216,.72)}
.editor-hint-row span{font-weight:700;color:var(--text);opacity:.74}
.editor-hint-row code{display:inline-flex;align-items:center;min-height:24px;padding:.12rem .4rem;border-radius:4px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.08);font-size:.78rem;line-height:1.35;color:var(--text);white-space:nowrap}

/* Editor toolbar */
.editor-toolbar{display:flex;gap:.2rem;padding:.35rem .6rem;background:rgba(255,255,255,.03);border-bottom:1px solid rgba(255,255,255,.08);flex-wrap:wrap;align-items:center}
.editor-toolbar button{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;min-height:30px;background:none;border:1px solid transparent;color:var(--text);cursor:pointer;padding:.25rem .5rem;border-radius:4px;font-size:.82rem;opacity:.72;transition:all .15s;white-space:nowrap}
.editor-toolbar button:hover{opacity:1;background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.1)}
.editor-toolbar button:focus-visible{outline:2px solid var(--accent);outline-offset:1px;opacity:1}
.editor-toolbar-mark{min-width:30px}
.editor-toolbar .sep{width:1px;height:18px;background:rgba(255,255,255,.1);margin:0 .3rem}
.draft-notice{padding:.5rem .8rem;background:rgba(210,170,90,.08);border:1px solid rgba(210,170,90,.25);border-radius:4px;margin-bottom:.8rem;font-size:.85rem}
.draft-notice .btn{margin-left:.5rem}
.draft-notice-warning{background:rgba(196,92,106,.08);border-color:rgba(196,92,106,.25)}
.draft-manager-table{width:100%;border-collapse:collapse;font-size:.88rem}
.draft-manager-table th{text-align:left;padding:.4rem .6rem;border-bottom:1px solid rgba(255,255,255,.08);opacity:.6;font-weight:500}
.draft-manager-table td{padding:.5rem .6rem;border-bottom:1px solid rgba(255,255,255,.04)}

/* Legacy editor (create page) */
.editor-area-legacy{width:100%;min-height:300px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.1);border-radius:4px;color:var(--text);font-family:'SFMono-Regular',Consolas,'Liberation Mono',Menlo,monospace;font-size:.88rem;padding:.8rem 1rem;resize:vertical;line-height:1.7}
.editor-area-legacy:focus{outline:none;border-color:var(--primary)}

/* Modal */
.modal{position:fixed;inset:0;background:rgba(0,0,0,.7);display:flex;align-items:center;justify-content:center;z-index:10001}
#bw-confirm-modal{z-index:10005}
#bw-confirm-modal .modal-content{z-index:1}
.modal-content{background:var(--secondary);border:1px solid rgba(255,255,255,.1);border-radius:6px;padding:1.2rem;max-width:450px;width:90%;position:relative}
.modal-content h3{margin-bottom:.8rem;font-weight:600}
.img-align-btns{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.3rem}
.img-align-btn.active{background:var(--primary);color:#0d0d14;border-color:var(--primary)}
.video-align-btn.active,.video-ratio-btn.active{background:var(--primary);color:#0d0d14;border-color:var(--primary)}

@media (max-width:768px){
    .wiki-content figure.wiki-img-left,
    .wiki-content figure.wiki-img-right,
    .preview-content figure.wiki-img-left,
    .preview-content figure.wiki-img-right,
    .wiki-content .video-embed-left,
    .wiki-content .video-embed-right,
    .preview-content .video-embed-left,
    .preview-content .video-embed-right{
        float:none;
        clear:none;
        margin:1rem auto !important;
        width:100% !important;
        max-width:100% !important;
    }
}

/* Cards / tables for admin */
.admin-table{width:100%;border-collapse:collapse;font-size:.85rem}
.admin-table th,.admin-table td{padding:.45rem .6rem;border-bottom:1px solid rgba(255,255,255,.06);text-align:left}
.admin-table th{font-weight:600;opacity:.5;font-size:.75rem;text-transform:uppercase;letter-spacing:.4px}
.admin-table tr:hover{background:rgba(255,255,255,.02)}
.table-responsive{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.badge{display:inline-block;padding:.12rem .5rem;border-radius:3px;font-size:.73rem;font-weight:600}
.badge-admin{background:rgba(196,92,106,.15);color:#c45c6a}
.badge-editor{background:rgba(110,138,202,.15);color:#6e8aca}
.badge-user{background:rgba(100,180,100,.15);color:#7cc07c}
.badge-owner{background:rgba(196,92,106,.25);color:#e07080}
.badge-suspended{background:rgba(210,170,90,.15);color:#d2aa5a}
.badge-member-since{background:rgba(155,89,182,.15);color:#9b59b6}
.badge-status-approved{background:rgba(76,175,80,.18);color:#9be7a4;border:1px solid rgba(76,175,80,.45)}
.badge-status-denied{background:rgba(244,67,54,.16);color:#ff9f98;border:1px solid rgba(244,67,54,.4)}
.badge-status-cancelled{background:rgba(158,158,158,.16);color:#bbb;border:1px solid rgba(158,158,158,.4)}
.badge-status-pending{background:rgba(255,193,7,.16);color:#ffd97a;border:1px solid rgba(255,193,7,.4)}
.difficulty-tag{display:inline-block;padding:.18rem .65rem;border-radius:4px;font-size:.75rem;font-weight:600;letter-spacing:.3px;text-transform:uppercase}
.difficulty-tag-beginner{background:rgba(110,138,202,.18);color:#6e8aca}
.difficulty-tag-easy{background:rgba(100,180,100,.18);color:#7cc07c}
.difficulty-tag-intermediate{background:rgba(210,170,90,.18);color:#d2aa5a}
.difficulty-tag-expert{background:rgba(196,92,106,.18);color:#c45c6a}
.difficulty-tag-extra{background:rgba(150,100,200,.18);color:#a06cc0}
.deindexed-badge{display:inline-block;padding:.18rem .65rem;border-radius:4px;font-size:.75rem;font-weight:600;letter-spacing:.3px;text-transform:uppercase;background:rgba(150,150,150,.18);color:#999}
.pending-deletion-badge{display:inline-block;padding:.18rem .65rem;border-radius:4px;font-size:.75rem;font-weight:600;letter-spacing:.3px;text-transform:uppercase;background:rgba(217,83,79,.18);color:#d9534f}
.pending-deletion-banner{padding:.85rem 1.2rem;margin-bottom:1.2rem;border-radius:4px;border:1px solid rgba(217,83,79,.3);background:rgba(217,83,79,.08);display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.pending-deletion-banner-content{display:flex;flex-direction:column;gap:.25rem;font-size:.9rem}
.btn-restore{background:#5cb85c;color:#fff;border:none;padding:.45rem 1.2rem;border-radius:4px;font-weight:600;cursor:pointer;white-space:nowrap}
.btn-restore:hover{background:#4cae4c}
.deindexed-nav-item{opacity:.5}
.pending-deletion-nav-item{opacity:.45;display:flex;align-items:center;gap:.35rem}
.sidebar-pending-deletion-indicator{--sidebar-reservation-icon-size:.82rem;color:#d9534f;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.revert-badge{display:inline-block;padding:.1rem .45rem;border-radius:3px;font-size:.72rem;font-weight:600;letter-spacing:.3px;background:rgba(210,170,90,.18);color:#d2aa5a;vertical-align:middle}
.custom-tag-fields{padding:.6rem .8rem;border:1px solid rgba(255,255,255,.08);border-radius:6px;margin-top:.4rem;background:rgba(255,255,255,.03)}
.color-preset-grid{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:.25rem}
.color-swatch{width:1.5rem;height:1.5rem;border:2px solid transparent;border-radius:4px;cursor:pointer;padding:0;transition:transform .1s,border-color .1s}
.color-swatch:hover{transform:scale(1.2);border-color:rgba(255,255,255,.5)}
.color-hex-picker{width:2.2rem;height:2.2rem;padding:0;border:1px solid rgba(255,255,255,.15);border-radius:4px;cursor:pointer;background:none}

/* Auth pages */
.auth-container{display:flex;align-items:center;justify-content:center;flex:1;min-height:0;padding:2rem 1rem;background:var(--bg);overflow-y:auto}
.auth-topbar{width:100%}
.auth-box{background:var(--secondary);border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:2rem;width:360px;max-width:90%}
.auth-box h1{text-align:center;color:var(--text);margin-bottom:.3rem;font-size:1.4rem;font-weight:600}
.auth-box .subtitle{text-align:center;font-size:.82rem;opacity:.45;margin-bottom:1.2rem}
.auth-box .form-group{margin-bottom:1rem}
.auth-box .btn:not(.flash-close){width:100%;text-align:center;padding:.5rem;font-size:.95rem}
.setup-language-flags{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem}
.setup-language-option{display:block;margin:0;cursor:pointer;opacity:1!important;text-transform:none!important;letter-spacing:0!important}
.setup-language-radio{position:absolute;opacity:0;pointer-events:none}
.setup-language-card{display:flex;align-items:center;gap:.45rem;min-height:44px;padding:.55rem .65rem;border:1px solid rgba(255,255,255,.14);border-radius:8px;background:rgba(255,255,255,.04);color:var(--text);transition:border-color .15s ease,background .15s ease,box-shadow .15s ease}
.setup-language-flag{font-size:.72rem;line-height:1;font-weight:700;letter-spacing:.06em;padding:.2rem .35rem;border-radius:4px;background:rgba(255,255,255,.1);min-width:2.1em;text-align:center}
.setup-language-label{font-size:.88rem;font-weight:600}
.setup-language-option:hover .setup-language-card,.setup-language-radio:focus-visible + .setup-language-card{border-color:var(--accent);background:rgba(255,255,255,.08)}
.setup-language-radio:checked + .setup-language-card{border-color:var(--primary);background:color-mix(in srgb,var(--primary) 18%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--primary) 60%,transparent)}
.auth-link{text-align:center;margin-top:1rem;font-size:.85rem;opacity:.6}
.auth-recovery-note{text-align:center;margin-top:.75rem;font-size:.75rem;opacity:.45;line-height:1.45}

/* Session conflict page */
.session-conflict-box{width:400px}
.session-conflict-icon{display:flex;align-items:center;justify-content:center;width:60px;height:60px;margin:0 auto .85rem;border-radius:50%;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1);color:var(--accent)}
.session-conflict-notice{margin:0 0 1rem;padding:.7rem .85rem;border-radius:6px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08)}
.session-conflict-notice-line{margin:0;font-size:.85rem;line-height:1.45}
.session-conflict-notice-detail{margin-top:.25rem;opacity:.7;font-size:.8rem}
.session-conflict-instructions{margin:0 0 .8rem;font-size:.82rem;text-align:center;opacity:.65}

/* Settings sections */
.settings-section{margin-bottom:1.5rem;padding:1rem;background:var(--secondary);border:1px solid rgba(255,255,255,.06);border-radius:6px}
.settings-section h3{margin-bottom:.8rem;font-weight:600;font-size:1rem}
.session-section-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1rem}
.session-section-header h3{margin:0 0 .25rem}
.session-section-copy{max-width:680px;margin:0;font-size:.82rem;line-height:1.5;opacity:.58}
.session-count{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0 .5rem;border:1px solid rgba(128,128,128,.25);border-radius:999px;font-size:.75rem;font-weight:700;opacity:.75}
.session-list{display:flex;flex-direction:column;gap:.65rem;margin:0 0 1rem}
.session-history-list{margin-bottom:0}
.session-card{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem .9rem;border:1px solid rgba(128,128,128,.22);border-radius:8px;background:rgba(255,255,255,.018)}
.session-card.is-current{border-color:color-mix(in srgb,var(--primary) 45%,transparent);background:color-mix(in srgb,var(--primary) 7%,transparent)}
.session-card.is-history{background:transparent}
.session-card-main{min-width:0}
.session-card-heading{display:flex;align-items:center;flex-wrap:wrap;gap:.4rem;line-height:1.3}
.session-card-heading strong{overflow-wrap:anywhere}
.session-badge{display:inline-flex;align-items:center;padding:.12rem .42rem;border:1px solid rgba(128,128,128,.25);border-radius:999px;font-size:.66rem;font-weight:700;line-height:1.25;opacity:.72}
.session-badge-current{border-color:rgba(74,158,95,.35);background:rgba(74,158,95,.13);color:#7cc07c;opacity:1}
.session-badge-ended{background:rgba(128,128,128,.1)}
.session-badge-expired{border-color:rgba(210,170,90,.3);background:rgba(210,170,90,.1);color:#d2aa5a;opacity:1}
.session-meta{display:flex;flex-wrap:wrap;gap:.2rem .85rem;margin-top:.38rem;font-size:.76rem;line-height:1.5;opacity:.58}
.session-meta span{overflow-wrap:anywhere}
.session-card-action,.session-footer-action,.session-section-header form{flex-shrink:0;margin:0}
.session-empty{margin:0;padding:.8rem;border:1px dashed rgba(128,128,128,.22);border-radius:8px;font-size:.82rem;opacity:.58}
.pending-indicator-dot{display:inline-block;width:.6rem;height:.6rem;margin-left:.35rem;border-radius:50%;background:#ff5f5f;vertical-align:middle}

/* Color inputs: shared between admin settings and accessibility panel */
.color-group{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem;padding:.2rem 0}
.color-group-label{flex:1;font-size:.82rem;opacity:.8}
.color-group label{flex:1;font-size:.82rem;opacity:.8}
.color-group input[type="color"]{width:36px;height:26px;border:none;background:none;cursor:pointer;border-radius:3px;padding:0}
.color-group input[type="text"]{width:90px}
/* Live color preview strip in admin theme settings */
.settings-color-preview{display:flex;gap:.3rem;margin-bottom:.8rem;padding:.5rem;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.06);border-radius:4px}
.settings-color-swatch{display:inline-block;width:28px;height:28px;border-radius:4px;border:1px solid rgba(255,255,255,.12);cursor:default;transition:transform .15s}
.settings-color-swatch:hover{transform:scale(1.15)}

/* Tabs */
.tabs{display:flex;gap:.3rem;border-bottom:1px solid rgba(255,255,255,.06);margin-bottom:1rem}
.tab{padding:.4rem .8rem;font-size:.85rem;border-bottom:2px solid transparent;cursor:pointer;color:var(--text);text-decoration:none;opacity:.6;transition:all .15s}
.tab:hover{border-bottom-color:rgba(255,255,255,.15);text-decoration:none;opacity:.8}
.tab.active{border-bottom-color:var(--primary);color:var(--text);font-weight:600;opacity:1}

/* Category action buttons */
.cat-actions{display:inline-flex;gap:.2rem;opacity:.45;transition:opacity .15s}
.nav-section-header:hover .cat-actions{opacity:1}

/* Responsive */
@media(max-width:768px){
    /* The drawer toggle keeps a moderate hit area so it remains tap-friendly,
       but we no longer inflate every button on the page to a 36-40px min-height:
       content/page-header/form buttons now match desktop sizing (~28px). */
    .sidebar{position:fixed;left:-320px;top:var(--bw-topbar-height,50px);bottom:0;z-index:50;width:min(82vw,320px)!important;min-width:min(82vw,320px)!important;max-width:min(82vw,320px);transition:left .25s ease;padding-top:0;height:calc(100vh - var(--bw-topbar-height,50px))}
    .sidebar.open{left:0}
    body.sidebar-open{overflow:hidden}
    .sidebar-overlay.active{display:block}
    .sidebar-resize-handle{display:none}
    .content-resize-handle{display:none}
    /* Allow body to scroll on mobile so pull-to-refresh (swipe down) works */
    body{height:auto;min-height:100vh;overflow-y:auto;overflow-x:hidden}
    .auth-container{min-height:calc(100vh - var(--bw-topbar-height,48px));padding:1.25rem .75rem}
    .auth-topbar .topbar-left{max-width:60vw}
    .auth-topbar .topbar-right{align-self:center;overflow:visible}
    .auth-topbar .topbar-right > .btn,.auth-topbar .topbar-right > form{flex:0 0 auto}
    .session-section-header{align-items:flex-start;flex-wrap:wrap;gap:.65rem}
    .session-card{align-items:flex-start;flex-direction:column;gap:.7rem}
    .session-card-action{width:100%}
    .session-card-action .btn{width:100%}
    .layout{overflow-x:hidden;overflow-y:visible;min-height:0}
    .content{height:auto;overflow-y:visible;overflow-x:hidden;max-width:100%}
    .editor-container{flex-direction:column}
    .editor-divider{width:100%;height:1px}
    .editor-area{min-height:250px}
    .topbar-avatar-img,.topbar-avatar-placeholder{width:32px;height:32px}
    /* Sidebar nav items: slightly more spacious than desktop for the drawer
       layout but no longer inflated with min-height. */
    .sidebar-nav .nav-item{padding:.45rem .8rem .45rem 1.1rem;font-size:.9rem}
    .sidebar-chat-links .nav-item{padding:.5rem .65rem;font-size:.9rem;line-height:1.45}
    /* Sidebar header actions wrap nicely on small screens */
    .sidebar-header{flex-wrap:wrap;row-gap:.4rem;padding:.6rem .8rem}
    .sidebar-actions{width:100%;justify-content:flex-start}
    /* Sidebar icon buttons stay icon-sized on mobile. No min-height bump. */
    .sidebar-actions .btn-icon{flex:0 0 auto;text-align:center}
    /* On mobile the collapse button lives inside .sidebar-resize-handle which
       is display:none above, so explicitly hiding it here avoids confusion. */
    .sidebar-collapse-btn{display:none}
    .topbar-right{overflow:visible;gap:.3rem;flex:0 0 auto;min-width:0;justify-content:flex-end;position:relative}
    .topbar-right .a11y-toggle,
    .topbar-right .topbar-settings-btn,
    .topbar-right .topbar-logout-form{display:none}
    .topbar-user-cluster{min-width:0;max-width:34vw}
    .topbar-user-cluster .user-info{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    .mobile-account-menu-toggle,.btn.mobile-account-menu-toggle{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;flex:0 0 34px;width:34px;height:34px;min-width:34px;padding:0;line-height:1}
    .mobile-account-menu-dot{display:block;width:4px;height:4px;border-radius:50%;background:currentColor;opacity:.82}
    .mobile-account-menu{position:fixed;top:calc(var(--bw-topbar-height,48px) + .35rem);right:.6rem;z-index:250;min-width:180px;max-width:calc(100vw - 1.2rem);padding:.3rem;background:var(--secondary);border:1px solid rgba(255,255,255,.12);border-radius:7px;box-shadow:0 10px 28px rgba(0,0,0,.45)}
    .mobile-account-menu:not([hidden]){display:block}
    .mobile-account-menu-item{display:flex;width:100%;align-items:center;padding:.55rem .65rem;border:0;border-radius:5px;background:transparent;color:var(--text);font:inherit;font-size:.9rem;text-align:left;text-decoration:none;cursor:pointer;opacity:.9}
    .mobile-account-menu-item:hover{background:rgba(255,255,255,.07);text-decoration:none;opacity:1}
    /* Make page reorder buttons always visible on touch devices since hover doesn't trigger them */
    .page-order-btns{display:inline-flex}
    .page-order-btns .btn-icon-tiny{padding:.2rem .35rem;font-size:.8rem}
    .page-header{flex-wrap:wrap;gap:.5rem}
    .page-header h1{flex:1 1 16rem;width:auto;font-size:1.65rem}
    /* Modals: stretch closer to viewport and add safe padding */
    .modal-content{width:95%;max-width:95vw;padding:1rem}
    /* Cap a11y panel width to the viewport on narrow screens */
    .a11y-panel{width:min(380px,100vw)}
    /* Tables: allow horizontal scrolling so wide tables don't overflow */
    .wiki-content table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}
    .admin-table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}
    .draft-manager-table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}
    /* Override inline max-width on inputs so forms stay within viewport */
    .input{max-width:100% !important}
    /* Date/time inputs: full width on mobile */
    input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"],input[type="week"]{min-width:0;width:100%}
    /* Form layout improvements for mobile */
    .form-group{margin-bottom:1rem}
    .form-actions{flex-direction:column;gap:.5rem}
    .form-actions .btn{width:100%;text-align:center}
    /* Truncate long sequential nav titles to prevent layout overflow;
       48% = roughly half the row width, leaving room for the gap between prev and next */
    .page-seq-prev,.page-seq-next{max-width:48%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    /* Sidebar people grid: a few more columns on narrow widths so avatars don't get tiny */
    .sidebar-people-grid{grid-template-columns:repeat(6,1fr)}
}
/* Narrow phones: hide Accessibility label text, show icon only */
@media(max-width:520px){
    /* On very narrow phones let the a11y panel fill the screen */
    .a11y-panel{width:100vw}
}
/* Tablet: reduce content padding for intermediate screen widths */
@media(min-width:769px) and (max-width:1024px){
    .content{padding:1.2rem 1.5rem}
}

/* Drop zone */
.drop-zone{border:2px dashed rgba(255,255,255,.1);border-radius:4px;padding:.6rem;text-align:center;font-size:.8rem;opacity:.5;margin-bottom:.5rem;transition:all .15s}
.drop-zone.drag-over{border-color:var(--accent);opacity:1;background:rgba(110,138,202,.05)}

/* Save indicator */
.save-indicator{font-size:.78rem;opacity:.5;margin-left:auto;padding:.2rem .5rem;border-radius:3px;transition:opacity .2s,color .2s}
.save-indicator-syncing{color:#d2aa5a;opacity:.8}
.save-indicator-saved{color:#7cc07c;opacity:.7}
.save-indicator-error{color:#c45c6a;opacity:.9}

/* Announcements bar */
.announcements-bar{border-bottom:1px solid rgba(255,255,255,.06)}
.announcement-slide{display:none;padding:0}
.ann-inner{display:flex;align-items:center;gap:.5rem;padding:.55rem .8rem;flex-wrap:nowrap}
.ann-body{flex:1;min-width:0;line-height:1.5;overflow:hidden}
.ann-body p{margin:0;display:inline}
.ann-body p+p{margin-left:.3rem}
.ann-body-truncated{max-height:2.8rem;overflow:hidden}

/* Banana mode admin banner */
.banana-mode-banner{background:linear-gradient(135deg,rgba(255,215,0,.2) 0%,rgba(255,165,0,.2) 100%);border-bottom:2px solid rgba(255,215,0,.5);padding:.6rem 1rem;text-align:center;font-size:.9rem}
.banana-mode-banner a{color:var(--primary)}
.ann-readmore{margin-left:.4rem;font-size:.82em;opacity:.85;text-decoration:underline;color:inherit;white-space:nowrap}
.ann-controls{display:flex;align-items:center;gap:.25rem;flex-shrink:0}
.ann-nav,.ann-close{background:none;border:none;color:inherit;cursor:pointer;font-size:1.1rem;opacity:.65;padding:.1rem .25rem;line-height:1;border-radius:3px}
.ann-nav:hover,.ann-close:hover{opacity:1;background:rgba(0,0,0,.15)}
.ann-counter{font-size:.75rem;opacity:.6;min-width:38px;text-align:center;white-space:nowrap}
.ann-countdown{font-size:.72rem;opacity:.7;white-space:nowrap;font-variant-numeric:tabular-nums;padding:.1rem .35rem;border-radius:3px;background:rgba(0,0,0,.1)}
/* Color variants */
.announcement-color-red{background:rgba(196,92,106,.18);color:#e88898}
.announcement-color-orange{background:rgba(210,140,50,.18);color:#d4905a}
.announcement-color-yellow{background:rgba(210,170,90,.15);color:#d2aa5a}
.announcement-color-blue{background:rgba(110,138,202,.15);color:#6e8aca}
.announcement-color-green{background:rgba(100,180,100,.15);color:#7cc07c}
/* Admin panel announcement border color variables */
:root{--ann-red-border:#e88898;--ann-orange-border:#d4905a;--ann-yellow-border:#d2aa5a;--ann-blue-border:#6e8aca;--ann-green-border:#7cc07c}
/* Text size variants */
.announcement-size-small .ann-body,.announcement-full .announcement-size-small{font-size:.78rem}
.announcement-size-normal .ann-body,.announcement-full .announcement-size-normal{font-size:.85rem}
.announcement-size-large .ann-body,.announcement-full .announcement-size-large{font-size:.95rem}
/* Full announcement page */
.announcement-full{padding:1rem;border-radius:6px;margin-bottom:1rem}
/* Mobile */
@media(max-width:600px){.ann-inner{flex-wrap:wrap;gap:.3rem}.ann-body{font-size:.82rem;width:100%}}
/* Accessibility panel */
:root{--a11y-font-scale:1;--a11y-line-height-mul:1;--a11y-letter-spacing:normal}
.wiki-content{font-size:calc(1rem * var(--a11y-font-scale))}
.wiki-content h1{font-size:calc(1.8rem * var(--a11y-font-scale))}
.wiki-content h2{font-size:calc(1.4rem * var(--a11y-font-scale))}
.wiki-content h3{font-size:calc(1.15rem * var(--a11y-font-scale))}
.wiki-content{line-height:calc(1.8 * var(--a11y-line-height-mul))}
.preview-content{font-size:calc(1rem * var(--a11y-font-scale))}
.editor-area{font-size:calc(0.88rem * var(--a11y-font-scale))}

/* Accessibility side panel */
.a11y-panel{position:fixed;top:0;right:0;bottom:0;width:min(380px,100vw);background:color-mix(in srgb,var(--secondary) 94%,var(--bg));border-left:1px solid rgba(255,255,255,.12);z-index:300;display:none;flex-direction:column;box-shadow:-18px 0 42px rgba(0,0,0,.38)}
.a11y-panel.a11y-panel-open{display:flex}
.a11y-panel-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.1rem;border-bottom:1px solid rgba(255,255,255,.1);font-size:1rem;font-weight:700;flex-shrink:0;background:rgba(255,255,255,.025)}
.a11y-panel-header .btn-icon{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.1);border-radius:7px;background:rgba(255,255,255,.04)}
.a11y-panel-body{flex:1;overflow-y:auto;padding:.9rem;display:flex;flex-direction:column;gap:.75rem;scrollbar-gutter:stable}
.a11y-panel-body::-webkit-scrollbar{width:8px}
.a11y-panel-body::-webkit-scrollbar-thumb{background:rgba(255,255,255,.16);border-radius:999px}
.a11y-section{display:flex;flex-direction:column;gap:.55rem;padding:.78rem;background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.08);border-radius:8px}
.a11y-section:last-child{position:sticky;bottom:-.9rem;margin:.15rem -.9rem -.9rem;padding:.75rem .9rem;background:color-mix(in srgb,var(--secondary) 96%,var(--bg));border-width:1px 0 0;border-radius:0}
.a11y-label{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.6px;opacity:.78}
.a11y-hint{font-size:.75rem;opacity:.68;margin:0;line-height:1.45}
.a11y-theme-btns,.a11y-font-btns,.a11y-contrast-btns,.a11y-line-btns,.a11y-spacing-btns,.a11y-semantic-btns{display:flex;gap:.25rem;flex-wrap:wrap;padding:.2rem;background:rgba(0,0,0,.14);border:1px solid rgba(255,255,255,.08);border-radius:7px}
.a11y-theme-btn,.a11y-font-btn,.a11y-contrast-btn,.a11y-line-btn,.a11y-spacing-btn,.a11y-semantic-btn{background:transparent;border:1px solid transparent;color:var(--text);cursor:pointer;padding:.42rem .55rem;border-radius:5px;font-size:.8rem;line-height:1.2;transition:background .15s,border-color .15s,color .15s;flex:1;min-width:38px;text-align:center}
.a11y-theme-btn:hover,.a11y-font-btn:hover,.a11y-contrast-btn:hover,.a11y-line-btn:hover,.a11y-spacing-btn:hover,.a11y-semantic-btn:hover{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.1)}
.a11y-theme-btn.active,.a11y-font-btn.active,.a11y-contrast-btn.active,.a11y-line-btn.active,.a11y-spacing-btn.active,.a11y-semantic-btn.active{background:var(--primary);border-color:var(--primary);color:#0d0d14;font-weight:800;box-shadow:0 1px 0 rgba(255,255,255,.18) inset}
.a11y-preset-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem}
.a11y-preset-swatch{display:flex;flex-direction:column;align-items:stretch;gap:.45rem;min-height:72px;padding:.52rem;background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.1);border-radius:8px;cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s,transform .15s;color:var(--text);overflow:hidden}
.a11y-preset-swatch:hover{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.22);transform:translateY(-1px)}
.a11y-preset-swatch.active{border-color:color-mix(in srgb,var(--primary) 88%,white);box-shadow:0 0 0 1px var(--primary),0 8px 18px rgba(0,0,0,.18)}
.a11y-preset-colors{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:0;border-radius:5px;overflow:hidden;border:1px solid rgba(255,255,255,.12);height:26px}
.a11y-preset-colors span{width:auto;height:100%;display:block}
.a11y-preset-name{font-size:.72rem;opacity:.9;font-weight:700;letter-spacing:0;line-height:1.15;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.a11y-color-row{display:grid;grid-template-columns:minmax(0,1fr) 42px 30px;align-items:center;gap:.55rem;padding:.38rem .45rem;background:rgba(0,0,0,.1);border:1px solid rgba(255,255,255,.07);border-radius:7px}
.a11y-color-label{font-size:.83rem;opacity:.86;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.a11y-color-input{width:42px;height:30px;border:1px solid rgba(255,255,255,.14);background:transparent;cursor:pointer;padding:2px;border-radius:6px}
.a11y-color-input::-webkit-color-swatch-wrapper{padding:0}
.a11y-color-input::-webkit-color-swatch{border:none;border-radius:4px}
.a11y-color-clear{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;justify-self:end;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.03)}
.a11y-bg-image-preview{height:96px;border-radius:8px;border:1px solid rgba(255,255,255,.12);background:rgba(0,0,0,.14);background-size:cover;background-position:center;overflow:hidden}
.a11y-bg-image-preview.is-empty{background-image:linear-gradient(135deg,rgba(255,255,255,.06),rgba(0,0,0,.1))}
.a11y-bg-image-actions{display:grid;grid-template-columns:1fr auto;gap:.45rem;align-items:center}
.a11y-bg-image-actions .btn{min-width:0;white-space:nowrap}
.a11y-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.52);backdrop-filter:blur(2px);z-index:299}
.a11y-overlay.active{display:block}
.a11y-toggle{font-size:.82rem;letter-spacing:.01em}
.a11y-toggle-row{flex-direction:row;align-items:center;justify-content:space-between}
.a11y-switch{position:relative;display:inline-block;width:44px;height:24px;flex-shrink:0}
.a11y-switch input{opacity:0;width:0;height:0}
.a11y-switch-slider{position:absolute;cursor:pointer;inset:0;background:rgba(0,0,0,.18);border:1px solid rgba(255,255,255,.18);border-radius:999px;transition:.2s}
.a11y-switch-slider:before{position:absolute;content:'';height:16px;width:16px;left:3px;bottom:3px;background:var(--text);opacity:.75;border-radius:50%;transition:.2s}
.a11y-switch input:checked + .a11y-switch-slider{background:var(--primary);border-color:var(--primary)}
.a11y-switch input:checked + .a11y-switch-slider:before{transform:translateX(20px);opacity:1;background:#0d0d14}
.a11y-reduce-motion,.a11y-reduce-motion *{animation:none !important;transition:none !important}
.a11y-semantic-row{display:grid;grid-template-columns:minmax(72px,1fr) 2fr;align-items:center;gap:.55rem}
.a11y-semantic-label{font-size:.82rem;opacity:.88;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.a11y-semantic-btn{font-size:.74rem;padding:.34rem .42rem;min-width:0}
.a11y-language-select{width:100%}
/* Semantic Highlighting: applied to rendered wiki content only.
   Level 1 = subtle accent; Level 2 = strong accent (color + weight change). */
.a11y-sem-bold-1 .wiki-content strong,
.a11y-sem-bold-1 .wiki-content b{color:var(--accent)}
.a11y-sem-bold-2 .wiki-content strong,
.a11y-sem-bold-2 .wiki-content b{color:var(--accent);font-weight:800;text-shadow:0 0 1px var(--accent)}
.a11y-sem-italic-1 .wiki-content em,
.a11y-sem-italic-1 .wiki-content i{color:var(--primary)}
.a11y-sem-italic-2 .wiki-content em,
.a11y-sem-italic-2 .wiki-content i{color:var(--primary);font-weight:600;text-decoration:underline;text-decoration-style:dotted;text-decoration-color:var(--primary)}
.a11y-sem-code-1 .wiki-content :not(pre)>code{border-color:var(--primary);color:var(--primary)}
.a11y-sem-code-2 .wiki-content :not(pre)>code{border-color:var(--primary);color:var(--primary);background:rgba(255,255,255,.15);box-shadow:inset 0 0 0 1px var(--primary)}
.a11y-sem-link-1 .wiki-content a{text-decoration:underline}
.a11y-sem-link-2 .wiki-content a{text-decoration:underline;text-decoration-thickness:2px;font-weight:600;color:var(--accent)}
.a11y-sem-heading-1 .wiki-content h1{color:var(--primary);opacity:1}
.a11y-sem-heading-1 .wiki-content h2{color:var(--primary);opacity:.94}
.a11y-sem-heading-1 .wiki-content h3{color:var(--primary);opacity:.88}
.a11y-sem-heading-1 .wiki-content h4{color:var(--primary);opacity:.82}
.a11y-sem-heading-1 .wiki-content h5{color:var(--primary);opacity:.76}
.a11y-sem-heading-1 .wiki-content h6{color:var(--primary);opacity:.72}
.a11y-sem-heading-2 .wiki-content h1{color:var(--primary);opacity:1;text-shadow:0 0 2px var(--primary)}
.a11y-sem-heading-2 .wiki-content h2{color:var(--primary);opacity:.96;text-shadow:0 0 2px var(--primary)}
.a11y-sem-heading-2 .wiki-content h3{color:var(--primary);opacity:.9;text-shadow:0 0 1.5px var(--primary)}
.a11y-sem-heading-2 .wiki-content h4{color:var(--primary);opacity:.84;text-shadow:0 0 1px var(--primary)}
.a11y-sem-heading-2 .wiki-content h5{color:var(--primary);opacity:.78;text-shadow:0 0 .8px var(--primary)}
.a11y-sem-heading-2 .wiki-content h6{color:var(--primary);opacity:.72;text-shadow:0 0 .6px var(--primary)}

/* Light theme polish */
html[data-theme="light"]{color-scheme:light}
html[data-theme="light"] .topbar{border-bottom-color:rgba(32,37,52,.12)}
html[data-theme="light"] .sidebar{border-right-color:rgba(32,37,52,.12)}
html[data-theme="light"] .sidebar-header,
html[data-theme="light"] .sidebar-category-controls,
html[data-theme="light"] .sidebar-search,
html[data-theme="light"] .sidebar-chat-links,
html[data-theme="light"] .sidebar-people,
html[data-theme="light"] .page-header .edit-info{border-color:rgba(32,37,52,.12)}
html[data-theme="light"] .btn-outline{border-color:rgba(32,37,52,.16)}
html[data-theme="light"] .btn-outline:hover{background:rgba(32,37,52,.05)}
html[data-theme="light"] .btn:not(.btn-outline):not(.btn-danger-outline):not(.btn-icon):not(.btn-icon-tiny):not(.flash-close):not(.cat-toggle):not(.topbar-avatar-link):not(.logo),
html[data-theme="light"] .btn-primary{color:#fff}
html[data-theme="light"] .topbar-left .logo{color:var(--text)}
html[data-theme="light"] .btn-icon:hover{background:rgba(32,37,52,.08)}
html[data-theme="light"] .skip-link:focus,
html[data-theme="light"] .sidebar-collapse-btn:hover,
html[data-theme="light"] .img-align-btn.active,
html[data-theme="light"] .video-align-btn.active,
html[data-theme="light"] .video-ratio-btn.active,
html[data-theme="light"] .editor-mobile-tabs .editor-mobile-tab[aria-selected="true"]{color:#fff}
html[data-theme="light"] .input,
html[data-theme="light"] .sidebar-search-input-wrap .input{background:rgba(32,37,52,.06);border-color:rgba(32,37,52,.22)}
html[data-theme="light"] .input:focus,
html[data-theme="light"] .sidebar-search-input-wrap .input:focus{background:rgba(32,37,52,.09)}
html[data-theme="light"] .nav-item:hover,
html[data-theme="light"] .sidebar-chat-links .nav-item:hover,
html[data-theme="light"] .user-list-item:hover{background:rgba(32,37,52,.05)}
html[data-theme="light"] .nav-item.active,
html[data-theme="light"] .sidebar-chat-links .nav-item.active{background:rgba(32,37,52,.08)}
html[data-theme="light"] .nav-section-body{border-left-color:rgba(32,37,52,.12)}
html[data-theme="light"] .nav-section:hover>.nav-section-body{border-left-color:rgba(32,37,52,.28)}
html[data-theme="light"] .wiki-content h2,
html[data-theme="light"] .preview-content h2,
html[data-theme="light"] .edit-info,
html[data-theme="light"] .users-list,
html[data-theme="light"] .user-list-item,
html[data-theme="light"] .attachments-section,
html[data-theme="light"] .editor-container,
html[data-theme="light"] .editor-pane-header,
html[data-theme="light"] .editor-divider,
html[data-theme="light"] .editor-resize-handle,
html[data-theme="light"] .a11y-panel,
html[data-theme="light"] .a11y-panel-header{border-color:rgba(32,37,52,.12)}
html[data-theme="light"] .wiki-content pre,
html[data-theme="light"] .wiki-content code,
html[data-theme="light"] .attachments-section,
html[data-theme="light"] .attachment-item,
html[data-theme="light"] .contribution-section,
html[data-theme="light"] .contribution-item,
html[data-theme="light"] .editor-container,
html[data-theme="light"] .editor-pane-header,
html[data-theme="light"] .sidebar-person,
html[data-theme="light"] .sidebar-person-more,
html[data-theme="light"] .user-list-avatar,
html[data-theme="light"] .user-profile-avatar-placeholder,
html[data-theme="light"] .a11y-theme-btn,
html[data-theme="light"] .a11y-font-btn,
html[data-theme="light"] .a11y-contrast-btn,
html[data-theme="light"] .a11y-line-btn,
html[data-theme="light"] .a11y-spacing-btn,
html[data-theme="light"] .a11y-semantic-btn,
html[data-theme="light"] .a11y-preset-swatch,
html[data-theme="light"] .a11y-switch-slider{background:rgba(32,37,52,.05);border-color:rgba(32,37,52,.12)}
html[data-theme="light"] .a11y-panel{background:color-mix(in srgb,var(--secondary) 96%,var(--bg));box-shadow:-18px 0 42px rgba(32,37,52,.16)}
html[data-theme="light"] .a11y-panel-header{background:rgba(32,37,52,.025)}
html[data-theme="light"] .a11y-panel-body::-webkit-scrollbar-thumb{background:rgba(32,37,52,.2)}
html[data-theme="light"] .a11y-section{background:rgba(32,37,52,.035);border-color:rgba(32,37,52,.1)}
html[data-theme="light"] .a11y-section:last-child{background:color-mix(in srgb,var(--secondary) 96%,var(--bg));border-color:rgba(32,37,52,.12)}
html[data-theme="light"] .a11y-theme-btns,
html[data-theme="light"] .a11y-font-btns,
html[data-theme="light"] .a11y-contrast-btns,
html[data-theme="light"] .a11y-line-btns,
html[data-theme="light"] .a11y-spacing-btns,
html[data-theme="light"] .a11y-semantic-btns,
html[data-theme="light"] .a11y-color-row{background:rgba(32,37,52,.045);border-color:rgba(32,37,52,.1)}
html[data-theme="light"] .a11y-theme-btn:hover,
html[data-theme="light"] .a11y-font-btn:hover,
html[data-theme="light"] .a11y-contrast-btn:hover,
html[data-theme="light"] .a11y-line-btn:hover,
html[data-theme="light"] .a11y-spacing-btn:hover,
html[data-theme="light"] .a11y-semantic-btn:hover,
html[data-theme="light"] .a11y-preset-swatch:hover{background:rgba(32,37,52,.08);border-color:rgba(32,37,52,.18)}
html[data-theme="light"] .a11y-theme-btn.active,
html[data-theme="light"] .a11y-font-btn.active,
html[data-theme="light"] .a11y-contrast-btn.active,
html[data-theme="light"] .a11y-line-btn.active,
html[data-theme="light"] .a11y-spacing-btn.active,
html[data-theme="light"] .a11y-semantic-btn.active{background:var(--primary);border-color:var(--primary);color:#fff}
html[data-theme="light"] .a11y-preset-colors,
html[data-theme="light"] .a11y-color-input,
html[data-theme="light"] .a11y-color-clear,
html[data-theme="light"] .a11y-bg-image-preview{border-color:rgba(32,37,52,.14)}
html[data-theme="light"] .sidebar-search-results{border-color:rgba(32,37,52,.14);box-shadow:0 4px 16px rgba(32,37,52,.14)}
/* Light theme: alias variable overrides */
html[data-theme="light"]{--border-color:rgba(32,37,52,.12)}
/* Light theme: modal */
html[data-theme="light"] .modal-content{border-color:rgba(32,37,52,.12)}
/* Light theme: kanban columns */
html[data-theme="light"] .kanban-column{border-color:rgba(32,37,52,.12)}
html[data-theme="light"] .kanban-column-header{border-bottom-color:rgba(32,37,52,.1)}
html[data-theme="light"] .kanban-column-title[contenteditable]:hover{background:rgba(32,37,52,.05)}
html[data-theme="light"] .kanban-column-title[contenteditable]:focus{background:rgba(32,37,52,.08)}
html[data-theme="light"] .kanban-column-count{background:rgba(32,37,52,.1)}
html[data-theme="light"] .kanban-column-menu-btn:hover{background:rgba(32,37,52,.08)}
html[data-theme="light"] .kanban-column-menu{border-color:rgba(32,37,52,.15);box-shadow:0 4px 12px rgba(32,37,52,.12)}
html[data-theme="light"] .kanban-column-menu button:hover{background:rgba(32,37,52,.05)}
html[data-theme="light"] .kanban-column-drag-handle:hover{background:rgba(32,37,52,.08)}
html[data-theme="light"] .kanban-column-placeholder{border-color:rgba(32,37,52,.15);background:rgba(32,37,52,.02)}
/* Light theme: kanban tickets */
html[data-theme="light"] .kanban-ticket{border-color:rgba(32,37,52,.1)}
html[data-theme="light"] .kanban-ticket:hover{border-color:rgba(32,37,52,.22)}
html[data-theme="light"] .kanban-ticket-placeholder{border-color:rgba(32,37,52,.18)}
html[data-theme="light"] .kanban-ticket-desc-display{background:rgba(32,37,52,.02);border-color:rgba(32,37,52,.08)}
 /* Light theme: kanban modal */
html[data-theme="light"] .kanban-modal{background:rgba(32,37,52,.04);border-color:rgba(32,37,52,.12);color:var(--text)}html[data-theme="light"] .kanban-modal-header{background:rgba(32,37,52,.02)}
html[data-theme="light"] #ticket-detail-title[contenteditable]:hover{background:rgba(32,37,52,.05)}
html[data-theme="light"] #ticket-detail-title[contenteditable]:focus{background:rgba(32,37,52,.08)}
html[data-theme="light"] .kanban-img-upload-btn{border-color:rgba(32,37,52,.15)}
html[data-theme="light"] .kanban-img-upload-btn:hover{border-color:rgba(32,37,52,.3)}
/* Light theme: kanban add controls */
html[data-theme="light"] .kanban-add-ticket-btn{border-color:rgba(32,37,52,.15)}
html[data-theme="light"] .kanban-add-ticket-btn:hover{border-color:rgba(32,37,52,.25)}
html[data-theme="light"] .kanban-add-column{border-color:rgba(32,37,52,.1)}
 /* Light theme: kanban/canvas list badges */
html[data-theme="light"] .kanban-badge-priority-low{background:rgba(100,120,160,.12);color:#4a5568;opacity:1}
html[data-theme="light"] .kanban-badge-priority-medium{background:rgba(179,157,2,.12);color:#746d00;opacity:1}
html[data-theme="light"] .kanban-badge-critical{background:rgba(233,30,99,.12);color:#9e1c40}
html[data-theme="light"] .kanban-badge-high{background:rgba(244,67,54,.12);color:#c62828}
html[data-theme="light"] .kanban-badge-low{background:rgba(76,175,80,.12);color:#2e7d32}
html[data-theme="light"] .kanban-badge-due{background:rgba(255,152,0,.12);color:#e65100}
html[data-theme="light"] .kanban-badge-label{background:rgba(33,150,243,.12);color:#1565c0}
html[data-theme="light"] .kanban-badge-assigned{background:rgba(110,138,202,.15);color:#3949ab}
html[data-theme="light"] .kanban-badge-attachment{background:rgba(155,89,182,.12);color:#6a1b9a}
 /* Light theme: kanban board card */
html[data-theme="light"] .kanban-board-card{background:rgba(32,37,52,.04);border:2px solid rgba(32,37,52,.12);color:var(--text)}html[data-theme="light"] .kanban-board-card-title{color:var(--text)}html[data-theme="light"] .kanban-board-card-desc{color:var(--text)}html[data-theme="light"] .kanban-board-card-meta{color:var(--text)}html[data-theme="light"] .kanban-board-card:hover{background:rgba(32,37,52,.08);border-color:var(--primary)}
/* Light theme: editor */
html[data-theme="light"] .editor-container{background:rgba(32,37,52,.02)}
html[data-theme="light"] .editor-area-legacy{background:rgba(32,37,52,.02);border-color:rgba(32,37,52,.18)}
html[data-theme="light"] .editor-toolbar{background:rgba(32,37,52,.03);border-bottom-color:rgba(32,37,52,.1)}
html[data-theme="light"] .editor-toolbar button:hover{background:rgba(32,37,52,.06);border-color:rgba(32,37,52,.1)}
/* Light theme: chat */
html[data-theme="light"] .chat-messages{background:linear-gradient(180deg,rgba(32,37,52,.03),rgba(32,37,52,.015));border-color:rgba(32,37,52,.1)}
html[data-theme="light"] .chat-input-form{background:rgba(32,37,52,.03);border-color:rgba(32,37,52,.1)}
html[data-theme="light"] .chat-status-banner{background:rgba(32,37,52,.03);border-color:rgba(32,37,52,.1)}
/* Light theme: misc panels */
html[data-theme="light"] .reservation-panel{background:rgba(32,37,52,.03);border-color:rgba(32,37,52,.1)}
html[data-theme="light"] .custom-tag-fields{background:rgba(32,37,52,.03);border-color:rgba(32,37,52,.1)}
html[data-theme="light"] .admin-table tr:hover{background:rgba(32,37,52,.03)}
html[data-theme="light"] .wiki-content th{background:rgba(32,37,52,.04)}
html[data-theme="light"] .preview-content th{background:rgba(32,37,52,.04)}
html[data-theme="light"] .settings-color-preview{background:rgba(32,37,52,.03);border-color:rgba(32,37,52,.1)}
html[data-theme="light"] .u-inset-panel{background:rgba(32,37,52,.02);border-color:rgba(32,37,52,.08)}
/* Light theme: topbar avatars */
html[data-theme="light"] .topbar-avatar-img{border-color:rgba(32,37,52,.12)}
html[data-theme="light"] .topbar-avatar-placeholder{border-color:rgba(32,37,52,.12)}
html[data-theme="light"] .topbar-page-title{border-left-color:rgba(32,37,52,.12)}
html[data-theme="light"] .topbar{box-shadow:0 1px 0 rgba(32,37,52,.06)}
/* Light theme: sidebar toggle (mobile) */
html[data-theme="light"] .sidebar-toggle,html[data-theme="light"] .btn.sidebar-toggle{background:rgba(32,37,52,.04);border-color:rgba(32,37,52,.12)}
html[data-theme="light"] .sidebar-toggle:hover,html[data-theme="light"] .btn.sidebar-toggle:hover{background:rgba(32,37,52,.06)}
html[data-theme="light"] .sidebar-search-scope-btn.active{background:rgba(32,37,52,.08)}
html[data-theme="light"] .sidebar-category-control-btn:hover{background:rgba(32,37,52,.08)}
/* Light theme: settings nav */
html[data-theme="light"] .settings-nav{border-bottom-color:rgba(32,37,52,.08)}
html[data-theme="light"] .settings-nav-btn{border-color:rgba(32,37,52,.12)}
html[data-theme="light"] .settings-nav-btn:hover{border-color:rgba(32,37,52,.2);background:rgba(32,37,52,.04)}
/* Light theme: flash close hover */
html[data-theme="light"] .flash-close:hover,html[data-theme="light"] .btn.flash-close:hover{background:rgba(32,37,52,.06)}
/* Light theme: wiki tables & preview tables */
html[data-theme="light"] .wiki-content th,html[data-theme="light"] .wiki-content td{border-color:rgba(32,37,52,.1)}
html[data-theme="light"] .preview-content th,html[data-theme="light"] .preview-content td{border-color:rgba(32,37,52,.1)}
/* Light theme: preview code blocks */
html[data-theme="light"] .preview-content pre{background:rgba(32,37,52,.04);border-color:rgba(32,37,52,.12)}
html[data-theme="light"] .preview-content code{background:rgba(32,37,52,.05);border-color:rgba(32,37,52,.1)}
/* Light theme: codehilite syntax blocks */
html[data-theme="light"] .wiki-content .codehilite,html[data-theme="light"] .preview-content .codehilite{background:rgba(32,37,52,.04);border-color:rgba(32,37,52,.12)}
html[data-theme="light"] .wiki-content .codehilite .c,html[data-theme="light"] .preview-content .codehilite .c,html[data-theme="light"] .wiki-content .codehilite .c1,html[data-theme="light"] .preview-content .codehilite .c1,html[data-theme="light"] .wiki-content .codehilite .cm,html[data-theme="light"] .preview-content .codehilite .cm,html[data-theme="light"] .wiki-content .codehilite .ch,html[data-theme="light"] .preview-content .codehilite .ch,html[data-theme="light"] .wiki-content .codehilite .cp,html[data-theme="light"] .preview-content .codehilite .cp{color:#6a737d;font-style:italic}
html[data-theme="light"] .wiki-content .codehilite .k,html[data-theme="light"] .preview-content .codehilite .k,html[data-theme="light"] .wiki-content .codehilite .kc,html[data-theme="light"] .preview-content .codehilite .kc,html[data-theme="light"] .wiki-content .codehilite .kd,html[data-theme="light"] .preview-content .codehilite .kd,html[data-theme="light"] .wiki-content .codehilite .kn,html[data-theme="light"] .preview-content .codehilite .kn,html[data-theme="light"] .wiki-content .codehilite .kp,html[data-theme="light"] .preview-content .codehilite .kp,html[data-theme="light"] .wiki-content .codehilite .kr,html[data-theme="light"] .preview-content .codehilite .kr,html[data-theme="light"] .wiki-content .codehilite .ow,html[data-theme="light"] .preview-content .codehilite .ow{color:#d73a49;font-weight:700}
html[data-theme="light"] .wiki-content .codehilite .nb,html[data-theme="light"] .preview-content .codehilite .nb,html[data-theme="light"] .wiki-content .codehilite .bp,html[data-theme="light"] .preview-content .codehilite .bp{color:#6f42c1}
html[data-theme="light"] .wiki-content .codehilite .nf,html[data-theme="light"] .preview-content .codehilite .nf,html[data-theme="light"] .wiki-content .codehilite .fm,html[data-theme="light"] .preview-content .codehilite .fm{color:#6f42c1}
html[data-theme="light"] .wiki-content .codehilite .nc,html[data-theme="light"] .preview-content .codehilite .nc,html[data-theme="light"] .wiki-content .codehilite .nn,html[data-theme="light"] .preview-content .codehilite .nn,html[data-theme="light"] .wiki-content .codehilite .nt,html[data-theme="light"] .preview-content .codehilite .nt{color:#22863a}
html[data-theme="light"] .wiki-content .codehilite .na,html[data-theme="light"] .preview-content .codehilite .na,html[data-theme="light"] .wiki-content .codehilite .nv,html[data-theme="light"] .preview-content .codehilite .nv{color:#e36209}
html[data-theme="light"] .wiki-content .codehilite .s,html[data-theme="light"] .preview-content .codehilite .s,html[data-theme="light"] .wiki-content .codehilite .s1,html[data-theme="light"] .preview-content .codehilite .s1,html[data-theme="light"] .wiki-content .codehilite .s2,html[data-theme="light"] .preview-content .codehilite .s2,html[data-theme="light"] .wiki-content .codehilite .sa,html[data-theme="light"] .preview-content .codehilite .sa,html[data-theme="light"] .wiki-content .codehilite .sb,html[data-theme="light"] .preview-content .codehilite .sb,html[data-theme="light"] .wiki-content .codehilite .sc,html[data-theme="light"] .preview-content .codehilite .sc,html[data-theme="light"] .wiki-content .codehilite .dl,html[data-theme="light"] .preview-content .codehilite .dl,html[data-theme="light"] .wiki-content .codehilite .sd,html[data-theme="light"] .preview-content .codehilite .sd{color:#032f62}
html[data-theme="light"] .wiki-content .codehilite .m,html[data-theme="light"] .preview-content .codehilite .m,html[data-theme="light"] .wiki-content .codehilite .mi,html[data-theme="light"] .preview-content .codehilite .mi,html[data-theme="light"] .wiki-content .codehilite .mf,html[data-theme="light"] .preview-content .codehilite .mf,html[data-theme="light"] .wiki-content .codehilite .mh,html[data-theme="light"] .preview-content .codehilite .mh,html[data-theme="light"] .wiki-content .codehilite .mo,html[data-theme="light"] .preview-content .codehilite .mo,html[data-theme="light"] .wiki-content .codehilite .mb,html[data-theme="light"] .preview-content .codehilite .mb{color:#005cc5}
/* Light theme: editor hint row */
html[data-theme="light"] .editor-hint-row{border-color:rgba(32,37,52,.1);background:rgba(32,37,52,.03);color:rgba(32,37,52,.6)}
html[data-theme="light"] .editor-hint-row code{background:rgba(32,37,52,.05);border-color:rgba(32,37,52,.1)}
html[data-theme="light"] .editor-toolbar .sep{background:rgba(32,37,52,.1)}
html[data-theme="light"] .editor-area:focus{background:rgba(32,37,52,.01)}
/* Light theme: draft manager table */
html[data-theme="light"] .draft-manager-table th{border-bottom-color:rgba(32,37,52,.08)}
html[data-theme="light"] .draft-manager-table td{border-bottom-color:rgba(32,37,52,.05)}
/* Light theme: admin table */
html[data-theme="light"] .admin-table th,html[data-theme="light"] .admin-table td{border-bottom-color:rgba(32,37,52,.06)}
/* Light theme: chat elements */
html[data-theme="light"] .chat-msg{border-color:rgba(32,37,52,.06)}
html[data-theme="light"] .chat-user-browse-panel{border-color:rgba(32,37,52,.12)}
html[data-theme="light"] .chat-user-browse-item{border-bottom-color:rgba(32,37,52,.05)}
html[data-theme="light"] .chat-user-browse-item:hover{background:rgba(32,37,52,.05)}
html[data-theme="light"] .chat-user-search-results{border-color:rgba(32,37,52,.12)}
html[data-theme="light"] .chat-search-result-item{border-bottom-color:rgba(32,37,52,.05)}
html[data-theme="light"] .chat-search-result-item:hover{background:rgba(32,37,52,.05)}
/* Light theme: kanban assignee */
html[data-theme="light"] .kanban-assignee-menu{border-color:rgba(32,37,52,.12)}
html[data-theme="light"] .kanban-assignee-option:hover{background:rgba(32,37,52,.05)}
html[data-theme="light"] .kanban-assignee-menu-actions{border-top-color:rgba(32,37,52,.08)}
html[data-theme="light"] .kanban-ticket-ghost{border-color:rgba(32,37,52,.1)}
html[data-theme="light"] .kanban-add-ticket{border-bottom-color:rgba(32,37,52,.04)}
/* Light theme: profile */
html[data-theme="light"] .profile-field-pill{background:rgba(32,37,52,.04);border-color:rgba(32,37,52,.08)}
html[data-theme="light"] .profile-fields-collapse{border-top-color:rgba(32,37,52,.06)}
html[data-theme="light"] .profile-fields-inline{background:rgba(32,37,52,.03);border-color:rgba(32,37,52,.06)}
/* Light theme: contribution heatmap */
html[data-theme="light"] .contribution-section{background:rgba(32,37,52,.03);border-color:rgba(32,37,52,.08)}
html[data-theme="light"] .contrib-cell:hover{outline-color:rgba(32,37,52,.4)}
html[data-theme="light"] .contrib-0{background:rgba(32,37,52,.06)}
html[data-theme="light"] .contrib-1{background:#9be9a8}
html[data-theme="light"] .contrib-2{background:#40c463}
html[data-theme="light"] .contrib-3{background:#30a14e}
html[data-theme="light"] .contrib-4{background:#216e39}
html[data-theme="light"] .contrib-day-details{background:rgba(32,37,52,.03);border-color:rgba(32,37,52,.08)}
/* Light theme: auth */
html[data-theme="light"] .auth-box{border-color:rgba(32,37,52,.1)}
html[data-theme="light"] .session-conflict-icon{background:rgba(32,37,52,.04);border-color:rgba(32,37,52,.1)}
html[data-theme="light"] .session-conflict-notice{background:rgba(32,37,52,.04);border-color:rgba(32,37,52,.08)}
/* Light theme: settings */
html[data-theme="light"] .settings-section{border-color:rgba(32,37,52,.06)}
html[data-theme="light"] .settings-color-swatch{border-color:rgba(32,37,52,.12)}
html[data-theme="light"] .color-swatch:hover{border-color:rgba(32,37,52,.4)}
html[data-theme="light"] .color-hex-picker{border-color:rgba(32,37,52,.15)}
/* Light theme: tabs */
html[data-theme="light"] .tabs{border-bottom-color:rgba(32,37,52,.08)}
html[data-theme="light"] .tab:hover{border-bottom-color:rgba(32,37,52,.12)}
/* Light theme: drop zone & announcements */
html[data-theme="light"] .drop-zone{border-color:rgba(32,37,52,.12)}
html[data-theme="light"] .announcements-bar{border-bottom-color:rgba(32,37,52,.06)}
/* Light theme: a11y panel */
html[data-theme="light"] .a11y-panel-header .btn-icon{border-color:rgba(32,37,52,.1);background:rgba(32,37,52,.04)}
html[data-theme="light"] .a11y-sem-code-2 .wiki-content :not(pre)>code{background:rgba(32,37,52,.08)}
/* Light theme: attachments */
html[data-theme="light"] .attachments-hint{color:rgba(32,37,52,.4)}
html[data-theme="light"] .attachment-meta{color:rgba(32,37,52,.4)}
/* Light theme: page navigation */
html[data-theme="light"] .page-seq-nav{border-top-color:rgba(32,37,52,.07)}
/* Light theme: favicon picker */
html[data-theme="light"] .favicon-card{border-color:rgba(32,37,52,.08)}
html[data-theme="light"] .favicon-card-badge{background:rgba(32,37,52,.06)}
html[data-theme="light"] .favicon-card-add{background:rgba(32,37,52,.02);border-color:rgba(32,37,52,.12)}
html[data-theme="light"] .favicon-current-badge{border-color:rgba(32,37,52,.1)}
/* Light theme: mobile editor tabs */
html[data-theme="light"] .editor-mobile-tabs .editor-mobile-tab{background:rgba(32,37,52,.03);border-color:rgba(32,37,52,.08)}
html[data-theme="light"] .editor-toolbar::-webkit-scrollbar-thumb{background:rgba(32,37,52,.15)}
html[data-theme="light"] #editForm .form-actions{border-top-color:rgba(32,37,52,.08)}
/* Light theme: table grid picker */
html[data-theme="light"] .table-grid-picker{border-color:rgba(32,37,52,.15)}
html[data-theme="light"] .table-grid-cell{background:rgba(32,37,52,.06)}
html[data-theme="light"] .table-grid-cell:hover{background:rgba(32,37,52,.12)}
/* Light theme: utility borders and backgrounds */
html[data-theme="light"] .xs-1101ae95{border-color:rgba(32,37,52,.08)}
html[data-theme="light"] .xs-16c0cc71{border-bottom-color:rgba(32,37,52,.06)}
html[data-theme="light"] .xs-1d50c244{border-bottom-color:rgba(32,37,52,.1)}
html[data-theme="light"] .xs-2206311c{border-top-color:rgba(32,37,52,.1)}
html[data-theme="light"] .xs-256a62f2{border-top-color:rgba(32,37,52,.06);background:rgba(32,37,52,.02)}
html[data-theme="light"] .xs-263899bc{border-bottom-color:rgba(32,37,52,.05)}
html[data-theme="light"] .xs-5f6618d2{border-bottom-color:rgba(32,37,52,.06)}
html[data-theme="light"] .xs-630b08f8{border-top-color:rgba(32,37,52,.06)}
html[data-theme="light"] .xs-7243d181{border-top-color:rgba(32,37,52,.08)}
html[data-theme="light"] .xs-23981ff9{background:rgba(32,37,52,.03)}
html[data-theme="light"] .xs-2d297739{background:rgba(32,37,52,.02)}
html[data-theme="light"] .xs-6613953a{background:rgba(32,37,52,.02);border-color:rgba(32,37,52,.05)}
html[data-theme="light"] .xs-75d6db1b{background:rgba(32,37,52,.02)}
html[data-theme="light"] .xs-a19b80a3{background:rgba(32,37,52,.03);border-color:rgba(32,37,52,.06)}
html[data-theme="light"] .xs-a1a5f824{background:rgba(32,37,52,.03)}
html[data-theme="light"] .xs-a25a4a37{background:rgba(32,37,52,.02)}
html[data-theme="light"] .xs-a7008d9d{background:rgba(32,37,52,.02)}
html[data-theme="light"] .xs-c5f61a20{background:rgba(32,37,52,.04)}
html[data-theme="light"] .xs-cfe25953{background:rgba(32,37,52,.04);border-color:rgba(32,37,52,.08)}
html[data-theme="light"] .xs-e0d3d076{background:rgba(32,37,52,.04)}
html[data-theme="light"] .xs-e6f52802{background:rgba(32,37,52,.04)}
html[data-theme="light"] .xs-5df3b33a{border-color:rgba(32,37,52,.15)}
html[data-theme="light"] .xs-a4202b87{border-color:rgba(32,37,52,.08)}
html[data-theme="light"] .xs-dfefc13a{border-color:rgba(32,37,52,.1)}
/* Light theme: canvas */
html[data-theme="light"] .canvas-context-menu{background:var(--secondary);border-color:rgba(32,37,52,.15);box-shadow:0 8px 28px rgba(32,37,52,.18)}
html[data-theme="light"] .canvas-context-menu-item{color:var(--text)}
html[data-theme="light"] .canvas-context-menu-item:hover{background:rgba(32,37,52,.06)}
html[data-theme="light"] .canvas-context-menu-sep{background:rgba(32,37,52,.1)}
/* Light theme: canvas context menu (mobile active state) */
html[data-theme="light"] .canvas-context-menu-item:active{background:rgba(32,37,52,.08)}
/* Light theme: canvas mobile bottom bar */
html[data-theme="light"] .canvas-mobile-bottombar{border-top-color:rgba(32,37,52,.12);background:var(--secondary)}
html[data-theme="light"] .canvas-mobile-bottombar .btn:active{background:rgba(32,37,52,.08)}
/* Light theme: canvas node edit tabs (mobile) */
html[data-theme="light"] .canvas-node-edit-tabs{border-bottom-color:rgba(32,37,52,.12)}
html[data-theme="light"] .canvas-node-edit-tab.active{background:rgba(32,37,52,.06)}
html[data-theme="light"] .canvas-toolbar-overflow-menu{background:var(--secondary);border-color:rgba(32,37,52,.15);box-shadow:0 8px 24px rgba(32,37,52,.18)}
html[data-theme="light"] .canvas-toolbar-overflow-menu .btn{color:var(--text)}
html[data-theme="light"] .canvas-toolbar-overflow-menu .btn:hover{background:rgba(32,37,52,.06)}
html[data-theme="light"] .canvas-toolbar-overflow-menu .canvas-toolbar-sep-line{background:rgba(32,37,52,.1)}
html[data-theme="light"] .canvas-header-overflow-menu{background:var(--secondary);border-color:rgba(32,37,52,.15);box-shadow:0 8px 24px rgba(32,37,52,.18)}
html[data-theme="light"] .canvas-header-overflow-menu .btn{color:var(--text)}
html[data-theme="light"] .canvas-header-overflow-menu .btn:hover{background:rgba(32,37,52,.06)}
html[data-theme="light"] .canvas-header-overflow-menu .canvas-toolbar-sep-line{background:rgba(32,37,52,.1)}
html[data-theme="light"] .canvas-node-header{border-bottom-color:rgba(32,37,52,.12)}
html[data-theme="light"] .canvas-container.canvas-drop-over{background:rgba(32,37,52,.02)}
html[data-theme="light"] .canvas-wiki-result-item{background:rgba(32,37,52,.04);border-bottom-color:rgba(32,37,52,.06);color:var(--text)}
/* Light theme: modal overlay & confirm */
html[data-theme="light"] .modal{background:rgba(0,0,0,.45)}
html[data-theme="light"] #bw-confirm-modal .modal-content{background:var(--secondary);border-color:rgba(32,37,52,.12)}
/* Light theme: mobile account menu */
html[data-theme="light"] .mobile-account-menu{border-color:rgba(32,37,52,.14);box-shadow:0 10px 28px rgba(32,37,52,.18)}
html[data-theme="light"] .mobile-account-menu-item:hover{background:rgba(32,37,52,.06)}
/* Light theme: sidebar toggle (mobile) refined */
html[data-theme="light"] .sidebar-toggle[aria-expanded="true"],html[data-theme="light"] .btn.sidebar-toggle[aria-expanded="true"]{color:var(--primary);border-color:rgba(75,99,182,.3);background:rgba(75,99,182,.08)}
/* Light theme: img/video align active buttons text */
html[data-theme="light"] .img-align-btn.active,html[data-theme="light"] .video-align-btn.active,html[data-theme="light"] .video-ratio-btn.active{color:#fff}
/* Light theme: pending deletion / deindexed badges */
html[data-theme="light"] .pending-deletion-badge{color:#c62828;background:rgba(217,83,79,.1)}
html[data-theme="light"] .deindexed-badge{color:#616161;background:rgba(150,150,150,.1)}
/* Light theme: difficulty tags */
html[data-theme="light"] .difficulty-tag-beginner{background:rgba(110,138,202,.1);color:#3949ab}
html[data-theme="light"] .difficulty-tag-easy{background:rgba(100,180,100,.1);color:#2e7d32}
html[data-theme="light"] .difficulty-tag-intermediate{background:rgba(210,170,90,.1);color:#e65100}
html[data-theme="light"] .difficulty-tag-expert{background:rgba(196,92,106,.1);color:#c62828}
html[data-theme="light"] .difficulty-tag-extra{background:rgba(150,100,200,.1);color:#6a1b9a}
/* Light theme: revert badge */
html[data-theme="light"] .revert-badge{background:rgba(210,170,90,.1);color:#e65100}
/* Light theme: info callout */
html[data-theme="light"] .info-callout{background:rgba(110,138,202,.08);border-color:rgba(110,138,202,.18)}
/* Light theme: editing indicator */
html[data-theme="light"] .editing-indicator{background:rgba(210,170,90,.08);border-color:rgba(210,170,90,.18)}
/* Light theme: draft notice */
html[data-theme="light"] .draft-notice{background:rgba(210,170,90,.06);border-color:rgba(210,170,90,.18)}
html[data-theme="light"] .draft-notice-warning{background:rgba(196,92,106,.06);border-color:rgba(196,92,106,.18)}
/* Light theme: flash messages */
html[data-theme="light"] .flash-success{background:rgba(76,175,80,.08);border-color:rgba(76,175,80,.2);color:#2e7d32}
html[data-theme="light"] .flash-error{background:rgba(244,67,54,.08);border-color:rgba(244,67,54,.2);color:#c62828}
html[data-theme="light"] .flash-warning{background:rgba(255,152,0,.08);border-color:rgba(255,152,0,.2);color:#e65100}
html[data-theme="light"] .flash-info{background:rgba(33,150,243,.08);border-color:rgba(33,150,243,.2);color:#1565c0}
/* Light theme: pending deletion banner */
html[data-theme="light"] .pending-deletion-banner{background:rgba(217,83,79,.06);border-color:rgba(217,83,79,.2)}
/* Light theme: banana mode banner */
html[data-theme="light"] .banana-mode-banner{background:linear-gradient(135deg,rgba(255,215,0,.1) 0%,rgba(255,165,0,.1) 100%);border-bottom-color:rgba(255,215,0,.35)}
html[data-theme="light"] .public-notice{background:rgba(32,37,52,.04);border-bottom-color:rgba(32,37,52,.1)}
html[data-theme="light"] .hosting-expiry-banner{background:rgba(231,76,60,.06);border-bottom-color:rgba(231,76,60,.15)}
/* Light theme: birthday banner */
html[data-theme="light"] .birthday-mode-banner{background:rgba(32,37,52,.04);border-bottom-color:rgba(32,37,52,.1)}
html[data-theme="light"] .birthday-dismiss-btn:hover{background:rgba(32,37,52,.08)}
/* Light theme: editor statusbar */
html[data-theme="light"] .editor-statusbar{background:rgba(32,37,52,.02);border-top-color:rgba(32,37,52,.08);color:rgba(32,37,52,.5)}
html[data-theme="light"] .editor-statusbar-sep{background:rgba(32,37,52,.12)}
/* Light theme: command menu */
html[data-theme="light"] .cmd-menu{border-color:rgba(32,37,52,.14);box-shadow:0 6px 24px rgba(32,37,52,.18)}
html[data-theme="light"] .cmd-menu-item:hover,html[data-theme="light"] .cmd-menu-item.highlighted{background:rgba(32,37,52,.06)}
html[data-theme="light"] .cmd-menu-icon{background:rgba(32,37,52,.06)}
/* Light theme: table grid picker */
html[data-theme="light"] .table-grid-picker{border-color:rgba(32,37,52,.14);box-shadow:0 4px 16px rgba(32,37,52,.18)}
html[data-theme="light"] .table-grid-cell{background:rgba(32,37,52,.08)}
html[data-theme="light"] .table-grid-cell:hover{background:rgba(32,37,52,.15)}
/* Light theme: chat user browse panel */
html[data-theme="light"] .chat-user-browse-panel{border-color:rgba(32,37,52,.12);background:var(--secondary,#fff)}
html[data-theme="light"] .chat-user-browse-item{border-bottom-color:rgba(32,37,52,.06)}
html[data-theme="light"] .chat-user-browse-item:hover{background:rgba(32,37,52,.05)}
/* Light theme: chat search results */
html[data-theme="light"] .chat-search-result-item{border-bottom-color:rgba(32,37,52,.06)}
html[data-theme="light"] .chat-search-result-item:hover{background:rgba(32,37,52,.05)}
/* Light theme: profile fields inline */
html[data-theme="light"] .profile-fields-inline{background:rgba(32,37,52,.03);border-color:rgba(32,37,52,.08)}
/* Light theme: leaderboard hover */
html[data-theme="light"] .leaderboard-table tbody tr:hover{background:rgba(32,37,52,.04)}
/* Light theme: kanban */
html[data-theme="light"] .kanban-column-drag-handle:hover{background:rgba(32,37,52,.08)}
html[data-theme="light"] .kanban-modal-overlay{background:rgba(0,0,0,.4)}
html[data-theme="light"] .kanban-modal{background:var(--secondary,#fff);border-color:rgba(32,37,52,.15);color:var(--text)}
html[data-theme="light"] .kanban-modal-close{color:var(--text)}
html[data-theme="light"] .kanban-modal-header{border-bottom-color:rgba(32,37,52,.08)}
html[data-theme="light"] #ticket-detail-title[contenteditable]:hover{background:rgba(32,37,52,.05)}
html[data-theme="light"] #ticket-detail-title[contenteditable]:focus{background:rgba(32,37,52,.08)}
html[data-theme="light"] .kanban-ticket-desc-display{background:rgba(32,37,52,.02);border-color:rgba(32,37,52,.08)}
html[data-theme="light"] .kanban-img-upload-btn{border-color:rgba(32,37,52,.15)}
html[data-theme="light"] .kanban-img-upload-btn:hover{border-color:rgba(32,37,52,.3)}
html[data-theme="light"] .kanban-assignee-menu{border-color:rgba(32,37,52,.12);box-shadow:0 4px 16px rgba(32,37,52,.15)}
html[data-theme="light"] .kanban-assignee-option:hover{background:rgba(32,37,52,.06)}
html[data-theme="light"] .kanban-assignee-menu-actions{border-top-color:rgba(32,37,52,.08)}
html[data-theme="light"] .kanban-board-card{border-color:rgba(32,37,52,.12)}
html[data-theme="light"] .kanban-board-card:hover{border-color:var(--primary)}
html[data-theme="light"] .kanban-column-menu{border-color:rgba(32,37,52,.14);box-shadow:0 4px 12px rgba(32,37,52,.15)}
html[data-theme="light"] .kanban-column-menu button:hover{background:rgba(32,37,52,.06)}
html[data-theme="light"] .kanban-column{border-color:rgba(32,37,52,.1)}
html[data-theme="light"] .kanban-column-header{border-bottom-color:rgba(32,37,52,.08)}
html[data-theme="light"] .kanban-column-title[contenteditable]:hover{background:rgba(32,37,52,.05)}
html[data-theme="light"] .kanban-column-title[contenteditable]:focus{background:rgba(32,37,52,.08)}
html[data-theme="light"] .kanban-column-count{background:rgba(32,37,52,.1)}
html[data-theme="light"] .kanban-column-menu-btn:hover{background:rgba(32,37,52,.08)}
html[data-theme="light"] .kanban-ticket{border-color:rgba(32,37,52,.1)}
html[data-theme="light"] .kanban-ticket:hover{border-color:rgba(32,37,52,.22)}
html[data-theme="light"] .kanban-ticket-placeholder{border-color:rgba(32,37,52,.15)}
html[data-theme="light"] .kanban-ticket-ghost{border-color:rgba(32,37,52,.1)}
html[data-theme="light"] .kanban-add-ticket{border-bottom-color:rgba(32,37,52,.05)}
html[data-theme="light"] .kanban-add-ticket-btn{border-color:rgba(32,37,52,.15)}
html[data-theme="light"] .kanban-add-ticket-btn:hover{border-color:rgba(32,37,52,.25);background:rgba(32,37,52,.04)}
html[data-theme="light"] .kanban-add-column{border-color:rgba(32,37,52,.1)}
/* Light theme: canvas share / table-mini */
html[data-theme="light"] .canvas-share-section h3{color:var(--text)}
html[data-theme="light"] .table-mini th,html[data-theme="light"] .table-mini td{border-bottom-color:rgba(32,37,52,.08)}
/* Light theme: canvas node body code blocks */
html[data-theme="light"] .canvas-node-body pre{background:rgba(32,37,52,.05)}
html[data-theme="light"] .canvas-node-body .codehilite{background:rgba(32,37,52,.04);border-color:rgba(32,37,52,.1)}
html[data-theme="light"] .canvas-node-wiki-preview{border-top-color:rgba(32,37,52,.12)}
html[data-theme="light"] .canvas-wiki-result-item{border-bottom-color:rgba(32,37,52,.06)}
html[data-theme="light"] .canvas-wiki-result-item:hover{background:rgba(32,37,52,.06);color:var(--text)}
html[data-theme="light"] .canvas-wiki-no-result:hover{background:var(--secondary);color:var(--text)}
/* Light theme: canvas overflow menu */
html[data-theme="light"] .canvas-toolbar-overflow-menu{border-color:rgba(32,37,52,.15);box-shadow:0 8px 24px rgba(32,37,52,.18)}
html[data-theme="light"] .canvas-toolbar-overflow-menu .btn{color:var(--text)}
html[data-theme="light"] .canvas-toolbar-overflow-menu .btn:hover{background:rgba(32,37,52,.06)}
html[data-theme="light"] .canvas-toolbar-overflow-menu .canvas-toolbar-sep-line{background:rgba(32,37,52,.1)}
/* Light theme: toast */
html[data-theme="light"] .kanban-toast{box-shadow:0 2px 8px rgba(32,37,52,.1)}
/* Light theme: editor divider */
html[data-theme="light"] .editor-divider{background:rgba(32,37,52,.1)}
/* Light theme: sidebar chat links */
html[data-theme="light"] .sidebar-chat-links{border-top-color:rgba(32,37,52,.08)}
html[data-theme="light"] .sidebar-chat-links .nav-item:hover{background:rgba(32,37,52,.06)}
html[data-theme="light"] .sidebar-chat-links .nav-item.active{background:rgba(32,37,52,.08)}
/* Light theme: sidebar people */
html[data-theme="light"] .sidebar-people{border-top-color:rgba(32,37,52,.08)}
html[data-theme="light"] .sidebar-person{background:rgba(32,37,52,.08)}
html[data-theme="light"] .sidebar-person-more{background:rgba(32,37,52,.1)}
/* Light theme: users list */
html[data-theme="light"] .users-list{border-color:rgba(32,37,52,.1)}
html[data-theme="light"] .user-list-item{border-bottom-color:rgba(32,37,52,.06)}
html[data-theme="light"] .user-list-item:hover{background:rgba(32,37,52,.04)}
/* Light theme: user profile */
html[data-theme="light"] .user-profile-avatar-placeholder{background:rgba(32,37,52,.06);border-color:rgba(32,37,52,.1)}
html[data-theme="light"] .profile-field-pill{background:rgba(32,37,52,.04);border-color:rgba(32,37,52,.08)}
html[data-theme="light"] .profile-fields-collapse{border-top-color:rgba(32,37,52,.08)}
/* Light theme: contribution heatmap */
html[data-theme="light"] .contrib-cell:hover{outline-color:rgba(32,37,52,.3)}
html[data-theme="light"] .contrib-0{background:rgba(32,37,52,.06)}
html[data-theme="light"] .contrib-day-details{background:rgba(32,37,52,.03);border-color:rgba(32,37,52,.08)}
html[data-theme="light"] .contribution-item{background:rgba(32,37,52,.03)}
/* Light theme: chat interface */
html[data-theme="light"] .chat-status-banner{background:rgba(32,37,52,.03);border-color:rgba(32,37,52,.08)}
html[data-theme="light"] .chat-messages{background:rgba(32,37,52,.02);border-color:rgba(32,37,52,.08)}
html[data-theme="light"] .chat-msg{background:rgba(32,37,52,.04);border-color:rgba(32,37,52,.06)}
html[data-theme="light"] .chat-input-form{background:rgba(32,37,52,.03);border-color:rgba(32,37,52,.06)}
/* Light theme: reservation panel */
html[data-theme="light"] .reservation-panel{background:rgba(32,37,52,.03);border-color:rgba(32,37,52,.08)}
/* Light theme: inset panel */
html[data-theme="light"] .u-inset-panel{background:rgba(32,37,52,.02);border-color:rgba(32,37,52,.06)}
/* Light theme: kanban column placeholder */
html[data-theme="light"] .kanban-column-placeholder{border-color:rgba(32,37,52,.15);background:rgba(32,37,52,.02)}

/* High contrast modes: filter applied to content containers (not body) to
   prevent GPU compositing failures on Mac/Linux in Firefox and Chrome that
   would render the entire page black. */
.a11y-contrast-1 .topbar,.a11y-contrast-1 .announcements-bar,.a11y-contrast-1 .layout{filter:contrast(1.15)}
.a11y-contrast-2 .topbar,.a11y-contrast-2 .announcements-bar,.a11y-contrast-2 .layout{filter:contrast(1.35)}
.a11y-contrast-3 .wiki-content,.a11y-contrast-3 .preview-content{color:#fff}
.a11y-contrast-3 .topbar,.a11y-contrast-3 .announcements-bar,.a11y-contrast-3 .layout{filter:contrast(1.6)}
.a11y-contrast-4{--bg:#000;--text:#fff;--primary:#ff0;--accent:#ff0;--secondary:#0a0a0a;--sidebar:#050505}
.a11y-contrast-5{--bg:#000;--text:#fff;--primary:#ff0;--accent:#ff0;--secondary:#000;--sidebar:#000}

/* Editor pane resize handle */
.editor-divider{width:5px;background:rgba(255,255,255,.06);cursor:col-resize;flex-shrink:0;transition:background .15s;position:relative;z-index:5;touch-action:none}
.editor-divider:hover,.editor-divider.resizing{background:var(--primary);opacity:.7}
@media(hover:none){.editor-divider{opacity:.5}}

/* Attachments section */
.attachments-section{margin-top:1.5rem;padding:1rem;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);border-radius:6px}
.attachments-header{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin-bottom:.5rem}
.attachments-title{font-weight:600;font-size:.9rem;color:var(--text)}
.attachments-hint{font-size:.78rem;color:rgba(255,255,255,.4);margin:.25rem 0 .75rem}
.attachments-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}
.attachment-item{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;padding:.4rem .5rem;background:rgba(255,255,255,.03);border-radius:4px}
.attachment-name{flex:1;font-size:.85rem;word-break:break-all}
.attachment-meta{font-size:.78rem;color:rgba(255,255,255,.4);white-space:nowrap}

/* Chat sidebar links (above People) */
.sidebar-chat-links{padding:.5rem .6rem;border-top:1px solid rgba(255,255,255,.06)}
.sidebar-chat-links .nav-item{display:block;padding:.4rem .5rem;border-radius:4px;text-decoration:none;color:var(--text);font-size:.88rem;line-height:1.45;opacity:.85;transition:background .15s,opacity .15s}
.sidebar-chat-links .nav-item:hover{background:rgba(255,255,255,.06);opacity:1}
.sidebar-chat-links .nav-item.active{background:rgba(255,255,255,.08);opacity:1;font-weight:600}

/* People sidebar widget */
.sidebar-people{padding:.8rem .6rem .6rem;border-top:1px solid rgba(255,255,255,.06)}
.sidebar-people-header{display:flex;justify-content:space-between;align-items:center;font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.6px;opacity:.5;margin-bottom:.55rem}
.sidebar-people-more{opacity:.7;text-decoration:none;font-size:.78rem;color:var(--accent)}
.sidebar-people-more:hover{opacity:1}
.sidebar-people-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:4px}
.sidebar-person{display:flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;overflow:hidden;background:rgba(255,255,255,.08);text-decoration:none;transition:opacity .15s}
.sidebar-person:hover{opacity:.8}
.sidebar-person-img{width:100%;height:100%;object-fit:cover;border-radius:50%}
.sidebar-person-placeholder{font-size:.9rem;font-weight:700;color:var(--text);opacity:.7;line-height:1;user-select:none}
.sidebar-person-more{background:rgba(255,255,255,.12);font-size:1rem;color:var(--text);font-weight:700;opacity:.7}
.sidebar-person-more:hover{opacity:1}

/* Birthday celebration mode */
.birthday-mode-banner{display:flex;align-items:center;justify-content:center;gap:.6rem;padding:.55rem 1rem;background:linear-gradient(90deg,rgba(253,198,55,.18),rgba(46,204,113,.16),rgba(52,152,219,.16));border-bottom:1px solid rgba(255,255,255,.1);color:var(--text);font-size:.9rem;font-weight:700;text-align:center;position:relative}
.birthday-mode-spark{color:#fdc637;animation:bw-birthday-twinkle 1.6s ease-in-out infinite}
@keyframes bw-birthday-twinkle{0%,100%{opacity:.45;transform:scale(.9) rotate(0deg)}50%{opacity:1;transform:scale(1.12) rotate(18deg)}}
.birthday-dismiss-btn{position:absolute;right:.75rem;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--text);font-size:1.2rem;cursor:pointer;opacity:.5;line-height:1;padding:0 .2rem;border-radius:4px}
.birthday-dismiss-btn:hover{opacity:1;background:rgba(255,255,255,.1)}

/* Users list page */
.users-list-page{max-width:760px;margin:0 auto}
.users-list-page h1{margin-bottom:1rem}
.users-search-row{margin-bottom:1.5rem}
.users-search-form{display:flex}
.users-search-input{max-width:420px;padding:.55rem .9rem;font-size:.95rem}
.users-list{display:flex;flex-direction:column;border:1px solid rgba(255,255,255,.08);border-radius:8px;overflow:hidden}
.user-list-item{display:flex;align-items:center;gap:.9rem;padding:.7rem 1rem;border-bottom:1px solid rgba(255,255,255,.06);text-decoration:none;color:var(--text);transition:background .12s}
.user-list-item:last-child{border-bottom:none}
.user-list-item:hover{background:rgba(255,255,255,.05)}
.user-list-avatar{flex-shrink:0;width:52px;height:52px;border-radius:50%;overflow:hidden;background:rgba(255,255,255,.08);display:flex;align-items:center;justify-content:center}
.avatar-img{width:100%;height:100%;object-fit:cover;border-radius:50%}
.avatar-placeholder{font-size:1.2rem;font-weight:700;color:var(--text);opacity:.7;user-select:none}
.user-list-info{display:flex;flex-direction:column;gap:.15rem}
.user-list-name{font-weight:600;color:var(--accent);font-size:1rem}
.user-list-username{font-size:.82rem;opacity:.6}
.users-empty{opacity:.6;margin-top:1rem}

/* User profile page */
.user-profile-page{max-width:860px;margin:0 auto}
.user-profile-birthday{position:relative}
.user-profile-birthday::before{content:"";position:absolute;inset:-18px -16px auto -16px;height:180px;pointer-events:none;background:radial-gradient(circle at 12% 30%,rgba(253,198,55,.2) 0 3px,transparent 4px),radial-gradient(circle at 42% 14%,rgba(46,204,113,.18) 0 3px,transparent 4px),radial-gradient(circle at 72% 26%,rgba(52,152,219,.18) 0 3px,transparent 4px),radial-gradient(circle at 88% 8%,rgba(231,76,60,.18) 0 3px,transparent 4px);opacity:.9}
.profile-birthday-card{display:flex;align-items:center;gap:.75rem;margin:0 0 1rem;padding:.85rem 1rem;border:1px solid rgba(253,198,55,.28);border-radius:8px;background:rgba(253,198,55,.1);box-shadow:0 12px 32px rgba(0,0,0,.12)}
.profile-birthday-card strong{display:block;font-size:1rem}
.profile-birthday-card span:not(.profile-birthday-icon){display:block;font-size:.85rem;opacity:.75;margin-top:.1rem}
.profile-birthday-icon{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;background:rgba(253,198,55,.18);color:#fdc637;font-size:1.2rem;flex-shrink:0}
.user-profile-header{display:flex;align-items:flex-start;gap:1.4rem;margin-bottom:2rem;flex-wrap:wrap}
.user-profile-avatar-wrap{flex-shrink:0}
.user-profile-avatar{width:96px;height:96px;border-radius:50%;object-fit:cover;border:3px solid var(--primary)}
.user-profile-avatar-placeholder{display:flex;align-items:center;justify-content:center;width:96px;height:96px;border-radius:50%;background:rgba(255,255,255,.08);font-size:2.2rem;font-weight:700;color:var(--text);border:3px solid rgba(255,255,255,.12)}
.user-profile-meta{flex:1}
.user-profile-username{font-size:1.6rem;margin:0 0 .2rem}
.user-profile-realname{opacity:.7;margin:.15rem 0;font-size:.95rem}
.user-profile-bio{margin:.4rem 0;font-size:.92rem;opacity:.85;line-height:1.55}
.user-profile-badges{display:flex;gap:.4rem;flex-wrap:wrap;margin:.5rem 0}
.user-profile-actions{display:flex;gap:.6rem;flex-wrap:wrap;margin-top:.7rem}
.user-profile-fields{display:flex;flex-wrap:wrap;gap:.35rem;margin:.3rem 0}
.profile-field-pill{display:inline-flex;align-items:center;gap:.25rem;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.07);border-radius:5px;padding:.1rem .55rem;font-size:.82rem;line-height:1.6}
.profile-field-pill-label{opacity:.5;font-weight:500;flex-shrink:0}
.profile-field-pill-label::after{content:"";margin-right:.05rem}
.profile-field-pill-value{color:var(--accent)}
.profile-fields-collapse{margin-top:.75rem;border-top:1px solid rgba(255,255,255,.06);padding-top:.6rem}
.profile-fields-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;gap:.4rem;background:none;border:none;color:var(--text);cursor:pointer;padding:.35rem 0;font-size:.85rem;font-weight:500;opacity:.65;transition:opacity .15s}
.profile-fields-toggle:hover{opacity:1}
.profile-fields-arrow{font-size:.65rem;transition:transform .2s;display:inline-block}
.profile-fields-arrow.is-open{transform:rotate(90deg)}
.profile-fields-edit{padding-top:.5rem}
.profile-field-edit-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem;flex-wrap:wrap}
.profile-field-edit-row .input-sm{flex:1;min-width:140px}
.profile-field-edit-check{display:flex;align-items:center;gap:.3rem;white-space:nowrap;flex-shrink:0;font-size:.82rem;cursor:pointer}
.profile-field-edit-check input[type="checkbox"]{margin:0}

/* Contribution heatmap */
.contribution-section{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:1.2rem 1.4rem;margin-bottom:1.5rem;overflow-x:auto}
.contribution-title{font-size:1rem;font-weight:500;margin:0 0 1rem;opacity:.85}
.contribution-header{display:flex;justify-content:space-between;align-items:center;gap:.8rem;flex-wrap:wrap}
.contrib-year-form{display:flex;align-items:center;gap:.5rem;font-size:.82rem}
.contrib-wrapper{display:flex;flex-direction:column;gap:4px}
.contrib-month-row{display:flex;gap:3px;padding-left:28px;margin-bottom:2px}
.contrib-month-label{width:13px;font-size:.68rem;opacity:.5;text-align:left;flex-shrink:0;line-height:1}
.contrib-grid{display:flex;gap:0}
.contrib-day-labels{display:flex;flex-direction:column;gap:3px;padding-top:2px;margin-right:4px;width:24px;flex-shrink:0}
.contrib-day-labels span{height:13px;line-height:13px;font-size:.68rem;opacity:.5;text-align:right}
.contrib-cols{display:flex;gap:3px}
.contrib-col{display:flex;flex-direction:column;gap:3px}
.contrib-cell{width:13px;height:13px;border-radius:2px;display:inline-block;padding:0;border:none;cursor:pointer}
.contrib-cell:disabled{cursor:default}
.contrib-cell:hover{outline:1px solid rgba(255,255,255,.45);outline-offset:1px}
.contrib-cell:focus-visible{outline:1px solid var(--accent);outline-offset:1px;box-shadow:0 0 0 2px rgba(0,0,0,.35)}
.contrib-cell.is-active{outline:1px solid var(--accent);outline-offset:1px}
.contrib-0{background:rgba(255,255,255,.07)}
.contrib-1{background:#0e4429}
.contrib-2{background:#006d32}
.contrib-3{background:#26a641}
.contrib-4{background:#39d353}
.contrib-future{background:transparent}
.contrib-outside{background:transparent;cursor:default}
.contribution-legend{display:flex;align-items:center;gap:4px;justify-content:flex-end;margin-top:.8rem;font-size:.75rem;opacity:.6}
.contrib-legend-label{margin:0 2px}
.contrib-day-details{margin-top:.8rem;padding:.8rem;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);border-radius:6px}
.contrib-day-details-head{font-size:.85rem;margin-bottom:.4rem;opacity:.9}
.contrib-day-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.25rem}
.contrib-day-item{font-size:.82rem;line-height:1.4}
.contrib-day-time{opacity:.6;margin-right:.25rem}

/* Contribution list */
.contribution-list-section{margin-bottom:2rem}
.contribution-list-section h2{font-size:1rem;margin-bottom:.7rem}
.contribution-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.35rem}
.contribution-item{display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap;font-size:.85rem;padding:.3rem .5rem;background:rgba(255,255,255,.025);border-radius:4px}
.contribution-date{opacity:.5;white-space:nowrap;font-size:.78rem}
.contribution-page{color:var(--accent);text-decoration:none}
.contribution-page:hover{text-decoration:underline}

/* Leaderboard */
.leaderboard-page{max-width:1180px;margin:0 auto}
.leaderboard-page .page-header{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:1rem;margin-bottom:1rem}
.leaderboard-header h1{margin-bottom:.2rem}
.leaderboard-header-meta{margin:0;color:var(--muted);font-size:.9rem}
.leaderboard-toolbar{display:flex;flex-direction:column;gap:.6rem;align-items:flex-end}
.leaderboard-sort-toggle{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.leaderboard-sort-toggle .btn{min-height:34px}
.leaderboard-sort-toggle .btn-active{background:var(--accent);color:var(--btn-text,#fff);border-color:var(--accent)}
.leaderboard-actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.leaderboard-range-toggle{display:flex;gap:4px}
.leaderboard-range-toggle .btn-xs{min-height:28px;font-size:.72rem;padding:2px 8px}
.leaderboard-range-toggle .btn-active{background:var(--accent);color:var(--btn-text,#fff);border-color:var(--accent)}
.leaderboard-export-btn{white-space:nowrap}
.leaderboard-search-bar{margin-bottom:1rem}
.leaderboard-search-bar .form-input{width:100%;max-width:360px;padding:.45rem .7rem;border:1px solid rgba(255,255,255,.12);border-radius:6px;background:rgba(255,255,255,.04);color:inherit;font-size:.88rem}
.leaderboard-search-bar .form-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 25%,transparent)}
.leaderboard-streak{color:#f3c74d;font-weight:600}
.leaderboard-summary{display:grid;grid-template-columns:repeat(5,minmax(128px,1fr));gap:.65rem;margin:1rem 0 1.3rem}
.leaderboard-stat{min-height:76px;padding:.8rem .9rem;border:1px solid rgba(255,255,255,.08);border-radius:8px;background:color-mix(in srgb,var(--secondary) 86%,var(--bg) 14%);display:flex;flex-direction:column;justify-content:space-between}
.leaderboard-stat span{color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:0}
.leaderboard-stat strong{font-size:1.35rem;line-height:1.1;font-variant-numeric:tabular-nums}
.leaderboard-podium-section{margin:0 0 1.25rem}
.leaderboard-podium-section h2{font-size:1.05rem;margin:0 0:.7rem}
.leaderboard-podium{display:grid;grid-template-columns:.92fr 1.08fr .92fr;align-items:end;gap:.75rem}
.leaderboard-podium-card{position:relative;min-height:162px;padding:1rem;border:1px solid rgba(255,255,255,.1);border-radius:8px;background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.018));display:flex;flex-direction:column;justify-content:flex-end;gap:.35rem;overflow:hidden}
.leaderboard-podium-card::before{content:"";position:absolute;inset:0 0 auto;height:5px;background:var(--podium-color,#8aa0ff)}
.leaderboard-podium-first{min-height:196px;--podium-color:#f3c74d}
.leaderboard-podium-second{--podium-color:#b7c1d1}
.leaderboard-podium-third{--podium-color:#c98755}
.leaderboard-podium-empty{visibility:hidden}
.leaderboard-podium-rank{position:absolute;top:.75rem;right:.85rem;color:var(--podium-color,#8aa0ff);font-size:1.4rem;font-weight:800;font-variant-numeric:tabular-nums}
.leaderboard-podium-name{font-size:1rem;font-weight:700;min-width:0;overflow-wrap:anywhere}
.leaderboard-podium-value{font-size:1.85rem;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}
.leaderboard-podium-label{color:var(--muted);font-size:.76rem;text-transform:uppercase;letter-spacing:0}
.leaderboard-podium-base{display:flex;gap:.45rem;flex-wrap:wrap;color:var(--muted);font-size:.8rem}
.leaderboard-you{display:flex;align-items:center;gap:.65rem;flex-wrap:wrap;margin:0 0 1rem;padding:.7rem .85rem;border:1px solid color-mix(in srgb,var(--accent) 34%,transparent);border-radius:8px;background:color-mix(in srgb,var(--accent) 12%,transparent);font-variant-numeric:tabular-nums}
.leaderboard-you strong{font-size:1.15rem}
.leaderboard-table-wrap{overflow-x:auto;border:1px solid rgba(255,255,255,.08);border-radius:8px}
.leaderboard-table{width:100%;min-width:1060px;border-collapse:collapse}
.leaderboard-table th,.leaderboard-table td{padding:.62rem .75rem;text-align:left;border-bottom:1px solid rgba(255,255,255,.06);vertical-align:middle}
.leaderboard-table thead th{background:rgba(255,255,255,.035);font-size:.76rem;text-transform:uppercase;letter-spacing:0;color:var(--muted);white-space:nowrap}
.leaderboard-table tbody tr:hover{background:rgba(255,255,255,.04)}
.leaderboard-table tbody tr:last-child td{border-bottom:none}
.leaderboard-rank{width:48px;text-align:center;color:var(--muted);font-size:.85rem;font-variant-numeric:tabular-nums}
.leaderboard-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.leaderboard-added{color:#42c47b}
.leaderboard-removed{color:#ff6b6b}
.leaderboard-total{font-weight:700}
.leaderboard-current-user{background:color-mix(in srgb,var(--accent) 13%,transparent)!important}
.leaderboard-user-link{color:var(--accent);text-decoration:none;font-weight:650}
.leaderboard-user-link:hover{text-decoration:underline}
.leaderboard-empty{opacity:.6;padding:2rem;text-align:center}
html[data-theme="light"] .leaderboard-stat,
html[data-theme="light"] .leaderboard-podium-card,
html[data-theme="light"] .leaderboard-table-wrap{border-color:rgba(0,0,0,.1)}
html[data-theme="light"] .leaderboard-stat{background:color-mix(in srgb,var(--secondary) 72%,#fff 28%)}
html[data-theme="light"] .leaderboard-podium-card{background:linear-gradient(180deg,rgba(0,0,0,.035),rgba(0,0,0,.01))}
html[data-theme="light"] .leaderboard-table th,
html[data-theme="light"] .leaderboard-table td{border-color:rgba(0,0,0,.06)}
html[data-theme="light"] .leaderboard-table thead th{background:rgba(0,0,0,.025)}
html[data-theme="light"] .leaderboard-table tbody tr:hover{background:rgba(0,0,0,.03)}
html[data-theme="light"] .leaderboard-current-user{background:color-mix(in srgb,var(--accent) 15%,transparent)!important}
html[data-theme="light"] .leaderboard-search-bar .form-input{border-color:rgba(0,0,0,.12);background:rgba(0,0,0,.02)}
html[data-theme="light"] .leaderboard-range-toggle .btn-active{background:var(--accent);color:var(--btn-text,#fff);border-color:var(--accent)}
@media (max-width: 860px){
  .leaderboard-summary{grid-template-columns:repeat(2,minmax(0,1fr))}
  .leaderboard-podium{grid-template-columns:1fr}
  .leaderboard-podium-first{order:1}
  .leaderboard-podium-second{order:2}
  .leaderboard-podium-third{order:3}
  .leaderboard-podium-empty{display:none}
  .leaderboard-page .page-header{align-items:stretch}
  .leaderboard-toolbar{align-items:stretch}
  .leaderboard-sort-toggle{justify-content:flex-start}
  .leaderboard-actions{justify-content:flex-start}
  .leaderboard-search-bar .form-input{max-width:100%}
}
@media (max-width: 540px){
  .leaderboard-summary{grid-template-columns:1fr}
  .leaderboard-sort-toggle .btn{flex:1 1 calc(50% - 6px);justify-content:center}
  .leaderboard-podium-card{min-height:150px}
  .leaderboard-podium-first{min-height:170px}
}
.contribution-page.deleted{opacity:.45;font-style:italic}
.contribution-msg{opacity:.55;font-size:.8rem}

/* Sequential page navigation */
.page-seq-nav{display:flex;justify-content:space-between;align-items:center;margin-top:2.5rem;padding-top:1rem;border-top:1px solid rgba(255,255,255,.07);gap:1rem}
.page-seq-prev{margin-right:auto}
.page-seq-next{margin-left:auto}

/* Chat */
.chat-shell{max-width:960px}
.chat-list{display:flex;flex-direction:column;gap:.5rem}
.chat-list-item{display:block;padding:.75rem 1rem;background:var(--secondary);border-radius:8px;text-decoration:none;color:var(--text);transition:background .15s}
.chat-list-item:hover{background:var(--accent);color:#fff}
.chat-list-name{font-weight:600;margin-bottom:.25rem}
.chat-list-preview{font-size:.9rem;opacity:.75;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-list-time{font-size:.8rem;opacity:.55;margin-top:.25rem}
/* Unread message badge */
.unread-badge{display:inline-block;background:#dc2626;color:#fff;font-size:.75rem;font-weight:700;padding:.15rem .5rem;border-radius:12px;min-width:20px;text-align:center;margin-left:.5rem;line-height:1.4;box-shadow:0 2px 8px rgba(220,38,38,.4)}
.unread-badge:hover{text-decoration:none}
h1 .unread-badge{font-size:.9rem;padding:.2rem .6rem;vertical-align:middle}

.chat-header{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem;flex-wrap:wrap}
.chat-header h1{margin:0}
.chat-header-actions{margin-left:auto;display:flex;gap:.5rem;flex-wrap:wrap}
.chat-toolbar-form{display:inline}
.btn-danger-subtle{background:rgba(220,38,38,.08);border-color:rgba(220,38,38,.22);color:#e79292}
.btn-danger-subtle:hover{background:rgba(220,38,38,.16)}
.chat-status-banner{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:.55rem .8rem;margin-bottom:.75rem;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);border-radius:8px;font-size:.85rem;line-height:1.45}
.chat-status-banner small{opacity:.68}
.chat-status-banner-essential{background:rgba(255,160,0,.08);border-color:rgba(255,160,0,.18)}
.moderation-guide{margin:.35rem 0 .75rem 0;font-size:.9rem}
.chat-status-dismiss{border:none;background:none;color:var(--text);opacity:.55;cursor:pointer;font-size:1rem;line-height:1;padding:.1rem .2rem}
.chat-status-dismiss:hover{opacity:.9}
.chat-messages{display:flex;flex-direction:column;gap:.6rem;max-height:58vh;overflow-y:auto;padding:.85rem;background:linear-gradient(180deg, rgba(255,255,255,.03), rgba(255,255,255,.015));border:1px solid rgba(255,255,255,.06);border-radius:8px;margin-bottom:.85rem}
.chat-messages-admin{max-height:70vh}
.chat-msg{padding:.45rem .65rem;border-radius:8px;max-width:76%;background:rgba(0,0,0,.18);border:1px solid rgba(255,255,255,.04);box-shadow:0 1px 2px rgba(0,0,0,.15)}
.chat-msg-mine{align-self:flex-end;background:color-mix(in srgb, var(--accent) 18%, var(--bg))}
.chat-msg-theirs{align-self:flex-start}
.chat-msg-system{align-self:center;max-width:100%;background:transparent;border:none;box-shadow:none;padding:.1rem 0}
.chat-msg-system-body{text-align:center;opacity:.68;font-style:italic}
.chat-msg-meta{font-size:.77rem;opacity:.72;margin-bottom:.2rem;display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}
.chat-msg-time,.chat-msg-ip{font-size:.75rem;opacity:.55}
.chat-msg-body{white-space:pre-wrap;word-break:break-word}
.chat-msg-attachments{margin-top:.3rem;display:flex;gap:.35rem;flex-wrap:wrap}
.chat-attachment-link{display:inline-block;font-size:.8rem;color:var(--accent);text-decoration:none;margin-right:.25rem}
.chat-attachment-link:hover{text-decoration:underline}
.chat-msg-deleted{border-style:dashed;opacity:.9}
.chat-msg-deleted-note{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:#ff9b9b}
.chat-msg-deleted-placeholder{font-style:italic;opacity:.75}
.chat-msg-deleted-original .chat-msg-body,.chat-msg-deleted-original .chat-attachment-link{text-decoration:line-through;opacity:.72}
.chat-msg-actions{display:flex;justify-content:flex-end;margin-top:.35rem;opacity:0;transition:opacity .15s ease}
.chat-msg:hover .chat-msg-actions,.chat-msg:focus-within .chat-msg-actions{opacity:1}
.chat-msg-delete-btn{font-size:.72rem;padding:.18rem .45rem}
.chat-empty{text-align:center;opacity:.5;padding:2rem}
.chat-input-form{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.06);border-radius:8px;padding:.7rem}
.chat-input-row{display:flex;gap:.5rem;align-items:flex-end}
.chat-input{flex:1;resize:vertical;min-height:2.5rem}
.chat-send-btn{align-self:flex-end}
.chat-input-file{display:flex;align-items:center;gap:.75rem;margin-top:.5rem;font-size:.85rem}
.chat-input-file small{opacity:.6}


/* History entry diff view */
ins.diff-ins{background:rgba(63,185,80,.25);color:#7ee787;text-decoration:none;border-radius:2px}
del.diff-del{background:rgba(255,107,107,.2);color:#ff8585;border-radius:2px}
.diff-pre{white-space:pre-wrap;word-break:break-word;font-family:'SFMono-Regular',Consolas,'Liberation Mono',Menlo,monospace;font-size:.88rem;line-height:1.75;margin:0}

/* Page Reservation Panel */
.reservation-panel{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:1rem 1.2rem;margin:1.5rem 0}
.reservation-panel-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-wrap:wrap}
.reservation-panel-header h3{margin:0 0 .35rem}
.reservation-panel-header p{margin:0;max-width:48rem;opacity:.78;line-height:1.45}
.reservation-status{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}
.reservation-status-warning{border-top:1px solid rgba(210,170,90,.2);padding-top:.75rem}
.reservation-icon{font-size:1.25rem;opacity:.8}
.reservation-text{font-size:.95rem;opacity:.9}
.reservation-expires{font-size:.85rem;opacity:.6;font-style:italic}
.reservation-controls{display:flex;flex-direction:column;gap:.5rem}
.reservation-checkbox{display:flex;align-items:center;gap:.5rem;cursor:pointer;user-select:none}
.reservation-checkbox input[type="checkbox"]{cursor:pointer;width:16px;height:16px}
.reservation-checkbox input[type="checkbox"]:disabled{cursor:not-allowed;opacity:.4}
.reservation-checkbox input[type="checkbox"]:disabled + span{opacity:.4}
.cooldown-notice{font-size:.85rem;opacity:.6;font-style:italic;padding-left:1.5rem}
.reservation-notice{background:rgba(76,175,80,.15);border:1px solid rgba(76,175,80,.3);border-radius:8px;padding:.8rem 1rem;margin-bottom:1rem;display:flex;align-items:center;gap:.5rem;font-size:.9rem}
.reservation-help{width:100%;font-size:.86rem;opacity:.72;line-height:1.45}
.reservation-inline-form{display:inline}
.reservation-directory-table td{vertical-align:middle}
.reservation-table-meta{opacity:.65;font-size:.85rem}

/* Kanban Board */
.kanban-board-page{display:flex;flex-direction:column;min-height:calc(100vh - 60px)}
.kanban-board-header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;padding:0 0 1rem;flex-shrink:0}
.kanban-board-header>.u-flex-1-min0{flex:1 1 100%}
.kanban-board-header .xs-143bb0f8{flex-wrap:wrap}
.kanban-columns-container{display:flex;gap:.75rem;overflow-x:auto;padding-bottom:.5rem;align-items:flex-start;flex:1;min-height:0}
.kanban-column{background:var(--card-color,#1e1e2c);border:2px solid rgba(255,255,255,.08);border-radius:2px;min-width:280px;max-width:320px;width:280px;display:flex;flex-direction:column;flex-shrink:0}
.kanban-column-header{display:flex;align-items:center;gap:.5rem;padding:.6rem .75rem;border-bottom:2px solid rgba(255,255,255,.06);font-weight:700;position:relative}
.kanban-column-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;outline:none;border-radius:2px;padding:2px 4px}
.kanban-column-title[contenteditable]:focus{white-space:pre-wrap;overflow:visible;text-overflow:clip}
#ticket-detail-title{white-space:pre-wrap;overflow-wrap:break-word}
.kanban-ticket-title{white-space:pre-wrap}
.kanban-column-title[contenteditable]:hover{background:rgba(255,255,255,.05)}
.kanban-column-title[contenteditable]:focus{background:rgba(255,255,255,.08);outline:1px solid var(--primary-color)}
.kanban-column-count{background:rgba(255,255,255,.1);border-radius:2px;font-size:.75rem;padding:1px 6px;font-weight:700;opacity:.7}
.kanban-column-menu-btn{background:none;border:none;color:var(--text-color);cursor:pointer;font-size:1.1rem;padding:2px 6px;opacity:.5;border-radius:2px}
.kanban-column-menu-btn:hover{opacity:1;background:rgba(255,255,255,.08)}
.kanban-column-menu{position:absolute;right:.5rem;top:100%;background:var(--bg-color,#16161f);border:2px solid rgba(255,255,255,.12);border-radius:2px;z-index:100;min-width:140px;box-shadow:0 4px 12px rgba(0,0,0,.4)}
.kanban-column-menu button{display:block;width:100%;text-align:left;padding:.5rem .75rem;background:none;border:none;color:var(--accent-color,#e66);cursor:pointer;font-size:.85rem}
.kanban-column-menu button:hover{background:rgba(255,255,255,.05)}
.kanban-tickets{padding:.5rem;display:flex;flex-direction:column;gap:.3rem;min-height:60px;flex:1}
.kanban-ticket{background:var(--bg-color,#16161f);border:2px solid rgba(255,255,255,.06);border-radius:2px;padding:.5rem .65rem;cursor:pointer;position:relative;transition:border-color .15s;flex-shrink:0;min-height:min-content}
.kanban-ticket:hover{border-color:rgba(255,255,255,.15)}
.kanban-ticket-dragging{opacity:.25}
.kanban-ticket-placeholder{border:2px dashed rgba(255,255,255,.15);border-radius:2px;min-height:40px;margin:.2rem 0}
.kanban-tickets .kanban-ticket-placeholder:last-child{flex:1}
/* Floating ghost card that follows the finger during touch drag on mobile.
   Created dynamically by the touch-drag JS; positioned via inline style. */
.kanban-ticket-ghost{position:fixed;pointer-events:none;z-index:99999;opacity:.88;transform:rotate(2deg) scale(1.03);box-shadow:0 12px 32px rgba(0,0,0,.35);transition:none;border-radius:6px;max-width:280px;background:var(--bg-color,#16161f);border:2px solid rgba(255,255,255,.1)}
.kanban-ticket-color-bar{position:absolute;left:0;top:0;bottom:0;width:3px;border-radius:2px 0 0 2px}
.kanban-ticket-priority{display:none}
.kanban-priority-low{background:#4caf50}
.kanban-priority-medium{background:#ff9800}
.kanban-priority-high{background:#f44336}
.kanban-priority-critical{background:#e91e63}
.kanban-ticket-title{font-size:.88rem;padding-left:.3rem;line-height:1.35;word-break:break-word;white-space:normal}
.kanban-ticket-meta{display:flex;flex-wrap:wrap;gap:.15rem;padding-left:.3rem}
.kanban-ticket-badge{font-size:.7rem;padding:1px 6px;border-radius:2px;font-weight:700;display:inline-block;margin-top:.3rem}
.kanban-badge-critical{background:rgba(233,30,99,.2);color:#e91e63}
.kanban-badge-high{background:rgba(244,67,54,.2);color:#f44336}
.kanban-badge-low{background:rgba(76,175,80,.2);color:#4caf50}
.kanban-badge-due{background:rgba(255,152,0,.15);color:#ff9800}
.kanban-badge-label{background:rgba(33,150,243,.15);color:#64b5f6}
.kanban-badge-assigned{background:rgba(110,138,202,.15);color:var(--primary-color)}
.kanban-badge-attachment{background:rgba(155,89,182,.15);color:#9b59b6}
/* Canvas list badge variants */
.kanban-badge-priority-low{background:rgba(100,120,160,.15);color:var(--text-color,#666);opacity:1}
.kanban-badge-priority-medium{background:rgba(179,157,2,.15);color:#b39d00;opacity:1}
.kanban.add-ticket{padding:.35rem .5rem;border-bottom:1px solid rgba(255,255,255,.04);flex-shrink:0}
.kanban-add-ticket-btn{background:rgba(255,255,255,.02);border:1px dashed rgba(255,255,255,.15);border-radius:2px;color:var(--text-color);opacity:.65;cursor:pointer;padding:.35rem;width:100%;text-align:center;font-size:.82rem;transition:opacity .15s,border-color .15s,background .15s}
.kanban-add-ticket-btn:hover{opacity:1;border-color:rgba(255,255,255,.35);background:rgba(255,255,255,.06)}
.kanban-add-column{background:transparent;border:2px dashed rgba(255,255,255,.08);min-width:280px;max-width:280px;display:flex;align-items:flex-start;justify-content:center;padding:1rem}
.kanban-add-column-btn{background:none;border:none;color:var(--text-color);opacity:.4;cursor:pointer;font-size:.95rem;padding:.6rem 1rem}
.kanban-add-column-btn:hover{opacity:.7}
.kanban-add-column-form{width:100%}
.kanban-column-drag-handle{cursor:grab;opacity:.3;font-size:.9rem;padding:2px 4px;border-radius:2px;user-select:none;flex-shrink:0}
.kanban-column-drag-handle:hover{opacity:.7;background:rgba(255,255,255,.08)}
.kanban-column.kanban-column-dragging{opacity:.4}
.kanban-column-placeholder{min-width:280px;max-width:280px;width:280px;border:2px dashed rgba(255,255,255,.15);border-radius:2px;background:rgba(255,255,255,.02);flex-shrink:0;min-height:100px}

/* Kanban modals */
.kanban-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.6);z-index:9999;display:flex;align-items:center;justify-content:center;padding:1rem}
.kanban-modal{background:var(--card-color,#1e1e2c);border:2px solid rgba(255,255,255,.1);border-radius:2px;padding:1.5rem;width:100%;max-width:480px;max-height:90vh;overflow-y:auto;position:relative}
.kanban-modal-lg{max-width:720px}
.kanban-modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;gap:1rem}
.kanban-modal-close{background:none;border:none;color:var(--text-color);font-size:1.5rem;cursor:pointer;opacity:.6;padding:0 .3rem}
.kanban-modal-close:hover{opacity:1}

/* Ticket detail */
#ticket-detail-title[contenteditable]{outline:none;border-radius:2px;padding:2px 4px}
#ticket-detail-title[contenteditable]:hover{background:rgba(255,255,255,.05)}
#ticket-detail-title[contenteditable]:focus{background:rgba(255,255,255,.08);outline:1px solid var(--primary-color)}
.kanban-ticket-detail-grid{display:grid;grid-template-columns:1fr 200px;gap:1.5rem}
@media(max-width:600px){.kanban-ticket-detail-grid{grid-template-columns:1fr}}
.kanban-ticket-detail-main{min-width:0}
.kanban-ticket-desc-display{font-size:.9rem;line-height:1.6;min-height:60px;padding:.75rem;background:rgba(255,255,255,.02);border-radius:2px;border:1px solid rgba(255,255,255,.05)}
.kanban-ticket-desc-display img{max-width:100%;height:auto;border-radius:2px;margin:.4rem 0}
.kanban-ticket-detail-sidebar{display:flex;flex-direction:column;gap:.75rem}
.kanban-ticket-meta-item label{display:block;font-size:.75rem;opacity:.5;text-transform:uppercase;letter-spacing:.5px;margin-bottom:.2rem;font-weight:700}
.kanban-tab-btn{background:none;border:none;color:var(--text-color);cursor:pointer;padding:.45rem .85rem;font-size:.82rem;opacity:.55;border-bottom:2px solid transparent;transition:opacity .15s,border-color .15s}
.kanban-tab-btn:hover{opacity:.85}
.kanban-tab-active{opacity:1;border-bottom-color:var(--primary-color,#8fa0d4);font-weight:700}
.kanban-img-upload-btn{background:none;border:1px dashed rgba(255,255,255,.15);border-radius:2px;color:var(--text-color);opacity:.55;cursor:pointer;padding:2px 8px;font-size:.75rem;margin-left:.3rem;vertical-align:middle}
.kanban-img-upload-btn:hover{opacity:.85;border-color:rgba(255,255,255,.3)}
/* Highlight description / comment textareas while an image is being dragged over them. */
.kanban-drop-over{outline:2px dashed var(--primary-color,#8fa0d4);outline-offset:-2px;background:rgba(143,160,212,.08)}
.kanban-assignee-picker{position:relative;display:flex;flex-direction:column;gap:.4rem}
.kanban-assignee-pills{display:flex;flex-wrap:wrap;gap:.3rem;min-height:1.4em}
.kanban-assignee-pill{display:inline-flex;align-items:center;background:rgba(110,138,202,.15);color:var(--primary-color,#8fa0d4);padding:.18rem .55rem;border-radius:999px;font-size:.78rem;line-height:1}
.kanban-assignee-empty{font-size:.78rem;opacity:.5;font-style:italic}
.kanban-assignee-menu{position:absolute;top:calc(100% + .25rem);left:0;right:0;background:var(--card-color,#1e1e2c);border:1px solid rgba(255,255,255,.12);border-radius:4px;padding:.5rem;z-index:10005;box-shadow:0 4px 16px rgba(0,0,0,.35);max-height:260px;display:flex;flex-direction:column;gap:.4rem}
.kanban-assignee-menu-options{max-height:180px;overflow-y:auto;display:flex;flex-direction:column;gap:.25rem;padding-right:.25rem}
.kanban-assignee-option{display:flex;align-items:center;gap:.5rem;font-size:.85rem;cursor:pointer;padding:.2rem .35rem;border-radius:3px}
.kanban-assignee-option:hover{background:rgba(255,255,255,.05)}
.kanban-assignee-menu-actions{display:flex;justify-content:space-between;gap:.4rem;border-top:1px solid rgba(255,255,255,.08);padding-top:.5rem}

/* Board list */
.kanban-boards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem}
.kanban-board-card-wrapper{position:relative}
.kanban-board-card{display:block;background:var(--card-color,#1e1e2c);border:2px solid rgba(255,255,255,.08);border-radius:2px;padding:1.2rem;text-decoration:none;color:var(--text-color);transition:border-color .15s}
.kanban-board-card:hover{border-color:var(--primary-color,#8fa0d4)}
.kanban-board-card-title{font-size:1.1rem;font-weight:700;margin-bottom:.3rem}
.kanban-board-card-desc{font-size:.85rem;opacity:.6;margin-bottom:.5rem;line-height:1.4}
.kanban-board-card-meta{font-size:.8rem;opacity:.4}

/* Drag-and-drop reordering for board/canvas list cards */
.kanban-board-drag-handle{position:absolute;top:.4rem;right:.5rem;cursor:grab;opacity:.35;font-size:1rem;line-height:1;user-select:none;z-index:2;padding:2px 4px;border-radius:2px;color:var(--text);transition:opacity .15s}
.kanban-board-drag-handle:hover{opacity:.85;background:rgba(255,255,255,.08)}
.kanban-board-card-wrapper[draggable="true"] .kanban-board-card{padding-top:1.8rem}
.kanban-board-dragging{opacity:.4}
.kanban-board-drag-over{border:2px dashed var(--primary,#8fa0d4)!important;border-radius:2px;opacity:0;min-height:80px}
.kanban-board-drag-over .kanban-board-card{opacity:0}
.kanban-color-btn{width:22px;height:22px;border-radius:2px;border:none;cursor:pointer;padding:0;font-size:.65rem;line-height:22px;text-align:center}
.kanban-toast{position:fixed;bottom:1.5rem;right:1.5rem;display:flex;align-items:center;gap:.5rem;background:rgba(100,180,100,.18);border:1px solid rgba(100,180,100,.35);color:#7cc07c;padding:.45rem .85rem;border-radius:4px;font-size:.82rem;font-weight:600;z-index:10010;opacity:0;transform:translateY(8px);transition:opacity .2s,transform .2s}
.kanban-toast.kanban-toast-visible{opacity:1;transform:translateY(0)}
.kanban-toast-error{background:rgba(196,92,106,.18);border-color:rgba(196,92,106,.35);color:#c45c6a}
.kanban-toast-msg{flex:1}
.kanban-toast-close{background:none;border:none;color:inherit;font-weight:700;font-size:1rem;cursor:pointer;line-height:1;opacity:.7;padding:0;margin-left:.25rem}
.kanban-toast-close:hover{opacity:1}

.public-notice{background:rgba(184,134,11,.12);color:var(--text,#c8ccd8);text-align:center;padding:.5rem 1rem;font-size:.82rem;border-bottom:1px solid rgba(184,134,11,.25);display:flex;align-items:center;justify-content:center;gap:.5rem;position:relative}
.public-notice a{color:#d4a84b;text-decoration:underline;margin-left:.25rem}
.public-notice a:hover{color:#e8c46a}
.hosting-expiry-banner{background:rgba(231,76,60,.10);border-bottom-color:rgba(231,76,60,.25)}
.hosting-expiry-banner .public-notice-text{color:var(--text)}

/* ── Utility classes (replaces inline style= attributes) */
/* display */
.u-d-none{display:none}
.u-d-inline{display:inline}
.u-d-inline-flex{display:inline-flex}
.u-d-block{display:block}
.u-d-flex{display:flex}
.u-d-grid{display:grid}
.u-d-inline-block{display:inline-block}
.u-d-none-mt08{display:none;margin-top:.8rem}
/* flex helpers */
.u-flex-col{flex-direction:column}
.u-flex-wrap{flex-wrap:wrap}
.u-flex-1{flex:1}
.u-flex-1-min0{flex:1;min-width:0}
.u-ai-center{align-items:center}
.u-ai-start{align-items:flex-start}
.u-jc-end{justify-content:flex-end}
.u-jc-center{justify-content:center}
.u-jc-between{justify-content:space-between}
.u-gap-03{gap:.3rem}
.u-gap-04{gap:.4rem}
.u-gap-05{gap:.5rem}
.u-gap-06{gap:.6rem}
.u-gap-08{gap:.8rem}
.u-gap-1{gap:1rem}
.u-flex-row-05{display:flex;gap:.5rem}
.u-flex-row-1{display:flex;gap:1rem;flex-wrap:wrap}
.u-flex-col-end-1{display:flex;gap:.5rem;justify-content:flex-end;margin-top:1rem}
.u-flex-row-wrap{display:flex;gap:.5rem;align-items:flex-end;flex-wrap:wrap}
.u-flex-center-05-ptr{display:flex!important;align-items:center!important;gap:.5rem!important;cursor:pointer!important;text-transform:none!important;font-weight:400!important}
.u-flex-center-04{display:flex;align-items:center;gap:.4rem;cursor:pointer}
.u-flex-center-05{display:flex;align-items:center;gap:.5rem}
.u-flex-center-06-ptr{display:flex!important;align-items:center!important;gap:.6rem!important;cursor:pointer!important;text-transform:none!important;font-weight:400!important}
.u-flex-start-05-ptr{display:flex!important;align-items:flex-start!important;gap:.5rem!important;cursor:pointer!important;text-transform:none!important;font-weight:400!important}
.u-flex-03-mt03{display:flex;gap:.3rem;margin-top:.3rem}
/* opacity */
.u-o50{opacity:.5}
.u-o55{opacity:.55}
.u-o60{opacity:.6}
.u-o65{opacity:.65}
.u-o70{opacity:.7}
.u-o75{opacity:.75}
.u-o80{opacity:.8}
.u-o85{opacity:.85}
/* font-size */
.u-fs-075{font-size:.75rem}
.u-fs-08{font-size:.8rem}
.u-fs-085{font-size:.85rem}
.u-fs-09{font-size:.9rem}
.u-fs-095{font-size:.95rem}
.u-fs-10{font-size:1rem}
.u-fs-11{font-size:1.1rem}
.u-fs-12{font-size:1.2rem}
/* font-weight */
.u-fw-600{font-weight:600}
.u-fw-700{font-weight:700}
/* font-family */
.u-ff-mono{font-family:monospace}
.u-ff-mono-085{font-family:monospace;font-size:.85rem}
/* margin helpers */
.u-m0{margin:0}
.u-mt0{margin-top:0}
.u-mt02{margin-top:.2rem}
.u-mt03{margin-top:.3rem}
.u-mt04{margin-top:.4rem}
.u-mt05{margin-top:.5rem}
.u-mt075{margin-top:.75rem}
.u-mt08{margin-top:.8rem}
.u-mt1{margin-top:1rem}
.u-mt15{margin-top:1.5rem}
.u-mt2{margin-top:2rem}
.u-mb0{margin-bottom:0}
.u-mb03{margin-bottom:.3rem}
.u-mb04{margin-bottom:.4rem}
.u-mb05{margin-bottom:.5rem}
.u-mb06{margin-bottom:.6rem}
.u-mb075{margin-bottom:.75rem}
.u-mb08{margin-bottom:.8rem}
.u-mb1{margin-bottom:1rem}
.u-mb15{margin-bottom:1.5rem}
.u-mb2{margin-bottom:2rem}
.u-ml05{margin-left:.5rem}
.u-ml15{margin-left:1.5rem}
.u-mr04{margin-right:.4rem}
.u-mr05{margin-right:.5rem}
.u-mt0-mb1-fs1-o90{margin-top:0;margin-bottom:1rem;font-size:1rem;opacity:.9}
/* padding */
.u-p1{padding:1rem}
/* width / max-width */
.u-w100{width:100%}
.u-w90{width:90px}
.u-w100px{width:100px}
.u-w120{width:120px}
.u-w140{width:140px}
.u-w150{width:150px}
.u-w160{width:160px}
.u-w200{width:200px}
.u-w7r-mono{width:7rem;font-family:monospace}
.u-mw140{max-width:140px}
.u-mw150{max-width:150px}
.u-mw160{max-width:160px}
.u-mw180{max-width:180px}
.u-mw200{max-width:200px}
.u-mw220{max-width:220px}
.u-mw250{max-width:250px}
.u-mw300{max-width:300px}
.u-mw340{max-width:340px}
.u-mw400{max-width:400px}
.u-mw500{max-width:500px}
.u-mw600{max-width:600px}
.u-mw900{max-width:900px}
/* misc */
.u-ws-pre-wrap{white-space:pre-wrap}
.u-ws-nowrap{white-space:nowrap}
.u-cursor-ptr{cursor:pointer}
.u-td-none{text-decoration:none}
.u-va-top{vertical-align:top}
.u-ovf-hidden{overflow:hidden}
.u-border-box{box-sizing:border-box}
.u-img-pixelated{width:32px;height:32px;image-rendering:pixelated}
.u-text-center{text-align:center}
/* composite helpers */
.u-hint{opacity:.7;display:block;margin-top:.3rem}
.u-hint-sm{opacity:.7;display:block;margin-top:.2rem}
.u-hint-06{opacity:.6;display:block;margin-top:.3rem}
.u-label-note{font-size:.85rem;opacity:.7;margin-bottom:.8rem}
.u-label-note-rev{font-size:.85rem;margin-bottom:.8rem;opacity:.7}
.u-section-note{opacity:.8;margin-bottom:.8rem}
.u-section-caption{opacity:.7;font-size:.9rem}
.u-o70-mb1{opacity:.7;margin-bottom:1rem}
.u-o70-mb1-fs09{opacity:.7;margin-bottom:1rem;font-size:.9rem}
.u-o70-mb15{opacity:.7;margin-bottom:1.5rem}
.u-o60-mt1{opacity:.6;margin-top:1rem}
.u-o50-fs085{opacity:.5;font-size:.85rem}
.u-fw700-fs09{font-weight:700;font-size:.9rem}
.u-fs085-ptr-o85{cursor:pointer;opacity:.85;font-size:.85rem;display:block}
.u-fs075-p2-6{font-size:.75rem;padding:2px 6px}
.u-fs075-p2-8{font-size:.75rem;padding:2px 8px}
.u-card-block{display:block;margin-top:.3rem;background:var(--card-bg);padding:.5rem;border-radius:2px;font-size:.8rem}
.u-inset-panel{padding:1rem;background:rgba(255,255,255,.02);border:1px solid rgba(255,255,255,.05);border-radius:2px;margin-bottom:1.5rem}
.u-mb0-m08{margin:0 0 .8rem}
/* Nested category depth indentation is now driven by the .nav-section-body
   guide line above (linear growth via natural CSS nesting). The data-depth
   attribute is still emitted on each section for downstream styling/debug. */

/* Extracted inline styles, named by a hash of their declarations.
   These came out of templates in a pass that moved style attributes into the
   stylesheet. The names carry no meaning on purpose: nothing should depend on
   them, and a rule that earns a real name belongs in a section above instead.
   Inline style attributes are still permitted by the policy in app.py, so this
   block is a tidiness measure rather than a security boundary. */
.xs-015ccf91{max-width:280px}
.xs-01e32bc2{font-size:.85rem;opacity:.65;margin-left:.4rem}
.xs-01e4862a{opacity:.8;margin:0}
.xs-04442b8e{display:flex;gap:.3rem;align-items:center}
.xs-05a4d63b{font-size:.8rem;opacity:.5;margin-top:.4rem;text-align:right}
.xs-07298f95{background:#d4a574}
.xs-07965eba{font-weight:600;font-size:1.05rem}
.xs-08a10693{font-size:.95rem;opacity:.85;margin-bottom:.4rem}
.xs-09eba426{font-size:.8rem;margin-top:.5rem;text-align:right}
.xs-0a461564{opacity:.5;font-size:.9rem}
.xs-0be2bd5a{text-align:center;padding:2rem}
.xs-0c6d04af{display:flex;flex-direction:column;gap:.4rem}
.xs-0de4e77b{font-size:.82rem}
.xs-0fc5c095{background:#00d4ff}
.xs-101d5fd5{display:block;background:#0a1a0a;padding:.75rem;border-radius:2px;word-break:break-all;font-size:.85rem;user-select:all}
.xs-101de3b4{width:100%;color:var(--accent-color)}
.xs-10924dbb{margin-bottom:1rem;display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}
.xs-10f9141e{font-size:.85rem;opacity:.7;margin-bottom:.4rem}
.xs-1101ae95{display:flex;gap:.5rem;justify-content:flex-end;margin-top:1.5rem;padding-top:1rem;border-top:1px solid rgba(255,255,255,.08)}
.xs-13d30f50{font-size:.75rem;background:#c0392b;border-color:#c0392b}
.xs-143bb0f8{display:flex;gap:.5rem;flex-shrink:0}
.xs-1452e5c5{display:flex;align-items:center;gap:.35rem}
.xs-15c95f78{background:#0a0a12}
.xs-1639253e{display:flex;gap:.5rem;align-items:center}
.xs-16a08086{opacity:.5;margin-left:.5rem}
.xs-16bbef5d{opacity:.6;margin-left:.5rem}
.xs-16c0cc71{display:flex;align-items:center;gap:.75rem;padding:.5rem 0;border-bottom:1px solid rgba(255,255,255,.06)}
.xs-18c2af58{opacity:.7;font-size:1.1rem}
.xs-18f9e39d{display:flex;flex-wrap:wrap;gap:.5rem}
.xs-19182bcc{cursor:pointer;display:inline-block}
.xs-199f13a1{display:none;margin-top:.5rem}
.xs-1ac1e544{padding:.8rem 1rem;background:var(--card-bg);border:1px solid var(--border-color);border-radius:2px}
.xs-1ba09c5e{font-size:.75rem;opacity:.5}
.xs-1bb6baa3{display:none;margin-left:1.5rem}
.xs-1bcad14a{background:#ffd70022;color:#ffd700;border:1px solid #ffd70044;text-decoration:none}
.xs-1c4c4e14{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;margin-bottom:.5rem}
.xs-1c62bd7a{width:100%;font-size:.85rem}
.xs-1d50c244{display:flex;gap:0;border-bottom:1px solid rgba(255,255,255,.1);margin-bottom:.8rem}
.xs-1dfda96a{width:180px}
.xs-1e29eefb{font-weight:500}
.xs-20b97ce2{padding:.5rem .75rem;margin-top:.6rem;border-radius:2px;border:1px solid rgba(231,76,60,.3);background:rgba(231,76,60,.08);font-size:.85rem;max-width:500px}
.xs-2206311c{margin-top:1rem;padding-top:1rem;border-top:1px solid rgba(255,255,255,.1)}
.xs-228ae3c4{opacity:.6;font-size:.85rem}
.xs-23981ff9{display:flex;align-items:center;gap:.5rem;padding:.4rem .6rem;background:rgba(255,255,255,.03);border-radius:3px}
.xs-2444766a{display:flex;align-items:center;gap:.5rem;margin-bottom:.3rem}
.xs-256a62f2{display:none;margin-top:.8rem;border-top:1px solid rgba(255,255,255,.06);padding-top:.8rem}
.xs-25978103{margin-bottom:1.2rem;line-height:1.5;white-space:pre-line}
.xs-263899bc{border-bottom:1px solid rgba(255,255,255,.05);padding:.2rem 0;word-break:break-all}
.xs-28d2362d{margin-top:1rem;display:flex;gap:.8rem;align-items:center}
.xs-28ee9a29{font-size:.75rem;margin-right:.3rem}
.xs-295d3744{font-weight:600;width:150px}
.xs-29f32b0a{opacity:.7;display:block;margin:.3rem 0 .8rem}
.xs-2abadb2f{font-size:.82rem;opacity:.5;margin-bottom:.5rem}
.xs-2ac3a24a{background:var(--accent-color)}
.xs-2bd563f0{color:#dc3545;font-weight:600}
.xs-2c6a6c6d{display:inline-block;vertical-align:middle}
.xs-2d1c806e{display:inline;margin-left:.25rem}
.xs-2d297739{display:none;margin-top:1rem;padding:1rem;background:rgba(255,255,255,.02);border-radius:6px}
.xs-2dfae06c{color:var(--danger-color,red)}
.xs-2e054339{margin-top:.75rem;display:flex;flex-wrap:wrap;gap:1rem}
.xs-2e819e96{font-size:.85rem;opacity:.7;margin:0}
.xs-30904ee3{padding:.5rem .75rem;margin-top:.4rem;border-radius:2px;border:1px solid rgba(230,126,34,.3);background:rgba(230,126,34,.08);font-size:.85rem}
.xs-30ef8707{opacity:.6;display:block;margin-bottom:.5rem}
.xs-321d378a{font-family:monospace;font-weight:600}
.xs-32ef604f{font-size:3rem;line-height:1}
.xs-343c1051{opacity:.5;font-size:.8rem}
.xs-343cb84b{font-size:1.5rem}
.xs-35db6faf{width:64px;height:64px;border-radius:50%;object-fit:cover;border:2px solid var(--primary)}
.xs-36c642da{background:var(--primary-color,#8fa0d4);color:#fff;padding:2px 8px;border-radius:3px;font-size:.75rem;font-weight:600}
.xs-37eea5a1{opacity:.5;font-style:italic}
.xs-3838226c{background:#00c896;color:#fff;border:none;padding:.5rem 1.5rem;font-weight:700}
.xs-3856c645{font-size:.85rem;opacity:.85;margin:0;padding-left:1.2rem}
.xs-38d833fd{background:#ff6b2b}
.xs-3958a29f{color:#28a745;font-weight:600}
.xs-3aca57f8{margin-left:1rem;color:var(--primary);text-decoration:underline}
.xs-3ba12911{color:#f38ba8}
.xs-3bea4c1c{opacity:.8;margin-bottom:.8rem;padding-left:1.5rem}
.xs-3d6b61a8{margin:1rem 0 .6rem}
.xs-3ef38240{background:#00c89622;color:#00c896;border:1px solid #00c89644}
.xs-3fef13a1{color:#c45c6a}
.xs-405456aa{margin-bottom:1rem;font-size:.85rem;opacity:.7}
.xs-4103868b{padding:.5rem .75rem;margin-top:.6rem;border-radius:2px;border:1px solid rgba(231,76,60,.3);background:rgba(231,76,60,.08);font-size:.85rem}
.xs-45301bb0{background:#9c27b0}
.xs-46c76f04{margin-bottom:.75rem;display:flex;flex-wrap:wrap;gap:1rem}
.xs-49d32781{background:#ffad7a}
.xs-4ab27cfa{margin-bottom:1rem;display:flex;gap:.5rem;flex-wrap:wrap}
.xs-4b3dd138{white-space:nowrap;font-family:monospace;font-size:.85rem}
.xs-4b64846b{background:#0e1220}
.xs-4bbcce4b{background:#8fbf9f}
.xs-4c148ae6{margin:0 0 .5rem;font-size:1rem}
.xs-4c22e1cd{flex:1;font-size:.85rem;word-break:break-all}
.xs-4ceca31a{display:flex;align-items:flex-end;gap:.5rem;flex-wrap:wrap}
.xs-4d566ff4{opacity:.6;font-size:.8rem}
.xs-4e129a79{color:#ffd700;font-weight:700;font-size:1.2rem}
.xs-4e1feb95{display:flex;align-items:flex-start;gap:1rem}
.xs-4e6dccea{font-size:.75rem;padding:2px 8px;color:var(--accent-color)}
.xs-4f557a14{font-size:.7rem;background:rgba(233,30,99,.15);color:#e91e63;padding:1px 6px;border-radius:2px;margin-left:.3rem;font-weight:700;vertical-align:middle}
.xs-4f8c13e6{font-size:.78rem;opacity:.5;margin-bottom:.4rem}
.xs-516a4d34{display:flex;flex-direction:column;gap:.5rem}
.xs-572c7875{text-align:center;opacity:.7;font-style:italic}
.xs-58180d3d{font-size:.88rem}
.xs-5a8223cf{color:var(--danger-color,orange);font-size:.8rem}
.xs-5cd52bc8{background:var(--card-bg);border:1px solid var(--border-color);border-radius:2px;padding:1rem;overflow-x:auto;font-size:.85rem;line-height:1.5}
.xs-5dec52ca{display:flex;align-items:center;gap:.5rem;margin-top:.4rem}
.xs-5df3b33a{background:transparent;border:2px dashed rgba(255,255,255,.2)}
.xs-5ec7266b{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.4rem}
.xs-5f6618d2{border-bottom:1px solid rgba(255,255,255,.06);padding-bottom:.6rem}
.xs-5f7abeb8{text-transform:uppercase}
.xs-5fe1e3df{font-size:.85rem;opacity:.7;margin-bottom:.5rem}
.xs-602756f3{background:#2196f3}
.xs-6059b3f2{display:flex;justify-content:flex-end;gap:.3rem;margin-top:.4rem;align-items:center}
.xs-61948001{max-height:600px;overflow-y:auto;font-family:monospace;font-size:.78rem;line-height:1.6;background:rgba(0,0,0,.2);padding:.8rem;border-radius:4px}
.xs-61ee3bd3{font-size:1.3rem;text-align:center;margin-bottom:.3rem}
.xs-630591a0{background:#e76f51}
.xs-630b08f8{display:flex;gap:1rem;flex-wrap:wrap;margin-top:1rem;padding-top:1rem;border-top:1px solid rgba(255,255,255,.06)}
.xs-642fde28{margin-bottom:.8rem;font-size:1.1rem}
.xs-64616a10{flex:1;font-size:.9rem}
.xs-6613953a{padding:1rem;background:rgba(255,255,255,.02);border:1px solid rgba(255,255,255,.05);border-radius:2px;margin-bottom:1rem}
.xs-66975d5e{background:#6c757d;color:#fff;padding:2px 8px;border-radius:3px;font-size:.75rem;font-weight:600}
.xs-681b15ff{width:auto;display:inline-block}
.xs-6841b100{background:linear-gradient(135deg, rgba(0,200,150,.18) 0%, rgba(0,150,255,.18) 100%);border-bottom:2px solid rgba(0,200,150,.5);padding:1rem 1.2rem;text-align:center;position:relative;z-index:100}
.xs-69c5a161{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem;margin-bottom:.8rem}
.xs-6a03244e{text-align:center;margin:.6rem 0}
.xs-6a248adc{display:flex;gap:.5rem;margin-bottom:.5rem;flex-wrap:wrap}
.xs-6a459637{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center}
.xs-6aa6e2cd{opacity:.5;font-size:.75rem}
.xs-6cadde86{font-size:.9rem;opacity:.7;margin-bottom:.5rem}
.xs-6ce6d37c{background:#1f1017}
.xs-6d642cfe{background:#ffeb3b}
.xs-6ea414e8{background:#e0e0e8}
.xs-6f34c549{display:inline-flex;gap:.8rem;align-items:center}
.xs-6fd4812d{font-size:.85rem;opacity:.8;margin-bottom:.8rem}
.xs-7087ad64{background:#0b1a2e}
.xs-70cc2394{width:100%;margin-top:.4rem}
.xs-70fe1bbb{color:var(--accent-color)}
.xs-7243d181{border-top:1px solid rgba(255,255,255,.08);padding-top:.8rem}
.xs-72eb6394{font-size:.82rem;opacity:.7;margin-top:.2rem}
.xs-7431a718{max-width:100%;max-height:180px;border-radius:4px;display:none}
.xs-75809ad2{margin:0 0 .5rem;font-weight:700;color:#6ad46a}
.xs-75d6db1b{padding:1rem;background:rgba(255,255,255,.02);border-radius:6px}
.xs-76418dd1{font-size:.8rem;opacity:.6;margin-top:.3rem}
.xs-773cc107{display:flex;align-items:center;gap:.4rem;cursor:pointer}
.xs-775b6761{opacity:.6;font-size:.82rem}
.xs-78808ea2{position:relative;width:100%;padding-bottom:56.25%;margin-top:.5rem;background:#000;border-radius:2px;overflow:hidden}
.xs-78966148{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.5rem}
.xs-790e59cd{font-size:.85rem;opacity:.7;margin-bottom:.4rem;text-transform:uppercase;letter-spacing:.05em}
.xs-792fae84{background:#5b9bd5}
.xs-793ad122{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.8rem}
.xs-79749534{font-size:.9rem;opacity:.8;margin-bottom:.6rem}
.xs-79a9d8d8{background:#1a0e14}
.xs-79c6e966{opacity:.8;margin-bottom:.8rem;border-left:3px solid #e8a838;padding-left:.8rem}
.xs-7a40950b{display:flex;gap:.4rem;flex-wrap:wrap}
.xs-7a538e3d{display:flex;gap:.5rem;flex-wrap:wrap}
.xs-7b8061b4{flex:1;font-size:.85rem}
.xs-7c74c3bf{background:#e91e8c}
.xs-7d49fb60{opacity:.8;margin-top:.8rem}
.xs-7d5af229{display:inline;margin-left:auto}
.xs-7dab4994{font-size:.9rem;opacity:.85;margin:0;padding-left:1.2rem;line-height:1.8}
.xs-7dedaacc{background:#e67e2222;color:#e67e22;border:1px solid #e67e2244}
.admin-create-user-form{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:.7rem;align-items:end}
.admin-create-user-field{margin-bottom:0}
.admin-create-user-field .input{width:100%;min-width:0}
.admin-force-password-check{grid-column:1/-1;align-items:center;padding:.75rem .85rem;border:1px solid rgba(143,160,212,.32);border-radius:8px;background:rgba(143,160,212,.08)}
.admin-force-password-check:hover{border-color:rgba(143,160,212,.58);background:rgba(143,160,212,.12)}
.admin-force-password-check input{accent-color:var(--primary);width:1.05rem;height:1.05rem}
.admin-create-user-actions{grid-column:1/-1;margin-top:.1rem}
.admin-create-user-actions .btn{min-height:34px;padding-left:.85rem;padding-right:.85rem}
.xs-80a77127{display:flex;gap:.5rem;flex-wrap:wrap;align-items:flex-end}
.xs-81ab1739{font-size:.8rem;background:#c0392b;border-color:#c0392b}
.xs-81f7eca7{font-family:monospace;opacity:.7;margin:.3rem 0}
.xs-821b9f51{background:rgba(0,200,150,.15);border:1px solid rgba(0,200,150,.35);color:#00c896}
.xs-829a72aa{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;max-width:900px}
.xs-835d1d4a{font-size:1.5rem;margin-bottom:.3rem}
.xs-839e2dc6{background:#4caf50}
.xs-8450a229{opacity:.5;font-size:.82rem}
.xs-84c097cd{margin-top:1.5rem;text-align:center}
.xs-84c3556f{margin:1.2rem 0;opacity:.15}
.xs-8501a927{padding:1rem;opacity:.6}
.xs-86101224{font-size:.88rem;opacity:.7;margin-bottom:1rem;text-align:center}
.xs-864e677b{padding:.75rem 1rem;margin-bottom:1rem;border-radius:2px;border:1px solid rgba(231,76,60,.3);background:rgba(231,76,60,.08);font-size:.9rem}
.xs-877e53f0{font-size:.85rem;margin-top:.3rem}
.xs-8867afcf{font-size:.72rem;opacity:.6}
.xs-8886dffd{font-size:.82rem;opacity:.7;margin-top:.4rem;display:none}
.xs-89830441{background:linear-gradient(135deg, rgba(255,215,0,.15) 0%, rgba(255,165,0,.15) 100%);border-bottom:1px solid rgba(255,215,0,.3);padding:.8rem 1rem;text-align:center}
.xs-8ac22a9c{text-align:center;margin:.4rem 0}
.xs-8ae30be7{width:100%;border-radius:2px;background:#000;display:block}
.xs-8b2bda47{padding:.5rem 1.5rem}
.xs-8b66f60b{padding:.8rem}
.xs-8c49e7d1{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}
.xs-8c92abea{max-width:120px}
.xs-8cec7ae9{font-size:3rem;margin-bottom:1rem}
.xs-8db8d854{width:80px}
.xs-8e8fc080{opacity:.65;font-size:.85rem;margin-bottom:1rem}
.xs-8e991424{display:inline;margin-left:1rem}
.xs-8f706773{background:#a8b8e0}
.xs-90562658{margin-left:auto;display:flex;gap:.3rem}
.xs-9093a165{display:flex;flex-wrap:wrap;gap:.8rem;align-items:center;margin-bottom:1rem}
.xs-910b0beb{display:block;font-size:.85rem;margin-bottom:.3rem}
.xs-923b6b31{font-size:.85rem;opacity:.7;margin-right:.4rem;white-space:nowrap}
.xs-92a42c2e{font-size:.78rem;opacity:.7}
.xs-92acf5b8{max-width:100%;max-height:120px;border-radius:4px;display:none}
.xs-9333243c{font-size:.85rem;opacity:.75;margin:.3rem 0}
.xs-97aad9ac{flex:1;min-width:120px}
.xs-9879b7a2{opacity:.7;margin-bottom:1.2rem}
.xs-997b27e0{font-size:.85rem;opacity:.65;margin:.2rem 0 .8rem}
.xs-9ae3503e{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.5rem}
.xs-9afa7f62{width:90px;font-size:.85rem}
.xs-9e2979b6{display:inline-flex;gap:.35rem;align-items:center}
.xs-9e603ace{font-size:.8rem;opacity:.65}
.xs-a0860709{display:flex;gap:.3rem;margin-top:.5rem;align-items:center}
.xs-a0f1b92d{background:#f48fb1}
.xs-a17a5c92{font-size:.85rem;opacity:.7;white-space:nowrap}
.xs-a19b80a3{background:rgba(255,255,255,.03);padding:1rem;border-radius:4px;border:1px solid rgba(255,255,255,.06);max-width:600px;margin-bottom:1.5rem}
.xs-a1a5f824{display:flex;align-items:center;gap:.5rem;padding:.35rem .5rem;background:rgba(255,255,255,.03);border-radius:3px;font-size:.85rem}
.xs-a25a4a37{margin-bottom:1.5rem;padding:1rem;background:rgba(255,255,255,.02);border-radius:6px}
.xs-a3733402{padding:.3rem 1rem .6rem;border-top:none}
.xs-a4202b87{border-color:rgba(255,255,255,.08);margin:.6rem 0}
.xs-a4dd691d{background:#9b7fd4}
.xs-a61a1f4c{opacity:.6;font-size:.88rem}
.xs-a6ff6002{position:absolute;top:0;left:0;width:100%;height:100%;border:0}
.xs-a7008d9d{display:none;background:rgba(255,255,255,.02)}
.xs-a7c22f08{margin:.5rem 0 0;opacity:.7;font-size:.9rem}
.xs-a80092e0{max-width:480px}
.xs-a834cd91{display:flex;gap:.4rem;flex-shrink:0}
.xs-a84fa730{font-size:.85rem;opacity:.7;margin-bottom:1.2rem}
.xs-aaa62a92{margin-top:1rem;font-size:.78rem;opacity:.45}
.xs-aad64e1e{width:150px;display:inline-block}
.xs-ab7f5433{font-size:.85rem;opacity:.5}
.xs-ab88d28c{flex:1;min-width:100px}
.xs-ae18a06a{max-width:420px}
.xs-ae32a1f2{font-size:.85rem;margin-bottom:.5rem;opacity:.7}
.xs-af142e89{font-size:.8rem;opacity:.6;margin-bottom:.5rem}
.xs-af6a85f5{display:inline;margin-left:.3rem}
.xs-b1baf7fa{display:inline-block;vertical-align:middle;margin-left:.5rem}
.xs-b366ca5c{margin-bottom:.8rem;font-size:1.1rem;margin-top:2rem}
.xs-b38b2a7e{opacity:.8;padding-left:1.5rem}
.xs-b3c1d7a1{margin:0;font-size:1.4rem}
.xs-b449c1f6{background:#7c8fc4}
.xs-b472e2ec{font-size:.85rem;margin-top:.5rem}
.xs-b5df2325{color:inherit}
.xs-b5e96c80{background:#ff9800}
.xs-b5fe91df{background:#1c1410}
.xs-b76e6636{margin-bottom:1.5rem;opacity:.7;font-size:.9rem}
.xs-b98e736e{margin:1rem 0}
.xs-b995c83d{max-width:860px}
.xs-ba62232d{font-size:.85rem;opacity:.7;margin-bottom:.6rem}
.xs-bc9c89f9{font-size:2rem;text-align:center;margin-bottom:.5rem}
.xs-bcba4ebb{border-color:#f38ba8}
.xs-beba3451{margin:.4rem 0 .2rem 0;font-size:.85rem}
.xs-bf443334{background:#c4b5e0}
.xs-c0415562{background:var(--bg-color,#16161f);padding:1rem;border-radius:4px;overflow-x:auto;font-size:.82rem}
.xs-c1c4e59e{min-width:240px}
.xs-c2082b85{font-size:1.1rem;margin-bottom:1rem}
.xs-c2697a12{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center;margin-top:.3rem}
.xs-c2d6b7a7{display:grid;gap:1rem;max-width:800px}
.xs-c43379a8{background:#6c8ebf22;color:#6c8ebf;border:1px solid #6c8ebf44}
.xs-c5f61a20{display:flex;align-items:flex-start;gap:.6rem;cursor:pointer;padding:.6rem .8rem;border-radius:4px;background:rgba(255,255,255,.04);transition:background .2s}
.xs-c63fb05f{margin-top:.8rem;display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}
.xs-c65ff88e{opacity:.6;text-align:center;padding:2rem}
.xs-c6a473a1{display:none;margin-top:.4rem}
.xs-c7cfd4e9{margin:.3rem 0 0;font-size:.85rem;opacity:.7}
.xs-c849cda1{text-align:center;padding:3rem 1rem;opacity:.6}
.xs-c8520a1b{font-size:.9rem;opacity:.75;margin:0}
.xs-c9bccc20{display:flex;flex-direction:column;gap:.4rem;margin-bottom:.5rem}
.xs-ca0b7adf{color:var(--accent-color);padding:2px 8px;font-size:.75rem}
.xs-ca2a98f9{margin-top:.2rem;font-size:.7rem;padding:2px 6px}
.xs-ca70c524{padding:.4rem .6rem;background:var(--card-bg);border:1px solid var(--border-color);border-radius:2px;font-size:.82rem}
.xs-caca5bd0{color:#e06060;border-color:#e06060}
.xs-cae6c07f{font-size:.85rem;opacity:.7}
.xs-cb7f1cc0{background:#1a0e08}
.xs-cb82926d{opacity:.7;font-size:.85rem;white-space:nowrap}
.xs-cdad5dea{margin:1.25rem 0 .6rem}
.xs-cdc32f1d{background:#1a3d1a;border:2px solid #2d5a2d;padding:1rem;margin-bottom:1rem;border-radius:3px}
.xs-cf9931d1{display:none;margin-left:1.2rem;margin-bottom:.3rem}
.xs-cfe25953{background:rgba(255,255,255,.04);padding:1.2rem;border-radius:6px;border:1px solid rgba(255,255,255,.08)}
.xs-d05fed52{max-width:200px;font-size:.85rem}
.xs-d134cca6{background:#e91e63}
.xs-d13e16a3{width:100%;margin-top:1rem}
.xs-d3ac492a{display:flex;flex-direction:column;gap:.6rem;margin-top:1rem}
.xs-d43bab2c{padding:2rem;text-align:center;background:var(--card-bg);border:1px solid var(--border-color);border-radius:2px;margin-top:1rem}
.xs-d4af0a19{max-width:500px;resize:vertical}
.xs-d53709a2{background:rgba(0,200,150,.04);padding:1.2rem;border-radius:6px;border:1px solid rgba(0,200,150,.12)}
.xs-d53a2dbb{font-size:1.3rem;margin:0 0 .5rem}
.xs-d564c702{background:rgba(255,152,0,.15);color:#ff9800;font-size:.7rem}
.xs-d69f886a{margin-top:.5rem;width:100%;max-width:960px}
.xs-d6d16b91{opacity:.8;margin:.4rem 0 .8rem;font-size:.9rem}
.xs-d7a4426b{display:flex;align-items:center;gap:.5rem;margin-bottom:.4rem}
.xs-d9314603{opacity:.7;margin-left:.5rem}
.xs-da712e62{text-align:center;margin-bottom:.8rem}
.xs-dcfda063{font-size:.85rem;opacity:.7;margin-bottom:1rem}
.xs-dd478b45{display:flex;gap:.3rem;flex-wrap:wrap}
.xs-de56f9d1{display:block;opacity:.5;font-size:.75rem}
.xs-debcef92{opacity:.8;margin-bottom:1.5rem}
.xs-dee1c059{opacity:.7;margin-bottom:.8rem;font-size:.9rem}
.xs-dfefc13a{margin-top:.3rem;max-height:180px;overflow-y:auto;border:1px solid rgba(255,255,255,.1);border-radius:4px;display:none}
.xs-e0d3d076{display:flex;align-items:center;gap:.5rem;cursor:pointer;padding:.4rem .6rem;border-radius:4px;background:rgba(255,255,255,.04)}
.xs-e2aa803a{opacity:.8;margin-bottom:.6rem}
.xs-e3955b57{color:var(--accent-color);padding:2px 8px}
.xs-e3af0366{display:flex;justify-content:space-between;align-items:flex-start;gap:.5rem;flex-wrap:wrap}
.xs-e3c59263{margin-top:3px;flex-shrink:0}
.xs-e3ec5517{background:#f4a261}
.xs-e4c2a0a2{background:#a3c4f3}
.xs-e5bdc370{max-width:520px}
.xs-e5faabfc{cursor:pointer;opacity:.85;font-size:.85rem}
.xs-e680e924{color:#6ad46a}
.xs-e6f52802{display:none;margin-top:1rem;background:rgba(255,255,255,.04);border-radius:6px;padding:1rem}
.xs-e8fa4c85{opacity:.7;font-size:.88rem;margin-bottom:1rem}
.xs-eacad5c3{text-align:center;margin-bottom:1.2rem}
.xs-eb10b175{padding:.4rem .6rem;opacity:.6;font-size:.85rem}
.xs-ec59b4b8{opacity:.4}
.xs-ec5f3c3c{display:flex;flex-direction:column;gap:.8rem;margin-bottom:1rem}
.xs-eceae53c{background:#b87333}
.xs-ecf38de4{font-size:.78rem;opacity:.5}
.xs-ed6e5204{font-size:.85rem;display:flex;align-items:center;gap:.4rem}
.xs-edda02dc{max-width:100%;height:auto;border:1px solid var(--border-color);border-radius:2px}
.xs-ee4fbb50{padding:.5rem 0}
.xs-ee5186f7{background:none;border:none;color:var(--text);opacity:.7;cursor:pointer;font-size:.9rem;text-decoration:underline}
.xs-ee8e6233{margin-top:1rem;text-align:center}
.xs-efc5d092{font-size:.82rem;opacity:.6;margin-top:.5rem}
.xs-f0135b40{display:block;margin-top:.6rem}
.xs-f1278614{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.xs-f1391216{opacity:.65;font-size:.75rem}
.xs-f18de1cf{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}
.xs-f1d1cb6f{display:flex;gap:.5rem;margin-top:1rem}
.xs-f3037375{display:flex;gap:.5rem;margin-bottom:.6rem}
.xs-f4be4375{opacity:.7;font-size:.85rem;margin-bottom:.5rem}
.xs-f62f3d6d{color:#e76f51}
.xs-f6bc3603{background:#ffd70022;color:#ffd700;border:1px solid #ffd70044}
.xs-f7fd6918{background:#1a1428}
.xs-f819b2f9{padding:.5rem .75rem;margin-top:.4rem;border-radius:2px;border:1px solid rgba(230,126,34,.3);background:rgba(230,126,34,.08);font-size:.85rem;max-width:500px}
.xs-f8442a38{display:flex;flex-direction:column;gap:.5rem;margin-top:.4rem}
.xs-f95ebd2a{width:70px}
.xs-f961af0f{font-size:.85rem;opacity:.85;margin:0;padding-left:1.2rem;line-height:1.8}
.xs-f9e8563d{display:inline-flex;gap:.4rem;align-items:center}
.xs-fbe98428{font-size:.9rem;opacity:.85;margin-bottom:.75rem}
.xs-fc3c17e9{font-size:.7rem;background:rgba(74,158,95,.15);color:#4a9e5f;padding:1px 6px;border-radius:2px;margin-left:.3rem;font-weight:700;vertical-align:middle}
.xs-fc53e4e1{font-size:.82rem;opacity:.6}
.xs-fd99009e{background:#0f1e12}
.xs-fe23a88b{font-size:1.1rem;margin-bottom:.4rem}
.xs-ff65788c{max-width:280px}
/* ── Additional utility classes for conditional styles */
.u-ml3{margin-left:3rem}
.u-disabled{opacity:.4;pointer-events:none}
.source-notice{flex-shrink:0;text-align:right;padding:12px;font-size:.75rem}

/* ============================================================
   Mobile UX improvements
   ──────────────────────────────────────────────────────────
   Targeted polish for phones / narrow viewports.  All rules
   are scoped to ≤768px (or narrower) and never affect the
   desktop layout.
   ============================================================ */

/* Use the dynamic-viewport unit on browsers that support it so
   the mobile sidebar drawer doesn't get clipped by mobile browser
   chrome (Safari address bar etc.).  The `.sidebar{height:100dvh}`
   rule MUST stay scoped to the mobile drawer breakpoint: on desktop
   the sidebar is a flex child of `.layout` and should size to the
   layout's used height: `100dvh` resolves to the viewport instead,
   which pushes the chat-links section (Kanban, Canvas, Chats, …)
   off-screen and was the real reason "enabled plugins don't show
   up" on desktop installs with a long page list. */
@supports (height: 100dvh) {
    @media (max-width:768px){
        .sidebar{height:calc(100dvh - var(--bw-topbar-height,50px))}
    }
    .canvas-workspace{height:calc(100dvh - 180px)}
    .kanban-board-page{min-height:calc(100dvh - 60px)}
}

/* Favicon library grid */
.favicon-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:.6rem;margin-top:.3rem}
.favicon-card{position:relative;display:flex;flex-direction:column;align-items:center;gap:.25rem;padding:.6rem .4rem;background:var(--card-bg);border:2px solid rgba(255,255,255,.08);border-radius:6px;cursor:pointer;transition:border-color .15s,background .15s;user-select:none}
.favicon-card:hover{border-color:var(--primary-color,#8fa0d4);background:rgba(143,160,212,.06)}
.favicon-card.favicon-card-selected{border-color:var(--primary-color,#8fa0d4);background:rgba(143,160,212,.12)}
.favicon-card.disabled{opacity:.5;pointer-events:none}
.favicon-card-img{width:48px;height:48px;display:flex;align-items:center;justify-content:center;border-radius:4px}
.favicon-card-img img{width:32px;height:32px;image-rendering:pixelated;border-radius:2px}
.favicon-card-label{font-size:.72rem;text-align:center;line-height:1.2;opacity:.8;word-break:break-all;max-width:100%}
.favicon-card-badge{font-size:.6rem;padding:.1rem .35rem;border-radius:3px;background:rgba(255,255,255,.08);text-transform:uppercase;letter-spacing:.3px;opacity:.6}
.favicon-card-badge-custom{background:rgba(110,138,202,.25);opacity:.8}
.favicon-card-check{position:absolute;top:-6px;right:-6px;width:22px;height:22px;border-radius:50%;background:var(--primary-color,#8fa0d4);color:#fff;font-size:.75rem;display:flex;align-items:center;justify-content:center;font-weight:700;box-shadow:0 2px 6px rgba(0,0,0,.3);z-index:2}
.favicon-card-del{position:absolute;top:-6px;left:-6px;width:22px;height:22px;border-radius:50%;background:#e05050;color:#fff;font-size:.65rem;display:none;align-items:center;justify-content:center;border:none;cursor:pointer;box-shadow:0 2px 6px rgba(0,0,0,.3);line-height:1;padding:0;z-index:2}
.favicon-card-custom:hover .favicon-card-del{display:flex}
.favicon-card-drag{position:absolute;bottom:2px;right:2px;font-size:.8rem;cursor:grab;opacity:.3;padding:2px 4px;border-radius:2px;user-select:none;display:none}
.favicon-card-custom:hover .favicon-card-drag{display:block}
.favicon-card-custom:hover .favicon-card-drag:hover{opacity:.7;background:rgba(255,255,255,.08)}
.favicon-card-dragging{opacity:.4;border-style:dashed}
.favicon-card-add{justify-content:center;background:rgba(255,255,255,.03);border-style:dashed;border-color:rgba(255,255,255,.15)}
.favicon-card-add:hover{background:rgba(143,160,212,.08);border-color:var(--primary-color,#8fa0d4)}
.favicon-card-add-icon{font-size:1.8rem;opacity:.4;line-height:1}
.favicon-current-badge{display:inline-flex;align-items:center;gap:.5rem;margin-left:.3rem;margin-top:.2rem;padding:.3rem .6rem;background:var(--card-bg);border:1px solid rgba(255,255,255,.1);border-radius:4px;font-size:.85rem}
.favicon-current-badge img{width:32px;height:32px;image-rendering:pixelated}

/* ── Canvas */
.canvas-workspace{position:relative;border:1px solid var(--secondary);border-radius:8px;overflow:hidden;background:var(--bg);min-height:500px;display:flex;flex-direction:column;height:calc(100vh - 180px)}
.canvas-toolbar{display:flex;gap:4px;padding:8px;background:var(--secondary);flex-wrap:nowrap;align-items:center;overflow-x:auto}
.canvas-toolbar-sep{width:1px;height:24px;background:var(--text);opacity:.2;margin:0 4px;flex-shrink:0}
.canvas-toolbar-icon-btn{min-width:2rem;padding-left:.4rem!important;padding-right:.4rem!important;flex-shrink:0}
.canvas-layer-group{display:inline-flex;gap:2px;flex-shrink:0}
.canvas-status{font-size:.75rem;opacity:.6;margin-left:auto}
.canvas-container{position:relative;width:100%;flex:1;min-height:0;overflow:hidden;cursor:grab}
.canvas-container:active{cursor:grabbing}
.canvas-container.canvas-drop-over{outline:2px dashed var(--accent);outline-offset:-4px;background:rgba(255,255,255,.02)}
.canvas-nodes,.canvas-edges-svg{position:absolute;top:0;left:0;width:100%;height:100%;transform-origin:0 0;pointer-events:none}
.canvas-nodes{pointer-events:none}
.canvas-edges-svg{pointer-events:none;width:20000px;height:20000px;overflow:visible}
/* Edge styles */
.canvas-edge-line{stroke:var(--accent);stroke-width:2;fill:none;cursor:pointer;transition:stroke-width .15s;pointer-events:auto}
.canvas-edge-line:hover{stroke-width:3}
.canvas-edge-selected{stroke-width:4;filter:drop-shadow(0 0 2px rgba(0,0,0,.4))}
.canvas-edge-hit{stroke:transparent;stroke-width:24;fill:none;cursor:pointer;pointer-events:auto}
.canvas-arrowhead-fill{fill:var(--accent)}
.canvas-edge-connecting{stroke:var(--accent);stroke-width:2;stroke-dasharray:8 4;opacity:.6}
.canvas-edge-label{fill:var(--text);font-weight:600;text-anchor:middle;dominant-baseline:middle;paint-order:stroke;stroke:var(--bg);stroke-width:3px;cursor:pointer;pointer-events:auto}
.canvas-edge-size-control{display:inline-flex;align-items:center;gap:4px;flex-shrink:0;font-size:.78rem;opacity:.85}
.canvas-edge-size-label{white-space:nowrap}
.canvas-edge-size-input{width:4.5rem;padding:2px 6px;height:auto;font-size:.85rem}
/* Node styles */
.canvas-node{position:absolute;min-width:0;min-height:0;background:var(--secondary);border:2px solid var(--accent);border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,.2);transition:box-shadow .15s,border-color .15s;pointer-events:auto;display:flex;flex-direction:column;overflow:hidden;box-sizing:border-box}
.canvas-node:hover{box-shadow:0 4px 16px rgba(0,0,0,.3)}
.canvas-node-selected{outline:2px solid var(--text);outline-offset:2px}
.canvas-node-resizing,.canvas-node-dragging{transition:none;will-change:width,height,left,top}
.canvas-interacting .canvas-node:not(.canvas-node-resizing):not(.canvas-node-dragging){transition:none}
.canvas-interacting .canvas-node:not(.canvas-node-resizing):not(.canvas-node-dragging):hover{box-shadow:0 2px 8px rgba(0,0,0,.2)}
.canvas-node-connecting-from{border-color:#4caf50;box-shadow:0 0 12px rgba(76,175,80,.5);animation:canvas-pulse 1.2s ease-in-out infinite}
@keyframes canvas-pulse{0%,100%{box-shadow:0 0 8px rgba(76,175,80,.4)}50%{box-shadow:0 0 20px rgba(76,175,80,.7)}}
.canvas-node{--canvas-node-font-size:13px}
.canvas-node-header{padding:6px 10px;font-weight:600;font-size:var(--canvas-node-font-size);cursor:move;border-bottom:1px solid rgba(255,255,255,.1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0}
.canvas-node-body{padding:8px 10px;font-size:var(--canvas-node-font-size);overflow:auto;word-wrap:break-word;flex:1;min-height:0}
.canvas-node-text>.canvas-node-body{white-space:pre-wrap;overflow-wrap:break-word}
.canvas-node-image>.canvas-node-body,.canvas-node-video>.canvas-node-body,.canvas-node-wiki_page>.canvas-node-body,.canvas-node-code>.canvas-node-body{display:flex;flex-direction:column}
.canvas-node-body img{max-width:100%;border-radius:4px}
.canvas-node-img{display:block;flex:1 1 auto;min-height:0;width:100%;max-width:100%;max-height:100%;height:auto;object-fit:contain;user-select:none;-webkit-user-drag:none}
.canvas-node-img-error{font-size:.78rem;opacity:.75;margin-bottom:4px}
.canvas-node-body a{color:var(--accent);text-decoration:underline}
.canvas-node-body pre{background:rgba(0,0,0,.3);padding:6px;border-radius:4px;overflow:auto;font-size:.78rem;margin:0}
.canvas-node-code>.canvas-node-body>pre{flex:1 1 auto;min-height:0}
.canvas-node-body .codehilite{background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.08);border-radius:4px;overflow:auto;flex:1 1 auto;min-height:0}
.canvas-node-body .codehilite pre{margin:0;padding:6px;background:none;border:none}
.canvas-node-body .codehilite .c,.canvas-node-body .codehilite .c1,.canvas-node-body .codehilite .cm,.canvas-node-body .codehilite .ch,.canvas-node-body .codehilite .cp{color:#7f848e;font-style:italic}
.canvas-node-body .codehilite .k,.canvas-node-body .codehilite .kc,.canvas-node-body .codehilite .kd,.canvas-node-body .codehilite .kn,.canvas-node-body .codehilite .kp,.canvas-node-body .codehilite .kr,.canvas-node-body .codehilite .ow{color:#c678dd;font-weight:700}
.canvas-node-body .codehilite .nb,.canvas-node-body .codehilite .bp{color:#e5c07b}
.canvas-node-body .codehilite .nf,.canvas-node-body .codehilite .fm{color:#61afef}
.canvas-node-body .codehilite .nc,.canvas-node-body .codehilite .nn,.canvas-node-body .codehilite .nt{color:#56b6c2}
.canvas-node-body .codehilite .na,.canvas-node-body .codehilite .nv,.canvas-node-body .codehilite .m,.canvas-node-body .codehilite .mi,.canvas-node-body .codehilite .mf,.canvas-node-body .codehilite .mh,.canvas-node-body .codehilite .mo,.canvas-node-body .codehilite .mb{color:#d19a66}
.canvas-node-body .codehilite .s,.canvas-node-body .codehilite .s1,.canvas-node-body .codehilite .s2,.canvas-node-body .codehilite .sa,.canvas-node-body .codehilite .sb,.canvas-node-body .codehilite .sc,.canvas-node-body .codehilite .dl,.canvas-node-body .codehilite .sd{color:#98c379}
.canvas-node-wiki-title{margin-bottom:6px;flex-shrink:0}
.canvas-node-wiki-preview{flex:1 1 auto;min-height:0;overflow:auto;border-top:1px dashed rgba(255,255,255,.15);padding-top:6px}
.canvas-node-actions{display:flex;gap:4px;padding:4px 8px;justify-content:flex-end;flex-shrink:0}
.canvas-node-deleted{opacity:.5;border-color:#e74c3c}
.canvas-description{opacity:.7;margin:0 0 8px}
.canvas-view-page>.page-header{flex-wrap:wrap}
.canvas-view-page>.page-header h1{flex-basis:100%}
.canvas-header-actions{display:flex;gap:4px;flex-wrap:wrap}
.canvas-share-section h3{margin-top:16px;font-size:.95rem}
.canvas-share-section .form-group{margin-bottom:8px}
.table-mini{width:100%;font-size:.85rem;border-collapse:collapse}
.table-mini th,.table-mini td{padding:6px 8px;border-bottom:1px solid var(--secondary);text-align:left}
.canvas-video-wrapper{position:relative;width:100%;flex:1 1 auto;min-height:0;overflow:hidden;border-radius:4px}
.canvas-video-iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0}
.canvas-node::before{content:'';position:absolute;bottom:-2px;right:-2px;width:10px;height:10px;border-right:2px solid var(--accent);border-bottom:2px solid var(--accent);border-radius:0 0 3px 0;opacity:0;transition:opacity .15s;pointer-events:none;z-index:5}
.canvas-node:hover::before{opacity:.5}
.canvas-node.canvas-node-colored{border-color:var(--node-color);box-shadow:inset 5px 0 0 0 var(--node-color),0 2px 8px rgba(0,0,0,.2)}
.canvas-node.canvas-node-colored:hover{border-color:var(--node-color);box-shadow:inset 5px 0 0 0 var(--node-color),0 4px 16px rgba(0,0,0,.3)}
.canvas-node.canvas-node-colored .canvas-node-header{padding-left:7px;border-bottom-color:var(--node-color)}
.canvas-node.canvas-node-colored .canvas-node-actions{padding-left:7px}
.canvas-node-color-picker{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.canvas-node-color-btn{width:26px;height:26px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0;font-size:.7rem;line-height:22px;text-align:center}
.canvas-node-color-none{background:var(--secondary);border-color:var(--border);color:var(--text)}
.canvas-node-color-active{border-color:var(--text)!important;box-shadow:0 0 0 2px var(--bg),0 0 0 4px var(--text)}
.canvas-node-size-row{display:flex;gap:6px;align-items:center}
.canvas-node-size-input{width:100px}
.canvas-node-size-sep{opacity:.5;font-size:1.1rem}
.canvas-wiki-results{max-height:180px;overflow-y:auto;border-radius:4px;margin-top:4px}
.canvas-wiki-result-item{padding:6px 10px;cursor:pointer;font-size:.85rem;background:var(--secondary);border-bottom:1px solid rgba(255,255,255,.05)}
.canvas-wiki-result-item:hover{background:var(--accent);color:var(--bg)}
.canvas-wiki-no-result{opacity:.5;cursor:default}
.canvas-wiki-no-result:hover{background:var(--secondary);color:inherit}
.canvas-wiki-selected{display:block;margin-top:6px;opacity:.7;font-size:.8rem}
.canvas-node-edit-error{color:#c45c6a;opacity:1}
.node-field{display:none}
/* Node edit modal tabs (desktop: hidden, mobile: shown) */
.canvas-node-edit-tabs{display:none}

/* ── Canvas overflow menu (desktop) ── */
.canvas-toolbar-overflow{position:relative;display:inline-flex}
.canvas-toolbar-overflow-btn{display:none}
.canvas-toolbar-overflow-menu{position:absolute;top:100%;right:0;margin-top:4px;background:var(--secondary,#1e1e2c);border:1px solid rgba(255,255,255,.12);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.45);z-index:100;min-width:160px;padding:.35rem 0;display:none}
.canvas-toolbar-overflow-menu.open{display:block}
.canvas-toolbar-overflow-menu .btn{width:100%;text-align:left;border-radius:0;padding:.4rem .7rem;font-size:.85rem;background:none;border:none;color:var(--text);display:flex;align-items:center;gap:.4rem;cursor:pointer}
.canvas-toolbar-overflow-menu .btn:hover{background:rgba(255,255,255,.08)}
.canvas-toolbar-overflow-menu .canvas-toolbar-sep-line{height:1px;background:rgba(255,255,255,.1);margin:.25rem 0}
.canvas-header-overflow{position:relative;display:inline-flex}
.canvas-header-overflow-btn{display:none}
.canvas-header-overflow-menu{position:absolute;top:100%;right:0;margin-top:4px;background:var(--secondary,#1e1e2c);border:1px solid rgba(255,255,255,.12);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.45);z-index:100;min-width:160px;padding:.35rem 0;display:none}
.canvas-header-overflow-menu.open{display:block}
.canvas-header-overflow-menu .btn{width:100%;text-align:left;border-radius:0;padding:.4rem .7rem;font-size:.85rem;background:none;border:none;color:var(--text);display:flex;align-items:center;gap:.4rem;cursor:pointer}
.canvas-header-overflow-menu .btn:hover{background:rgba(255,255,255,.08)}
.canvas-header-overflow-menu .canvas-toolbar-sep-line{height:1px;background:rgba(255,255,255,.1);margin:.25rem 0}
/* Node context menu (works on both desktop and mobile) */
.canvas-context-menu{position:fixed;z-index:200;background:var(--secondary,#1e1e2c);border:1px solid rgba(255,255,255,.12);border-radius:10px;box-shadow:0 8px 28px rgba(0,0,0,.5);padding:.3rem 0;min-width:180px;display:none}
.canvas-context-menu.open{display:block}
.canvas-context-menu-item{display:flex;align-items:center;gap:.6rem;padding:.55rem .8rem;cursor:pointer;font-size:.88rem;color:var(--text);border:none;background:none;width:100%;text-align:left}
.canvas-context-menu-item:hover{background:rgba(255,255,255,.08)}
.canvas-context-menu-item.danger{color:#e74c3c}
.canvas-context-menu-sep{height:1px;background:rgba(255,255,255,.1);margin:.25rem 0}
.canvas-context-menu-item-icon{width:20px;text-align:center;font-size:1rem;opacity:.7}
/* Node edit modal tabs */
.canvas-node-edit-tabs{display:none}

/* ── Phones (≤768px) */
@media (max-width:768px){
    :root{--bw-topbar-height:48px}
    /* Tighter content padding so the wiki body and edit form
       have more breathing room horizontally. */
    .content{padding:1.15rem 1.35rem 1.4rem}

    /* Keep the mobile topbar to one row. The action strip scrolls inside the
       remaining space instead of wrapping underneath the site name. */
    .topbar{min-height:48px;padding:.35rem .75rem;flex-wrap:nowrap;align-items:center;gap:.55rem;background:var(--secondary);box-shadow:0 1px 0 rgba(255,255,255,.04);overflow:visible}
    .topbar-left{gap:.45rem;flex:0 1 auto;min-width:0;max-width:none}
    .topbar-left .logo{font-size:1rem;padding:.32rem .35rem .32rem 0;overflow:hidden;text-overflow:ellipsis;max-width:min(13rem,42vw);min-width:0;background:transparent;border:0;border-radius:4px}
    .topbar-page-title{display:inline-block;font-size:.9rem;max-width:28vw;padding-left:.45rem;margin-left:.1rem}
    .topbar-right{align-self:stretch;align-items:center;flex:0 0 auto;flex-wrap:nowrap;gap:.25rem;justify-content:flex-end;margin-left:0;min-width:0;overflow:hidden;padding-bottom:.05rem}
    .topbar-right > .btn:not(.mobile-account-menu-toggle),.topbar-right > form{flex:1 1 0;min-width:0}
    .topbar-user-cluster{flex:0 1 auto}
    .topbar-right .btn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    .public-notice,.banana-mode-banner{font-size:.78rem;padding:.4rem .7rem}

    /* Wiki content readability on phones: smaller headings, allow
       long words / URLs to wrap, let pre blocks scroll horizontally
       at a comfortable padding. */
    .wiki-content{font-size:1rem;line-height:1.8;overflow-wrap:break-word;word-wrap:break-word}
    .wiki-content h1{font-size:1.7rem;margin:1.05rem 0 .65rem}
    .wiki-content h2{font-size:1.38rem;margin:1rem 0 .6rem}
    .wiki-content h3{font-size:1.15rem;margin:.8rem 0 .45rem}
    .wiki-content pre{padding:.65rem .75rem;font-size:.82rem;border-radius:5px}
    .wiki-content code{font-size:.82rem;word-break:break-word}
    .preview-content{font-size:.92rem;overflow-wrap:break-word;word-wrap:break-word}
    .preview-content h1{font-size:1.35rem}
    .preview-content h2{font-size:1.15rem}
    .preview-content h3{font-size:1rem}
    .preview-content pre{padding:.55rem .7rem;font-size:.8rem}

    .page-header{margin-bottom:1rem;align-items:center}
    .page-header h1{font-size:1.65rem;line-height:1.25;width:auto;margin-bottom:0}
    .page-header form{display:inline-flex;max-width:100%}

    /* Sequential page navigation: stack on phones so the
       full title of each link is readable. */
    .page-seq-nav{flex-direction:row;align-items:center;gap:1rem;margin-top:2rem}
    .page-seq-nav .page-seq-prev,
    .page-seq-nav .page-seq-next{margin:0;max-width:48%;text-align:inherit}

    /* ── Edit mode: tab switcher between Edit / Preview ──
       On phones we replace the always-stacked split-pane with
       a tab switcher so each pane gets the full screen.  The
       tab buttons are toggled by `js/main.js → initEditorMobileTabs`. */
    .editor-mobile-tabs{display:flex;gap:.4rem;margin-bottom:.5rem}
    .editor-mobile-tabs .editor-mobile-tab{flex:1;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);color:var(--text);padding:.5rem .8rem;border-radius:6px;font-size:.88rem;font-weight:600;cursor:pointer;min-height:40px}
    .editor-mobile-tabs .editor-mobile-tab[aria-selected="true"]{background:var(--primary);color:#0d0d14;border-color:var(--primary)}
    .editor-container{min-height:auto;height:auto;flex-direction:column;border-radius:6px}
    .editor-container .editor-pane,
    .editor-container .preview-pane{flex:1 1 auto;min-height:0}
    .editor-container.editor-mobile-show-edit .preview-pane,
    .editor-container.editor-mobile-show-preview .editor-pane{display:none}
    .editor-container.editor-mobile-show-edit .editor-divider,
    .editor-container.editor-mobile-show-preview .editor-divider{display:none}
    .editor-container.editor-mobile-show-edit .editor-pane,
    .editor-container.editor-mobile-show-preview .preview-pane{display:flex}
    .editor-area{min-height:55vh;min-height:55dvh;font-size:1rem;padding:.7rem .85rem;line-height:1.65}
    .preview-content{min-height:55vh;min-height:55dvh}
    .editor-resize-handle{display:none}
    .editor-pane-header{font-size:.7rem;padding:.35rem .7rem}

    /* Editor toolbar: single horizontal scroll strip with
       roomier touch targets. */
    .editor-toolbar{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding:.3rem .5rem;gap:.25rem;scrollbar-width:thin}
    .editor-toolbar::-webkit-scrollbar{height:4px}
    .editor-toolbar::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);border-radius:2px}
    .editor-toolbar button{flex-shrink:0;min-height:36px;min-width:36px;padding:.4rem .55rem;font-size:.88rem}
    .editor-toolbar .sep{height:24px;margin:0 .15rem;flex-shrink:0}

    #editForm .form-actions{position:sticky;bottom:0;z-index:30;margin:1rem -.9rem 0;padding:.6rem .9rem calc(.6rem + env(safe-area-inset-bottom));background:var(--bg);border-top:1px solid rgba(255,255,255,.08);box-shadow:0 -2px 10px rgba(0,0,0,.18)}
    .draft-notice,.reservation-notice{font-size:.85rem}

    /* ── Wiki content tables/admin tables now wrap-friendly ── */
    .wiki-content blockquote{padding:.4rem .7rem;font-size:.92rem}

    /* ── Kanban: swipeable near-fullwidth columns ── */
    .kanban-board-page{min-height:calc(100vh - 60px)}
    .kanban-board-header{flex-direction:column;align-items:stretch;gap:.6rem;padding-bottom:.7rem}
    .kanban-board-header h1,
    .kanban-board-header #board-title{font-size:1.25rem;line-height:1.25;margin:0}
    .kanban-board-header > div:last-child,
    .kanban-board-header .xs-143bb0f8{display:flex;flex-wrap:wrap;gap:.4rem}
    .kanban-columns-container{gap:.6rem;padding-bottom:.6rem;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scroll-behavior:smooth}
    .kanban-column,
    .kanban-add-column{min-width:min(85vw,320px);max-width:min(85vw,320px);width:min(85vw,320px);scroll-snap-align:start;scroll-snap-stop:always}
    .kanban-column-placeholder{min-width:min(85vw,320px);max-width:min(85vw,320px);width:min(85vw,320px)}
    .kanban-column-header{padding:.6rem .75rem}
    .kanban-tickets{padding:.55rem;gap:.5rem}
    .kanban-ticket{padding:.65rem .75rem;min-height:48px}
    .kanban-ticket-title{font-size:.93rem;line-height:1.4}
    .kanban-add-ticket-btn{padding:.55rem;font-size:.88rem;min-height:40px}
    /* Bottom-sheet style modals on phones: full width, slide up from
       the bottom, take the bottom safe-area into account so the
       primary action button is reachable without scrolling. */
    .kanban-modal-overlay{padding:0;align-items:flex-end}
    .kanban-modal{padding:1rem;width:100%;max-width:100%;max-height:90dvh;border-radius:10px 10px 0 0;margin:0;padding-bottom:calc(1rem + env(safe-area-inset-bottom))}
    .kanban-modal-lg{max-width:100%}
    .kanban-modal-header{margin-bottom:.6rem;font-size:.95rem;position:sticky;top:0;background:var(--card-color,#1e1e2c);z-index:2;padding-bottom:.4rem;margin-left:-1rem;margin-right:-1rem;padding-left:1rem;padding-right:1rem;padding-top:.4rem;margin-top:-1rem}
    .kanban-modal-close{min-width:40px;min-height:40px;display:inline-flex;align-items:center;justify-content:center;font-size:1.6rem}
    .kanban-modal .form-group{margin-bottom:.6rem}
    .kanban-modal .u-flex-col-end-1,
    .kanban-modal .u-flex-col-end{flex-wrap:wrap;gap:.4rem}
    /* Activity log + bulk select toolbar adapt to phones. */
    .kanban-activity-panel{max-height:50vh;padding:.6rem}
    .kanban-bulk-toolbar{padding:.55rem .7rem;gap:.5rem}
    .kanban-bulk-summary{flex:1 1 100%;min-width:0;font-size:.92rem}
    .kanban-bulk-actions{width:100%}

    /* ── Canvas: wrappable toolbar, generous touch targets,
       and a height that respects the actual mobile viewport. ── */
    .canvas-workspace{height:calc(100vh - 200px);height:calc(100dvh - 200px);min-height:360px;border-radius:6px}
    .canvas-toolbar{flex-wrap:wrap;gap:.3rem;padding:.4rem .5rem;overflow-x:visible}
    .canvas-toolbar-sep{height:18px;margin:0 .2rem}
    .canvas-status{display:none}
    .canvas-header-actions{flex-wrap:wrap;gap:.4rem;width:100%}
    .canvas-view-page .page-header{flex-wrap:wrap}
    .canvas-view-page .page-header h1{width:100%;font-size:1.25rem;margin-bottom:.2rem}
    /* Larger corner resize indicator on touch for easier grabbing. */
    .canvas-node::before{width:14px;height:14px}
    /* Mobile toolbar: hide secondary controls, show overflow menu */
    .canvas-toolbar .canvas-toolbar-secondary{display:none}
    .canvas-toolbar .canvas-toolbar-overflow-btn{display:inline-flex}
    /* Mobile header: collapse into kebab menu */
    .canvas-header-actions .canvas-header-overflow-btn{display:inline-flex}
    .canvas-header-actions .canvas-header-secondary{display:none}
    /* Mobile: show node edit modal tabs */
    .canvas-node-edit-tabs{display:flex}

    /* ── Canvas overflow menu (mobile toolbar + header) ── */
    .canvas-toolbar-overflow{position:relative;display:inline-flex}
    .canvas-toolbar-overflow-menu{position:absolute;top:100%;right:0;margin-top:4px;background:var(--secondary,#1e1e2c);border:1px solid rgba(255,255,255,.12);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.45);z-index:100;min-width:160px;padding:.35rem 0;display:none}
    .canvas-toolbar-overflow-menu.open{display:block}
    .canvas-toolbar-overflow-menu .btn{width:100%;text-align:left;border-radius:0;padding:.5rem .75rem;font-size:.88rem;background:none;border:none;color:var(--text);display:flex;align-items:center;gap:.5rem}
    .canvas-toolbar-overflow-menu .btn:hover{background:rgba(255,255,255,.08)}
    .canvas-toolbar-overflow-menu .canvas-toolbar-sep-line{height:1px;background:rgba(255,255,255,.1);margin:.25rem 0}
    /* Mobile bottom action bar for quick access */
    .canvas-mobile-bottombar{position:fixed;bottom:0;left:0;right:0;z-index:50;display:flex;gap:.4rem;padding:.5rem .6rem calc(.5rem + env(safe-area-inset-bottom));background:var(--secondary,#1e1e2c);border-top:1px solid rgba(255,255,255,.1);box-shadow:0 -2px 12px rgba(0,0,0,.3);justify-content:space-around;align-items:center}
    .canvas-mobile-bottombar .btn{min-width:44px;min-height:44px;padding:.4rem .5rem;font-size:.78rem;display:flex;flex-direction:column;align-items:center;gap:.15rem;border:none;background:none;color:var(--text)}
    .canvas-mobile-bottombar .btn:active{background:rgba(255,255,255,.1);border-radius:8px}
    .canvas-mobile-bottombar .canvas-bottombar-icon{font-size:1.15rem;line-height:1}
    .canvas-mobile-bottombar .canvas-bottombar-label{font-size:.65rem;opacity:.7}
    .canvas-workspace{padding-bottom:60px}
    /* Node context menu (long-press) */
    .canvas-context-menu{position:fixed;z-index:200;background:var(--secondary,#1e1e2c);border:1px solid rgba(255,255,255,.12);border-radius:10px;box-shadow:0 8px 28px rgba(0,0,0,.5);padding:.3rem 0;min-width:180px;display:none}
    .canvas-context-menu.open{display:block}
    .canvas-context-menu-item{display:flex;align-items:center;gap:.6rem;padding:.6rem .85rem;cursor:pointer;font-size:.88rem;color:var(--text);border:none;background:none;width:100%;text-align:left}
    .canvas-context-menu-item:active{background:rgba(255,255,255,.1)}
    .canvas-context-menu-item.danger{color:#e74c3c}
    .canvas-context-menu-sep{height:1px;background:rgba(255,255,255,.1);margin:.25rem 0}
    .canvas-context-menu-item-icon{width:20px;text-align:center;font-size:1rem;opacity:.7}
    /* Node edit modal tabs (mobile) */
    .canvas-node-edit-tabs{display:flex;gap:.3rem;margin-bottom:.6rem;border-bottom:1px solid rgba(255,255,255,.1);padding-bottom:.4rem}
    .canvas-node-edit-tab{flex:1;padding:.45rem .3rem;font-size:.82rem;font-weight:600;text-align:center;border-radius:6px 6px 0 0;cursor:pointer;background:none;border:none;color:var(--text);opacity:.6;transition:opacity .15s}
    .canvas-node-edit-tab.active{opacity:1;background:rgba(255,255,255,.06);color:var(--accent)}
    .canvas-tab-content{display:none}
    .canvas-tab-content.active{display:block}

    /* General: confirm modal is finger-friendly. */
    #bw-confirm-modal .modal-content{width:90%;max-width:400px;border-radius:8px}

    /* Ensure the kanban board page doesn't overflow horizontally on mobile;
       the columns container already scrolls internally. */
    .kanban-board-page{overflow-x:hidden}

    /* Keep all account actions available on mobile; buttons fill available space. */
    .topbar-right{overflow:visible}
    .topbar-right .topbar-avatar-link{flex-shrink:0}

    .form-actions form{display:inline-flex;max-width:100%}
    #editForm .form-actions .btn{flex:0 1 auto}
    .kanban-bulk-actions{display:flex;flex-wrap:wrap;gap:.4rem}
    .kanban-bulk-actions .btn{flex:0 1 auto}

    /* Editor divider is thicker on mobile for easier touch dragging */
    .editor-divider{width:100%;height:10px;cursor:row-resize;min-height:10px}
    /* Unread badge is smaller on mobile */
    h1 .unread-badge{font-size:.75rem;padding:.15rem .5rem}
    /* Chat adapts to narrow screens */
    .chat-header-actions{margin-left:0;width:100%}
    .chat-messages{max-height:52vh;padding:.7rem}
    .chat-msg{max-width:90%}
    .chat-input-row{flex-direction:column;align-items:stretch}
    .chat-send-btn{width:100%}

    /* Ensure flash messages don't overflow */
    .flash{word-break:break-word}
}

/* Touch-only refinements: a few tweaks that should apply to
   any touch device regardless of viewport width. */
@media (hover:none) and (pointer:coarse){
    .canvas-node::before{width:14px;height:14px}
    .canvas-toolbar-icon-btn{min-width:36px;min-height:36px}
    .kanban-ticket{padding:.6rem .7rem}
    /* The kanban "more" menu icon is a 1.1rem character on
       hover-capable devices but easily missed on touch. */
    .kanban-column-menu-btn{padding:.3rem .55rem;font-size:1.2rem;opacity:.8}

    /* Suppress the iOS/Android 300ms double-tap-to-zoom delay on
       every clickable control inside kanban/canvas. The boards
       and the workspace already have their own zoom gestures, so
       buttons should respond instantly. */
    .kanban-ticket,
    .kanban-board-page button,
    .kanban-board-page .btn,
    .kanban-board-page .btn-sm,
    .kanban-modal-overlay button,
    .kanban-modal-overlay .btn,
    .canvas-view-page button,
    .canvas-view-page .btn,
    .canvas-view-page .btn-sm,
    .canvas-toolbar button,
    .canvas-toolbar .btn,
    .canvas-toolbar .btn-sm,
    .canvas-node-actions button,
    .canvas-node-actions .btn,
    .canvas-node-actions .btn-sm{touch-action:manipulation;-webkit-tap-highlight-color:rgba(0,0,0,0)}

    /* The "Add column" / "Add ticket" buttons are unreasonably faint
       on touch devices because their default opacity assumes a hover
       state.  Crank the resting opacity up so they read clearly. */
    .kanban-add-column-btn,
    .kanban-add-ticket-btn{opacity:.85;min-height:44px}

    /* Selecting / dragging a node on touch sometimes leaves the
       browser-default text-selection callout open: kill it so the
       node tracks the finger cleanly. */
    .canvas-node{user-select:none;-webkit-user-select:none}
    .canvas-workspace{touch-action:none}
}

/* ── Table context toolbar (appears when editing a table) ── */
.table-ctx-toolbar{position:fixed;display:flex;gap:.2rem;align-items:center;padding:.3rem .45rem;background:var(--secondary);border:1px solid rgba(255,255,255,.15);border-radius:6px;box-shadow:0 4px 16px rgba(0,0,0,.5);z-index:10002}
.table-ctx-toolbar button{min-height:26px;padding:.15rem .35rem;font-size:.75rem}
.table-ctx-toolbar .sep{width:1px;height:14px;background:rgba(255,255,255,.12);margin:0 .2rem}

/* ── / command menu (quick insert popup) */
.cmd-menu{position:fixed;background:var(--secondary);border:1px solid rgba(255,255,255,.15);border-radius:8px;padding:.35rem 0;box-shadow:0 6px 24px rgba(0,0,0,.5);z-index:10002;min-width:200px;max-height:320px;overflow-y:auto}
.cmd-menu-header{padding:.35rem .65rem .3rem;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;opacity:.45}
.cmd-menu-item{display:flex;align-items:center;gap:.5rem;padding:.4rem .65rem;cursor:pointer;font-size:.85rem;border-left:2px solid transparent;transition:background .1s,border-color .1s}
.cmd-menu-item:hover,.cmd-menu-item.highlighted{background:rgba(255,255,255,.06);border-left-color:var(--primary)}
.cmd-menu-item .cmd-menu-icon{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;font-size:.72rem;font-weight:700;background:rgba(255,255,255,.07);border-radius:4px;flex-shrink:0}

/* ── Editor status bar */
.editor-statusbar{display:flex;align-items:center;gap:.5rem;padding:.2rem .7rem;background:rgba(255,255,255,.02);border-top:1px solid rgba(255,255,255,.06);font-size:.72rem;color:rgba(255,255,255,.45)}
.editor-statusbar-sep{width:1px;height:12px;background:rgba(255,255,255,.1)}

/* ── Full-screen editor mode */
.editor-fullscreen .editor-container{position:fixed;inset:0;z-index:10000;border-radius:0;min-height:100vh;height:100vh;border:none}
.editor-fullscreen .editor-resize-handle{display:none}
.editor-fullscreen .editor-pane-header{display:flex}
.editor-fullscreen .editor-hint-row{display:none}
.editor-fullscreen .editor-io-row{display:none}
.editor-fullscreen .form-actions,.editor-fullscreen .form-group{display:none}
.editor-fullscreen .page-header h1{opacity:0;pointer-events:none}
.editor-fullscreen .drop-zone{display:none}
.editor-fullscreen .page-header .save-indicator{display:none}
.editor-fullscreen .page-header{min-height:0}

/* ── Table grid picker (insert-table popup) */
.table-grid-picker{position:fixed;background:var(--secondary);border:1px solid rgba(255,255,255,.15);border-radius:6px;padding:.5rem;box-shadow:0 4px 16px rgba(0,0,0,.5);z-index:10002}
.table-grid-body{display:grid;grid-template-columns:repeat(10,18px);gap:2px;margin-bottom:.3rem}
.table-grid-cell{width:18px;height:18px;background:rgba(255,255,255,.08);border-radius:2px;cursor:pointer;transition:background .1s}
.table-grid-cell:hover{background:rgba(255,255,255,.15)}
.table-grid-cell.selected{background:var(--primary)}
.table-grid-footer{text-align:center;font-size:.75rem;opacity:.6}

/* ── Narrow phones (≤480px) */
@media (max-width:480px){
    .content{padding:1rem 1rem 1.2rem}
    .page-header h1{font-size:1.45rem}
    .wiki-content h1{font-size:1.55rem}
    .wiki-content h2{font-size:1.25rem}
    /* Logo can shrink so the account action strip still fits. */
    .topbar-left{flex:0 1 auto;max-width:none}
    .topbar-left .logo{font-size:.95rem;letter-spacing:0;max-width:40vw}
    .topbar-page-title{display:none}
    .topbar-right{flex:0 0 auto;gap:.25rem;flex-wrap:nowrap;justify-content:flex-end}
    .page-header{gap:.3rem}
    .page-header,.form-actions,.kanban-board-header > div:last-child,.canvas-header-actions{display:flex;flex-wrap:wrap;gap:.4rem}
    .page-header .btn,.page-header .btn-sm,
    .form-actions .btn,.form-actions .btn-sm,
    .kanban-board-header .btn,.kanban-board-header .btn-sm,
    .canvas-header-actions .btn,.canvas-header-actions .btn-sm{width:auto;min-width:0}
    .page-header form,.form-actions form{display:inline-flex;width:auto}
    .editor-area{min-height:60vh;min-height:60dvh;font-size:.95rem}
    .preview-content{min-height:60vh;min-height:60dvh}
    /* Kanban columns get even more of the screen so the swipe
       feels like flipping between cards. */
    .kanban-column,
    .kanban-add-column,
    .kanban-column-placeholder{min-width:90vw;max-width:90vw;width:90vw}
}

/* ── Very narrow phones (≤380px) */
@media (max-width:380px){
    .content{padding:.85rem .8rem 1rem}
    .topbar-left{max-width:72vw}
    .topbar-left .logo{font-size:.85rem;max-width:calc(66vw - 2.6rem)}
    .topbar{padding:.3rem .55rem}
    .topbar-right{gap:.15rem;flex-wrap:nowrap;flex:0 0 auto}
    .topbar-avatar-img,.topbar-avatar-placeholder{width:32px;height:32px}
    .sidebar-toggle,.btn.sidebar-toggle{width:32px;height:32px;flex-basis:32px}
    .page-header h1{font-size:1.3rem}
    .wiki-content{font-size:.95rem}
    .wiki-content h1{font-size:1.4rem}
    .wiki-content h2{font-size:1.15rem}
    .wiki-content pre{padding:.5rem .6rem;font-size:.78rem}
    .sidebar{width:min(86vw,280px)!important;min-width:min(86vw,280px)!important;max-width:min(86vw,280px);left:-280px}
    .sidebar-nav .nav-item{padding:.45rem .65rem .45rem .95rem;font-size:.85rem}
    .kanban-column,.kanban-add-column,.kanban-column-placeholder{min-width:95vw;max-width:95vw;width:95vw}
    .modal-content{padding:.8rem}
}
/* Profile edit grid */
.profile-edit-grid{display:grid;grid-template-columns:1fr 240px;gap:1.5rem}
.profile-edit-main{min-width:0}
.profile-fields-inline{margin-top:.75rem;padding:.75rem;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.06);border-radius:6px}
.profile-fields-inline-heading{font-size:.82rem;font-weight:600;margin-bottom:.6rem;opacity:.6;text-transform:uppercase;letter-spacing:.04em}
.profile-fields-grid{display:grid;grid-template-columns:1fr 1fr;gap:.5rem .75rem}
.profile-field-inline-item{display:flex;flex-direction:column;gap:.15rem}
.profile-field-inline-label{font-size:.78rem;font-weight:600;opacity:.65;display:flex;align-items:center;gap:.3rem;cursor:pointer}
.profile-field-inline-label:hover{opacity:1}
.profile-field-inline-label input[type="checkbox"]{accent-color:var(--primary-color);cursor:pointer}
.profile-field-inline-item .input-sm{font-size:.83rem}
@media(max-width:600px){.profile-edit-grid{grid-template-columns:1fr}.profile-fields-grid{grid-template-columns:1fr}}
/* Chat user field */
.chat-user-field-row{display:flex;gap:.5rem;align-items:flex-start}
.chat-user-field-row .input{flex:1}
.chat-user-browse-panel{margin-top:.5rem;border:1px solid rgba(255,255,255,.1);border-radius:4px;max-height:260px;overflow-y:auto;background:var(--bg-color,#16161f)}
.chat-user-browse-list{display:flex;flex-direction:column}
.chat-user-browse-item{display:flex;align-items:center;gap:.5rem;padding:.45rem .6rem;background:none;border:none;border-bottom:1px solid rgba(255,255,255,.04);cursor:pointer;text-align:left;color:var(--text-color);width:100%}
.chat-user-browse-item:hover{background:rgba(255,255,255,.05)}
.chat-user-browse-item:last-child{border-bottom:none}
.chat-user-browse-avatar{width:28px;height:28px;border-radius:50%;object-fit:cover}
.chat-user-browse-avatar-placeholder{width:28px;height:28px;border-radius:50%;background:var(--primary-color);display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;color:#fff;flex-shrink:0}
.chat-user-browse-info{display:flex;flex-direction:column;line-height:1.2}
.chat-user-browse-name{font-size:.85rem;font-weight:600}
.chat-user-browse-username{font-size:.75rem;opacity:.5}
.chat-user-search-results{margin-top:.5rem;border:1px solid rgba(255,255,255,.1);border-radius:4px;max-height:200px;overflow-y:auto;background:var(--bg-color,#16161f)}
.chat-search-result-item{display:block;width:100%;text-align:left;padding:.4rem .6rem;background:none;border:none;border-bottom:1px solid rgba(255,255,255,.04);cursor:pointer;color:var(--text-color);font-size:.85rem}
.chat-search-result-item:hover{background:rgba(255,255,255,.05)}
.chat-search-result-item:last-child{border-bottom:none}
/* Leaderboard private profile */
.leaderboard-profile-private{color:#e74c3c;cursor:default;text-decoration:none;opacity:.8}

/* ── Embed containers (wiki page canvas/kanban embeds) */
.bw-embed{position:relative;border:1px solid rgba(255,255,255,.12);border-radius:8px;overflow:hidden;background:var(--bg,#1a1a2e);margin:1rem 0}
.bw-embed-header{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:var(--secondary,#232336);border-bottom:1px solid rgba(255,255,255,.08);font-size:.82rem;font-weight:600}
.bw-embed-header a{color:var(--accent,#8fa0d4);text-decoration:none}
.bw-embed-header a:hover{text-decoration:underline}
.bw-embed-header .bw-embed-badge{font-size:.7rem;padding:.15rem .4rem;border-radius:3px;background:rgba(255,255,255,.08);text-transform:uppercase;letter-spacing:.03em;opacity:.7}
.bw-embed-body{overflow:auto;position:relative}
.bw-embed-canvas .bw-embed-body{min-height:200px}
.bw-embed-kanban .bw-embed-body{padding:.5rem;display:flex;gap:.5rem;overflow-x:auto}
.bw-embed-loading{display:flex;align-items:center;justify-content:center;padding:2rem;opacity:.5;font-size:.85rem}
/* Kanban embed mini-columns */
.bw-embed-kanban-col{flex:0 0 220px;min-width:220px;background:var(--secondary,#232336);border-radius:6px;padding:.5rem;display:flex;flex-direction:column;gap:.4rem}
.bw-embed-kanban-col-title{font-size:.8rem;font-weight:600;padding:.3rem .4rem;border-bottom:2px solid var(--accent,#8fa0d4);margin-bottom:.3rem}
.bw-embed-kanban-ticket{padding:.4rem .5rem;background:var(--bg,#1a1a2e);border:1px solid rgba(255,255,255,.08);border-radius:4px;font-size:.8rem;line-height:1.4}
.bw-embed-kanban-ticket-title{font-weight:500}
.bw-embed-kanban-ticket-priority{display:inline-block;font-size:.65rem;padding:.1rem .3rem;border-radius:3px;margin-left:.3rem;text-transform:uppercase;letter-spacing:.02em}
.bw-embed-kanban-ticket-priority-low{background:rgba(46,204,113,.2);color:#2ecc71}
.bw-embed-kanban-ticket-priority-medium{background:rgba(241,196,15,.2);color:#f1c40f}
.bw-embed-kanban-ticket-priority-high{background:rgba(230,126,34,.2);color:#e67e22}
.bw-embed-kanban-ticket-priority-critical{background:rgba(231,76,60,.2);color:#e74c3c}
.bw-embed-kanban-ticket-color{width:100%;height:3px;border-radius:2px;margin-top:.3rem}
/* Canvas embed mini-view */
.bw-embed-canvas-view{width:100%;height:100%;position:relative;overflow:hidden}
.bw-embed-canvas-node{position:absolute;border:1px solid rgba(255,255,255,.15);border-radius:4px;background:var(--secondary,#232336);padding:.3rem .5rem;font-size:.75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}
.bw-embed-canvas-node.bw-embed-canvas-node-wiki{border-color:var(--accent,#8fa0d4)}
.bw-embed-canvas-link{display:block;text-align:center;padding:.4rem;font-size:.8rem;color:var(--accent,#8fa0d4);text-decoration:none;border-top:1px solid rgba(255,255,255,.08)}
.bw-embed-canvas-link:hover{text-decoration:underline}
/* Sync indicator */
.bw-embed-sync-dot{width:6px;height:6px;border-radius:50%;background:#2ecc71;animation:bw-embed-pulse 2s infinite}
@keyframes bw-embed-pulse{0%,100%{opacity:1}50%{opacity:.4}}
html[data-theme="light"] .bw-embed{border-color:rgba(32,37,52,.12)}
html[data-theme="light"] .bw-embed-header{background:rgba(32,37,52,.04);border-bottom-color:rgba(32,37,52,.08)}
html[data-theme="light"] .bw-embed-body{background:#fff}
html[data-theme="light"] .bw-embed-kanban-col{background:rgba(32,37,52,.04)}
html[data-theme="light"] .bw-embed-kanban-ticket{background:#fff;border-color:rgba(32,37,52,.1)}
html[data-theme="light"] .bw-embed-canvas-node{background:rgba(32,37,52,.04);border-color:rgba(32,37,52,.12)}

/* ── Print mode (all views) */
@media print{
    .topbar,.sidebar,.sidebar-resize-handle,.sidebar-overlay,.sidebar-toggle,.mobile-account-menu,.mobile-account-menu-toggle{display:none!important}
    .layout{display:block!important}
    .content{width:100%!important;max-width:100%!important;padding:0!important;margin:0!important}
    .flash-messages{display:none!important}

    /* Canvas: reset viewport transform so all nodes print */
    .canvas-toolbar,.canvas-header-actions,.canvas-node-actions,.canvas-status,.canvas-description,.canvas-mobile-bottombar,.canvas-context-menu,.canvas-header-overflow{display:none!important}
    .canvas-node::before{display:none!important}
    .canvas-workspace{border:none;height:auto!important;min-height:0;overflow:visible;page-break-inside:avoid}
    .canvas-container{overflow:visible!important;position:relative!important;width:100%!important;height:auto!important}
    .canvas-nodes,.canvas-edges-svg{transform:none!important;position:relative;width:auto!important;height:auto!important}
    .canvas-node{position:relative!important;page-break-inside:avoid}

    /* Kanban: show board cleanly */
    .kanban-board-header{page-break-after:avoid}
    .kanban-board-header .xs-143bb0f8{display:none!important}
    #kanban-print{display:none!important}
    .kanban-columns-container{overflow:visible!important;flex-wrap:wrap;gap:.5rem}
    .kanban-column{min-width:0!important;max-width:none!important;width:auto!important;flex:1 1 250px;page-break-inside:avoid}
    .kanban-add-column,.kanban-bulk-toolbar{display:none!important}
    .kanban-ticket-ghost{display:none!important}

    /* Wiki pages: clean print */
    .page-header .btn,.page-header a.btn{display:none!important}
    .page-header h1{margin:0 0 .5rem}
}
/* 1.4 interface normalization: flatter surfaces and one compact radius scale. */
.auth-box,.settings-section,.onboarding-hero,.onboarding-panel,.onboarding-mode-card,
.onboarding-feature,.intro-copy,.intro-tour-card,.intro-role-picker,.intro-role-option,
.modal-content,.advanced-search-result,.advanced-search-empty-state{
    border-radius:4px;
    box-shadow:none;
    background-image:none;
}
.onboarding-hero{border-left:3px solid var(--primary)}
.btn:hover{box-shadow:none}

.tts-audio {
    border-radius: 8px;
    height: 40px;
}

.settings-section {
    border-radius: 8px;
    transition: border-color .15s;
}

.modal-content {
    border-radius: 10px;
}

.auth-box {
    border-radius: 10px;
}

.onboarding-panel {
    border-radius: 10px;
}

input:focus, select:focus, textarea:focus {
    outline: 2px solid color-mix(in srgb, var(--primary) 28%, transparent);
    outline-offset: 1px;
}

.content {
    scrollbar-width: thin;
}

::-webkit-scrollbar {
    width: 6px;
    height: 6px;
}
::-webkit-scrollbar-track {
    background: transparent;
}
::-webkit-scrollbar-thumb {
    background: rgba(255,255,255,.1);
    border-radius: 3px;
}
::-webkit-scrollbar-thumb:hover {
    background: rgba(255,255,255,.18);
}

.source-notice { text-align: center; font-size: .8rem; padding: .65rem 1rem; color: var(--text); }
.source-notice a { color: inherit; text-decoration: underline; }
/* Remote Markdown remains plain text, bounded to the reading column. */
.federated-content { white-space: pre-wrap; overflow-wrap: anywhere; max-width: 100%; }
