:root {
  --if-lagoon: #1fd3c6;
  --if-rex: #015a54;
  --if-melon: #fe656e;
  --if-sunshine: #ffb41e;
  --if-magic: #b800ff;
  --if-neural: #22d3ee;
  --if-bg: #050505;
  --if-bg-soft: #080808;
  --if-surface: #0d0d0d;
  --if-surface-raised: #151515;
  --if-text: #fafaf9;
  --if-muted: #a8a29e;
  --if-subtle: #78716c;
  --if-border: rgba(255,255,255,.11);
  --if-border-strong: rgba(31,211,198,.34);
  --if-danger: #fe656e;
  --if-success: #1fd3c6;
  --if-warning: #ffb41e;
  --if-shadow: 0 24px 80px rgba(0,0,0,.42);
  --if-radius-sm: 12px;
  --if-radius: 20px;
  --if-radius-lg: 32px;
  --if-sidebar: 260px;
  --if-topbar: 76px;
}

:root[data-theme="light"] {
  --if-bg: #fafaf9;
  --if-bg-soft: #f5f5f4;
  --if-surface: #ffffff;
  --if-surface-raised: #ffffff;
  --if-text: #1c1917;
  --if-muted: #57534e;
  --if-subtle: #78716c;
  --if-border: rgba(28,25,23,.12);
  --if-border-strong: rgba(1,90,84,.3);
  --if-shadow: 0 24px 70px rgba(28,25,23,.12);
}

html { background: var(--if-bg); }

body.ifairy-shell,
body.ifairy-admin,
body.ifairy-site,
body.ifairy-login {
  margin: 0;
  background:
    radial-gradient(circle at 78% -10%, rgba(31,211,198,.12), transparent 32rem),
    radial-gradient(circle at 8% 110%, rgba(184,0,255,.08), transparent 34rem),
    var(--if-bg);
  color: var(--if-text);
  font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  min-height: 100vh;
}

body.ifairy-admin *, body.ifairy-site *, body.ifairy-shell *, body.ifairy-login * { box-sizing: border-box; }
body.ifairy-admin h1, body.ifairy-admin h2, body.ifairy-admin h3, body.ifairy-admin h4, body.ifairy-admin h5,
body.ifairy-site h1, body.ifairy-site h2, body.ifairy-site h3, body.ifairy-site h4, body.ifairy-site h5,
body.ifairy-shell h1, body.ifairy-shell h2, body.ifairy-shell h3,
body.ifairy-login h1, body.ifairy-login h2, body.ifairy-login h3 {
  color: var(--if-text);
  font-family: "Space Grotesk", Inter, sans-serif;
  letter-spacing: -.025em;
}

body.ifairy-admin a, body.ifairy-site a, body.ifairy-shell a, body.ifairy-login a { color: var(--if-lagoon); }
body.ifairy-admin code, body.ifairy-site code, body.ifairy-shell code { color: var(--if-neural); font-family: "JetBrains Mono", monospace; }
body.ifairy-admin .text-muted, body.ifairy-site .text-muted { color: var(--if-muted) !important; }

*:focus-visible { outline: 3px solid var(--if-sunshine) !important; outline-offset: 3px; }
::selection { background: var(--if-lagoon); color: #051615; }

.ifairy-brand-lockup { display: inline-flex; align-items: center; gap: 12px; color: var(--if-text) !important; text-decoration: none; }
.ifairy-brand-lockup img { width: 42px; height: 42px; border-radius: 11px; box-shadow: 0 0 28px rgba(31,211,198,.16); }
.ifairy-brand-name { display: flex; flex-direction: column; line-height: 1; }
.ifairy-brand-name strong { font: 700 20px/1 "Space Grotesk", sans-serif; letter-spacing: -.04em; }
.ifairy-brand-name span { margin-top: 5px; color: var(--if-muted); font-size: 9px; font-weight: 800; letter-spacing: .15em; text-transform: uppercase; }

.ifairy-theme-toggle {
  display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 0 13px;
  color: var(--if-muted); background: var(--if-surface); border: 1px solid var(--if-border);
  border-radius: 999px; font: 700 12px/1 Inter, sans-serif; cursor: pointer;
}
.ifairy-theme-toggle:hover { color: var(--if-text); border-color: var(--if-border-strong); }

/* Admin shell */
body.ifairy-admin { padding-top: var(--if-topbar); }
body.ifairy-admin .navbar-custom {
  position: fixed; inset: 0 0 auto 0; z-index: 1035; height: var(--if-topbar); padding: 0 22px !important;
  display: flex; align-items: center; justify-content: space-between; background: color-mix(in srgb, var(--if-bg) 86%, transparent) !important;
  border-bottom: 1px solid var(--if-border); box-shadow: none !important; backdrop-filter: blur(20px);
}
.ifairy-admin-actions { display: flex; align-items: center; gap: 10px; margin-left: auto; }
.ifairy-admin-status { display: inline-flex; align-items: center; gap: 7px; color: var(--if-muted); font-size: 12px; font-weight: 700; }
.ifairy-admin-status::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--if-lagoon); box-shadow: 0 0 14px var(--if-lagoon); }
body.ifairy-admin #sidebarMenu {
  position: fixed; top: var(--if-topbar); bottom: 0; left: 0; z-index: 1020; width: var(--if-sidebar);
  padding: 18px 14px; background: color-mix(in srgb, var(--if-bg-soft) 94%, transparent) !important;
  border-right: 1px solid var(--if-border); overflow-y: auto;
}
body.ifairy-admin #sidebarMenu .position-sticky { position: static !important; padding: 0 !important; }
body.ifairy-admin main { width: auto; max-width: none; margin-left: var(--if-sidebar) !important; padding: 0 34px 48px !important; }
.ifairy-nav-section { margin: 22px 12px 8px; color: var(--if-subtle); font-size: 9px; font-weight: 800; letter-spacing: .17em; text-transform: uppercase; }
body.ifairy-admin #sidebarMenu .nav-link {
  display: flex; align-items: center; gap: 11px; min-height: 42px; margin: 2px 0; padding: 9px 12px;
  border: 1px solid transparent; border-radius: 12px; color: var(--if-muted); font-size: 13px; font-weight: 650;
}
body.ifairy-admin #sidebarMenu .nav-link i { width: 19px; color: var(--if-subtle); font-size: 17px !important; }
body.ifairy-admin #sidebarMenu .nav-link:hover { color: var(--if-text); background: var(--if-surface); border-color: var(--if-border); }
body.ifairy-admin #sidebarMenu .nav-link.active { color: #041817; background: var(--if-lagoon); border-color: var(--if-lagoon); box-shadow: 0 8px 24px rgba(31,211,198,.16); }
body.ifairy-admin #sidebarMenu .nav-link.active i { color: #041817; }
.ifairy-admin-pagehead { min-height: 96px; display: flex; align-items: center; justify-content: space-between; gap: 20px; border-bottom: 1px solid var(--if-border); }
.ifairy-breadcrumb { margin: 0 0 4px; color: var(--if-lagoon); font-size: 10px; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; }
.ifairy-admin-pagehead h1 { margin: 0; font-size: clamp(24px,3vw,34px); }
.ifairy-page-actions { display: flex; align-items: center; gap: 10px; }

