/* A closed set of personal tokens; default accounts retain their existing CSS. */
html[data-personal-theme] body{font-family:var(--personal-font)!important;color:var(--personal-text)!important;background-color:var(--personal-bg)!important;background-image:linear-gradient(var(--personal-overlay),var(--personal-overlay)),var(--personal-image,none)!important;background-size:cover!important;background-position:center!important;background-attachment:fixed}
html[data-personal-theme] :is(button,input,select,textarea){font-family:var(--personal-font)!important}
html[data-personal-theme] :is(h1,h2,h3){font-family:inherit!important;color:var(--personal-text)!important}
html[data-personal-theme] :is(p,label,li,td,th,.brand,.profile-name){color:var(--personal-text)}
html[data-personal-theme] :is(.muted,.subtitle,.meta,.small,.log-meta,.eyebrow,.theme-help){color:var(--personal-muted)!important}
html[data-personal-theme] :is(.panel,.card,.report,.notice,.summary,.table,.release-group,.profile-options,.day,dialog,.theme-preview,#admin-appointments){background:var(--personal-surface)!important;border-color:var(--personal-border)!important;color:var(--personal-text)!important}
html[data-personal-theme] :is(input,select,textarea){background:var(--personal-bg)!important;border-color:var(--personal-border)!important;color:var(--personal-text)!important}
html[data-personal-theme] body a[href]:not(:is(.button,.service-button,.registration-button,.login-link,#authelia-login,.card,.brand,.kofi-button)){color:var(--personal-link)!important;text-decoration-color:var(--personal-link)!important}
html[data-personal-theme] :is(button,.button,.service-button,.registration-button):not(.danger):not(.portal-profile-trigger):not(.day button):not(.inbox-row){background:var(--personal-accent)!important;color:var(--personal-ink)!important;border-color:var(--personal-accent)!important}
html[data-personal-theme] :is(.portal-profile-trigger,.day button){background:var(--personal-surface)!important;color:var(--personal-link)!important;border-color:var(--personal-border)!important}
html[data-personal-theme] :is(a,button,input,textarea,select,summary):focus-visible{outline-color:var(--personal-link)!important}
html[data-personal-theme] .release-group>summary{color:var(--personal-link)!important}
.theme-form{padding:28px}.theme-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.theme-field{display:grid;gap:9px;min-width:0}.theme-field input,.theme-field select{padding:11px;border:1px solid #65537d;border-radius:9px;background:#100e17;color:#f5f7fa;font:inherit;width:100%}.theme-field input[type=color]{height:48px;padding:5px;cursor:pointer}.theme-wide{grid-column:1/-1}.theme-form p{line-height:1.6}.theme-help{color:#ada6c5;font-size:.9rem}.theme-buttons{display:flex;gap:12px;flex-wrap:wrap;margin-top:24px}.theme-preview{border:1px solid #65537d;border-radius:16px;padding:24px;margin:24px 0;background:#15101f}.theme-preview h3{margin:0 0 12px}.theme-preview p{margin:8px 0}.theme-preview img{width:100%;max-height:180px;object-fit:cover;border-radius:10px}.theme-form label.theme-checkbox{display:flex;align-items:center;gap:10px}.theme-checkbox input{width:auto}.theme-buttons .secondary{background:transparent;color:#c8baff}.theme-status{min-height:1.5em;white-space:pre-line}.theme-form button:disabled{opacity:.55;cursor:wait}
@media(max-width:650px){.theme-fields{grid-template-columns:1fr}.theme-form{padding:20px}html[data-personal-theme] body{background-attachment:scroll}}
@media print{html[data-personal-theme] body{background:white!important;color:black!important;background-image:none!important}}

html[data-personal-theme]{color-scheme:var(--personal-scheme,dark)}
html[data-personal-theme] :is(.storage-subtitle,.storage-stat span,.scrub,.announcement-meta,.updated,.live,footer){color:var(--personal-muted)!important}
html[data-personal-theme] :is(.day strong,.theme-status){color:var(--personal-text)!important}
html[data-personal-theme] .log-row{background:var(--personal-surface)!important;color:var(--personal-text)!important}
/* Availability colors retain their meaning against a consistent dark badge. */
html[data-personal-theme] :is(.health-badge,.status-badge){background:#17141f!important}
@media print{html[data-personal-theme]{--personal-text:#111!important;--personal-muted:#333!important;--personal-bg:#fff!important;--personal-surface:#fff!important;--personal-link:#111!important;--personal-border:#999!important}}

/* Branding follows the user’s selected font, including uploaded fonts. */
html[data-personal-theme] body a.portal-wordmark{font-family:var(--personal-font)!important}

/* Shared portal coverage, including later pages. No page-specific font shorthand
 * may override a saved font. Geometry, status colors and destructive actions
 * retain their existing purpose; only the personal presentation tokens change. */
html[data-personal-theme] body *{font-family:var(--personal-font)!important}
html[data-personal-theme] :is([data-theme-surface],.inbox-shell,.inbox-toolbar,.inbox-list,.inbox-reader,.inbox-pagination,.inbox-filter-toggle,.layout-card,.storage-stat,.setting,.settings,.source,.request-category,.request-update,.announcement,.log-toolbar,.filters,.feed-link,.toolbar,th){background:var(--personal-surface)!important;border-color:var(--personal-border)!important;color:var(--personal-text)!important}
html[data-personal-theme] :is(.inbox-heading,.inbox-message,.inbox-row-title,.inbox-row-preview,.inbox-row-kind,.inbox-reader h2,.profile-options a,.portal-wordmark,.profile-menu #account-name,.layout-note,.field,.details){color:var(--personal-text)!important}
html[data-personal-theme] :is(.inbox-count,.inbox-meta,.inbox-placeholder,.inbox-empty,.inbox-row-top,#inbox-page-info,.layout-badge,.log-meta,.channel-state){color:var(--personal-muted)!important}
html[data-personal-theme] .inbox-shell button.inbox-row{background:var(--personal-surface)!important;border-color:var(--personal-border)!important;color:var(--personal-text)!important}
html[data-personal-theme] .inbox-shell button.inbox-row:is(.selected,:hover){background:color-mix(in srgb,var(--personal-accent) 16%,var(--personal-surface))!important;box-shadow:inset 3px 0 var(--personal-accent)}
html[data-personal-theme] .inbox-shell .inbox-toolbar select{background:var(--personal-bg)!important;color:var(--personal-text)!important;border-color:var(--personal-border)!important}
html[data-personal-theme] .notification-bell{background:var(--personal-surface)!important;color:var(--personal-link)!important;border-color:var(--personal-border)!important}
html[data-personal-theme] .profile-options a:hover{background:color-mix(in srgb,var(--personal-accent) 14%,var(--personal-surface))!important}
html[data-personal-theme] .login-link{background:var(--personal-surface)!important;color:var(--personal-link)!important;border-color:var(--personal-border)!important}
html[data-personal-theme] #authelia-login{background:var(--personal-accent)!important;color:var(--personal-ink)!important;border-color:var(--personal-accent)!important}
