:root[data-theme="dark"]{
  color-scheme:dark;
  --bg:#0d1117;--bg-subtle:#161b22;--bg-card:#161b22;--bg-input:#0d1117;--bg-hover:#1c2128;
  --text:#e6edf3;--text-dim:#8b949e;--text-muted:#8b949e;
  --border:#30363d;--border-light:#30363d;--border-subtle:#21262d;
  --accent:#4493f8;--accent-hover:#58a6ff;--accent-text:#fff;
  --primary:#238636;--primary-hover:#2ea043;
  --danger:#f85149;--danger-hover:#da3633;--danger-bg:#2d1215;--danger-border:rgba(248,81,73,.4);
  --success:#3fb950;--success-bg:#122117;
  --warning:#d29922;--warning-bg:#1c1500;
  --done:#a371f7;--done-bg:#1a0f2e;
  --badge-public:#238636;--badge-private:#8b949e;
  --header-bg:#010409;--header-text:rgba(255,255,255,.7);--header-text-hover:#ffffff;
  --underline-active:#f78166;
  --diff-add-bg:#12261e;--diff-add-text:#3fb950;--diff-add-num-bg:#1b4332;
  --diff-del-bg:#2d1215;--diff-del-text:#f85149;--diff-del-num-bg:#4c1418;
  --diff-hunk-bg:#121d2f;--diff-hunk-text:#8b949e;
  --label-text:#fff;
  --code-bg:#161b22;
  --radius:6px;--radius-lg:6px;
  --shadow:0 1px 0 rgba(0,0,0,.3);
  --shadow-card:0 1px 3px rgba(0,0,0,.3);
  --focus-ring:0 0 0 3px rgba(68,147,248,.4);
  --font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif;
  --font-mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#ffffff;--bg-subtle:#f6f8fa;--bg-card:#ffffff;--bg-input:#ffffff;--bg-hover:#f6f8fa;
  --text:#1f2328;--text-dim:#59636e;--text-muted:#6e7781;
  --border:#d0d7de;--border-light:#d8dee4;--border-subtle:#eaeef2;
  --accent:#0969da;--accent-hover:#0860ca;--accent-text:#fff;
  --primary:#1f883d;--primary-hover:#1a7f37;
  --danger:#cf222e;--danger-hover:#a40e26;--danger-bg:#ffebe9;--danger-border:rgba(255,129,130,.5);
  --success:#1a7f37;--success-bg:#dafbe1;
  --warning:#9a6700;--warning-bg:#fff8c5;
  --done:#8250df;--done-bg:#fbefff;
  --badge-public:#1a7f37;--badge-private:#59636e;
  --header-bg:#24292f;--header-text:rgba(255,255,255,.7);--header-text-hover:#ffffff;
  --underline-active:#fd8c73;
  --diff-add-bg:#e6ffec;--diff-add-text:#1a7f37;--diff-add-num-bg:#ccffd8;
  --diff-del-bg:#ffebe9;--diff-del-text:#cf222e;--diff-del-num-bg:#ffd7d5;
  --diff-hunk-bg:#ddf4ff;--diff-hunk-text:#57606a;
  --label-text:#fff;
  --code-bg:#f6f8fa;
  --radius:6px;--radius-lg:6px;
  --shadow:0 1px 0 rgba(31,35,40,.04);
  --shadow-card:0 1px 3px rgba(31,35,40,.06);
  --focus-ring:0 0 0 3px rgba(9,105,218,.25);
  --font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif;
  --font-mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;
  --fs-xs:.75rem;--fs-sm:.8125rem;--fs-base:.875rem;--fs-lg:1rem;--fs-xl:1.25rem;--fs-2xl:1.5rem;
}
html{font-family:var(--font-sans);font-size:16px;color:var(--text);background:var(--bg);line-height:1.5;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body{min-height:100vh;display:flex;flex-direction:column}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
svg.octicon{vertical-align:text-bottom;fill:currentColor;flex-shrink:0}

/* ---------- Header ---------- */
.site-header{background:var(--header-bg);color:var(--header-text);padding:0 2rem;height:3.5rem;display:flex;align-items:center;position:sticky;top:0;z-index:100}
.site-header nav{display:flex;align-items:center;gap:1rem;width:100%;max-width:80rem;margin:0 auto}
.site-header a{color:var(--header-text);font-size:var(--fs-base);font-weight:600}
.site-header a:hover{color:var(--header-text-hover);text-decoration:none}
.nav-brand{display:inline-flex;align-items:center;gap:.55rem;font-weight:700;font-size:var(--fs-lg);letter-spacing:-.01em;color:#fff !important}
.nav-brand svg{width:24px;height:24px}
.nav-spacer{flex:1}
.nav-user-area{display:flex;align-items:center;gap:.9rem}
.site-header .btn-header{display:inline-flex;align-items:center;gap:.35rem;padding:.28rem .75rem;font-size:var(--fs-sm);font-weight:500;
  color:#fff !important;background:transparent;border:1px solid rgba(255,255,255,.35);border-radius:var(--radius);line-height:1.4;transition:all .15s}
.site-header .btn-header:hover{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.6);text-decoration:none}
.nav-username{display:inline-flex;align-items:center;gap:.4rem;font-size:var(--fs-sm);color:#fff;font-weight:600}
.nav-username::before{content:"";width:22px;height:22px;border-radius:50%;flex-shrink:0;
  background:linear-gradient(135deg,#54aeff,#0969da 60%,#8250df);box-shadow:inset 0 0 0 1px rgba(255,255,255,.25)}
.btn-logout{background:none;border:none;color:var(--header-text);padding:.2rem .2rem;border-radius:var(--radius);cursor:pointer;font-size:var(--fs-sm);font-family:inherit}
.btn-logout:hover{color:#fff;text-decoration:underline}

/* ---------- Layout ---------- */
.main-content{flex:1;width:100%;max-width:80rem;margin:0 auto;padding:2rem}
.site-footer{text-align:center;padding:2.5rem 1rem 2rem;font-size:var(--fs-xs);color:var(--text-muted);margin-top:2rem;border-top:1px solid var(--border-subtle)}

/* ---------- Repo tabs (UnderlineNav) ---------- */
.repo-tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--border-light);margin:-.5rem -.25rem 1.5rem;overflow-x:auto;padding:0 .25rem}
.repo-tabs a{display:inline-flex;align-items:center;gap:.45rem;padding:.6rem .75rem;font-size:var(--fs-base);color:var(--text);
  border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;border-radius:var(--radius) var(--radius) 0 0;line-height:1.3}
.repo-tabs a:hover{text-decoration:none;background:var(--bg-hover);border-bottom-color:var(--border)}
.repo-tabs a.active{font-weight:600;border-bottom-color:var(--underline-active)}
.repo-tabs a.active:hover{background:none}

/* ---------- Page headers ---------- */
.page-header{margin-bottom:1.5rem}
.page-header h1,h1.page-header{font-size:var(--fs-xl);font-weight:600;line-height:1.3}
.page-header p{color:var(--text-dim);margin-top:.25rem}

/* ---------- Cards / boxes ---------- */
.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1rem 1.25rem;box-shadow:var(--shadow)}
.card+.card{margin-top:.75rem}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;padding:.32rem .8rem;font-size:var(--fs-base);font-weight:500;
  border-radius:var(--radius);border:1px solid rgba(31,35,40,.15);cursor:pointer;line-height:1.45;gap:.4rem;font-family:inherit;
  background:var(--bg-subtle);color:var(--text);box-shadow:var(--shadow);transition:background .12s,border-color .12s;white-space:nowrap}
.btn:hover{background:var(--bg-hover);border-color:rgba(31,35,40,.18);text-decoration:none}
.btn-secondary{background:var(--bg-subtle);color:var(--text)}
.btn-secondary:hover{background:var(--bg-hover)}
.btn-primary{background:var(--primary);color:#fff;border-color:rgba(31,35,40,.15)}
.btn-primary:hover{background:var(--primary-hover)}
.btn-danger{background:var(--bg-subtle);color:var(--danger)}
.btn-danger:hover{background:var(--danger);border-color:var(--danger);color:#fff}
.btn-sm{padding:.2rem .6rem;font-size:var(--fs-sm)}
.btn-link{background:none;border:none;box-shadow:none;color:var(--accent);padding:0;cursor:pointer;font-size:inherit}
.btn-link:hover{text-decoration:underline;background:none}

/* ---------- Forms ---------- */
.form-group{display:flex;flex-direction:column;gap:.3rem;margin-bottom:1rem}
.form-group label{font-size:var(--fs-base);font-weight:600;color:var(--text)}
.form-group input,.form-group textarea,.form-group select{
  padding:.4rem .7rem;font-size:var(--fs-base);border:1px solid var(--border);
  border-radius:var(--radius);background:var(--bg-input);font-family:inherit;color:var(--text);line-height:1.5;
  box-shadow:inset 0 1px 0 rgba(208,215,222,.2)}
.form-group input:focus,.form-group textarea:focus,.form-group select:focus{
  outline:none;border-color:var(--accent);box-shadow:var(--focus-ring)}
.form-group textarea{min-height:6.5rem;resize:vertical}
.form-inline{display:flex;gap:.5rem;align-items:end}
.form-inline .form-group{margin-bottom:0}
.form-row{display:flex;gap:1rem;flex-wrap:wrap}
.form-container{max-width:38rem}
.form-error{color:var(--danger);font-size:var(--fs-base);padding:.6rem .85rem;background:var(--danger-bg);border:1px solid var(--danger-border);border-radius:var(--radius);margin-bottom:1rem}

/* ---------- Tables ---------- */
table{width:100%;border-collapse:collapse;font-size:var(--fs-base)}
th{text-align:left;font-weight:600;color:var(--text-dim);padding:.55rem .75rem;border-bottom:1px solid var(--border);background:var(--bg-subtle);font-size:var(--fs-sm)}
td{padding:.55rem .75rem;border-bottom:1px solid var(--border-subtle);vertical-align:middle}
tr:last-child td{border-bottom:none}
tr:hover td{background:var(--bg-hover)}

/* ---------- Lists ---------- */
.list-container{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}
.list-item{display:flex;align-items:flex-start;gap:.75rem;padding:.7rem 1rem;border-bottom:1px solid var(--border-subtle)}
.list-item:last-child{border-bottom:none}
.list-item:hover{background:var(--bg-hover)}
.list-item-title{font-weight:600;font-size:var(--fs-lg);color:var(--text)}
.list-item-title:hover{color:var(--accent)}
.list-item-meta{font-size:var(--fs-xs);color:var(--text-muted);margin-top:.2rem}

/* ---------- Badges & state pills ---------- */
.badge{display:inline-flex;align-items:center;gap:.3rem;padding:.05rem .6rem;font-size:var(--fs-xs);font-weight:500;
  border-radius:2em;text-transform:capitalize;border:1px solid var(--border);color:var(--text-dim);background:var(--bg)}
.badge-open{background:var(--primary);color:#fff;border-color:transparent;font-weight:600;padding:.18rem .7rem}
.badge-open::before{content:"";width:.55em;height:.55em;border-radius:50%;background:#fff;opacity:.9}
.badge-closed{background:var(--danger);color:#fff;border-color:transparent;font-weight:600;padding:.18rem .7rem}
.badge-closed::before{content:"";width:.55em;height:.55em;border-radius:50%;background:#fff;opacity:.9}
.badge-merged{background:var(--done);color:#fff;border-color:transparent;font-weight:600;padding:.18rem .7rem}
.badge-merged::before{content:"";width:.55em;height:.55em;border-radius:50%;background:#fff;opacity:.9}
.badge-public{color:var(--text-dim);border-color:var(--border)}
.badge-private{color:var(--text-dim);border-color:var(--border);background:var(--bg-subtle)}
.badge-default{color:var(--accent);border-color:rgba(9,105,218,.4);background:#ddf4ff66;font-family:var(--font-mono);text-transform:none;font-size:var(--fs-xs)}

/* ---------- Label chips ---------- */
.label-chip{display:inline-flex;align-items:center;padding:.06rem .6rem;font-size:var(--fs-xs);font-weight:600;border-radius:2em;
  color:var(--label-text);gap:.25rem;vertical-align:middle;line-height:1.6;box-shadow:inset 0 0 0 1px rgba(31,35,40,.12)}

/* ---------- Diffs ---------- */
.diff-container{margin-top:1rem}
.diff-file-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);margin-bottom:1rem;overflow:hidden}
.diff-file-header{padding:.55rem 1rem;background:var(--bg-subtle);border-bottom:1px solid var(--border);font-size:var(--fs-sm);font-weight:600;font-family:var(--font-mono);color:var(--text)}
.diff-table{width:100%;border-collapse:collapse;font-family:var(--font-mono);font-size:var(--fs-xs);line-height:1.65}
.diff-table td{padding:0 .75rem;white-space:pre-wrap;word-break:break-all;border:none;vertical-align:top}
.diff-table tr:hover td{filter:none}
.diff-table td.diff-line-num{width:1%;min-width:2.6rem;white-space:nowrap;color:var(--text-muted);text-align:right;user-select:none;padding:0 .6rem}
.diff-hunk-header{background:var(--diff-hunk-bg);color:var(--diff-hunk-text)}
.diff-hunk-header td{padding:.3rem .75rem}
.diff-add{background:var(--diff-add-bg)}
.diff-add .diff-line-num{color:var(--diff-add-text);background:var(--diff-add-num-bg)}
.diff-del{background:var(--diff-del-bg)}
.diff-del .diff-line-num{color:var(--diff-del-text);background:var(--diff-del-num-bg)}

/* ---------- Code / blob ---------- */
.code-block{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);overflow-x:auto;font-size:var(--fs-xs)}
.code-table{width:100%;border-collapse:collapse;font-family:var(--font-mono);line-height:1.65}
.code-table td{padding:0;border:none;vertical-align:top;white-space:pre;background:none}
.code-table tr:hover td{background:var(--bg-hover)}
.code-table td.code-line-num{width:1%;min-width:3rem;white-space:nowrap;color:var(--text-muted);text-align:right;user-select:none;padding:0 .8rem 0 .5rem}
.code-table td.code-line-content{padding:0 1rem;width:100%}

/* ---------- File tree ---------- */
.tree-list{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}
.tree-entry{display:flex;align-items:center;padding:.5rem 1rem;border-bottom:1px solid var(--border-subtle);font-size:var(--fs-base);gap:.6rem;color:var(--text)}
.tree-entry:last-child{border-bottom:none}
.tree-entry:hover{background:var(--bg-hover);text-decoration:none}
a.tree-entry:hover{color:var(--accent)}
.tree-icon{width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;color:var(--accent);flex-shrink:0}
.tree-icon svg{width:16px;height:16px;fill:currentColor}
.tree-icon-file{color:var(--text-muted)}

/* ---------- Breadcrumb ---------- */
.breadcrumb{display:flex;align-items:center;gap:.3rem;font-size:var(--fs-lg);margin-bottom:1rem;flex-wrap:wrap}
.breadcrumb a{color:var(--accent)}
.breadcrumb .sep{color:var(--text-muted)}

/* ---------- Flash ---------- */
.flash{padding:.7rem 1rem;border-radius:var(--radius);font-size:var(--fs-base);margin-bottom:1rem;border:1px solid transparent}
.flash-success{background:var(--success-bg);color:var(--success);border-color:#aceebb}
.flash-warning{background:var(--warning-bg);color:var(--warning);border-color:#eed888}
.flash-danger{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-border)}

/* ---------- Empty states ---------- */
.empty-state{text-align:center;padding:3.5rem 1rem;color:var(--text-muted)}
.empty-state p{font-size:var(--fs-lg);margin-bottom:.5rem}

/* ---------- Clone box ---------- */
.clone-url-box{display:flex;align-items:center;gap:.5rem;max-width:30rem;flex:1}
.clone-url-box input{flex:1;font-family:var(--font-mono);font-size:var(--fs-sm);background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius);padding:.35rem .65rem;color:var(--text-dim)}
.clone-url-box input:focus{outline:none;border-color:var(--accent);box-shadow:var(--focus-ring)}

/* ---------- README ---------- */
.readme-container{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:2rem 2.25rem;margin-top:1rem;overflow-x:auto;font-size:var(--fs-lg);line-height:1.6}
.readme-container h1,.readme-container h2{margin:1.25rem 0 .75rem;font-weight:600;border-bottom:1px solid var(--border-subtle);padding-bottom:.4rem}
.readme-container h1:first-child{margin-top:0}
.readme-container h3{margin:1rem 0 .5rem;font-weight:600}
.readme-container h1{font-size:1.5em}
.readme-container h2{font-size:1.25em}
.readme-container h3{font-size:1.05em}
.readme-container p{margin:.6rem 0}
.readme-container ul,.readme-container ol{margin:.6rem 0 .6rem 1.75rem}
.readme-container li{margin:.25rem 0}
.readme-container code{font-family:var(--font-mono);background:rgba(175,184,193,.2);padding:.15rem .4rem;border-radius:var(--radius);font-size:.85em}
.readme-container pre{background:var(--code-bg);border-radius:var(--radius);padding:1rem;overflow-x:auto;margin:.85rem 0;font-size:.85em;line-height:1.55}
.readme-container pre code{background:none;padding:0;font-size:1em}
.readme-container table{border-collapse:collapse;margin:.85rem 0;width:auto}
.readme-container table th{background:var(--bg-subtle)}
.readme-container table th,.readme-container table td{border:1px solid var(--border);padding:.4rem .85rem}
.readme-container table tr:hover td{background:none}
.readme-container img{max-width:100%}
.readme-container blockquote{border-left:.25rem solid var(--border);color:var(--text-dim);padding:0 1rem;margin:.6rem 0}

/* ---------- Pagination ---------- */
.pagination{display:flex;gap:.5rem;align-items:center;margin-top:1.25rem;justify-content:center}

/* ---------- Filter bar ---------- */
.filter-bar{display:flex;align-items:center;gap:.25rem;margin-bottom:1rem;flex-wrap:wrap}
.filter-bar a{padding:.32rem .8rem;font-size:var(--fs-base);border-radius:2em;color:var(--text-dim);line-height:1.4}
.filter-bar a:hover{background:var(--bg-hover);text-decoration:none;color:var(--text)}
.filter-bar a.active{background:var(--accent);color:#fff;font-weight:600}

/* ---------- Members ---------- */
.member-row{display:flex;align-items:center;gap:.75rem;padding:.6rem 1rem;border-bottom:1px solid var(--border-subtle)}
.member-row:last-child{border-bottom:none}
.member-actions{display:flex;gap:.5rem;align-items:center;margin-left:auto}

/* ---------- Comments ---------- */
.comment-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);margin-bottom:.85rem;overflow:hidden}
.comment-header{font-size:var(--fs-sm);color:var(--text-dim);padding:.55rem 1rem;background:var(--bg-subtle);border-bottom:1px solid var(--border-subtle)}
.comment-header strong{color:var(--text);font-weight:600}
.comment-body{white-space:pre-wrap;font-size:var(--fs-base);line-height:1.6;padding:.85rem 1rem}
/* legacy fallback when comment card has no inner structure */
.comment-card>.comment-body:first-child{padding-top:.85rem}

/* ---------- Detail pages ---------- */
.detail-header{margin-bottom:1.25rem;padding-bottom:1rem;border-bottom:1px solid var(--border-subtle)}
.detail-header h1{font-size:var(--fs-2xl);font-weight:400;margin-bottom:.35rem;line-height:1.25}
.detail-header h1 strong{font-weight:600}
.detail-meta{display:flex;align-items:center;gap:.75rem;font-size:var(--fs-base);color:var(--text-dim);flex-wrap:wrap}
.detail-body{margin:1rem 0;font-size:var(--fs-base);line-height:1.6;white-space:pre-wrap}
.detail-sidebar{display:flex;flex-direction:column;gap:.75rem;margin:1rem 0}

/* ---------- Tab nav (MR tabs) ---------- */
.tab-nav{display:flex;gap:.25rem;border-bottom:1px solid var(--border-light);margin-bottom:1.5rem}
.tab-nav a{display:inline-flex;align-items:center;gap:.45rem;padding:.55rem .8rem;font-size:var(--fs-base);color:var(--text);border-bottom:2px solid transparent;margin-bottom:-1px;border-radius:var(--radius) var(--radius) 0 0}
.tab-nav a:hover{text-decoration:none;background:var(--bg-hover);border-bottom-color:var(--border)}
.tab-nav a.active{font-weight:600;border-bottom-color:var(--underline-active)}
.tab-nav a.active:hover{background:none}

/* ---------- Auth pages ---------- */
.auth-container{max-width:21rem;margin:3.5rem auto;text-align:center}
.auth-container h1{font-size:var(--fs-xl);font-weight:400;margin-bottom:1.25rem;letter-spacing:-.01em}
.auth-container form{text-align:left;background:var(--bg-subtle);border:1px solid var(--border-light);border-radius:var(--radius-lg);padding:1.25rem}
.auth-container form .btn{width:100%;margin-top:.25rem}
.auth-container .form-group{margin-bottom:.9rem}
.auth-container .form-group label{font-size:var(--fs-base)}
.auth-footer{margin-top:1.25rem;font-size:var(--fs-base);color:var(--text-dim);border:1px solid var(--border-light);border-radius:var(--radius-lg);padding:1rem}

/* ---------- Settings ---------- */
.settings-section{margin-bottom:2rem}
.settings-section h2{font-size:var(--fs-lg);font-weight:600;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--border-subtle)}
.danger-zone{border:1px solid rgba(255,129,130,.6);border-radius:var(--radius-lg);padding:1.25rem;margin-top:2.5rem}
.danger-zone h2{color:var(--danger);border-color:transparent;margin-bottom:.5rem}

/* ---------- Activity ---------- */
.activity-item{display:flex;align-items:baseline;gap:.5rem;padding:.45rem 0;font-size:var(--fs-sm)}
.activity-item a{font-weight:400;color:var(--text)}
.activity-item a:hover{color:var(--accent)}
.activity-item a strong{font-weight:600}
.activity-time{color:var(--text-muted);font-size:var(--fs-xs);margin-left:auto;white-space:nowrap}

/* ---------- Empty repo ---------- */
.empty-repo{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.75rem;margin-top:1rem}
.empty-repo h2{font-size:var(--fs-lg);margin-bottom:.75rem}
.empty-repo p{color:var(--text-dim);font-size:var(--fs-base);margin-top:.75rem}
.empty-repo pre{background:var(--code-bg);border:1px solid var(--border-subtle);padding:.75rem 1rem;border-radius:var(--radius);font-family:var(--font-mono);font-size:var(--fs-sm);overflow-x:auto;margin:.5rem 0}

/* ---------- Checkbox group ---------- */
.checkbox-group{display:flex;flex-wrap:wrap;gap:.5rem}
.checkbox-group label{display:flex;align-items:center;gap:.4rem;font-size:var(--fs-base);cursor:pointer;padding:.28rem .7rem;border-radius:2em;border:1px solid var(--border)}
.checkbox-group label:hover{background:var(--bg-hover)}
.checkbox-group input[type="checkbox"]{accent-color:var(--accent)}

/* ---------- Utilities ---------- */
.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}
.gap-sm{gap:.5rem}.gap-md{gap:.75rem}.gap-lg{gap:1rem}
.mt-sm{margin-top:.5rem}.mt-md{margin-top:1rem}.mt-lg{margin-top:1.5rem}
.mb-sm{margin-bottom:.5rem}.mb-md{margin-bottom:1rem}.mb-lg{margin-bottom:1.5rem}
.text-sm{font-size:var(--fs-sm)}.text-xs{font-size:var(--fs-xs)}.text-dim{color:var(--text-dim)}.text-muted{color:var(--text-muted)}
.font-mono{font-family:var(--font-mono)}.font-bold{font-weight:600}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}
.overflow-auto{overflow-x:auto}

/* ---------- Focus ---------- */
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{
  outline:2px solid var(--accent);outline-offset:2px}
.site-header a:focus-visible,.site-header button:focus-visible{outline-color:#fff}

/* ---------- CSRF inputs ---------- */
input[name="csrf_token"]{display:none}

/* ---------- Dark theme overrides for non-variable rules ---------- */
[data-theme="dark"] .btn{border-color:rgba(240,246,252,.1)}
[data-theme="dark"] .btn:hover{border-color:rgba(240,246,252,.2)}
[data-theme="dark"] .btn-primary{border-color:rgba(240,246,252,.1)}
[data-theme="dark"] .btn-danger:hover{background:var(--danger);border-color:var(--danger)}
[data-theme="dark"] .form-group input,[data-theme="dark"] .form-group textarea,[data-theme="dark"] .form-group select{box-shadow:none;border-color:var(--border)}
[data-theme="dark"] .auth-container form{background:var(--bg-subtle);border-color:var(--border)}
[data-theme="dark"] .auth-footer{border-color:var(--border)}
[data-theme="dark"] .danger-zone{border-color:rgba(248,81,73,.5)}
[data-theme="dark"] .flash-success{background:var(--success-bg);color:var(--success);border-color:rgba(35,134,54,.5)}
[data-theme="dark"] .flash-warning{background:var(--warning-bg);color:var(--warning);border-color:rgba(210,153,34,.5)}
[data-theme="dark"] .badge-default{color:var(--accent);border-color:rgba(68,147,248,.4);background:rgba(68,147,248,.1)}
[data-theme="dark"] .nav-username::before{background:linear-gradient(135deg,#58a6ff,#4493f8 60%,#a371f7)}
[data-theme="dark"] .checkbox-group label:hover{background:var(--bg-hover)}
[data-theme="dark"] .readme-container code{background:rgba(110,118,129,.25)}