body.ifairy-admin .card,
body.ifairy-admin .modal-content,
body.ifairy-admin .dropdown-menu,
body.ifairy-admin .list-group-item {
  color: var(--if-text); background: var(--if-surface); border-color: var(--if-border); border-radius: var(--if-radius);
  box-shadow: none;
}
body.ifairy-admin .card { overflow: hidden; }
body.ifairy-admin .card-body { padding: 24px; }
body.ifairy-admin .card-title { font-weight: 700; }
body.ifairy-admin .border, body.ifairy-admin .border-bottom, body.ifairy-admin .border-top { border-color: var(--if-border) !important; }

body.ifairy-admin .table { --bs-table-bg: transparent; --bs-table-color: var(--if-text); --bs-table-border-color: var(--if-border); margin: 0; color: var(--if-text); }
body.ifairy-admin .table-responsive { margin-bottom: 24px; border: 1px solid var(--if-border); border-radius: var(--if-radius); background: var(--if-surface); overflow: auto; }
body.ifairy-admin .table-responsive > .table { border: 0 !important; }
body.ifairy-admin .table > :not(caption) > * > * { padding: 15px 17px; color: inherit; background: transparent; border-bottom-color: var(--if-border); vertical-align: middle; }
body.ifairy-admin .table thead th { color: var(--if-muted); background: var(--if-bg-soft); font-size: 10px; letter-spacing: .11em; text-transform: uppercase; white-space: nowrap; }
body.ifairy-admin .table-striped > tbody > tr:nth-of-type(odd) > * { --bs-table-accent-bg: rgba(255,255,255,.018); color: var(--if-text); }
body.ifairy-admin .table tbody tr:hover > * { background: rgba(31,211,198,.035); }

body.ifairy-admin .form-control, body.ifairy-admin .form-select,
body.ifairy-login .form-control, body.ifairy-site .form-control {
  min-height: 46px; color: var(--if-text); background-color: var(--if-bg-soft); border: 1px solid var(--if-border);
  border-radius: var(--if-radius-sm); box-shadow: none;
}
body.ifairy-admin textarea.form-control { min-height: 110px; }
body.ifairy-admin .form-control:focus, body.ifairy-admin .form-select:focus,
body.ifairy-login .form-control:focus, body.ifairy-site .form-control:focus {
  color: var(--if-text); background: var(--if-bg-soft); border-color: var(--if-lagoon); box-shadow: 0 0 0 4px rgba(31,211,198,.1);
}
body.ifairy-admin .form-control::placeholder, body.ifairy-login .form-control::placeholder { color: var(--if-subtle); }
body.ifairy-admin .form-label { color: var(--if-muted); font-size: 12px; font-weight: 700; }
body.ifairy-admin .form-check-input { background-color: var(--if-bg-soft); border-color: var(--if-border); }
body.ifairy-admin .form-check-input:checked { background-color: var(--if-lagoon); border-color: var(--if-lagoon); }

