/* Reticle cursor + theme switch (shared by hub and legal pages) */
.cur-dot, .cur-ring { position: fixed; left: 0; top: 0; pointer-events: none; z-index: 9999; opacity: 0; transition: opacity .2s; }
.cur-on .cur-dot, .cur-on .cur-ring { opacity: 1; }
.cur-dot { width: 6px; height: 6px; margin: -3px 0 0 -3px; border-radius: 50%; background: var(--cur, #00d9ff); box-shadow: 0 0 10px var(--cur, #00d9ff); }
.cur-ring { width: 40px; height: 40px; margin: -20px 0 0 -20px; color: var(--cur-ring, rgba(90,155,255,.85)); }
.cur-ring svg { width: 100%; height: 100%; display: block; transition: transform .25s cubic-bezier(.2,.8,.2,1), color .2s; }
.cur-hot .cur-ring { color: var(--cur-hot, var(--cur, #00d9ff)); }
.cur-hot .cur-ring svg { transform: scale(1.45) rotate(45deg); }
.cur-down .cur-ring svg { transform: scale(.72); }
.cur-hot.cur-down .cur-ring svg { transform: scale(1.1) rotate(45deg); }
.cur-text .cur-dot, .cur-text .cur-ring { opacity: 0 !important; }
html.has-reticle, html.has-reticle body, html.has-reticle a, html.has-reticle button, html.has-reticle .btn, html.has-reticle .tab, html.has-reticle label { cursor: none; }
html.has-reticle input, html.has-reticle textarea { cursor: text; }
@media (hover: none), (pointer: coarse) { .cur-dot, .cur-ring { display: none; } }

.theme-btn { width: 38px; height: 38px; display: inline-flex; align-items: center; justify-content: center; border-radius: 8px; border: 1px solid var(--line2); background: transparent; color: var(--text); cursor: pointer; padding: 0; flex: none; transition: border-color .15s, background .15s; }
.theme-btn:hover { border-color: var(--accent, #2e7bff); }
.theme-btn:focus-visible { outline: 2px solid var(--accent, #2e7bff); outline-offset: 2px; }
.theme-btn svg { width: 18px; height: 18px; }
.theme-btn .sun { display: none; }
[data-theme="light"] .theme-btn .sun { display: block; }
[data-theme="light"] .theme-btn .moon { display: none; }