body.ifairy-admin .btn, body.ifairy-site .btn, body.ifairy-login .btn, body.ifairy-shell .btn {
  border-radius: 999px; font-weight: 750; letter-spacing: -.01em; box-shadow: none;
}
body.ifairy-admin .btn-primary, body.ifairy-site .btn-primary, body.ifairy-login .btn-primary, body.ifairy-shell .btn-primary {
  color: #041817; background: var(--if-lagoon); border-color: var(--if-lagoon);
}
body.ifairy-admin .btn-primary:hover, body.ifairy-site .btn-primary:hover, body.ifairy-login .btn-primary:hover, body.ifairy-shell .btn-primary:hover { color: #041817; background: #50e2d8; border-color: #50e2d8; }
body.ifairy-admin .btn-success { color: #041817; background: var(--if-lagoon); border-color: var(--if-lagoon); }
body.ifairy-admin .btn-outline-secondary { color: var(--if-text); border-color: var(--if-border); }
body.ifairy-admin .btn-outline-secondary:hover { color: var(--if-text); background: var(--if-surface-raised); border-color: var(--if-border-strong); }
body.ifairy-admin .btn-danger { background: transparent; color: var(--if-melon); border-color: rgba(254,101,110,.5); }

body.ifairy-admin .badge { padding: 7px 10px; border-radius: 999px; font-weight: 750; }
body.ifairy-admin .bg-success { color: #041817 !important; background: var(--if-lagoon) !important; }
body.ifairy-admin .bg-secondary, body.ifairy-admin .bg-dark { color: var(--if-muted) !important; background: var(--if-surface-raised) !important; }
body.ifairy-admin .alert { color: var(--if-text); background: var(--if-surface); border: 1px solid var(--if-border); border-radius: var(--if-radius-sm); }
body.ifairy-admin .alert-info { border-left: 3px solid var(--if-neural); }
body.ifairy-admin .alert-danger { border-left: 3px solid var(--if-melon); }
body.ifairy-admin .alert-success { border-left: 3px solid var(--if-lagoon); }

.ifairy-bento-grid { display: grid; grid-template-columns: repeat(12,minmax(0,1fr)); gap: 16px; margin: 24px 0; }
.ifairy-bento { grid-column: span 3; min-height: 170px; padding: 22px; color: var(--if-text); background: var(--if-surface); border: 1px solid var(--if-border); border-radius: var(--if-radius); }
.ifairy-bento.wide { grid-column: span 8; }
.ifairy-bento.narrow { grid-column: span 4; }
.ifairy-bento-label { color: var(--if-muted); font-size: 10px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
.ifairy-bento-value { margin: 16px 0 4px; font: 700 clamp(30px,4vw,48px)/1 "Space Grotesk", sans-serif; }
.ifairy-bento p { color: var(--if-muted); }
.ifairy-bento-accent { position: relative; overflow: hidden; }
.ifairy-bento-accent::after { content: ""; position: absolute; width: 150px; height: 150px; right: -60px; bottom: -70px; border-radius: 50%; background: var(--if-lagoon); opacity: .12; filter: blur(4px); }
.ifairy-status-list { display: grid; gap: 10px; margin-top: 18px; }
.ifairy-status-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 11px 0; border-top: 1px solid var(--if-border); }
.ifairy-status-pill { display: inline-flex; align-items: center; gap: 7px; color: var(--if-lagoon); font-size: 12px; font-weight: 750; }
.ifairy-status-pill::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: currentColor; }
.ifairy-status-pill.warning { color: var(--if-sunshine); }
.ifairy-status-pill.danger { color: var(--if-melon); }

/* Login */
body.ifairy-login { display: grid; place-items: center; padding: 28px; }
.ifairy-login-shell { width: min(1080px,100%); min-height: 620px; display: grid; grid-template-columns: 1.08fr .92fr; overflow: hidden; background: var(--if-surface); border: 1px solid var(--if-border); border-radius: var(--if-radius-lg); box-shadow: var(--if-shadow); }
.ifairy-login-story { position: relative; padding: 58px; display: flex; flex-direction: column; justify-content: space-between; overflow: hidden; background: #050505; }
.ifairy-login-story::before { content: ""; position: absolute; width: 480px; height: 480px; right: -180px; bottom: -210px; border-radius: 50%; background: radial-gradient(circle,rgba(31,211,198,.34),rgba(184,0,255,.08) 44%,transparent 68%); }
.ifairy-login-story > * { position: relative; z-index: 1; }
.ifairy-login-story h1 { max-width: 520px; margin: 80px 0 18px; color: #fafaf9; font-size: clamp(42px,6vw,72px); line-height: .96; }
.ifairy-login-story h1 em { color: var(--if-lagoon); font-family: Fraunces, serif; font-style: normal; }
.ifairy-login-story p { max-width: 470px; color: #a8a29e; font-size: 16px; line-height: 1.7; }
.ifairy-login-form { padding: 58px; display: flex; flex-direction: column; justify-content: center; }
.ifairy-login-form h2 { margin: 0 0 8px; font-size: 34px; }
.ifairy-login-form > p { margin-bottom: 30px; color: var(--if-muted); }
.ifairy-login-form .btn { min-height: 48px; }
.ifairy-login-foot { color: #78716c; font-size: 11px; letter-spacing: .09em; text-transform: uppercase; }

/* Public shell, blog, pages */
.ifairy-site-header { position: sticky; top: 0; z-index: 1030; height: var(--if-topbar); background: color-mix(in srgb, var(--if-bg) 86%, transparent); border-bottom: 1px solid var(--if-border); backdrop-filter: blur(20px); }
.ifairy-site-header-inner { width: min(1240px,calc(100% - 40px)); height: 100%; margin: auto; display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.ifairy-site-nav { display: flex; align-items: center; gap: 8px; }
.ifairy-site-nav a { padding: 10px 12px; color: var(--if-muted) !important; text-decoration: none; border-radius: 999px; font-size: 13px; font-weight: 700; }
.ifairy-site-nav a:hover { color: var(--if-text) !important; background: var(--if-surface); }
.ifairy-site-actions { display: flex; align-items: center; gap: 10px; }
body.ifairy-site #inner-page { padding: 72px 0 28px; background: transparent !important; border-bottom: 1px solid var(--if-border); }
body.ifairy-site #inner-page h1 { font-size: clamp(40px,6vw,72px); }
body.ifairy-site section { color: var(--if-text); }
body.ifairy-site .wrapper-card-post, body.ifairy-site .blog-sidebar, body.ifairy-site .post-cover, body.ifairy-site .post-content {
  color: var(--if-text); background: var(--if-surface); border: 1px solid var(--if-border); border-radius: var(--if-radius); box-shadow: none;
}
body.ifairy-site .wrapper-card-post { height: calc(100% - 24px); margin-bottom: 24px; overflow: hidden; }
body.ifairy-site .card-post-content, body.ifairy-site .blog-sidebar, body.ifairy-site .post-content { padding: 24px; }
body.ifairy-site .card-post-image img, body.ifairy-site .post-cover > img { width: 100%; object-fit: cover; }
body.ifairy-site .card-post-title a { color: var(--if-text) !important; text-decoration: none; }
body.ifairy-site .card-post-resume, body.ifairy-site .card-post-content-date { color: var(--if-muted); }
body.ifairy-site .post-cover { padding: 30px; overflow: hidden; }
body.ifairy-site .post-content { margin-top: 20px; line-height: 1.75; }
body.ifairy-site footer { margin-top: 72px; padding: 44px 0; color: var(--if-muted); background: var(--if-bg-soft); border-top: 1px solid var(--if-border); }
body.ifairy-site footer h5, body.ifairy-site footer strong { color: var(--if-text) !important; }
body.ifairy-site footer a { color: var(--if-muted) !important; }

/* Narrative public catalog and conversation */
body.ifairy-shell .ifairy-topbar { height: var(--if-topbar); padding: 0 clamp(20px,5vw,72px); display: flex; align-items: center; justify-content: space-between; gap: 18px; border-bottom: 1px solid var(--if-border); background: color-mix(in srgb,var(--if-bg) 86%,transparent); backdrop-filter: blur(20px); position: sticky; top: 0; z-index: 20; }
.ifairy-topbar-actions { display: flex; align-items: center; gap: 10px; }
body.ifairy-shell .ifairy-admin-link { display: inline-flex; align-items: center; min-height: 40px; padding: 0 15px; color: #041817; background: var(--if-lagoon); border-radius: 999px; text-decoration: none; font-size: 12px; font-weight: 800; }
body.ifairy-shell .ifairy-hero { position: relative; padding: clamp(78px,11vw,150px) clamp(24px,8vw,130px) clamp(70px,9vw,120px); max-width: 1500px; overflow: hidden; }
body.ifairy-shell .ifairy-hero::after { content: ""; position: absolute; width: 420px; height: 420px; right: 2%; top: 8%; border-radius: 50%; background: radial-gradient(circle,rgba(31,211,198,.2),rgba(184,0,255,.06) 45%,transparent 70%); pointer-events: none; }
body.ifairy-shell .ifairy-eyebrow, body.ifairy-shell .ifairy-module { color: var(--if-lagoon); font-size: 10px; font-weight: 800; letter-spacing: .18em; text-transform: uppercase; }
body.ifairy-shell .ifairy-hero h1 { position: relative; z-index: 1; max-width: 1000px; margin: 18px 0 28px; font-size: clamp(54px,8vw,110px); line-height: .91; letter-spacing: -.065em; }
body.ifairy-shell .ifairy-hero h1 em { color: var(--if-lagoon); font-family: Fraunces,serif; font-style: normal; }
body.ifairy-shell .ifairy-hero > p:last-child { max-width: 690px; color: var(--if-muted); font-size: clamp(17px,2vw,21px); line-height: 1.65; }
body.ifairy-shell .ifairy-catalog { padding: 28px clamp(24px,7vw,110px) 110px; }
body.ifairy-shell .ifairy-section-heading { display: flex; align-items: end; justify-content: space-between; gap: 24px; padding-bottom: 20px; margin-bottom: 28px; border-bottom: 1px solid var(--if-border); }
body.ifairy-shell .ifairy-section-heading h2 { margin: 6px 0 0; font-size: 42px; }
body.ifairy-shell .ifairy-section-heading > span { color: var(--if-muted); }
body.ifairy-shell .ifairy-grid { display: grid; grid-template-columns: repeat(auto-fill,minmax(285px,1fr)); gap: 16px; }
body.ifairy-shell .ifairy-card, body.ifairy-shell .ifairy-empty { padding: 26px; color: var(--if-text); background: var(--if-surface); border: 1px solid var(--if-border); border-radius: var(--if-radius-lg); }
body.ifairy-shell .ifairy-card { min-height: 340px; display: flex; flex-direction: column; transition: transform .2s,border-color .2s,box-shadow .2s; }
body.ifairy-shell .ifairy-card:hover { transform: translateY(-5px); border-color: var(--if-border-strong); box-shadow: var(--if-shadow); }
body.ifairy-shell .ifairy-sigil { width: 58px; height: 58px; display: grid; place-items: center; color: #041817; background: var(--if-lagoon); border-radius: 18px; font: 700 27px/1 Fraunces,serif; box-shadow: 0 12px 32px rgba(31,211,198,.14); }
body.ifairy-shell .ifairy-sigil.large { width: 92px; height: 92px; border-radius: 28px; font-size: 44px; }
body.ifairy-shell .ifairy-card .ifairy-module { margin: 24px 0 8px; }
body.ifairy-shell .ifairy-card h3 { margin: 0 0 12px; font-size: 28px; }
body.ifairy-shell .ifairy-card > p:not(.ifairy-module) { flex: 1; color: var(--if-muted); line-height: 1.6; }
body.ifairy-shell .ifairy-card > a { padding-top: 17px; display: flex; justify-content: space-between; border-top: 1px solid var(--if-border); color: var(--if-lagoon); text-decoration: none; font-weight: 750; }
body.ifairy-shell .ifairy-footer { padding: 34px; color: var(--if-muted); border-top: 1px solid var(--if-border); text-align: center; font-size: 12px; }
body.ifairy-shell .ifairy-grounded { display: inline-flex; align-items: center; gap: 8px; color: var(--if-muted); font-size: 12px; }
body.ifairy-shell .ifairy-grounded i { width: 8px; height: 8px; background: var(--if-lagoon); border-radius: 50%; box-shadow: 0 0 12px var(--if-lagoon); }
body.ifairy-shell .ifairy-chat-layout { display: grid; grid-template-columns: minmax(280px,370px) 1fr; max-width: 1600px; margin: auto; min-height: calc(100vh - var(--if-topbar)); }
body.ifairy-shell .ifairy-character-panel { padding: 46px 38px; background: color-mix(in srgb,var(--if-bg-soft) 82%,transparent); border-right: 1px solid var(--if-border); }
body.ifairy-shell .ifairy-back { display: block; margin-bottom: 44px; color: var(--if-lagoon); text-decoration: none; font-weight: 700; }
body.ifairy-shell .ifairy-character-panel .ifairy-module { margin: 27px 0 8px; }
body.ifairy-shell .ifairy-character-panel h1 { margin: 0 0 18px; font-size: 43px; line-height: 1.02; }
body.ifairy-shell .ifairy-character-panel > p:not(.ifairy-module) { color: var(--if-muted); line-height: 1.65; }
body.ifairy-shell .ifairy-character-panel dl { margin-top: 26px; padding-top: 20px; display: grid; grid-template-columns: 76px 1fr; gap: 10px; border-top: 1px solid var(--if-border); font-size: 12px; }
body.ifairy-shell .ifairy-character-panel dt { color: var(--if-muted); }
body.ifairy-shell .ifairy-character-panel dd { margin: 0; font-family: "JetBrains Mono",monospace; }
body.ifairy-shell .ifairy-conversation { min-width: 0; height: calc(100vh - var(--if-topbar)); display: flex; flex-direction: column; }
body.ifairy-shell .ifairy-messages { flex: 1; overflow: auto; padding: 42px clamp(22px,7vw,92px); }
/* A turn in the scene. The narrator carries the frame; the reader answers into it. */
body.ifairy-shell .ifairy-turn { max-width: 800px; margin-bottom: 26px; }
body.ifairy-shell .ifairy-turn-speaker { display: block; color: var(--if-lagoon); font-size: 10px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
body.ifairy-shell .ifairy-turn-body { margin-top: 8px; padding: 19px 22px; color: var(--if-text); background: var(--if-surface); border: 1px solid var(--if-border); border-radius: 4px 20px 20px; line-height: 1.68; }
body.ifairy-shell .ifairy-turn-body > *:first-child { margin-top: 0; }
body.ifairy-shell .ifairy-turn-body > *:last-child { margin-bottom: 0; }
body.ifairy-shell .ifairy-turn-body p { margin: 0 0 12px; }
body.ifairy-shell .ifairy-turn-body strong { color: var(--if-text); font-weight: 700; }
body.ifairy-shell .ifairy-turn-body em { color: var(--if-muted); font-style: italic; }
body.ifairy-shell .ifairy-turn-body h2, body.ifairy-shell .ifairy-turn-body h3 { margin: 20px 0 10px; font-size: 19px; }
body.ifairy-shell .ifairy-turn-body ul, body.ifairy-shell .ifairy-turn-body ol { margin: 0 0 12px; padding-left: 22px; }
body.ifairy-shell .ifairy-turn-body li { margin-bottom: 5px; }
body.ifairy-shell .ifairy-turn-body blockquote { margin: 14px 0; padding: 2px 0 2px 16px; color: var(--if-muted); border-left: 3px solid var(--if-lagoon); font-family: Fraunces, Georgia, serif; font-size: 17px; }
body.ifairy-shell .ifairy-turn-body code { padding: 1px 5px; background: var(--if-bg-soft); border-radius: 5px; font-size: .9em; }

/* The narrating voice sets the scene, so it reads a shade quieter than the character. */
body.ifairy-shell .ifairy-turn-scene .ifairy-turn-body { background: color-mix(in srgb, var(--if-surface) 70%, transparent); border-style: dashed; }
body.ifairy-shell .ifairy-turn-scene .ifairy-turn-body > p:first-child { font-family: Fraunces, Georgia, serif; font-size: 18px; line-height: 1.55; }

body.ifairy-shell .ifairy-turn-user { margin-left: auto; }
body.ifairy-shell .ifairy-turn-user .ifairy-turn-body { color: #041817; background: var(--if-lagoon); border-color: var(--if-lagoon); border-radius: 20px 4px 20px 20px; white-space: pre-wrap; }
body.ifairy-shell .ifairy-turn.ifairy-error .ifairy-turn-body { color: var(--if-melon); border-color: rgba(254,101,110,.45); }
body.ifairy-shell .ifairy-turn-trailer { margin-top: 12px; }

/* Force accent. Each Archetypal Force carries a canonical colour, and a term keeps that
   colour everywhere it appears. The hex pairs are injected per page from force_styles,
   so Studio owns the values; this only owns the treatment. */
.if-accent { color: var(--if-force-colour, inherit); font-weight: 600; text-underline-offset: 3px; }
.if-accent[data-accent="underline"], .if-accent[data-accent="both"] {
  text-decoration: underline; text-decoration-thickness: 1px;
  text-decoration-color: color-mix(in srgb, var(--if-force-colour) 55%, transparent);
}
.if-accent[data-accent="underline"] { font-weight: inherit; }

/* Iridescent: "all four in unity", per canon. Never gradient the text itself — that
   destroys contrast control and is unreadable for some people. The text keeps the theme's
   normal colour and the iridescence goes into a non-text element, running the four base
   values in canonical order: Logos, Mythos, Gnosis, Phantasia. */
.if-accent[data-force="iridescent"] {
  color: var(--if-text);
  background-image: linear-gradient(135deg, #5AA9FF, #F4C25A, #B98CF0, #CDD6E6);
  background-repeat: no-repeat;
  background-size: 100% 2px;
  background-position: 0 100%;
  padding-bottom: 1px;
}
/* Any surface that cannot take a gradient falls back to the Phantasia light value —
   a cool neutral that belongs to the family without claiming a force. */
@supports not (background-image: linear-gradient(135deg, #000, #fff)) {
  .if-accent[data-force="iridescent"] { border-bottom: 2px solid #5B677D; background-image: none; }
}
.ifairy-source[data-force="iridescent"] {
  border-left-color: transparent;
  border-image: linear-gradient(180deg, #5AA9FF, #F4C25A, #B98CF0, #CDD6E6) 1;
  border-left-width: 3px;
}
/* A linear gradient across a 9px dot reads as whichever band lands in the middle. A conic
   one shows all four at that size, which is the point of the swatch. */
.ifairy-force-row[data-force="iridescent"] .ifairy-force-swatch {
  background: conic-gradient(from 135deg, #5AA9FF, #F4C25A, #B98CF0, #CDD6E6, #5AA9FF);
  box-shadow: none;
}

/* A source card is tagged with the Force its chunk carries, so the same colour that runs
   through the prose also identifies where the claim came from. */
.ifairy-source[data-force] { border-left: 3px solid var(--if-force-colour, var(--if-border)); }
.ifairy-source[data-force] strong { color: var(--if-force-colour, var(--if-text)); }

/* Force legend, shown on the character panel. */
.ifairy-force-legend { display: grid; gap: 7px; margin-top: 26px; padding-top: 20px; border-top: 1px solid var(--if-border); }
.ifairy-force-legend p { margin: 0 0 4px; color: var(--if-subtle); font-size: 9px; font-weight: 800; letter-spacing: .15em; text-transform: uppercase; }
.ifairy-force-row { display: flex; align-items: baseline; gap: 9px; font-size: 12px; }
.ifairy-force-swatch { flex: none; width: 9px; height: 9px; border-radius: 50%; background: var(--if-force-colour); box-shadow: 0 0 10px var(--if-force-colour); transform: translateY(-1px); }
.ifairy-force-row strong { color: var(--if-force-colour); font-weight: 700; }
.ifairy-force-row span { color: var(--if-muted); }

/* Canon: every scene ends with A/B guided paths plus a free-form C. */
.ifairy-choices { display: grid; gap: 8px; margin-bottom: 14px; }
.ifairy-choice {
  display: flex; align-items: flex-start; gap: 12px; width: 100%; padding: 14px 16px; text-align: left;
  color: var(--if-text); background: var(--if-bg-soft); border: 1px solid var(--if-border);
  border-radius: var(--if-radius-sm); font: inherit; line-height: 1.5; cursor: pointer;
  transition: border-color .18s, background .18s, transform .18s;
}
.ifairy-choice:hover:not([disabled]) { background: var(--if-surface-raised); border-color: var(--if-border-strong); transform: translateX(3px); }
.ifairy-choice[disabled] { cursor: default; opacity: .45; transform: none; }
.ifairy-choice-taken { opacity: 1; color: #041817; background: var(--if-lagoon); border-color: var(--if-lagoon); }
.ifairy-choice-taken .ifairy-choice-key { color: #041817; border-color: rgba(4,24,23,.35); }
.ifairy-choice-key {
  flex: none; width: 24px; height: 24px; display: grid; place-items: center; border: 1px solid var(--if-border-strong);
  border-radius: 7px; color: var(--if-lagoon); font: 800 11px/1 "JetBrains Mono", monospace;
}
.ifairy-choice-label > *:first-child { margin-top: 0; }
.ifairy-choice-label > *:last-child { margin-bottom: 0; }
.ifairy-choice-freeform { display: flex; align-items: flex-start; gap: 12px; margin: 2px 0 0; padding: 12px 16px; color: var(--if-muted); border: 1px dashed var(--if-border); border-radius: var(--if-radius-sm); font-size: 13px; line-height: 1.5; }
.ifairy-progress { display: inline-flex; align-items: center; gap: 8px; margin: 8px 0; color: var(--if-muted); font-size: 12px; }
.ifairy-progress::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--if-sunshine); animation: ifairy-pulse 1.2s infinite; }
@keyframes ifairy-pulse { 50% { opacity: .35; transform: scale(.8); } }
body.ifairy-shell .ifairy-sources { margin-top: 12px; }
.ifairy-sources-toggle { width: 100%; padding: 11px 13px; display: flex; align-items: center; justify-content: space-between; color: var(--if-lagoon); background: transparent; border: 1px solid var(--if-border); border-radius: 12px; font: 750 12px/1 Inter,sans-serif; cursor: pointer; }
.ifairy-sources-list { display: grid; gap: 8px; margin-top: 8px; }
/* display:grid outranks the hidden attribute's UA display:none, so state it explicitly. */
.ifairy-sources-list[hidden] { display: none; }
.ifairy-source { padding: 11px 13px; display: grid; grid-template-columns: auto 1fr auto; gap: 10px; color: var(--if-muted); background: var(--if-bg-soft); border: 1px solid var(--if-border); border-radius: 12px; font-size: 11px; }
.ifairy-source strong { color: var(--if-text); font-family: "JetBrains Mono",monospace; }
.ifairy-source code { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ifairy-source-score { color: var(--if-lagoon); font-family: "JetBrains Mono",monospace; }
body.ifairy-shell .ifairy-composer { padding: 18px clamp(22px,7vw,92px) 30px; background: linear-gradient(transparent,var(--if-bg) 22%); }
body.ifairy-shell .ifairy-composer label { position: absolute; left: -9999px; }
body.ifairy-shell .ifairy-composer textarea { width: 100%; min-height: 105px; padding: 18px; resize: vertical; color: var(--if-text); background: var(--if-surface); border: 1px solid var(--if-border); border-radius: var(--if-radius); font: inherit; outline: none; box-shadow: 0 12px 36px rgba(0,0,0,.18); }
body.ifairy-shell .ifairy-composer textarea:focus { border-color: var(--if-lagoon); box-shadow: 0 0 0 4px rgba(31,211,198,.1); }
body.ifairy-shell .ifairy-composer-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 11px; }
body.ifairy-shell .ifairy-composer-row small { color: var(--if-muted); }
body.ifairy-shell .ifairy-composer button { padding: 13px 22px; color: #041817; background: var(--if-lagoon); border: 0; border-radius: 999px; font-weight: 800; cursor: pointer; }
body.ifairy-shell .ifairy-composer button:disabled { opacity: .55; }

/* ---------------------------------------------------------------------------
   Component layer — Bootstrap primitives and third-party widgets that the
   module bodies rely on. Without these they fall back to their own light
   defaults and break the dark theme.
   --------------------------------------------------------------------------- */

/* Panels: fieldset/legend is the form container used across every module */
body.ifairy-admin fieldset {
  padding: 26px !important; margin-bottom: 20px;
  background: var(--if-surface); border: 1px solid var(--if-border) !important;
  border-radius: var(--if-radius) !important;
}
body.ifairy-admin fieldset > legend {
  float: none; width: auto; padding: 0; margin: 0 0 18px;
  color: var(--if-muted); font-size: 10px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase;
}
body.ifairy-admin fieldset > legend h5,
body.ifairy-admin fieldset > legend h4 { margin: 0; font-size: 17px; letter-spacing: -.02em; text-transform: none; }
body.ifairy-admin fieldset > legend + p { margin-top: -12px; margin-bottom: 18px; color: var(--if-muted); font-size: 13px; }
body.ifairy-admin .ifairy-panel {
  padding: 26px; margin-bottom: 20px; background: var(--if-surface);
  border: 1px solid var(--if-border); border-radius: var(--if-radius);
}
body.ifairy-admin .ifairy-panel-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 18px; }

/* Form primitives */
body.ifairy-admin .form-floating > label { color: var(--if-subtle); }
body.ifairy-admin .form-floating > .form-control:focus ~ label,
body.ifairy-admin .form-floating > .form-control:not(:placeholder-shown) ~ label,
body.ifairy-admin .form-floating > .form-select ~ label { color: var(--if-muted); background: transparent; }
body.ifairy-admin .form-floating > .form-control,
body.ifairy-admin .form-floating > .form-select { background-color: var(--if-bg-soft); }
body.ifairy-admin .form-text, body.ifairy-admin .form-check-label { color: var(--if-muted); }
body.ifairy-admin .form-control-color { min-height: 46px; padding: 5px; background-color: var(--if-bg-soft); }
body.ifairy-admin .form-control:disabled, body.ifairy-admin .form-control[readonly],
body.ifairy-admin .form-select:disabled { color: var(--if-subtle); background-color: var(--if-bg); opacity: 1; }
body.ifairy-admin .form-select { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23a8a29e' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); }
body.ifairy-admin .input-group-text { color: var(--if-muted); background: var(--if-surface-raised); border-color: var(--if-border); }
body.ifairy-admin .invalid-feedback, body.ifairy-admin .text-danger { color: var(--if-melon) !important; }
body.ifairy-admin .was-validated .form-control:invalid,
body.ifairy-admin .form-control.is-invalid { border-color: var(--if-melon); background-image: none; }

/* Switches */
body.ifairy-admin .form-switch .form-check-input {
  width: 42px; height: 23px; margin-top: .1em; background-color: var(--if-surface-raised);
  border-color: var(--if-border); cursor: pointer;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23a8a29e'/%3e%3c/svg%3e");
}
body.ifairy-admin .form-switch .form-check-input:checked {
  background-color: var(--if-lagoon); border-color: var(--if-lagoon);
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23041817'/%3e%3c/svg%3e");
}
body.ifairy-admin .form-switch.form-switch-lg .form-check-input { width: 50px; height: 27px; }
body.ifairy-admin .form-check-input:focus { border-color: var(--if-lagoon); box-shadow: 0 0 0 4px rgba(31,211,198,.1); }

/* Tabs */
body.ifairy-admin .nav-tabs { gap: 4px; border-bottom: 1px solid var(--if-border); }
body.ifairy-admin .nav-tabs .nav-link {
  padding: 11px 16px; color: var(--if-muted); background: transparent;
  border: 1px solid transparent; border-radius: 12px 12px 0 0; font-size: 13px; font-weight: 700;
}
body.ifairy-admin .nav-tabs .nav-link:hover { color: var(--if-text); background: var(--if-surface); border-color: transparent; }
body.ifairy-admin .nav-tabs .nav-link.active {
  color: var(--if-text); background: var(--if-surface);
  border-color: var(--if-border) var(--if-border) var(--if-surface);
}
body.ifairy-admin .tab-content { padding-top: 24px; }

/* Lists, dropdowns, sortable handles */
body.ifairy-admin .list-group-item { background: var(--if-surface); border-color: var(--if-border); }
body.ifairy-admin .dropdown-item { color: var(--if-muted); }
body.ifairy-admin .dropdown-item:hover, body.ifairy-admin .dropdown-item:focus { color: var(--if-text); background: var(--if-surface-raised); }
body.ifairy-admin .dropdown-divider { border-top-color: var(--if-border); }
body.ifairy-admin .handle { color: var(--if-subtle); }
body.ifairy-admin .handle:hover { color: var(--if-lagoon); }
body.ifairy-admin .sortable-ghost { opacity: .4; background: var(--if-surface-raised) !important; }

/* Modals */
body.ifairy-admin .modal-header, body.ifairy-admin .modal-footer { border-color: var(--if-border); }
body.ifairy-admin .modal-backdrop.show { opacity: .72; }
body.ifairy-admin .btn-close { filter: invert(1) grayscale(1) brightness(1.6); }
:root[data-theme="light"] body.ifairy-admin .btn-close { filter: none; }

/* Floating save button from the legacy layout */
body.ifairy-admin .btn-save-absolute {
  position: fixed; right: 26px; bottom: 26px; z-index: 1040;
  width: 56px; height: 56px; display: grid; place-items: center;
  color: #041817; background: var(--if-lagoon); border-radius: 50%;
  box-shadow: 0 14px 40px rgba(31,211,198,.28); cursor: pointer;
}

/* Image preview wrappers used by the media-bearing forms */
body.ifairy-admin .wrapper-image-preview-form, body.ifairy-admin .wrapper-form-img {
  display: grid; gap: 12px; padding: 18px !important; text-align: center;
  background: var(--if-bg-soft); border: 1px dashed var(--if-border); border-radius: var(--if-radius-sm);
}
body.ifairy-admin .wrapper-image-preview-form img, body.ifairy-admin .wrapper-form-img img {
  max-width: 100%; max-height: 180px; margin: auto; object-fit: contain; border-radius: var(--if-radius-sm);
}
body.ifairy-admin .tool-tip-form-float { color: var(--if-subtle); }
body.ifairy-admin .tool-tip-form-float:hover { color: var(--if-lagoon); }
body.ifairy-admin .toggle-password { color: var(--if-subtle); cursor: pointer; }

/* Shared eyebrow label on the public shell */
body.ifairy-site .ifairy-eyebrow { color: var(--if-lagoon); font-size: 10px; font-weight: 800; letter-spacing: .18em; text-transform: uppercase; }

/* Empty states */
.ifairy-empty-state {
  padding: 56px 28px; display: grid; gap: 8px; place-items: center; text-align: center;
  color: var(--if-muted); background: var(--if-surface);
  border: 1px dashed var(--if-border); border-radius: var(--if-radius);
}
.ifairy-empty-state i { color: var(--if-subtle); font-size: 30px; }
.ifairy-empty-state strong { color: var(--if-text); font-family: "Space Grotesk", Inter, sans-serif; font-size: 18px; }
.ifairy-empty-state p { max-width: 46ch; margin: 0; font-size: 13px; }

/* DataTables chrome */
body.ifairy-admin .dataTables_wrapper { color: var(--if-muted); }
body.ifairy-admin .dataTables_wrapper .row:first-child { gap: 12px 0; padding: 16px 16px 4px; }
body.ifairy-admin .dataTables_filter label, body.ifairy-admin .dataTables_length label { color: var(--if-muted); font-size: 12px; font-weight: 700; }
body.ifairy-admin .dataTables_filter input, body.ifairy-admin .dataTables_length select {
  min-height: 40px; margin-left: 8px; padding: 0 12px; color: var(--if-text);
  background: var(--if-bg-soft); border: 1px solid var(--if-border); border-radius: 999px;
}
body.ifairy-admin .dataTables_filter input:focus, body.ifairy-admin .dataTables_length select:focus {
  border-color: var(--if-lagoon); box-shadow: 0 0 0 4px rgba(31,211,198,.1); outline: none;
}
body.ifairy-admin .dataTables_info { padding: 14px 16px !important; color: var(--if-subtle); font-size: 12px; }
body.ifairy-admin .dataTables_paginate { padding: 10px 16px !important; }
body.ifairy-admin .page-link { color: var(--if-muted); background: transparent; border-color: var(--if-border); }
body.ifairy-admin .page-link:hover { color: var(--if-text); background: var(--if-surface-raised); border-color: var(--if-border); }
body.ifairy-admin .page-item.active .page-link { color: #041817; background: var(--if-lagoon); border-color: var(--if-lagoon); }
body.ifairy-admin .page-item.disabled .page-link { color: var(--if-subtle); background: transparent; opacity: .5; }
body.ifairy-admin table.dataTable thead th.sorting,
body.ifairy-admin table.dataTable thead th.sorting_asc,
body.ifairy-admin table.dataTable thead th.sorting_desc { color: var(--if-muted); }

/* select2 */
body.ifairy-admin .select2-container--bootstrap-5 .select2-selection {
  min-height: 46px; color: var(--if-text); background: var(--if-bg-soft);
  border: 1px solid var(--if-border); border-radius: var(--if-radius-sm);
}
body.ifairy-admin .select2-container--bootstrap-5.select2-container--focus .select2-selection {
  border-color: var(--if-lagoon); box-shadow: 0 0 0 4px rgba(31,211,198,.1);
}
body.ifairy-admin .select2-container--bootstrap-5 .select2-selection--multiple .select2-selection__choice {
  color: #041817; background: var(--if-lagoon); border: 0; border-radius: 999px; font-weight: 700;
}
.select2-container--bootstrap-5 .select2-dropdown {
  color: var(--if-text); background: var(--if-surface); border-color: var(--if-border); border-radius: var(--if-radius-sm);
}
.select2-container--bootstrap-5 .select2-results__option { color: var(--if-muted); }
.select2-container--bootstrap-5 .select2-results__option--highlighted { color: #041817 !important; background: var(--if-lagoon) !important; }
.select2-container--bootstrap-5 .select2-search__field {
  color: var(--if-text) !important; background: var(--if-bg-soft) !important; border-color: var(--if-border) !important;
}

/* CKEditor */
body.ifairy-admin .cke_chrome { border-color: var(--if-border) !important; border-radius: var(--if-radius-sm); overflow: hidden; box-shadow: none !important; }
body.ifairy-admin .cke_top, body.ifairy-admin .cke_bottom {
  background: var(--if-surface-raised) !important; border-color: var(--if-border) !important; box-shadow: none !important;
}
body.ifairy-admin .cke_contents { background: var(--if-bg-soft) !important; }
body.ifairy-admin .cke_button_icon, body.ifairy-admin .cke_toolbar .cke_button__source_icon { filter: invert(.82); }
body.ifairy-admin .cke_combo_text, body.ifairy-admin .cke_path_item { color: var(--if-muted) !important; }
:root[data-theme="light"] body.ifairy-admin .cke_button_icon { filter: none; }

/* CodeMirror */
body.ifairy-admin .CodeMirror {
  height: auto; min-height: 220px; color: var(--if-text); background: var(--if-bg-soft);
  border: 1px solid var(--if-border); border-radius: var(--if-radius-sm); font-family: "JetBrains Mono", monospace;
}
body.ifairy-admin .CodeMirror-gutters { background: var(--if-surface-raised); border-right-color: var(--if-border); }
body.ifairy-admin .CodeMirror-linenumber { color: var(--if-subtle); }
body.ifairy-admin .CodeMirror-cursor { border-left-color: var(--if-lagoon); }
body.ifairy-admin .CodeMirror-selected { background: rgba(31,211,198,.16) !important; }
body.ifairy-admin .cm-string { color: var(--if-lagoon); }
body.ifairy-admin .cm-number, body.ifairy-admin .cm-atom { color: var(--if-sunshine); }
body.ifairy-admin .cm-keyword, body.ifairy-admin .cm-property { color: var(--if-neural); }

/* Toasts */
#toast-container > div { opacity: 1; background-image: none !important; border-radius: var(--if-radius-sm); box-shadow: var(--if-shadow); }
#toast-container > .toast-success { color: #041817; background: var(--if-lagoon); }
#toast-container > .toast-error { color: #180708; background: var(--if-melon); }

@media (max-width: 992px) {
  :root { --if-sidebar: 236px; }
  .ifairy-bento { grid-column: span 6; }
  .ifairy-bento.wide, .ifairy-bento.narrow { grid-column: span 6; }
  .ifairy-login-shell { grid-template-columns: 1fr; }
  .ifairy-login-story { min-height: 310px; padding: 36px; }
  .ifairy-login-story h1 { margin: 35px 0 14px; }
  .ifairy-login-form { padding: 40px; }
}

@media (max-width: 767px) {
  body.ifairy-admin { padding-top: 64px; }
  body.ifairy-admin .navbar-custom { height: 64px; padding: 0 14px !important; }
  body.ifairy-admin .ifairy-brand-name span, body.ifairy-admin .ifairy-admin-status, body.ifairy-admin .ifairy-theme-toggle span { display: none; }
  body.ifairy-admin #sidebarMenu { top: 64px; width: min(300px,86vw); box-shadow: var(--if-shadow); }
  body.ifairy-admin main { margin-left: 0 !important; padding: 0 16px 36px !important; }
  .ifairy-admin-pagehead { min-height: 82px; }
  .ifairy-admin-pagehead h1 { font-size: 24px; }
  .ifairy-bento, .ifairy-bento.wide, .ifairy-bento.narrow { grid-column: 1/-1; }
  .ifairy-login-story { display: none; }
  .ifairy-login-form { padding: 32px 24px; }
  .ifairy-login-shell { min-height: auto; }
  .ifairy-site-nav { display: none; }
  .ifairy-site-header-inner { width: calc(100% - 28px); }
  body.ifairy-shell .ifairy-brand-name span, body.ifairy-shell .ifairy-theme-toggle span { display: none; }
  body.ifairy-shell .ifairy-chat-layout { display: block; }
  body.ifairy-shell .ifairy-character-panel { padding: 26px 22px; border-right: 0; border-bottom: 1px solid var(--if-border); }
  body.ifairy-shell .ifairy-character-panel .ifairy-back { margin-bottom: 22px; }
  body.ifairy-shell .ifairy-character-panel .ifairy-sigil, body.ifairy-shell .ifairy-character-panel dl { display: none; }
  body.ifairy-shell .ifairy-character-panel h1 { font-size: 32px; }
  body.ifairy-shell .ifairy-conversation { height: auto; min-height: 70vh; }
  body.ifairy-shell .ifairy-messages { min-height: 380px; padding: 28px 18px; }
  body.ifairy-shell .ifairy-composer { padding: 14px 18px 24px; }
  body.ifairy-shell .ifairy-composer-row small { display: none; }
  .ifairy-source { grid-template-columns: auto 1fr; }
  .ifairy-source-score { grid-column: 2; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}
