/* --- Layout & Tabbed Components Refactoring --- */

.tabbed-layout-container{max-width:1100px;margin:0 auto 40px auto;position:relative;}

/* Custom flag language dropdown (profile) */
.lang-dd{position:relative;}
.lang-dd-toggle{width:100%;display:flex;align-items:center;gap:10px;padding:12px 14px;background:var(--background);border:2px solid var(--card-border);border-radius:8px;color:var(--text);font-size:1.05rem;font-family:inherit;cursor:pointer;text-align:left;transition:border-color 0.2s;}
.lang-dd-toggle:hover{border-color:var(--primary);}
.lang-dd-name{flex:1;}
.lang-dd-caret{color:var(--text-muted);font-size:0.85rem;}
.lang-dd-menu {
    position:absolute;
    top:calc(100% + 6px);
    left:0;
    right:0;
    z-index:50;
    max-height:240px;
    overflow-y:auto;
    padding:6px;
    background:var(--card-bg);
    border:1px solid var(--card-border);
    border-radius:10px;
    box-shadow:0 14px 34px rgba(0,0,0,0.16);
}
.lang-dd-menu.hidden{display:none;}
.lang-dd-option{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;cursor:pointer;color:var(--text-color);}
.lang-dd-option:hover{background:rgba(111,95,228,0.08);}
.lang-dd-option.active{background:var(--accent-glow);font-weight:700;}

/* Slim centered header: the icon sits INLINE with the h1 (one line), subtitle centered below.
   The icon now lives INSIDE the <h1> in markup (admin / profile / conjugations all share this). */
.compact-header{display:flex;flex-direction:column;align-items:center;margin-bottom:20px;}
.compact-header-text{text-align:center;}
.compact-header-text h1{font-size:1.6rem;margin:0;display:inline-flex;align-items:center;justify-content:center;gap:9px;line-height:1.2;}
/* The h1 carries glow-text's background-clip:text + transparent text-fill — both INHERIT into the
   icon and mangle duotone glyphs (the secondary layer paints with the clipped gradient → "missing
   piece"). Re-opaque the icon's own fill so it renders as a normal two-layer duotone. */
.compact-header-text h1 .icon-container{font-size:1.3rem;color:var(--primary);-webkit-text-fill-color:var(--primary);width:auto;height:auto;background:none;border:none;border-radius:0;}
.compact-header-text h1 .icon-container.danger{color:var(--danger);-webkit-text-fill-color:var(--danger);}
.compact-header-text p{margin:5px 0 0;color:var(--text-muted);font-size:0.95rem;line-height:1.4;}
.compact-header-admin{margin-bottom:16px;}

.tabbed-layout-wrapper {
    display:flex;
    gap:30px;
    align-items:flex-start;
    flex-wrap:wrap;
}

.sidebar-menu-card {
    flex:0 0 260px;
    padding:12px 10px;
    position:sticky;
    top:120px;
    max-height:calc(100vh - 140px);
    overflow-y:auto;
    overscroll-behavior:contain;
    scrollbar-width:thin;
    scrollbar-color:var(--card-border) transparent;
    display:flex;
    flex-direction:column;
    gap:3px;
    background:rgba(255,255,255,0.45);
    backdrop-filter:blur(16px);
    -webkit-backdrop-filter:blur(16px);
    border:1px solid var(--card-border);
    border-radius:20px;
    box-shadow:0 8px 32px 0 rgba(31,38,135,0.04);
    transition:all 0.3s ease;
}
body.hyper-theme .sidebar-menu-card{background:rgba(15,23,42,0.45);border-color:#1e293b;}
/* 70: the nav scrollbar appeared as a heavy default bar once the menu grew past the viewport.
   Slim, inset and low-contrast until hovered — the same treatment the modal cards use. */
.sidebar-menu-card::-webkit-scrollbar{width:8px;}
.sidebar-menu-card::-webkit-scrollbar-track{background:transparent;}
.sidebar-menu-card::-webkit-scrollbar-thumb{background:transparent;border-radius:8px;border:2px solid transparent;background-clip:content-box;}
.sidebar-menu-card:hover::-webkit-scrollbar-thumb{background:var(--card-border);background-clip:content-box;}
.sidebar-menu-card::-webkit-scrollbar-thumb:hover{background:var(--text-muted);background-clip:content-box;}
.sidebar-menu-card:hover{transform:none!important;box-shadow:0 12px 40px rgba(111,95,228,0.12)!important;border-color:rgba(111,95,228,0.25);}

/* Phase 78: authenticated Admin/Profile L-frame. The global bar owns the top row; the contextual
   rail begins below it and the content column keeps long settings/forms at a readable width. */
body.lframe-active main#app-root {
    max-width:none;
    width:calc(100% - var(--app-rail-width,var(--lframe-rail-width)));
    margin:0 0 0 var(--app-rail-width,var(--lframe-rail-width));
    padding:0;
    background-image:linear-gradient(var(--shell-grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--shell-grid-line) 1px,transparent 1px),radial-gradient(circle at 16% 0,rgba(111,95,228,0.13),transparent 34rem),radial-gradient(circle at 92% 8%,rgba(244,130,92,0.1),transparent 30rem);
    background-size:64px 64px,64px 64px,100% 100%,100% 100%;
}
.lframe-layout {
    --card-bg:rgba(255,255,255,0.72);
    --background:rgba(255,255,255,0.8);
    --bg-color:rgba(241,237,250,0.62);
    --card-border:var(--shell-panel-border);
    max-width:none;
    min-height:calc(100dvh - var(--app-header-height));
    margin:0;
    animation:none!important;
}
.lframe-layout .tabbed-layout-wrapper {
    display:grid;
    grid-template-columns:minmax(0,1fr);
    gap:0;
    align-items:start;
    min-height:calc(100dvh - var(--app-header-height));
}
.lframe-layout .tab-content-area{width:100%;min-width:0;max-width:1320px;margin:0 auto;padding:28px clamp(20px,3vw,48px) 56px;}
.lframe-layout .admin-tab-content,.lframe-layout .profile-tab-content{position:relative;animation:none;background:radial-gradient(circle at 94% 2%,rgba(111,95,228,0.09),transparent 250px),radial-gradient(circle at 6% 100%,rgba(244,130,92,0.07),transparent 300px),var(--shell-panel);border-color:var(--shell-panel-border);box-shadow:var(--shell-panel-shadow)!important;}
.lframe-layout .admin-tab-content::before,.lframe-layout .profile-tab-content::before {
    content:'';
    position:absolute;
    top:-1px;
    right:54px;
    left:54px;
    height:2px;
    border-radius:999px;
    background:var(--shell-aurora);
    opacity:0.58;
    pointer-events:none;
}
.lframe-layout .tab-header{position:relative;border-bottom:0;padding-bottom:18px;}
.lframe-layout .tab-header::after{content:'';position:absolute;right:0;bottom:0;left:0;height:1px;background:linear-gradient(90deg,rgba(111,95,228,0.48),rgba(244,130,92,0.16) 48%,transparent);}
.lframe-layout .tab-header.no-border::after{display:none;}
.lframe-layout .tab-header h2{display:flex;align-items:center;gap:10px;letter-spacing:-0.01em;}
.lframe-layout .tab-header h2>i{display:inline-block;width:42px;height:42px;line-height:42px;text-align:center;border:1px solid rgba(111,95,228,0.16);border-radius:12px;background:linear-gradient(145deg,rgba(111,95,228,0.14),rgba(244,130,92,0.09));color:var(--primary);box-shadow:inset 0 1px rgba(255,255,255,0.7),0 7px 18px -12px var(--primary-glow);}
.lframe-layout .tab-header.danger-header::after,.lframe-layout .tab-header.danger-zone-header::after{background:linear-gradient(90deg,rgba(239,68,68,0.55),rgba(244,130,92,0.16),transparent);}
.lframe-layout .tab-header.danger-header h2>i,.lframe-layout .tab-header.danger-zone-header h2>i{color:var(--danger);border-color:rgba(239,68,68,0.2);background:rgba(239,68,68,0.07);}
.lframe-layout .tab-desc{max-width:74ch;}
.lframe-layout .po-level-card,.lframe-layout .po-tile,.lframe-layout .set-groups,.lframe-layout .set-group{background:var(--shell-subpanel);border-color:var(--shell-panel-border);box-shadow:inset 0 1px rgba(255,255,255,0.74),0 14px 30px -28px rgba(41,31,92,0.52);}
.lframe-layout .po-tile-ico{display:inline-block;width:38px;height:38px;line-height:38px;margin-bottom:3px;border:1px solid rgba(111,95,228,0.12);border-radius:11px;background:rgba(255,255,255,0.56);filter:drop-shadow(0 5px 8px rgba(61,45,125,0.1));}
.lframe-layout .rank-bar-track{background:rgba(67,55,113,0.12);box-shadow:inset 0 1px 3px rgba(42,39,64,0.08);}
.lframe-layout .dd-btn,.lframe-layout input,.lframe-layout textarea{box-shadow:inset 0 1px rgba(255,255,255,0.72);}
body.lframe-active .site-footer{background:linear-gradient(180deg,rgba(249,247,255,0.78),rgba(255,248,244,0.9));border-top-color:rgba(111,95,228,0.16);box-shadow:inset 0 2px rgba(111,95,228,0.08),0 -20px 55px -45px rgba(43,32,95,0.45);}

.tab-content-area{flex:1;min-width:300px;}

.admin-tab-btn, .profile-tab-btn {
    justify-content:flex-start;
    width:100%;
    background:transparent;
    color:var(--text-muted);
    box-shadow:none;
    padding:8px 8px 8px 12px;
    border-radius:10px;
    border:none;
    cursor:pointer;
    transition:all 0.25s ease;
    display:flex;
    align-items:center;
    gap:10px;
    font-weight:700;
    position:relative;
    white-space:nowrap;/* nav labels (e.g. "Account & Security") never wrap to a second line */
}

.admin-tab-btn::before, .profile-tab-btn::before {
    content:'';
    position:absolute;
    left:0;
    top:20%;
    height:60%;
    width:4px;
    background:linear-gradient(to bottom, var(--primary), var(--secondary));
    border-radius:0 4px 4px 0;
    opacity:0;
    transition:opacity 0.25s ease, height 0.25s ease;
}

.admin-tab-btn:hover,.profile-tab-btn:hover{color:var(--text-color);background:rgba(255,255,255,0.6);box-shadow:none!important;transform:none!important;}
.admin-tab-btn.active,.profile-tab-btn.active{background:rgba(111,95,228,0.12);color:var(--primary);box-shadow:none!important;}
.admin-tab-btn:hover::before,.profile-tab-btn:hover::before{opacity:0.6;height:40%;}
.admin-tab-btn.active::before,.profile-tab-btn.active::before{opacity:1;height:60%;}
.admin-tab-btn i,.profile-tab-btn i{transition:transform 0.25s ease;}
.admin-tab-btn:hover i,.profile-tab-btn:hover i{transform:translateX(4px);}
.lframe-layout .admin-tab-btn:hover,.lframe-layout .profile-tab-btn:hover{color:#F8F7FF;background:rgba(255,255,255,0.07);}
.lframe-layout .admin-tab-btn.active,.lframe-layout .profile-tab-btn.active{color:#FFF;background:linear-gradient(90deg,rgba(111,95,228,0.34),rgba(111,95,228,0.14));box-shadow:inset 0 1px rgba(255,255,255,0.08),0 8px 20px -16px rgba(111,95,228,0.9)!important;}
.lframe-layout .admin-acc-parent.is-open:not(.active){color:#ECE9FF;background:rgba(167,153,255,0.1);box-shadow:inset 0 1px rgba(255,255,255,0.045)!important;}
.lframe-layout .admin-tab-btn::before,.lframe-layout .profile-tab-btn::before{box-shadow:0 0 12px rgba(244,130,92,0.5);}

body.hyper-theme .admin-tab-btn:hover,body.hyper-theme .profile-tab-btn:hover{background:rgba(255,255,255,0.04);color:#fff;}
body.hyper-theme .admin-tab-btn.active,body.hyper-theme .profile-tab-btn.active{background:rgba(111,95,228,0.18);color:#fff;}

/* Accordion sub-nav (Images → sub-sections; reusable on Profile). One section open at a time. */
.admin-acc-group{display:flex;flex-direction:column;}
.admin-acc-chev{margin-left:auto;font-size:0.72em;opacity:0.55;transition:transform 0.28s ease;}
.admin-acc-parent.is-open .admin-acc-chev{transform:rotate(180deg);opacity:0.85;}
.admin-acc-sub {
    display:flex;
    flex-direction:column;
    gap:3px;
    max-height:0;
    overflow:hidden;
    transition:max-height 0.3s ease;
}
.admin-acc-sub.open{max-height:420px;margin-top:3px;}
.admin-acc-item{padding-left:42px;font-weight:600;font-size:0.85em;}
.admin-acc-item::before{display:none;}

.admin-tab-content{padding:40px;}
.admin-tab-content,.profile-tab-content{animation:fadeSlideUp 0.35s cubic-bezier(0.16,1,0.3,1) forwards;}
.admin-override-card{background:rgba(239,68,68,0.05);border-color:rgba(239,68,68,0.3);box-shadow:0 0 20px rgba(239,68,68,0.08)!important;}
.admin-override-title{color:var(--danger);margin-top:0;font-size:1.5rem;font-weight:800;display:inline-flex;align-items:center;gap:10px;}
.admin-override-desc{margin-bottom:0;color:var(--text-muted);font-size:0.95rem;line-height:1.5;}
.admin-btn-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin-top:20px;}
.override-grid-btn {
    display:flex;
    align-items:center;
    gap:15px;
    padding:16px 20px;
    background:rgba(255,255,255,0.75);
    border:1px solid var(--card-border);
    border-radius:12px;
    cursor:pointer;
    transition:all 0.25s cubic-bezier(0.4,0,0.2,1);
    text-align:left;
    color:var(--text);
    width:100%;
}
body.hyper-theme .override-grid-btn{background:rgba(15,23,42,0.65);}
.override-grid-btn:hover{transform:translateY(-2px);background:rgba(255,255,255,0.95);}
body.hyper-theme .override-grid-btn:hover{background:rgba(15,23,42,0.85);}
.override-btn-icon {
    display:flex;
    align-items:center;
    justify-content:center;
    width:45px;
    height:45px;
    border-radius:10px;
    font-size:1.3rem;
    flex-shrink:0;
    transition:all 0.25s ease;
}
.override-btn-text{display:flex;flex-direction:column;gap:2px;}
.override-btn-title{font-size:1.05rem;font-weight:800;}
.override-btn-desc{font-size:0.8rem;color:var(--text-muted);font-weight:500;}
.override-grid-btn.learn-btn .override-btn-icon{background:rgba(244,162,60,0.1);color:#F4A23C;}
.override-grid-btn.learn-btn:hover{border-color:#F4A23C;box-shadow:0 6px 20px rgba(244,162,60,0.15)!important;}
.override-grid-btn.learn-btn:hover .override-btn-icon{background:#F4A23C;color:#fff;box-shadow:0 0 10px rgba(244,162,60,0.4);}
.override-grid-btn.warp-btn .override-btn-icon{background:rgba(111,95,228,0.1);color:var(--primary);}
.override-grid-btn.warp-btn:hover{border-color:var(--primary);box-shadow:0 6px 20px var(--primary-glow)!important;}
.override-grid-btn.warp-btn:hover .override-btn-icon{background:var(--primary);color:#fff;box-shadow:0 0 10px var(--primary-glow);}
.override-grid-btn.wipe-vocab-btn .override-btn-icon{background:rgba(239,68,68,0.1);color:#ef4444;}
.override-grid-btn.wipe-vocab-btn:hover{border-color:#ef4444;box-shadow:0 6px 20px rgba(239,68,68,0.15)!important;}
.override-grid-btn.wipe-vocab-btn:hover .override-btn-icon{background:#ef4444;color:#fff;box-shadow:0 0 10px rgba(239,68,68,0.4);}
.override-grid-btn.wipe-stats-btn .override-btn-icon{background:rgba(244,63,94,0.1);color:#f43f5e;}
.override-grid-btn.wipe-stats-btn:hover{border-color:#f43f5e;box-shadow:0 6px 20px rgba(244,63,94,0.15)!important;}
.override-grid-btn.wipe-stats-btn:hover .override-btn-icon{background:#f43f5e;color:#fff;box-shadow:0 0 10px rgba(244,63,94,0.4);}

/* Testing toolbelt (Progress Override) */
.admin-snapshot{margin-top:20px;padding:16px 18px;background:rgba(255,255,255,0.6);border:1px solid var(--card-border);border-radius:14px;}
body.hyper-theme .admin-snapshot{background:rgba(15,23,42,0.55);}
.admin-snapshot-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;}
.admin-snapshot-refresh{width:34px;height:34px;border-radius:50%;border:1px solid var(--card-border);background:var(--card-bg);color:var(--primary);cursor:pointer;font-size:0.9rem;flex-shrink:0;transition:all 0.2s;}
.admin-snapshot-refresh:hover{background:var(--primary);color:#fff;}
.admin-snapshot-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:10px;}
.snap-chip{display:flex;flex-direction:column;align-items:center;gap:3px;padding:10px 6px;background:var(--card-bg);border:1px solid var(--card-border);border-radius:10px;}
.snap-val{font-size:1.35rem;font-weight:800;color:var(--text-color);}
.snap-label{font-size:0.68rem;text-transform:uppercase;letter-spacing:0.04em;color:var(--text-muted);font-weight:700;}
.snap-chip-warn{border-color:rgba(192,86,58,0.5);}
.snap-chip-warn .snap-val{color:#C0563A;}
.admin-tool-block{margin-top:18px;padding:16px 18px;background:rgba(255,255,255,0.55);border:1px solid var(--card-border);border-radius:14px;}
body.hyper-theme .admin-tool-block{background:rgba(15,23,42,0.5);}
.admin-tool-title{display:flex;align-items:center;gap:8px;font-size:1rem;font-weight:800;margin:0 0 12px;color:var(--text-color);}
.admin-tool-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.admin-tool-label{font-weight:700;color:var(--text-muted);font-size:0.9rem;}
.admin-tool-input{width:90px;padding:10px 12px;background:var(--background);border:2px solid var(--card-border);color:var(--text);border-radius:8px;outline:none;font-family:inherit;font-size:1rem;}
.admin-tool-input:focus{border-color:var(--primary);}
.admin-tool-select{flex:1;min-width:180px;padding:10px 12px;background:var(--background);border:2px solid var(--card-border);color:var(--text);border-radius:8px;outline:none;font-family:inherit;font-size:1rem;cursor:pointer;}
.admin-tool-btn{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;background:var(--primary);color:#fff;border:none;border-radius:8px;font-weight:700;cursor:pointer;transition:background 0.2s;}
.admin-tool-btn:hover{background:var(--primary-hover);}
.admin-tool-btn:disabled{opacity:0.6;cursor:default;}
.admin-tool-hint{margin:10px 0 0;font-size:0.8rem;color:var(--text-muted);}


.theme-input {
    width:100%;
    padding:12px;
    background:var(--background);
    border:2px solid var(--card-border);
    color:var(--text);
    border-radius:8px;
    outline:none;
    transition:border-color 0.3s;
    font-family:inherit;
    font-size:1.05rem;
}

.theme-input:focus{border-color:var(--primary);}

select.theme-input {
    appearance:none;
    -webkit-appearance:none;
    background-image:url("data:image/svg+xml;utf8,<svg fill='%236F5FE4' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/><path d='M0 0h24v24H0z' fill='none'/></svg>");
    background-repeat:no-repeat;
    background-position:right 15px center;
    background-size:24px;
    padding-right:45px;
    cursor:pointer;
}
body.hyper-theme select.theme-input{background-image:url("data:image/svg+xml;utf8,<svg fill='%2394a3b8' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/><path d='M0 0h24v24H0z' fill='none'/></svg>");background-color:rgba(15,23,42,0.8);color:#f8fafc;border-color:#1e293b;}

.terminal-log {
    height:300px;
    overflow-y:auto;
    background:#1e293b;
    color:#cbd5e1;
    font-family:monospace;
    padding:15px;
    border-radius:8px;
    font-size:0.9rem;
    margin-bottom:15px;
    word-break:break-all;
    line-height:1.5;
}

.terminal-log-info{color:#cbd5e1;}
.terminal-log-success{color:#10b981;}
.terminal-log-warning{color:#F4A23C;}
.terminal-log-error{color:#ef4444;}

.admin-tab-content:hover,.profile-tab-content:hover{transform:none!important;box-shadow:var(--shell-panel-shadow)!important;}

@keyframes floatUpFade{0%{transform:translateY(0) scale(0.5);opacity:0;}15%{transform:translateY(-10px) scale(1.4);opacity:1;}100%{transform:translateY(-60px) scale(1);opacity:0;}}
.floating-xp-badge{position:absolute;top:20px;right:20px;color:#ffffff;font-weight:bold;font-size:1.3rem;pointer-events:none;z-index:100;text-shadow:0 2px 4px rgba(0,0,0,0.6),0 0 8px rgba(251,191,36,0.4);animation:floatUpFade 1.2s ease-out forwards;}

.profile-error{color:var(--danger);font-weight:700;margin-bottom:15px;display:none;background:#fee2e2;padding:10px;border-radius:8px;}
.profile-success{color:var(--success);font-weight:700;margin-bottom:15px;display:none;background:#d1fae5;padding:10px;border-radius:8px;}

.choices-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin:15px 0;width:100%;position:relative;}
.choice-btn{
    display:flex;
    align-items:center;
    justify-content:flex-start;
    gap:12px;
    padding:16px 20px;
    font-size:1.1rem;
    font-weight:700;
    color:var(--text-color);
    background:var(--card-bg);
    border:2px solid var(--card-border);
    border-radius:14px;
    cursor:pointer;
    transition:all 0.2s cubic-bezier(0.4,0,0.2,1);
    outline:none;
    text-align:left;
    position:relative;
    overflow:hidden;
}
.choice-btn:hover:not(:disabled){transform:translateY(-2px);border-color:var(--primary);box-shadow:0 6px 15px var(--primary-glow);}
.choice-btn:active:not(:disabled){transform:translateY(0);}
.choice-btn:disabled{cursor:not-allowed;opacity:0.6;}
.choice-btn.correct{background-color:#d1fae5!important;border-color:var(--success)!important;color:#065f46!important;box-shadow:0 0 15px rgba(16,185,129,0.4)!important;}
.choice-btn.incorrect{background-color:#fee2e2!important;border-color:var(--danger)!important;color:#991b1b!important;box-shadow:0 0 15px rgba(239,68,68,0.4)!important;}
.hyper-theme .choice-btn{background:rgba(30,41,59,0.7);border-color:#334155;color:#f8fafc;}
.hyper-theme .choice-btn:hover:not(:disabled){border-color:var(--accent);box-shadow:0 0 15px var(--accent-glow);}
.hyper-theme .choice-btn.correct{background-color:#064e3b!important;border-color:#10b981!important;color:#ecfdf5!important;box-shadow:0 0 15px rgba(16,185,129,0.5)!important;}
.hyper-theme .choice-btn.incorrect{background-color:#7f1d1d!important;border-color:#ef4444!important;color:#fef2f2!important;box-shadow:0 0 15px rgba(239,68,68,0.5)!important;}
.choice-planet-icon{
    font-size:1.3rem;
    width:24px;
    height:24px;
    display:flex;
    align-items:center;
    justify-content:center;
    color:var(--primary);
    transition:transform 0.2s ease;
}
.choice-btn:hover .choice-planet-icon{transform:scale(1.2) rotate(15deg);}
.hyper-theme .choice-planet-icon{color:var(--accent);}
.choice-badge{
    margin-left:auto;
    font-size:0.8rem;
    background:var(--card-border);
    color:var(--text-muted);
    padding:2px 6px;
    border-radius:6px;
    font-family:'Orbitron',sans-serif;
    font-weight:700;
}
.hyper-theme .choice-badge{background:#334155;color:#94a3b8;}

.choice-next-btn{
    position:absolute;
    top:50%;
    left:50%;
    transform:translate(-50%,-50%);
    width:64px;
    height:64px;
    border-radius:50%;
    background:var(--primary);
    color:#fff;
    border:6px solid var(--card-bg);
    display:none;
    align-items:center;
    justify-content:center;
    font-size:1.5rem;
    cursor:pointer;
    z-index:10;
    transition:all 0.2s cubic-bezier(0.4,0,0.2,1);
    outline:none;
}
.choice-next-btn:hover{transform:translate(-50%,-50%) scale(1.1);background:var(--primary-hover);}
.hyper-theme .choice-next-btn{background:var(--accent);color:#020617;border-color:#0f172a;}
.hyper-theme .choice-next-btn:hover{background:var(--accent-hover);}

/* Audio speaker ripple animation */
@keyframes ripple-audio{0%{box-shadow:0 0 0 0 rgba(59,130,246,0.2),0 0 0 10px rgba(59,130,246,0.2);}100%{box-shadow:0 0 0 10px rgba(59,130,246,0),0 0 0 20px rgba(59,130,246,0);}}

/* Choice button selected state */
.choice-btn.selected{border-color:var(--primary)!important;background:rgba(59,130,246,0.1)!important;box-shadow:0 0 10px rgba(59,130,246,0.3)!important;}
.hyper-theme .choice-btn.selected{border-color:var(--accent)!important;background:rgba(251,191,36,0.1)!important;box-shadow:0 0 10px rgba(251,191,36,0.3)!important;}

/* Matching column matching game */
.matching-container{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:20px;position:relative;}
.matching-column{display:flex;flex-direction:column;gap:14px;}
.matching-item{display:flex;align-items:center;gap:15px;padding:16px 20px;background:var(--card-bg);border:2px solid var(--card-border);border-radius:16px;cursor:pointer;transition:all 0.25s cubic-bezier(0.4,0,0.2,1);font-weight:700;color:var(--text-color);position:relative;overflow:hidden;user-select:none;box-shadow:0 4px 10px rgba(0,0,0,0.02);}
.matching-item:hover:not(.correct):not(.incorrect):not(.selected):not(.paired){transform:translateY(-2px) scale(1.02);border-color:var(--primary);box-shadow:0 8px 20px var(--primary-glow);}
.matching-item.correct{background-color:#e6fcf5!important;border-color:var(--success)!important;color:#0ca678!important;box-shadow:0 0 15px rgba(16,185,129,0.25)!important;pointer-events:none;transform:none!important;}
.matching-item.incorrect{background-color:#fff5f5!important;border-color:var(--danger)!important;color:#c92a2a!important;box-shadow:0 0 15px rgba(239,68,68,0.25)!important;pointer-events:none;transform:none!important;}
.matching-badge{width:24px;height:24px;border-radius:50%;background:rgba(0,0,0,0.05);border:1px solid var(--card-border);color:var(--text-muted);display:inline-flex;align-items:center;justify-content:center;font-size:0.8rem;font-family:'Orbitron',sans-serif;font-weight:700;transition:all 0.2s ease;}
.matching-item:hover .matching-badge{background:var(--primary);color:#fff;border-color:var(--primary);box-shadow:0 0 8px var(--primary-glow);}
.matching-text{flex-grow:1;text-align:center;font-size:1.1rem;}
.hyper-theme .matching-item{background:rgba(15,23,42,0.6);border-color:#1e293b;color:#f8fafc;backdrop-filter:blur(8px);}
.hyper-theme .matching-item:hover:not(.correct):not(.incorrect):not(.selected):not(.paired){border-color:var(--accent);box-shadow:0 0 20px var(--accent-glow);}
.hyper-theme .matching-item.correct{background-color:rgba(6,78,59,0.7)!important;border-color:#10b981!important;color:#ecfdf5!important;box-shadow:0 0 20px rgba(16,185,129,0.4)!important;}
.hyper-theme .matching-item.incorrect{background-color:rgba(127,29,29,0.7)!important;border-color:#ef4444!important;color:#fef2f2!important;box-shadow:0 0 20px rgba(239,68,68,0.4)!important;}
.hyper-theme .matching-badge{background:rgba(255,255,255,0.05);border-color:#334155;color:#94a3b8;}
.hyper-theme .matching-item:hover .matching-badge{background:var(--accent);color:#020617;border-color:var(--accent);box-shadow:0 0 10px var(--accent-glow);}

/* Listen Choices Buttons (Desktop: centered rectangles) */
.listen-choice-btn{justify-content:center;align-items:center;}
.listen-choice-btn .choice-badge{position:absolute;top:10px;right:10px;margin-left:0;}
.choice-btn.correct .choice-planet-icon{color:#059669!important;}
.hyper-theme .choice-btn.correct .choice-planet-icon{color:#10b981!important;}
.choice-btn.incorrect .choice-planet-icon{color:#dc2626!important;}
.hyper-theme .choice-btn.incorrect .choice-planet-icon{color:#ef4444!important;}
.choice-next-btn.graded-correct{background:var(--success)!important;color:#fff!important;border-color:var(--card-bg)!important;}
.hyper-theme .choice-next-btn.graded-correct{background:#10b981!important;color:#020617!important;border-color:#0f172a!important;}
.choice-btn.correct .choice-badge{background:#10b981!important;color:#fff!important;border-color:#10b981!important;}
.choice-btn.incorrect .choice-badge{background:#ef4444!important;color:#fff!important;border-color:#ef4444!important;}
.matching-item.correct .matching-badge{background:#10b981!important;color:#fff!important;border-color:#10b981!important;}
.matching-item.incorrect .matching-badge{background:#ef4444!important;color:#fff!important;border-color:#ef4444!important;}

.floating-xp-badge.milestone{color:#fbbf24;text-shadow:0 0 8px #fbbf24,0 0 15px #F4A23C;font-size:1.6rem;}

#app-root{transition:opacity 0.2s ease,transform 0.2s ease;}
#app-root.page-exit{opacity:0;transform:translateY(-8px);}
#app-root.page-enter{opacity:0;transform:translateY(8px);}
.auth-container{position:relative;width:100%;min-height:80vh;display:flex;align-items:center;justify-content:center;padding:20px 0;}
/* Quiet deep-space backdrop: soft nebula washes over a tiled constellation starfield. */
body.cosmic-theme{background-image:var(--space-backdrop);background-size:var(--space-backdrop-size);background-attachment:var(--space-backdrop-attach);}
.auth-card {
    background:rgba(255,255,255,0.75);
    backdrop-filter:blur(12px);
    border:2.5px solid var(--card-border);
    border-radius:24px;
    padding:40px;
    width:100%;
    max-width:450px;
    box-shadow:0 20px 50px rgba(111,95,228,0.08);
    z-index:2;
    transition:transform 0.2s,box-shadow 0.2s;
}
.auth-header{text-align:center;margin-bottom:30px;}
.auth-header-icon{font-size:3.5rem;filter:drop-shadow(0 0 15px rgba(111,95,228,0.25));margin-bottom:15px;}
.auth-header-icon.auth-primary{color:var(--primary);}
.auth-header-icon.auth-secondary{color:var(--secondary);}
.auth-title{font-size:2.2rem;font-weight:900;margin:0 0 10px;line-height:1.2;background:linear-gradient(135deg,var(--primary),var(--secondary));-webkit-background-clip:text;-webkit-text-fill-color:transparent;}
.auth-subtitle{font-size:1.05rem;color:var(--text-muted);margin:0;}
.auth-field-group{margin-bottom:20px;}
.auth-remember{display:flex;align-items:center;gap:9px;margin-bottom:18px;font-size:0.9rem;color:var(--text-muted);cursor:pointer;}
.auth-remember input{width:16px;height:16px;accent-color:var(--primary);cursor:pointer;}
.auth-label{display:block;font-weight:800;font-size:0.95rem;margin-bottom:8px;color:var(--text-color);}
.auth-input {
    width:100%;
    padding:12px 16px !important;
    border-radius:12px !important;
    border:1.5px solid var(--card-border) !important;
    background:#f8fafc !important;
    font-family:inherit !important;
    font-size:1.05rem !important;
    transition:border-color 0.2s,box-shadow 0.2s !important;
}
.auth-input:focus{border-color:var(--primary) !important;box-shadow:0 0 0 4px var(--primary-glow) !important;background:#ffffff !important;}
.auth-error-box {
    color:var(--danger);
    font-weight:800;
    font-size:0.95rem;
    margin-bottom:15px;
    display:none;
    background:#fee2e2;
    padding:12px;
    border-radius:10px;
    border:1px solid rgba(239,68,68,0.2);
}
.auth-success-box {
    color:var(--primary);
    font-weight:800;
    font-size:0.95rem;
    margin-bottom:15px;
    display:none;
    background:#e0f2fe;
    padding:12px;
    border-radius:10px;
    border:1px solid rgba(111,95,228,0.25);
}
.auth-btn {
    width:100%;
    justify-content:center;
    padding:14px !important;
    font-size:1.1rem !important;
    border-radius:12px !important;
    font-weight:800 !important;
    display:flex;
    align-items:center;
    gap:10px;
}
.auth-footer-link{text-align:center;margin-top:15px;font-weight:800;}
.auth-footer-link a{color:var(--primary);text-decoration:none;font-size:0.95rem;transition:color 0.2s;}
.auth-footer-link a:hover{color:var(--primary-hover);text-decoration:underline;}
.auth-footer-link#verify-login-link a{color:white!important;text-decoration:none!important;}
.auth-footer-link#verify-login-link a:hover{color:white!important;text-decoration:none!important;}
.auth-footer-link.signup-prompt{margin-top:25px;border-top:1px solid var(--card-border);padding-top:20px;}
.auth-footer-link.signup-prompt span{color:var(--text-muted);font-size:0.95rem;}
.auth-footer-link.signup-prompt a{color:var(--primary);margin-left:5px;}
.auth-mfa-hint{text-align:center;color:var(--text-muted);font-size:0.88rem;margin:14px 0 0;line-height:1.4;}

.auth-decal {
    position:absolute;
    font-size:2.5rem;
    color:var(--primary);
    opacity:0.25;
    pointer-events:none;
    z-index:1;
    animation:float-decal 8s ease-in-out infinite alternate;
    filter:drop-shadow(0 0 10px rgba(111,95,228,0.2));
}
.auth-decal-l1{top:20%;left:10%;font-size:3.5rem;color:var(--primary);animation-duration:10s;}
.auth-decal-l2{top:55%;left:15%;font-size:2rem;color:var(--secondary);animation-duration:12s;animation-delay:-3s;}
.auth-decal-l3{top:80%;left:8%;font-size:2.5rem;color:var(--primary);animation-duration:9s;animation-delay:-5s;}
.auth-decal-r1{top:15%;right:12%;font-size:4rem;color:var(--secondary);animation-duration:11s;animation-delay:-2s;}
.auth-decal-r2{top:45%;right:8%;font-size:2.5rem;color:var(--primary);animation-duration:8s;animation-delay:-4s;}
.auth-decal-r3{top:75%;right:15%;font-size:3rem;color:var(--secondary);animation-duration:13s;animation-delay:-6s;}
@keyframes float-decal {
    0%{transform:translateY(0) rotate(0deg);}
    100%{transform:translateY(-20px) rotate(15deg);}
}

.legal-container{position:relative;max-width:850px;margin:40px auto;padding:0 20px;}
.legal-header{position:relative;text-align:center;margin-bottom:40px;}
.legal-decal {
    position:absolute;
    font-size:1.8rem;
    color:var(--primary);
    opacity:0.25;
    pointer-events:none;
    animation:float-decal 6s ease-in-out infinite alternate;
}
.legal-decal-l{top:15px;left:25%;animation-delay:-2s;}
.legal-decal-r{top:15px;right:25%;color:var(--secondary);animation-delay:-4s;}
.legal-header-icon{font-size:3.5rem;color:var(--primary);filter:drop-shadow(0 0 15px rgba(111,95,228,0.25));margin-bottom:15px;}
.legal-title {
    font-size:2.5rem;
    font-weight:900;
    margin:0 0 10px;
    line-height:1.2;
    background:linear-gradient(135deg,var(--primary),var(--secondary));
    -webkit-background-clip:text;
    -webkit-text-fill-color:transparent;
}
.legal-subtitle{font-size:1.1rem;color:var(--text-muted);margin:0;}
/* Profile -> Account & Security -> Activity & data (own activity log + GDPR data export) */
.mydata-h3{font-size:1rem;margin:24px 0 6px;display:flex;align-items:center;gap:9px;}
.mydata-h3 i{color:var(--primary);font-size:0.9rem;}
.mydata-h3:first-of-type{margin-top:8px;}
.mydata-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin:12px 0 14px;}
.mydata-stat{display:flex;flex-direction:column;gap:2px;padding:12px 14px;border:1px solid var(--card-border);border-radius:12px;background:var(--bg-color);}
.mydata-stat-val{font-size:1.25rem;font-weight:800;color:var(--primary);}
.mydata-stat-lab{font-size:0.76rem;color:var(--text-muted);font-weight:700;}
.mydata-export-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px;}
.mydata-export-pw{width:auto;flex:1;min-width:190px;max-width:280px;padding:9px 12px;font-size:0.9rem;}
.legal-updated{font-size:0.85rem;color:var(--text-muted);margin:0 0 20px;padding-bottom:16px;border-bottom:1px solid var(--card-border);}
.legal-card {
    background:rgba(255,255,255,0.75);
    backdrop-filter:blur(12px);
    border:2.5px solid var(--card-border);
    border-radius:24px;
    padding:40px;
    box-shadow:0 20px 50px rgba(111,95,228,0.08);
    z-index:2;
    transition:transform 0.2s,box-shadow 0.2s;
}
.legal-card h2{font-size:1.4rem;font-weight:800;color:var(--text-color);margin:30px 0 15px;}
.legal-card h2:first-of-type{margin-top:0;}
.legal-card p{font-size:1.05rem;line-height:1.6;color:var(--text-muted);margin-bottom:20px;}
.legal-card ul{padding-left:25px;margin-bottom:20px;}
.legal-card li{font-size:1.05rem;line-height:1.6;color:var(--text-muted);margin-bottom:10px;}
.hyper-theme .legal-card{background:rgba(15,23,42,0.85);box-shadow:0 20px 50px rgba(0,0,0,0.3);}
.pricing-page-grid{margin-bottom:40px;}
.pricing-terms{max-width:760px;margin-left:auto;margin-right:auto;}

/* Cookie banner styles moved to components.css: the banner is critical-path now (visible at
   first paint on SSR pages), and pages.css is a DEFERRED sheet on the landing. */
.password-strength-container{margin-top:10px;}
.password-strength-label {
    display:flex;
    justify-content:space-between;
    margin-bottom:6px;
    font-size:0.85rem;
    font-weight:700;
    color:var(--text-muted);
}
.password-strength-bar {
    height:6px;
    width:100%;
    background:var(--card-border);
    border-radius:3px;
    overflow:hidden;
    margin-bottom:12px;
}
.password-strength-fill{height:100%;width:0;transition:width 0.3s,background-color 0.3s;}
.password-requirements-list {
    list-style:none;
    padding:0;
    margin:12px 0 0;
    display:flex;
    flex-direction:column;
    gap:6px;
}
.password-requirement {
    font-size:0.85rem;
    color:var(--text-muted);
    display:flex;
    align-items:center;
    gap:8px;
    font-weight:700;
    transition:color 0.2s;
}
.password-requirement.met{color:var(--success);}
.password-requirement i{font-size:0.95rem;transition:transform 0.2s;color:var(--text-muted);}
.password-requirement.met i{transform:scale(1.1);color:var(--success);}
#scheduled-deletion-banner {
    background:var(--danger);
    color:#fff;
    text-align:center;
    padding:12px;
    font-size:0.95rem;
    font-weight:700;
    z-index:9999;
    position:relative;
    box-shadow:0 2px 8px rgba(239,68,68,0.2);
}
#db-error-banner {
    background:#dc2626;
    color:#fff;
    text-align:center;
    padding:12px;
    font-size:0.95rem;
    font-weight:700;
    z-index:9999;
    position:relative;
    box-shadow:0 2px 8px rgba(220,38,38,0.2);
}
#sw-update-toast {
    position:fixed;
    left:50%;
    bottom:24px;
    transform:translateX(-50%) translateY(160%);
    display:flex;
    align-items:center;
    gap:12px;
    padding:12px 16px;
    border-radius:14px;
    background:var(--card-bg);
    border:1px solid var(--card-border);
    box-shadow:0 10px 30px rgba(0,0,0,0.18);
    color:var(--text-color);
    font-size:0.95rem;
    font-weight:600;
    z-index:10000;
    opacity:0;
    transition:transform 0.35s ease, opacity 0.35s ease;
}
#sw-update-toast.show{transform:translateX(-50%) translateY(0);opacity:1;}
#sw-update-toast i{color:var(--primary);}
#sw-update-refresh{background:var(--primary);color:#fff;border:none;padding:7px 16px;border-radius:9px;font-weight:700;cursor:pointer;}
#sw-update-dismiss{background:none;border:none;color:var(--text-muted);font-size:1.3rem;line-height:1;cursor:pointer;padding:0 4px;}
#app-update-overlay {
    position:fixed;
    inset:0;
    z-index:100000;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:20px;
    background:rgba(20,18,40,0.6);
    backdrop-filter:blur(4px);
}
.app-update-modal {
    max-width:360px;
    width:100%;
    text-align:center;
    padding:28px 26px;
    border-radius:18px;
    background:var(--card-bg);
    border:1px solid var(--card-border);
    box-shadow:0 20px 60px rgba(0,0,0,0.3);
}
.app-update-icon{font-size:2.2rem;color:var(--primary);margin-bottom:10px;}
.app-update-modal h2{display:block;margin:0 0 8px;color:var(--text-color);font-size:1.3rem;}
.app-update-modal p{margin:0 0 20px;color:var(--text-muted);font-size:0.95rem;line-height:1.5;}
#app-update-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;border:none;border-radius:10px;background:var(--primary);color:#fff;font-weight:700;font-size:1rem;cursor:pointer;}
#app-update-btn:disabled{opacity:0.7;cursor:default;}


.avatar-icon-wrapper {
    width:96px;
    height:96px;
    border-radius:50%;
    background:rgba(255,255,255,0.6);
    border:1px solid var(--card-border);
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:3.2rem;
    color:var(--primary);
    box-shadow:inset 0 0 20px rgba(111,95,228,0.15);
    transition:all 0.3s ease;
}
body.hyper-theme .avatar-icon-wrapper{background:rgba(15,23,42,0.6);}
/* Level badge on the avatar (lifetime-XP rank) — shared with the Profile overview. */
.avatar-level-badge{position:absolute;top:-4px;right:-10px;display:flex;align-items:baseline;gap:2px;padding:3px 10px;background:linear-gradient(135deg,var(--primary),var(--accent));color:#fff;border:2px solid var(--background);border-radius:20px;box-shadow:0 4px 12px var(--primary-glow);z-index:4;line-height:1;cursor:default;}
.avatar-level-badge span{font-size:0.55rem;font-weight:700;letter-spacing:0.4px;text-transform:uppercase;opacity:0.85;}
.avatar-level-badge strong{font-size:0.9rem;font-weight:800;}
/* Rank / level progress bar (shared: dashboard hero + Profile overview). */
.rank-bar-track{height:10px;border-radius:20px;background:var(--card-border);overflow:hidden;}
.rank-bar-fill{height:100%;width:0;border-radius:20px;background:linear-gradient(90deg,var(--primary),var(--accent));box-shadow:0 0 10px var(--primary-glow);transition:width 0.85s cubic-bezier(0.16,1,0.3,1);}
/* Rank-tiered avatar frame (Phase 18) — auto-upgrades with rank (tier 0 = Cadet, default). */
.avatar-tier-1 .avatar-icon-wrapper,.avatar-tier-2 .avatar-icon-wrapper{border-color:var(--primary);box-shadow:inset 0 0 20px rgba(111,95,228,0.2),0 0 14px var(--primary-glow);}
.avatar-tier-3 .avatar-icon-wrapper,.avatar-tier-4 .avatar-icon-wrapper{border-width:2px;border-color:var(--primary);box-shadow:inset 0 0 22px rgba(111,95,228,0.25),0 0 22px var(--primary-glow);}
.avatar-tier-5 .avatar-icon-wrapper,.avatar-tier-6 .avatar-icon-wrapper{border-width:2px;border-color:var(--accent);box-shadow:inset 0 0 22px rgba(244,162,60,0.25),0 0 24px var(--accent-glow);}
.avatar-tier-7 .avatar-icon-wrapper,.avatar-tier-8 .avatar-icon-wrapper{border-width:3px;border-color:var(--accent);box-shadow:inset 0 0 26px rgba(244,162,60,0.3),0 0 30px var(--accent-glow);animation:avatarAura 3s ease-in-out infinite;}
@keyframes avatarAura{0%,100%{box-shadow:inset 0 0 26px rgba(244,162,60,0.3),0 0 26px var(--accent-glow);}50%{box-shadow:inset 0 0 30px rgba(244,162,60,0.4),0 0 40px var(--accent-glow);}}

/* Profile › Overview landing tab */
.po-hero{display:flex;align-items:center;gap:22px;flex-wrap:wrap;}
.po-avatar{position:relative;flex-shrink:0;}
.po-greet{font-family:var(--font-display);margin:0 0 2px;font-size:1.6rem;}
.po-rank{margin:0;font-weight:800;color:var(--primary);font-size:1.05rem;}
.po-meta{margin:6px 0 0;color:var(--text-muted);font-size:0.9rem;display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.po-level-card{margin-top:24px;padding:18px 20px;border:1px solid var(--card-border);border-radius:16px;background:var(--bg-color);}
.po-level-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-weight:800;margin-bottom:10px;}
.po-level-sub{margin-top:8px;font-size:0.8rem;color:var(--text-muted);text-align:right;}
.po-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:14px;margin-top:24px;}
.po-tile {
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:4px;
    padding:18px 12px;
    border:1px solid var(--card-border);
    border-radius:16px;
    background:var(--card-bg);
    text-align:center;
}
.po-tile-ico{font-size:1.6rem;margin-bottom:2px;}
.po-tile-val{font-family:var(--font-display);font-size:1.5rem;font-weight:800;line-height:1;}
.po-tile-of{font-size:0.9rem;color:var(--text-muted);font-weight:700;}
.po-tile-lbl{font-size:0.78rem;color:var(--text-muted);font-weight:700;}
.po-ico-flame{color:#f4825c;}
.po-ico-star{color:var(--primary);}
.po-ico-grow{color:#34d399;}
.po-ico-due{color:var(--accent);}
.po-ico-leech{color:var(--danger);}
.po-ico-ach{color:#f6c453;}
.po-progress{margin-top:24px;}
.po-progress-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-weight:800;margin-bottom:8px;}
.po-cta{display:flex;gap:14px;flex-wrap:wrap;margin-top:26px;}

/* Shared first-paint skeleton primitives for the two data-heavy workspace landing views. */
.skeleton-bar {
    display:block;
    position:relative;
    overflow:hidden;
    height:12px;
    max-width:100%;
    border-radius:999px;
    background:rgba(111,95,228,0.11);
}
.skeleton-bar::after {
    content:"";
    position:absolute;
    inset:0;
    transform:translateX(-105%);
    background:linear-gradient(90deg,transparent,rgba(255,255,255,0.78),transparent);
    animation:skeletonSweep 1.45s ease-in-out infinite;
}
@keyframes skeletonSweep{to{transform:translateX(105%);}}
@media(prefers-reduced-motion:reduce){.skeleton-bar::after{animation:none;opacity:0.45;}}
.skeleton-bar.sk-short{width:32%;}
.skeleton-bar.sk-medium{width:55%;}
.skeleton-bar.sk-long{width:76%;}
.skeleton-bar.sk-wide{width:88%;}
.skeleton-bar.sk-full{width:100%;}
.skeleton-bar.sk-icon{width:38px;height:38px;border-radius:12px;}
.skeleton-bar.sk-value{width:46%;height:28px;}
.skeleton-bar.sk-number{width:82px;height:54px;border-radius:14px;}
.po-loading-shell{pointer-events:none;}
.po-skeleton-avatar{width:96px;height:96px;flex:none;border-radius:50%;box-shadow:inset 0 0 0 1px rgba(111,95,228,0.18),0 10px 24px -16px rgba(59,43,126,0.52);}
.po-loading-shell .po-id{flex:1;min-width:220px;}
.po-loading-shell .po-id .skeleton-bar{margin-bottom:10px;}
.po-skeleton-greeting{width:min(230px,75%);height:26px;}
.po-loading-shell .po-level-head .skeleton-bar,.po-loading-shell .po-progress-head .skeleton-bar{height:16px;}
.po-skeleton-progress{height:10px;}
.po-skeleton-level-sub{margin:10px 0 0 auto;}
.po-loading-shell .po-tile{min-height:126px;justify-content:center;}
.po-loading-shell .po-tile .skeleton-bar{margin:2px auto;}
.po-skeleton-button{width:190px;height:48px;border-radius:14px;}
.po-skeleton-refer {
    display:flex;
    flex-direction:column;
    gap:12px;
    margin-top:18px;
    padding:18px 20px;
    border:1px solid var(--card-border);
    border-radius:16px;
    background:linear-gradient(135deg,rgba(111,95,228,0.05),rgba(244,162,60,0.05));
}
.po-skeleton-field{height:42px;border-radius:10px;}

.admin-nav-icon{width:25px;}
.admin-nav-icon.danger{color:var(--danger);}
.tab-header{margin-bottom:20px;border-bottom:1px solid var(--card-border);padding-bottom:20px;}
.tab-header h2{margin-top:0;}
.tab-header.no-border{border-bottom:none;padding-bottom:0;margin-bottom:16px;}
.tab-header.danger-header{border-bottom-color:rgba(239,68,68,0.2);}
.tab-header.danger-zone-header{border-bottom-color:var(--danger);}
.tab-desc{margin-bottom:0;color:var(--text-muted);font-size:0.9rem;line-height:1.4;}
/* Achievements showcase (Phase 18) — derived-badge trophy case, split by family (Ranks / Stellar Energy). */
.ach-section{margin-top:26px;}
.ach-section:first-child{margin-top:8px;}
.ach-section-title{display:flex;align-items:center;gap:8px;font-family:var(--font-display);font-size:1.1rem;margin:0;padding-bottom:10px;border-bottom:1px solid var(--card-border);}
.ach-section-title i{color:var(--primary);}
.ach-section-count{margin-left:auto;font-size:0.8rem;font-weight:700;color:var(--text-muted);}
.ach-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:16px;margin-top:16px;}
.ach-loading{color:var(--text-muted);}
.ach-badge {
    display:flex;
    flex-direction:column;
    align-items:center;
    text-align:center;
    gap:6px;
    padding:18px 12px;
    border-radius:16px;
    border:1px solid var(--card-border);
    background:var(--card-bg);
    transition:transform 0.2s,box-shadow 0.2s;
    cursor:default;
}
.ach-badge:hover{transform:translateY(-3px);box-shadow:0 8px 20px rgba(0,0,0,0.08);}
.ach-icon{width:54px;height:54px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-size:1.5rem;}
.ach-name{font-weight:800;font-size:0.95rem;}
.ach-detail{font-size:0.72rem;color:var(--text-muted);}
.ach-bar{width:100%;height:5px;border-radius:5px;background:var(--card-border);overflow:hidden;margin-top:4px;}
.ach-bar-fill{height:100%;background:var(--primary);border-radius:5px;}
.ach-badge.earned .ach-icon{color:#fff;background:linear-gradient(135deg,var(--primary),var(--accent));box-shadow:0 4px 12px var(--primary-glow);}
.ach-badge.earned.ach-xp .ach-icon{background:linear-gradient(135deg,var(--accent),#f6c453);box-shadow:0 4px 12px var(--accent-glow);}
.ach-badge.locked{opacity:0.7;}
.ach-badge.locked .ach-icon{color:var(--text-muted);background:var(--card-border);}
.ach-badge.locked .ach-name{color:var(--text-muted);}

/* Two-factor authentication panel (Profile › Security) */
.mfa-status{display:flex;align-items:center;gap:10px;font-weight:800;font-size:1.05rem;}
.mfa-status i{font-size:1.3rem;}
.mfa-status.mfa-on i{color:var(--primary);}
.mfa-status.mfa-off i{color:var(--text-muted);}
.mfa-sub{color:var(--text-muted);font-size:0.92rem;margin:8px 0 18px;line-height:1.45;}
.mfa-actions{display:flex;flex-wrap:wrap;gap:12px;}
.mfa-setup,.mfa-confirm,.mfa-done{margin-top:22px;padding-top:20px;border-top:1px solid var(--card-border);}
.mfa-setup p,.mfa-confirm p,.mfa-done p{margin:0 0 12px;line-height:1.5;}
.mfa-confirm input,.mfa-setup input{margin-bottom:12px;}
.mfa-key {
    font-family:var(--font-mono,monospace);
    font-size:1.25rem;
    font-weight:700;
    letter-spacing:2px;
    background:var(--bg-color);
    border:1px dashed var(--primary);
    border-radius:12px;
    padding:16px 18px;
    text-align:center;
    word-break:break-all;
    cursor:pointer;
    transition:background 0.2s,border-color 0.2s;
    margin-bottom:12px;
}
.mfa-key:hover{background:#eef2ff;}
.mfa-key.copied{border-style:solid;border-color:var(--primary);background:#e0f2fe;}
.mfa-key.copied::after{content:" ✓ copied";font-size:0.8rem;letter-spacing:normal;color:var(--primary);}
.mfa-verify-row{display:flex;gap:12px;align-items:stretch;flex-wrap:wrap;}
.mfa-verify-row input{flex:1;min-width:140px;margin-bottom:0;text-align:center;letter-spacing:6px;font-size:1.2rem;font-weight:700;}
.mfa-codes{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:16px 0;}
.mfa-codes span {
    font-family:var(--font-mono,monospace);
    font-size:1.05rem;
    font-weight:700;
    letter-spacing:2px;
    text-align:center;
    background:var(--bg-color);
    border:1px solid var(--card-border);
    border-radius:8px;
    padding:10px;
    user-select:all;
}
.mfa-err{color:var(--danger);font-weight:700;font-size:0.9rem;min-height:1.1em;}
.mfa-qr{display:flex;align-items:center;justify-content:center;padding:16px;background:#fff;border:1px solid var(--card-border);border-radius:16px;margin-bottom:14px;min-height:160px;}
.mfa-qr .qr-canvas{width:220px;height:220px;image-rendering:pixelated;border-radius:4px;}
.mfa-qr-load{color:var(--text-muted);font-size:1.6rem;}
.mfa-manual{margin-bottom:14px;}
.mfa-manual-toggle{cursor:pointer;color:var(--primary);font-weight:700;font-size:0.9rem;list-style:none;}
.mfa-manual-toggle::-webkit-details-marker{display:none;}
.mfa-manual[open] .mfa-manual-toggle{margin-bottom:8px;}

.sync-panel{background:var(--bg-color);border:1px solid var(--card-border);padding:20px;border-radius:12px;margin-bottom:20px;}
.sync-meta{display:flex;justify-content:space-between;margin-bottom:10px;font-weight:bold;}
.sync-progress-container {
    width:100%;
    height:15px;
    background:#e2e8f0;
    border-radius:10px;
    overflow:hidden;
    margin-bottom:15px;
}
.sync-progress-bar{height:100%;background:var(--primary);transition:width 0.3s;border-radius:10px;}
.admin-btn-group{display:flex;gap:15px;}
.btn-gray{background:#94a3b8;border-color:#94a3b8;color:#fff;}
.btn-gray:hover{background:#78889b;border-color:#78889b;}
.form-group{margin-bottom:20px;}
.form-group.hidden{display:none;}
.form-label{display:block;font-weight:800;margin-bottom:8px;}
.search-btn{width:100%;margin-bottom:20px;}
.manual-results-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:15px;}
.manual-feedback-box {
    margin-top:15px;
    padding:15px;
    border-radius:8px;
    display:none;
    text-align:center;
    font-weight:bold;
}
/* Admin → Nova settings tab */
.nova-set-heading{margin:22px 0 10px;font-size:1rem;color:var(--text-color);}
.nova-set-heading i{color:var(--primary);margin-right:7px;}
.nova-set-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
.nova-set-grid-3{grid-template-columns:repeat(3,minmax(0,1fr));}
.nova-set-field{display:flex;flex-direction:column;gap:5px;font-size:0.8rem;font-weight:700;color:var(--text-muted);}
.nova-set-field input{
    padding:9px 12px;
    border:1px solid var(--card-border);
    border-radius:10px;
    background:var(--card-bg);
    color:var(--text-color);
    font-size:0.95rem;
}
.nova-set-field input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-glow);}
.nova-set-note{margin:10px 0 8px;font-size:0.82rem;color:var(--text-muted);}
.manual-img-card{border:2px solid transparent;border-radius:8px;overflow:hidden;cursor:pointer;transition:all 0.2s;}
.manual-img-card-img{width:100%;height:120px;object-fit:cover;display:block;}
.profile-error {
    color:var(--danger);
    font-weight:700;
    margin-bottom:15px;
    display:none;
    background:#fee2e2;
    padding:10px;
    border-radius:8px;
}
.profile-success {
    color:var(--success);
    font-weight:700;
    margin-bottom:15px;
    display:none;
    background:#d1fae5;
    padding:10px;
    border-radius:8px;
}
.danger-text{color:var(--danger);}
.danger-zone-banner {
    background:#fee2e2;
    border:1px solid rgba(239,68,68,0.2);
    padding:15px;
    border-radius:12px;
    margin-bottom:20px;
    color:#991b1b;
    font-size:0.95rem;
}
.danger-zone-banner-desc{margin:8px 0 0;color:#b91c1c;line-height:1.5;}
.warning-zone-banner {
    background:#fffbeb;
    border:1px solid rgba(244,162,60,0.2);
    padding:15px;
    border-radius:12px;
    margin-bottom:20px;
    color:#92400e;
    font-size:0.95rem;
}
.warning-zone-banner-desc{margin:8px 0 0;color:#b45309;line-height:1.5;}
.manual-feedback-box.error-feedback{color:#ef4444;background-color:rgba(239,68,68,0.1);border:1px solid #ef4444;}
.manual-feedback-box.success-feedback{color:#10b981;background-color:rgba(16,185,129,0.1);border:1px solid #10b981;}
.manual-img-card.saving{opacity:0.5;pointer-events:none;}
.manual-img-card.saved{opacity:1;border-color:#10b981;}
.manual-img-card:hover:not(.saving):not(.saved){border-color:#38bdf8;}

/* Manual Image Editor — carousel */
.mie-toolbar {
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:15px;
    margin-bottom:20px;
    flex-wrap:wrap;
}
.mie-filter{display:flex;gap:8px;}
.mie-filter-wrap{display:flex;gap:14px;flex-wrap:wrap;align-items:center;}
.mie-filter-btn,.mie-type-btn{padding:8px 16px;border:1px solid var(--card-border);background:var(--bg-color);border-radius:20px;cursor:pointer;font-weight:700;color:var(--text-muted);}
.mie-filter-btn.active,.mie-type-btn.active{background:var(--primary);border-color:var(--primary);color:#fff;}
.mie-jump{flex:1;min-width:220px;max-width:360px;}
.mie-stage{display:flex;align-items:center;gap:15px;}
.mie-nav-btn {
    flex-shrink:0;
    width:52px;
    height:52px;
    border-radius:50%;
    border:1px solid var(--card-border);
    background:var(--bg-color);
    cursor:pointer;
    font-size:1.2rem;
    color:var(--text-color);
    transition:all 0.15s;
}
.mie-nav-btn:hover{background:var(--primary);color:#fff;border-color:var(--primary);}
.mie-stage-main{flex:1;min-width:0;}
.mie-card {
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:16px;
    padding:24px;
    border:1px solid var(--card-border);
    border-radius:16px;
    background:var(--bg-color);
}
.mie-image-wrap{position:relative;width:100%;max-width:440px;}
.mie-image{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:12px;display:block;background:#f1f5f9;}
.mie-missing-badge{position:absolute;top:10px;left:10px;background:var(--danger);color:#fff;padding:4px 10px;border-radius:8px;font-size:0.8rem;font-weight:700;}
.mie-info{text-align:center;}
.mie-pos{margin-bottom:8px;}
.mie-gloss{margin:0 0 4px;font-size:1.4rem;}
.mie-desc{margin:0;color:var(--text-muted);font-style:italic;}
.mie-counter{display:inline-block;margin-top:8px;font-weight:700;color:var(--text-muted);font-size:0.9rem;}
.mie-replace-btn{min-width:200px;}
.mie-card-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;}
.mie-image.is-space{display:flex;align-items:center;justify-content:center;font-size:2.4rem;}
.mie-ai-review {
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:10px;
    margin-top:14px;
    padding:14px 16px;
    border-radius:12px;
    background:rgba(111,95,228,0.06);
    border:1px dashed rgba(111,95,228,0.35);
}
.mie-ai-review-label{font-weight:600;color:var(--primary);font-size:0.95rem;}
.mie-ai-review-btns{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;}
.ai-img-settings{display:flex;flex-direction:column;gap:5px;margin-top:14px;}
.ai-img-input{width:100%;max-width:520px;font-family:ui-monospace,monospace;font-size:0.82rem;}
/* Selection mode: the panel replaces the card in place, so it carries the concept info. */
.mie-replace-panel{padding:24px;border:1px solid var(--card-border);border-radius:16px;background:var(--bg-color);}
.mie-replace-head{text-align:center;margin-bottom:18px;}
.mie-replace-head .mie-gloss{margin-top:4px;}
.mie-search-row{display:flex;gap:10px;margin-bottom:16px;flex-wrap:wrap;}
.mie-search-row .theme-input{flex:1;min-width:160px;}
/* Bounded results so the panel never pushes the page into a scroll. */
.mie-replace-panel .manual-results-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:12px;max-height:55vh;overflow-y:auto;}
.mie-replace-panel .manual-img-card-img{height:110px;}
.mie-hint{text-align:center;color:var(--text-muted);font-size:0.85rem;margin-top:16px;}
.mie-hint kbd{background:#e2e8f0;border:1px solid var(--card-border);border-radius:4px;padding:1px 6px;font-family:monospace;font-size:0.8rem;}

/* Vocabulary Studio (admin) */
.vocab-subtabs{display:flex;gap:6px;flex-wrap:wrap;margin:4px 0 20px;padding-bottom:12px;border-bottom:1px solid var(--card-border);}
.vocab-subtab{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border:1px solid transparent;border-radius:10px;background:transparent;color:var(--text-muted);font-size:0.9rem;font-weight:700;cursor:pointer;}
.vocab-subtab:hover{background:var(--bg-color);color:var(--text-color);}
.vocab-subtab.active{background:var(--primary);color:#fff;}
/* 70: no chrome — the tab is already a card and each .set-group is its own card (Concept A);
   the old background+border made a visible box-in-a-box. */
.vocab-settings{margin:0;padding:0;background:none;border:none;}
.settings-save-row{margin-top:14px;align-items:center;}
.vocab-set-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.vocab-set-group{margin:18px 0 8px;font-size:0.95rem;color:var(--primary);}
.vocab-set-group i{margin-right:6px;}
.vocab-set-label{font-size:0.9rem;color:var(--text-color);}
/* PR5/FU3 — settings render as a real 2-column table (Setting | Value). Each setting is one .set-row
   grid, where the title and its description stack in col 1 (.set-name) and the control sits in col 2
   (.set-val). Vertical divider = border-right on .set-name (full row height). Horizontal rules =
   border-top on each .set-row (spans BOTH columns). The whole row highlights on hover. Full-width
   blocks (notes, the hr, the save bar) flow normally. Shared by Academy, Voice and Vocabulary settings. */
.settings-table{border:1px solid var(--card-border);border-radius:12px;overflow:hidden;background:var(--bg-color);}
.settings-table .set-head{display:grid;grid-template-columns:minmax(0,1fr) 210px;background:rgba(111,95,228,0.05);}
.settings-table .set-head span{padding:11px 16px;font-size:0.72rem;font-weight:800;text-transform:uppercase;letter-spacing:0.6px;color:var(--text-muted);}
.settings-table .set-head span:first-child{border-right:1px solid var(--card-border);}
.settings-table .set-row{display:grid;grid-template-columns:minmax(0,1fr) 210px;border-top:1px solid var(--card-border);transition:background 0.15s ease;}
.settings-table .set-row:hover{background:rgba(111,95,228,0.045);}
.settings-table .set-name{padding:12px 16px;display:flex;flex-direction:column;gap:3px;border-right:1px solid var(--card-border);min-width:0;}
.settings-table .set-title{font-weight:600;font-size:0.9rem;color:var(--text-color);margin:0;}
.settings-table .set-desc{font-size:0.79rem;line-height:1.45;color:var(--text-muted);}
.settings-table .set-val{padding:12px 16px;display:flex;align-items:center;gap:6px;min-width:0;}
.settings-table .set-val .academy-model-input,.settings-table .set-val .model-input-wrap{width:100%;min-width:0;}
.settings-table .set-val .model-input-wrap{display:flex;gap:6px;}
/* 54 General → Models: each row stacks its REQUIRED primary above its OPTIONAL fallback, so the two
   read as one setting rather than two columns (.set-val is a flex ROW everywhere else). */
#models-table .set-val{flex-direction:column;align-items:stretch;gap:8px;}
#models-table .model-fallback-wrap .academy-model-input{font-size:0.82rem;opacity:0.9;}
.academy-model-input.input-invalid{border-color:var(--danger);box-shadow:0 0 0 2px var(--danger-glow);}
.settings-table .set-note{padding:11px 16px;margin:0;font-size:0.82rem;line-height:1.5;color:var(--text-muted);border-top:1px solid var(--card-border);}
.settings-table hr{margin:0;border:none;border-top:1px solid var(--card-border);}
.settings-table .settings-save-row,.settings-table .admin-btn-group{border-top:1px solid var(--card-border);padding:14px 16px;margin:0;}
/* (59.3: the old .multicheck widget was replaced by the shared .dd--multi dropdown component.) */
.voices-model-settings{margin-bottom:20px;} /* FU4 — keep the Voice-model box off the first language row below */
.vocab-langs{max-width:640px;}
.vocab-lang-form{display:flex;flex-wrap:wrap;gap:12px 16px;margin-bottom:14px;align-items:flex-end;}
.vocab-lang-form > label{display:flex;flex-direction:column;gap:4px;font-size:0.8rem;color:var(--text-muted);}
.vocab-lang-form input:not([type=checkbox]){padding:8px 11px;border:1px solid var(--card-border);border-radius:8px;font-size:0.9rem;background:var(--card-bg);color:var(--text-color);}
.vocab-lang-form label.vocab-check{flex-direction:row;align-items:center;gap:6px;}
.vocab-lang-list{margin-top:22px;display:flex;flex-direction:column;gap:8px;}
.vocab-lang-list-title{font-size:0.9rem;color:var(--text-color);margin:0 0 4px;}
.vocab-lang-list-title span{font-weight:400;color:var(--text-muted);font-size:0.8rem;}
.vocab-lang-row{
    display:flex;
    align-items:center;
    justify-content:space-between;
    flex-wrap:wrap;
    gap:6px 12px;
    padding:10px 14px;
    border:1px solid var(--card-border);
    border-radius:10px;
    background:var(--card-bg);
    cursor:pointer;
    text-align:left;
}
.vocab-lang-row:hover{border-color:var(--primary);background:var(--bg-color);}
.vocab-lang-row-main{display:inline-flex;align-items:center;gap:8px;color:var(--text-color);}
.vocab-lang-code{color:var(--text-muted);font-size:0.8rem;text-transform:uppercase;}
.vocab-lang-row-counts{color:var(--text-muted);font-size:0.82rem;white-space:nowrap;}
/* 71.5 prompt-template editor (Academy -> Settings -> Generation) */
.prompt-tpl-list{display:flex;flex-direction:column;gap:14px;}
.prompt-tpl{border:1px solid var(--card-border);border-radius:10px;padding:12px 14px;background:var(--card-bg);}
.prompt-tpl-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px;}
.prompt-tpl-name{font-weight:600;color:var(--text-color);}
.prompt-tpl-badge{font-size:0.72rem;padding:2px 8px;border-radius:999px;background:var(--primary);color:#fff;}
.prompt-tpl-hint{font-size:0.78rem;line-height:1.45;color:var(--text-muted);margin:0 0 8px;}
.prompt-tpl-ph{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px;}
.prompt-tpl-ph code{font-size:0.72rem;padding:2px 7px;border:1px solid var(--card-border);border-radius:6px;color:var(--text-muted);}
.prompt-tpl-ph code.missing{border-color:var(--danger);color:var(--danger);}
.prompt-tpl textarea{width:100%;min-height:260px;resize:vertical;padding:10px 12px;border:1px solid var(--card-border);border-radius:8px;background:var(--bg-color);color:var(--text-color);font-family:ui-monospace,Consolas,monospace;font-size:0.78rem;line-height:1.5;}
.prompt-tpl-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px;}
.prompt-tpl-meta{margin-left:auto;font-size:0.75rem;color:var(--text-muted);font-variant-numeric:tabular-nums;}
.vocab-lang-row-variant{margin-right:auto;color:var(--text-muted);font-size:0.8rem;padding:2px 8px;border:1px solid var(--card-border);border-radius:999px;}
.vocab-lang-row-variant em{font-style:normal;opacity:0.65;}
.rl-variant-lab{flex:1 1 260px;min-width:220px;}
.rl-variant-hint{font-size:0.74rem;line-height:1.4;color:var(--text-muted);}
.vocab-stats-wrap{margin-top:8px;}
.vocab-stats-scroll{overflow-x:auto;}
.vocab-stats-table{width:100%;border-collapse:collapse;font-size:0.88rem;}
.vocab-stats-table th{
    text-align:right;
    padding:10px 12px;
    color:var(--text-muted);
    font-weight:700;
    border-bottom:2px solid var(--card-border);
    white-space:nowrap;
}
.vocab-stats-table th:first-child,.vocab-stats-table td:first-child{text-align:left;}
.vocab-stats-table td{text-align:right;padding:9px 12px;border-bottom:1px solid var(--card-border);white-space:nowrap;}
.vocab-stats-table tbody tr:hover{background:rgba(111,95,228,0.04);}
.vocab-lang{font-weight:700;color:var(--text-color);}
.vocab-lang .fi{margin-right:8px;}
.vocab-gap{
    display:inline-block;
    background:var(--accent-glow);
    color:var(--accent-hover);
    font-weight:800;
    padding:2px 9px;
    border-radius:999px;
}
.vocab-ok{color:var(--text-muted);}
.vocab-search-row{display:flex;gap:10px;margin-bottom:12px;flex-wrap:wrap;}
.vocab-lang-select{padding:9px 12px;border:1px solid var(--card-border);border-radius:10px;background:var(--card-bg);color:var(--text-color);font-size:0.9rem;}
.vocab-search-input{
    flex:1;
    min-width:180px;
    padding:9px 12px;
    border:1px solid var(--card-border);
    border-radius:10px;
    background:var(--card-bg);
    color:var(--text-color);
    font-size:0.9rem;
}
.vocab-results{display:flex;flex-direction:column;gap:4px;margin-bottom:14px;}
.vocab-result{
    text-align:left;
    background:var(--bg-color);
    border:1px solid var(--card-border);
    border-radius:8px;
    padding:8px 12px;
    cursor:pointer;
    font-size:0.9rem;
    color:var(--text-color);
}
.vocab-result:hover{background:rgba(111,95,228,0.06);}
.vocab-result span{color:var(--text-muted);margin-left:6px;}
.vocab-empty{color:var(--text-muted);font-size:0.88rem;padding:6px 0;}
.vocab-edit-card{background:var(--bg-color);border:1px solid var(--card-border);border-radius:14px;padding:18px;}
.vocab-edit-title{font-size:1.15rem;margin-bottom:14px;color:var(--text-color);}
.vocab-etabs{display:flex;gap:6px;flex-wrap:wrap;border-bottom:1px solid var(--card-border);margin:0 0 14px;}
.vocab-etab{
    border:none;
    background:none;
    color:var(--text-muted);
    font-weight:700;
    font-size:0.85rem;
    padding:8px 12px;
    cursor:pointer;
    border-bottom:2px solid transparent;
    display:inline-flex;
    align-items:center;
    gap:6px;
}
.vocab-etab:hover{color:var(--text-color);}
.vocab-etab.active{color:var(--primary);border-bottom-color:var(--primary);}
.vocab-hint{font-size:0.85rem;color:var(--text-muted);margin:0 0 14px;}
.vocab-subsection{margin-top:18px;padding-top:14px;border-top:1px solid var(--card-border);}
.vocab-subsection h5{margin:0 0 10px;font-size:0.78rem;text-transform:uppercase;letter-spacing:0.05em;color:var(--text-muted);}
.vocab-pos{font-size:0.8rem;color:var(--text-muted);font-weight:600;}
.vocab-sense,.vocab-def{background:var(--card-bg);border:1px solid var(--card-border);border-radius:10px;padding:12px;margin-bottom:10px;}
.vocab-sense-head,.vocab-def-head{font-weight:700;color:var(--text-color);margin-bottom:8px;}
.vocab-fields{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;margin-bottom:10px;}
.vocab-field{display:flex;flex-direction:column;gap:4px;font-size:0.78rem;color:var(--text-muted);}
.vocab-fields .vs-gender,.vocab-fields .vs-display{
    padding:7px 10px;
    border:1px solid var(--card-border);
    border-radius:8px;
    font-size:0.88rem;
    background:var(--card-bg);
    color:var(--text-color);
}
.vocab-check{flex-direction:row;align-items:center;gap:6px;}
.btn-sm{padding:7px 14px;font-size:0.82rem;}
.vocab-ex-label{font-size:0.78rem;color:var(--text-muted);margin:8px 0 6px;}
.vocab-ex-label span{opacity:0.7;}
.vocab-ex-row{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:8px;
    padding:5px 0;
    font-size:0.88rem;
    border-bottom:1px dashed var(--card-border);
}
.vocab-ex-row em{color:var(--text-muted);}
.vocab-ex-add{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap;}
.vocab-ex-add input{
    flex:1;
    min-width:120px;
    padding:7px 10px;
    border:1px solid var(--card-border);
    border-radius:8px;
    font-size:0.85rem;
    background:var(--card-bg);
    color:var(--text-color);
}
.vocab-x{background:none;border:none;color:#ef4444;cursor:pointer;font-size:1.1rem;line-height:1;padding:0 4px;}
.vocab-ex-add select{
    padding:7px 10px;
    border:1px solid var(--card-border);
    border-radius:8px;
    font-size:0.85rem;
    background:var(--card-bg);
    color:var(--text-color);
}
.vocab-switch{display:inline-flex;align-items:center;gap:8px;font-size:0.82rem;color:var(--text-color);cursor:pointer;}
.vocab-switch input{position:absolute;opacity:0;width:0;height:0;}
.vocab-switch-track{
    position:relative;
    width:38px;
    height:22px;
    background:var(--card-border);
    border-radius:999px;
    transition:background 0.2s;
    flex-shrink:0;
}
.vocab-switch-track::after{
    content:"";
    position:absolute;
    top:2px;
    left:2px;
    width:18px;
    height:18px;
    background:#fff;
    border-radius:50%;
    transition:transform 0.2s;
    box-shadow:0 1px 3px rgba(0,0,0,0.2);
}
.vocab-switch input:checked + .vocab-switch-track{background:var(--primary);}
.vocab-switch input:checked + .vocab-switch-track::after{transform:translateX(16px);}
.vocab-chips,.vocab-chip-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;}
.vocab-chip-lbl{font-size:0.72rem;font-weight:800;text-transform:uppercase;color:var(--text-muted);width:30px;}
.vocab-chip{
    display:inline-flex;
    align-items:center;
    gap:6px;
    background:var(--card-bg);
    border:1px solid var(--card-border);
    border-radius:999px;
    padding:4px 6px 4px 12px;
    font-size:0.85rem;
    color:var(--text-color);
}
.vocab-chip.is-syn{border-color:rgba(111,95,228,0.4);}
.vocab-chip.is-ant{border-color:rgba(244,130,92,0.45);}
.vocab-chip-str{
    border:none;
    background:rgba(111,95,228,0.12);
    color:var(--primary);
    font-size:0.68rem;
    font-weight:800;
    text-transform:uppercase;
    padding:2px 7px;
    border-radius:999px;
    cursor:pointer;
}
.vocab-chip-str.is-distant{background:var(--bg-color);color:var(--text-muted);}
.vocab-chip-x{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:1.1rem;line-height:1;padding:0 2px;}
.vocab-chip-x:hover{color:#ef4444;}
.vocab-thes-def{background:var(--card-bg);border:1px solid var(--card-border);border-radius:10px;padding:12px;margin-bottom:10px;}
.vocab-infl-group{margin-bottom:14px;}
.vocab-infl-ft{font-size:0.72rem;font-weight:800;text-transform:uppercase;letter-spacing:0.05em;color:var(--primary);margin-bottom:6px;}
.vocab-infl-row{display:flex;align-items:center;gap:8px;margin-bottom:6px;}
.vocab-infl-person{font-size:0.78rem;color:var(--text-muted);min-width:80px;}
.vocab-infl-row .vi-form{
    flex:1;
    max-width:240px;
    padding:7px 10px;
    border:1px solid var(--card-border);
    border-radius:8px;
    font-size:0.88rem;
    background:var(--bg-color);
    color:var(--text-color);
}
.vocab-addform{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:14px;}
.vocab-addform label{display:flex;flex-direction:column;gap:4px;font-size:0.8rem;color:var(--text-muted);}
.vocab-addform input:not([type=checkbox]){
    padding:8px 11px;
    border:1px solid var(--card-border);
    border-radius:8px;
    font-size:0.9rem;
    background:var(--card-bg);
    color:var(--text-color);
}
.vocab-adderr{color:#ef4444;font-size:0.85rem;margin-top:8px;}
.vocab-addform-actions{display:flex;gap:10px;flex-wrap:wrap;}
.vocab-gen-langrow{margin-bottom:14px;}
/* Accordion generator cards (Phase 37) — collapsed to a single head row showing a spinner when
   running, the title, the pending summary and a caret. One card expands at a time. Cards render
   from the config in admin-generators.js under small group headers. */
.vocab-gen-seqbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 14px;border:1px dashed var(--card-border);border-radius:12px;}
.vocab-gen-seqbar .btn{padding:5px 14px;font-size:0.82rem;flex-shrink:0;}
.vocab-gen-group{margin:16px 0 8px;font-size:0.78rem;font-weight:800;text-transform:uppercase;letter-spacing:0.06em;color:var(--text-muted);}
.vocab-gen-card{background:var(--bg-color);border:1px solid var(--card-border);border-radius:12px;margin-bottom:8px;overflow:hidden;}
.vocab-gen-head{
    display:flex;
    align-items:center;
    gap:10px;
    width:100%;
    padding:10px 14px;
    border:none;
    background:none;
    font:inherit;
    text-align:left;
    cursor:pointer;
}
.vocab-gen-head:hover{background:rgba(111,95,228,0.05);}
.vocab-gen-spin{color:var(--primary);flex-shrink:0;}
.vocab-gen-light{width:10px;height:10px;border-radius:50%;flex-shrink:0;background:#c9c9d4;box-shadow:0 0 0 2px rgba(0,0,0,0.04);transition:background 0.2s ease;}
.vocab-gen-light.is-green{background:#37c26b;box-shadow:0 0 0 2px rgba(55,194,107,0.18);}
.vocab-gen-light.is-yellow{background:#f2b134;box-shadow:0 0 0 2px rgba(242,177,52,0.2);}
.vocab-gen-light.is-red{background:#e5533c;box-shadow:0 0 0 2px rgba(229,83,60,0.18);}
/* Phase 60: position of this generator in its tab's run sequence. Generators outside a sequence render
   an `.is-empty` chip — invisible but space-holding, so every card title lines up on the same x. */
.vocab-gen-seqno{display:grid;place-items:center;min-width:19px;height:19px;padding:0 5px;border-radius:6px;background:rgba(111,95,228,0.13);border:1px solid rgba(111,95,228,0.18);color:var(--text-muted);font-size:0.7rem;font-weight:800;font-variant-numeric:tabular-nums;flex-shrink:0;}
.vocab-gen-seqno.is-empty{background:transparent;border-color:transparent;}
/* Phase 61: terms the generator parked after repeated failures — never hidden, always restorable. */
.vocab-gen-skips{margin-top:0.5rem;}
.vocab-gen-skiplist{margin-top:0.5rem;display:flex;flex-direction:column;gap:0.35rem;}
.vocab-skip-row{display:flex;align-items:center;gap:0.6rem;padding:0.45rem 0.6rem;border:1px solid var(--card-border);border-radius:8px;background:var(--bg-color);}
.vocab-skip-term{flex:none;font-size:0.86rem;}
.vocab-skip-why{flex:1;min-width:0;font-size:0.76rem;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.vocab-skip-all{align-self:flex-start;}
.vocab-gen-light.is-off{background:#c9c9d4;}
.vocab-gen-title{color:var(--text-color);font-size:0.95rem;flex-shrink:0;}
.vocab-gen-engine{color:var(--text-muted);font-size:0.8rem;flex-shrink:0;opacity:0.7;margin-left:-4px;}
.vocab-gen-headstatus{flex:1;min-width:0;text-align:right;color:var(--text-muted);font-size:0.82rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.vocab-gen-caret{color:var(--text-muted);font-size:0.75rem;transition:transform 0.2s ease;flex-shrink:0;}
.vocab-gen-card:not(.is-collapsed) .vocab-gen-caret{transform:rotate(180deg);}
.vocab-gen-body{padding:0 16px 12px;display:flex;flex-direction:column;gap:10px;}
.vocab-gen-desc{color:var(--text-muted);font-size:0.85rem;}
.vocab-gen-lastrun{color:var(--text-muted);font-size:0.8rem;font-style:italic;}
.vocab-gen-controls{display:flex;align-items:center;gap:12px;}
.vocab-gen-controls .btn{padding:5px 14px;font-size:0.82rem;}
.vocab-gen-num{width:56px;padding:6px 8px;border:1px solid var(--card-border);border-radius:8px;background:var(--card-bg);color:var(--text-color);font-size:0.9rem;text-align:center;}
.vocab-gen-num-wide{width:84px;}
.vocab-gen-status{flex:1;color:var(--text-muted);font-size:0.85rem;}
.vocab-gen-bar{height:6px;background:var(--card-border);border-radius:999px;overflow:hidden;}
.vocab-gen-fill{height:100%;width:0;background:var(--primary);border-radius:999px;transition:width 0.3s ease;}
.vocab-insights-rows{display:flex;flex-direction:column;gap:5px;font-size:0.85rem;color:var(--text-muted);}
.vocab-insight strong{color:var(--text-color);}
.vocab-insight.is-warn, .vocab-insight.is-warn strong{color:#b45309;}
.vocab-gen-promote{margin-top:18px;padding-top:16px;border-top:1px dashed var(--card-border);}
.vocab-promote-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:10px;}
.vocab-promote-row label{display:inline-flex;align-items:center;gap:8px;font-size:0.8rem;color:var(--text-muted);}
.vocab-promote-status{color:var(--text-muted);font-size:0.85rem;}

/* --- Admin → Academy (Phase 36): lesson list + block editor --------------------------------- */
.academy-toolbar{display:flex;align-items:flex-end;gap:14px;margin-bottom:16px;flex-wrap:wrap;}
/* 49: collapsible Academy settings panel (checkpoint/exam sizes, timer, attempts) — relocated here
   from Vocabulary → Settings. Collapsed by default — the caret rotates when expanded. */
.academy-settings-wrap{margin-bottom:18px;}
.academy-settings-toggle{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    width:100%;
    padding:12px 16px;
    border:1px solid var(--card-border);
    border-radius:12px;
    background:var(--bg-color);
    color:var(--text-color);
    font-weight:700;
    font-size:0.9rem;
    cursor:pointer;
}
.academy-settings-toggle span{display:flex;align-items:center;gap:8px;min-width:0;}
.academy-settings-toggle:hover{border-color:var(--primary);color:var(--primary);}
.academy-settings-caret{transition:transform 0.2s ease;flex-shrink:0;}
.academy-settings-toggle[aria-expanded="true"] .academy-settings-caret{transform:rotate(180deg);}
.academy-settings{margin:0;}  /* container now lives on .set-groups (shared across all settings pages) */
.academy-lang-label{display:flex;flex-direction:column;gap:4px;font-size:0.8rem;color:var(--text-muted);font-weight:700;}
.academy-lang-pick{display:flex;align-items:center;gap:8px;}
.academy-lang-flag{font-size:1.2rem;}
.academy-empty{color:var(--text-muted);text-align:center;padding:26px 0;}
.academy-row{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid var(--card-border);border-radius:12px;margin-bottom:8px;background:var(--bg-color);}
.academy-row-icon{width:20px;text-align:center;color:var(--primary);flex-shrink:0;}
.academy-row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;}
.academy-row-title{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-weight:800;color:var(--text-color);line-height:1.25;}
.academy-crown{color:var(--secondary);font-size:0.8em;}
.academy-row-sub{font-size:0.76rem;color:var(--text-muted);}
/* 50: the editor status chip stays a pill (its class is .academy-status); the row toggle is an icon
   button (.academy-status-btn on .academy-tool). */
.academy-status{font-size:0.72rem;font-weight:800;text-transform:uppercase;padding:3px 10px;border-radius:999px;}
.academy-status.is-live{background:rgba(16,185,129,0.14);color:#0d9463;}
.academy-status.is-draft{background:rgba(111,95,228,0.12);color:var(--primary);}
.academy-editor{margin-top:22px;padding-top:18px;border-top:2px dashed var(--card-border);scroll-margin-top:120px;}
/* Editor header: title (icon + name + status chip) left, icon-only action chips right. */
.academy-editor-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:14px;}
.academy-editor-title{margin:0;display:flex;align-items:center;gap:10px;min-width:0;flex-wrap:wrap;}
.academy-editor-title i{color:var(--primary);}
.academy-editor-actions{display:flex;gap:8px;flex-shrink:0;}
.academy-tool-lg{width:38px;height:38px;border-radius:10px;font-size:0.95rem;}
.academy-tool-lg:hover{border-color:var(--primary);color:var(--primary);}
.academy-tool-x.academy-tool-lg:hover{border-color:#ef4444;color:#ef4444;}
/* 51: the lesson metadata fields (title → icon) sit in ONE tidy container. */
.academy-meta-card{background:var(--bg-color);border:1px solid var(--card-border);border-radius:14px;padding:16px 18px;margin-bottom:16px;}
.academy-meta-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;}
.academy-field{display:flex;flex-direction:column;gap:4px;font-size:0.78rem;color:var(--text-muted);font-weight:700;}
.academy-field input,.academy-field select{padding:8px 10px;border:1px solid var(--card-border);border-radius:8px;background:var(--card-bg);color:var(--text-color);font-size:0.9rem;}
.academy-field-wide{grid-column:span 2;}
.academy-field-check{flex-direction:row;align-items:center;gap:8px;align-self:end;padding-bottom:8px;}
.academy-icon-field{margin-top:12px;}
.academy-field-caption{display:block;font-size:0.78rem;color:var(--text-muted);font-weight:700;margin-bottom:6px;}
.academy-icon-picker{display:flex;flex-wrap:wrap;gap:6px;}
.academy-icon-opt{
    width:36px;
    height:36px;
    border:1px solid var(--card-border);
    border-radius:10px;
    background:var(--card-bg);
    color:var(--text-muted);
    font-size:0.95rem;
    cursor:pointer;
    transition:border-color 0.15s ease,color 0.15s ease;
}
.academy-icon-opt:hover{border-color:var(--primary);color:var(--primary);}
.academy-icon-opt.is-active{border-color:var(--primary);background:rgba(111,95,228,0.12);color:var(--primary);}
.academy-blocks-title{margin:0;}
.academy-blocks-hint{margin:0 0 10px;font-size:0.8rem;color:var(--text-muted);}
/* 51: Add-block dropdown on the Content-blocks heading row. */
.academy-blocks-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:18px 0 4px;}
.academy-block-add{position:relative;flex-shrink:0;}
.academy-add-caret{font-size:0.7em;margin-left:2px;}
.academy-block-add-menu {
    position:absolute;
    top:calc(100% + 6px);
    right:0;
    z-index:20;
    min-width:180px;
    display:flex;
    flex-direction:column;
    gap:2px;
    padding:6px;
    background:var(--card-bg);
    border:1px solid var(--card-border);
    border-radius:12px;
    box-shadow:0 12px 30px -8px rgba(17,24,39,0.25);
}
.academy-block-add-menu.hidden{display:none;}
.academy-block-add-menu button{display:flex;align-items:center;gap:10px;width:100%;padding:8px 12px;border:none;background:none;border-radius:8px;font:inherit;font-size:0.9rem;color:var(--text-color);cursor:pointer;text-align:left;}
.academy-block-add-menu button:hover{background:var(--bg-color);}
.academy-block-add-menu button i{color:var(--primary);width:16px;text-align:center;}
.academy-block{border:1px solid var(--card-border);border-radius:12px;background:var(--bg-color);margin-bottom:8px;overflow:hidden;}
.academy-block-head{display:flex;align-items:center;gap:10px;padding:8px 12px;background:rgba(111,95,228,0.06);cursor:pointer;user-select:none;}
/* 51: content-block drag handle. */
.academy-block-grip{color:var(--text-muted);cursor:grab;font-size:0.85rem;flex-shrink:0;}
.academy-block.is-dragging{opacity:0.5;border-style:dashed;}
.academy-block-head:hover{background:rgba(111,95,228,0.10);}
.academy-block-type{font-weight:800;font-size:0.82rem;color:var(--primary);text-transform:capitalize;flex-shrink:0;min-width:86px;}
.academy-block-type i{margin-right:6px;}
/* Block ↑/↓ stacked just right of the grip + a faded-purple number chip, mirroring the lesson/chapter rows. */
.academy-block-arrows{display:flex;flex-direction:column;flex-shrink:0;}
.academy-block-arrows .academy-tool{width:22px;height:15px;padding:0;font-size:0.58rem;border:none;background:none;}
.academy-block-num{font-size:0.68rem;font-weight:800;color:var(--primary);background:rgba(111,95,228,0.1);border-radius:7px;min-width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;}
/* Academy settings — Gemini model override text inputs. */
.academy-model-input{width:100%;max-width:280px;font-family:ui-monospace,monospace;font-size:0.82rem;padding:7px 10px;border:1px solid var(--card-border);border-radius:8px;background:var(--card-bg);color:var(--text-color);}
.academy-model-testwrap{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.model-input-wrap{display:flex;gap:6px;align-items:center;}
.model-test-btn{flex:0 0 auto;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--card-border);background:var(--card-bg);border-radius:8px;cursor:pointer;color:var(--text-muted);font-size:0.82rem;}
.model-test-btn:hover{border-color:var(--primary);color:var(--primary);}
.model-test-btn:disabled{opacity:0.55;cursor:default;}
.academy-block-summary{flex:1;min-width:0;font-size:0.82rem;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
/* 42: checkpoint provenance chips — fresh (Gemini-rewritten, review it) vs verbatim copies. */
.academy-block-prov{flex:none;font-size:0.68rem;font-weight:800;color:var(--text-muted);background:rgba(111,95,228,0.08);border-radius:999px;padding:2px 8px;white-space:nowrap;max-width:180px;overflow:hidden;text-overflow:ellipsis;}
.academy-block-prov.is-fresh{color:#7c3aed;background:rgba(124,58,237,0.12);}
.academy-fresh-note{font-size:0.8rem;color:#7c3aed;background:rgba(124,58,237,0.07);border-radius:10px;padding:8px 12px;margin:0 0 10px;}
.academy-block-caret{color:var(--text-muted);font-size:0.75rem;margin-left:4px;transition:transform 0.2s ease;align-self:center;}
.academy-block.is-open .academy-block-caret{transform:rotate(180deg);}
.academy-block-tools{display:flex;gap:6px;align-items:center;flex-shrink:0;}
.academy-tool{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--card-border);background:var(--card-bg);border-radius:8px;width:28px;height:28px;cursor:pointer;color:var(--text-muted);}
/* 51: lesson ↑/↓ stacked at the far left (next to the grip), mirroring the chapter arrows. */
.academy-row-arrows{display:flex;flex-direction:column;flex-shrink:0;}
.academy-row-arrows .academy-tool{width:22px;height:15px;padding:0;font-size:0.58rem;border:none;background:none;}
.academy-tool:disabled{opacity:0.35;cursor:default;}
.academy-tool-x:hover{color:#ef4444;border-color:#ef4444;}
.academy-block-body{padding:12px 14px;display:flex;flex-direction:column;gap:10px;}
.academy-block-body label{display:flex;flex-direction:column;gap:4px;font-size:0.78rem;color:var(--text-muted);font-weight:700;}
.academy-block-body input,.academy-block-body textarea,.academy-block-body select{padding:8px 10px;border:1px solid var(--card-border);border-radius:8px;background:var(--card-bg);color:var(--text-color);font-size:0.9rem;font-family:inherit;}
.academy-pair{display:flex;gap:8px;align-items:center;}
.academy-pair input{flex:1;}
/* 53: contrast edits its two sides side by side — the form should read like the block does. */
.academy-ct-sides{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.academy-ct-side{display:flex;flex-direction:column;gap:8px;border:1px solid var(--card-border);border-radius:10px;padding:10px;}
.academy-mini-x{border:none;background:none;color:var(--text-muted);font-size:1.1rem;cursor:pointer;padding:0 4px;}
.academy-mini-x:hover{color:#ef4444;}
.academy-chiprow{display:flex;flex-wrap:wrap;gap:6px;}
.academy-chip{display:inline-flex;align-items:center;gap:5px;background:rgba(111,95,228,0.12);color:var(--primary);border-radius:999px;padding:4px 10px;font-size:0.85rem;font-weight:700;}
.academy-chip-x{border:none;background:none;color:inherit;cursor:pointer;font-size:1rem;padding:0;}
.academy-sense-search{position:relative;}
.academy-sense-search input{width:100%;}
.academy-sense-results{display:flex;flex-direction:column;gap:2px;margin-top:6px;}
.academy-sense-hit{text-align:left;border:1px solid var(--card-border);background:var(--card-bg);border-radius:8px;padding:6px 10px;cursor:pointer;font-size:0.88rem;color:var(--text-color);}
.academy-sense-hit:hover{border-color:var(--primary);}
.academy-sense-gloss{color:var(--text-muted);font-size:0.82rem;margin-left:6px;}
.academy-sense-dict{font-size:0.68rem;font-weight:800;color:var(--secondary);margin-left:6px;text-transform:uppercase;}
.academy-sense-none{color:var(--text-muted);font-size:0.85rem;}
.academy-gen{margin-bottom:16px;}
/* 44.6 admin polish: the Academy panels (generator / tests / audio maintenance) share ONE padded
   layout — the old cards had no padding and mixed unrelated control rows. */
.academy-panel{padding:16px 18px;}
#academy-list{margin-bottom:22px;}/* keep the last chapter off the Audio/Localization panels when there's no exam row between them */
.academy-panel-head{margin-bottom:14px;}
.academy-panel-title{display:block;font-size:0.95rem;color:var(--text-color);margin-bottom:4px;}
.academy-panel-title i{color:var(--primary);margin-right:7px;}
.academy-panel-desc{margin:0;font-size:0.84rem;color:var(--text-muted);line-height:1.5;}
.academy-gform{display:flex;flex-wrap:wrap;gap:10px 12px;margin-bottom:14px;}
.academy-gfield{display:flex;flex-direction:column;gap:4px;font-size:0.74rem;font-weight:800;text-transform:uppercase;letter-spacing:0.04em;color:var(--text-muted);}
.academy-gfield input,.academy-gfield select,.academy-gfield textarea{padding:8px 10px;border:1px solid var(--card-border);border-radius:8px;background:var(--card-bg);color:var(--text-color);font:inherit;font-size:0.9rem;font-weight:400;text-transform:none;letter-spacing:normal;}
.academy-gfield textarea{resize:vertical;}
.academy-gfield-full{flex:1 1 100%;}
.academy-gopt{font-weight:400;text-transform:none;letter-spacing:normal;}
.academy-panel-actions{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;}
.academy-panel-actions .btn{white-space:nowrap;}
.academy-panel-status{margin:10px 0 0;}
.academy-panel-status:empty{display:none;}
.academy-panel-sep{border:none;border-top:1px solid var(--card-border);margin:16px 0 14px;}
/* 51: always-visible prepare-audio progress bar. */
.academy-prep-bar{height:8px;background:var(--card-border);border-radius:999px;overflow:hidden;margin:10px 0 0;}
.academy-prep-bar span{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--primary),var(--secondary));border-radius:999px;transition:width 0.3s ease;}
.academy-gen-pro-label{display:inline-flex;align-items:center;gap:6px;font-size:0.82rem;font-weight:700;color:var(--text-muted);white-space:nowrap;padding-bottom:8px;}
.academy-unmatched{margin:0;font-size:0.82rem;color:var(--secondary);font-weight:700;}
.academy-unmatched i{margin-right:4px;}
/* Focus mode: while a lesson is open, the picker/settings/level pills/list step aside and the editor
   owns the tab (every exit path — save, close, delete — removes is-editing). */
#tab-academy-lessons.is-editing .academy-toolbar,#tab-academy-lessons.is-editing .academy-gen,#tab-academy-lessons.is-editing .academy-levels,#tab-academy-lessons.is-editing .academy-level-head,#tab-academy-lessons.is-editing .academy-level-overview,#tab-academy-lessons.is-editing .academy-search-row,#tab-academy-lessons.is-editing .academy-acd{display:none;}
#tab-academy-lessons.is-editing .academy-editor{margin-top:0;padding-top:0;border-top:none;animation:academy-editor-in 0.25s ease;}
@keyframes academy-editor-in{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:translateY(0);}}
@media(prefers-reduced-motion:reduce){#tab-academy-lessons.is-editing .academy-editor{animation:none;}}
/* Reorder affordances: grip for drag-and-drop + per-row arrows (both persist via lessons_reorder). */
.academy-grip{color:var(--text-muted);cursor:grab;padding:0 2px;font-size:0.9rem;}
.academy-row.is-dragging{opacity:0.45;border-style:dashed;}
.academy-row .academy-tool{flex-shrink:0;}
.academy-inline-check{flex-direction:row !important;align-items:center;gap:8px;}
/* 40A3: grammar-extras group, cloze authoring guard + the live preview pane (renders through the
   REAL learner registries — academy.css styles apply since it's a shell asset). */
.academy-extras{border:1px dashed var(--card-border);border-radius:10px;padding:10px 12px;}
.academy-extras summary{cursor:pointer;font-size:0.8rem;font-weight:800;color:var(--text-muted);}
.academy-extras[open] summary{margin-bottom:10px;}
.academy-extras label{margin-bottom:10px;}
.academy-check-form{display:flex;flex-direction:column;gap:8px;border-top:1px dashed var(--card-border);padding-top:10px;}
.academy-field-caption{font-size:0.78rem;font-weight:700;color:var(--text-muted);}
.academy-cloze-status{margin:0;font-size:0.8rem;font-weight:700;color:var(--success,#10b981);}
.academy-cloze-status.is-bad{color:var(--secondary);}
.academy-form-note{margin:0;font-size:0.78rem;color:var(--text-muted);font-style:italic;}
.academy-live-preview{border-top:1px dashed var(--card-border);margin-top:6px;padding-top:10px;}
.academy-preview-cap{display:block;font-size:0.72rem;font-weight:800;text-transform:uppercase;letter-spacing:0.05em;color:var(--primary);margin-bottom:6px;}
.academy-preview-body{background:rgba(255,255,255,0.55);border-radius:14px;padding:6px 16px;}
.academy-preview-body .acd-block{border-bottom:none;}
.academy-preview-note{margin:0;font-size:0.85rem;color:var(--text-muted);}
/* 41: cadence chips ("N published lessons since the last checkpoint"). */
.academy-cp-count{font-size:0.72rem;font-weight:800;color:var(--text-muted);background:rgba(111,95,228,0.08);border-radius:999px;padding:2px 8px;}
.academy-cp-count.is-due{color:#b45309;background:rgba(244,162,60,0.16);}
.academy-row.is-checkpoint{border-color:rgba(244,162,60,0.5);}
.academy-kind-badge{font-size:0.62rem;font-weight:800;text-transform:uppercase;letter-spacing:0.05em;color:#b45309;background:rgba(244,162,60,0.16);border-radius:999px;padding:2px 7px;margin-left:6px;vertical-align:1px;}
/* 49: level pills (learner-style) + level header (count / cadence / level-wide actions). */
.academy-levels{display:flex;gap:8px;flex-wrap:wrap;margin:4px 0 14px;}
.academy-level-field .academy-levels{margin:0;}
.academy-level-pill{font-weight:800;font-size:0.85rem;padding:7px 16px;border:1px solid var(--card-border);border-radius:999px;background:var(--card-bg);color:var(--text-muted);cursor:pointer;transition:all 0.15s ease;}
/* 50: visible-levels checkboxes in Academy settings. */
.academy-levels-set{align-items:flex-start;}
.academy-levels-pick{display:flex;gap:14px;flex-wrap:wrap;}
.academy-levels-pick label{display:inline-flex;align-items:center;gap:5px;font-weight:700;font-size:0.85rem;color:var(--text-color);cursor:pointer;}
.academy-level-pill:hover{border-color:var(--primary);color:var(--primary);}
.academy-level-pill.is-active{background:var(--primary);border-color:var(--primary);color:#fff;}
.academy-level-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 12px;}
.academy-level-title{margin:0;font-size:1.05rem;color:var(--text-color);display:flex;align-items:center;gap:8px;}
.academy-level-title i{color:var(--primary);}
.academy-level-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
/* Chapter accordion (49): collapsed by default — only one section open at a time. */
.academy-acd{display:flex;flex-direction:column;gap:10px;}
.academy-chap{border:1px solid var(--card-border);border-radius:14px;background:var(--card-bg);overflow:hidden;}
.academy-chap.is-dragging{opacity:0.5;border-style:dashed;}
.academy-chap-head{display:flex;align-items:center;gap:10px;padding:10px 12px;background:rgba(111,95,228,0.055);}
.academy-chap-grip{color:var(--text-muted);cursor:grab;font-size:0.9rem;flex-shrink:0;width:14px;text-align:center;}
.academy-chap-grip.is-off{cursor:default;opacity:0;}
/* PR4: chapter ↑/↓ arrows (stacked, compact), progress bar, level overview strip. */
.academy-chap-arrows{display:flex;flex-direction:column;flex-shrink:0;}
.academy-chap-arrows .academy-tool{width:22px;height:15px;padding:0;font-size:0.58rem;border:none;background:none;}
.academy-level-overview{display:flex;flex-wrap:wrap;gap:8px 16px;margin:0 0 14px;font-size:0.8rem;font-weight:700;color:var(--text-muted);}
.academy-level-overview span{display:inline-flex;align-items:center;gap:5px;}
.academy-level-overview i{color:var(--text-muted);font-size:0.85em;}
.academy-level-overview .is-live,.academy-level-overview .is-live i{color:#0d9463;}
.academy-level-overview .is-draft,.academy-level-overview .is-draft i{color:#b45309;}
.academy-level-overview .is-alert,.academy-level-overview .is-alert i{color:#dc2626;}
/* PR-C: separator between the difficulty pills and the content below + compact white action buttons. */
.academy-sep{border:none;border-top:1px solid var(--card-border);margin:14px 0;}
.academy-act-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;font-size:0.8rem;font-weight:700;border:1px solid var(--card-border);border-radius:9px;background:#fff;color:var(--text-color);cursor:pointer;}
.academy-act-btn:hover{border-color:var(--primary);color:var(--primary);}
.academy-act-btn i{font-size:0.85em;color:var(--text-muted);}
.academy-act-btn:hover i{color:var(--primary);}
/* PR-C: row ⋯ menu — portaled to <body> (position:fixed) so the accordion's overflow:hidden can't clip it. */
.academy-row-menu{position:fixed;z-index:2100;min-width:172px;padding:5px;display:flex;flex-direction:column;gap:2px;background:var(--card-bg);border:1px solid var(--card-border);border-radius:10px;box-shadow:0 12px 30px -8px rgba(17,24,39,0.35);}
.academy-row-menu.hidden{display:none;}
.academy-row-menu-item{display:flex;align-items:center;gap:9px;width:100%;padding:8px 10px;border:none;border-radius:7px;background:none;cursor:pointer;font:inherit;font-size:0.85rem;color:var(--text-color);text-align:left;}
.academy-row-menu-item:hover{background:var(--bg-color);}
.academy-row-menu-item i{width:16px;text-align:center;color:var(--text-muted);}
.academy-modal-card.academy-course-modal-card{max-width:760px;}
.academy-chap-toggle {
    flex:1;
    min-width:0;
    display:flex;
    align-items:center;
    gap:10px;
    background:none;
    border:none;
    cursor:pointer;
    text-align:left;
    padding:4px 2px;
    color:var(--text-color);
    font:inherit;
}
/* 50: chapter title inherits the app UI font (Nunito) — a button doesn't inherit font-family, so it
   was falling back to the browser default. */
.academy-chap-name{font-weight:800;font-size:0.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.academy-chap-count{font-size:0.72rem;font-weight:700;color:var(--text-muted);flex-shrink:0;}
.academy-chap-count i{color:#b45309;}
.academy-chap-live{font-weight:800;color:#0d9463;}
.academy-chap-live.is-partial{color:#b45309;}
/* 50: the row status toggle is an icon button (.academy-tool) tinted by state — green = live, muted
   = draft. Its hover comes from .academy-tool. */
.academy-status-btn.is-live{color:#0d9463;}
.academy-status-btn.is-live:hover{border-color:#0d9463;}
.academy-status-btn.is-draft{color:var(--text-muted);}
/* 50: the within-chapter number chip carries the category colour (was a separate dot). */
.academy-num-grammar{background:rgba(139,92,246,0.16);color:#7c4dff;}
.academy-num-vocab{background:rgba(59,130,246,0.16);color:#2f6fed;}
.academy-num-conversation{background:rgba(16,185,129,0.16);color:#0d9463;}
.academy-num-culture{background:rgba(245,158,11,0.18);color:#b45309;}
.academy-row-warn{color:#f59e0b;font-size:0.85em;margin-left:3px;}
/* PR3: the title filter bar. 52: + the lint-state filter select sits beside the search. */
.academy-search-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 12px;}
.academy-search-wrap{display:flex;align-items:center;gap:8px;border:1px solid var(--card-border);border-radius:10px;padding:0 12px;background:var(--card-bg);flex:1 1 260px;max-width:420px;}
.academy-search-icon{color:var(--text-muted);font-size:0.85rem;}
.academy-search{flex:1;border:none;background:none;padding:9px 0;font:inherit;color:var(--text-color);outline:none;min-width:0;}
/* 52: lint-state filter — matches the search wrap's chrome; the select fills it. */
.academy-lint-filter-wrap{display:flex;align-items:center;gap:8px;border:1px solid var(--card-border);border-radius:10px;padding:0 10px 0 12px;background:var(--card-bg);flex:0 1 auto;}
.academy-lint-filter-icon{color:var(--text-muted);font-size:0.85rem;}
.academy-lint-filter{border:none;background:none;padding:9px 4px 9px 0;font:inherit;color:var(--text-color);outline:none;cursor:pointer;}
/* 52: the row Lint button is tinted by cached lint state (grey when never checked). Icon stays the same
   so the button's position is stable, and colour + a matching hover border carry the state. */
.academy-lint-row.is-broken{color:#dc2626;}
.academy-lint-row.is-broken:hover{border-color:#dc2626;}
.academy-lint-row.is-issues{color:#d97706;}
.academy-lint-row.is-issues:hover{border-color:#d97706;}
.academy-lint-row.is-clean{color:#0d9463;}
.academy-lint-row.is-clean:hover{border-color:#0d9463;}
/* 52 PR-A: stale = content changed since the cached check. An amber dot over whatever colour the last
   known state was, so the admin knows the count is outdated and a re-lint is due. */
.academy-lint-row.is-stale{position:relative;}
.academy-lint-row.is-stale::after{content:"";position:absolute;top:-2px;right:-2px;width:8px;height:8px;border-radius:50%;background:#d97706;border:1.5px solid var(--card-bg);}
.academy-chap-chevron{margin-left:auto;color:var(--text-muted);transition:transform 0.2s ease;flex-shrink:0;}
.academy-chap.is-open .academy-chap-chevron{transform:rotate(180deg);}
.academy-chap-actions{display:flex;gap:6px;flex-shrink:0;}
/* 51: animate expand/collapse via the grid-template-rows 0fr↔1fr trick (height is not transitionable;
   an inner overflow:hidden wrapper carries the padding so it clips cleanly when collapsed). */
.academy-chap-body{display:grid;grid-template-rows:0fr;transition:grid-template-rows 0.28s ease;}
.academy-chap.is-open .academy-chap-body{grid-template-rows:1fr;}
/* Vertical padding ONLY when open — a 0fr grid track can't shrink below the inner's top/bottom
   padding (that left a ~16px sliver when collapsed). Side padding is safe — it never sizes the row. */
.academy-chap-body-inner{overflow:hidden;min-height:0;padding:0 12px;}
.academy-chap.is-open .academy-chap-body-inner{padding-top:12px;padding-bottom:4px;}

/* 52 — Bulk Course Builder (admin, light-only). PR-C: now in a modal — the modal card owns the chrome. */
.academy-course-body{margin-top:6px;}
.course-lead{color:var(--text-muted);font-size:0.9rem;margin:12px 0 14px;}
.course-muted{color:var(--text-muted);font-size:0.88rem;}
.course-brief{display:flex;flex-direction:column;gap:10px;}
.course-fld{
    display:flex;flex-direction:column;gap:4px;
    font-size:0.82rem;font-weight:600;color:var(--text-color);
}
.course-fld input,.course-fld select,.course-fld textarea{
    font:inherit;font-weight:400;padding:8px 10px;
    border:1px solid var(--card-border);border-radius:9px;background:var(--bg-color);color:var(--text-color);
}
.course-brief-row{display:flex;gap:10px;flex-wrap:wrap;}
.course-fld-sm{flex:1;min-width:96px;}
.course-brief-actions{display:flex;align-items:center;gap:12px;margin-top:2px;}
/* 71.10 import/export busy state: the whole builder reads as inert while a round-trip is in flight. */
.academy-course-body.is-busy{position:relative;cursor:progress;}
.academy-course-body.is-busy button,.academy-course-body.is-busy input,.academy-course-body.is-busy select,.academy-course-body.is-busy textarea{opacity:0.55;cursor:progress;}
.academy-course-body.is-busy #course-status{opacity:1;font-weight:500;color:var(--text-color);}
#course-status.is-err{color:var(--danger);}
.course-jobs{margin-top:16px;}
.course-jobs-h{font-size:0.8rem;text-transform:uppercase;letter-spacing:0.04em;color:var(--text-muted);margin:0 0 8px;}
.course-job-row{
    display:flex;align-items:center;gap:10px;padding:9px 11px;
    border:1px solid var(--card-border);border-radius:10px;margin-bottom:7px;
    cursor:pointer;transition:border-color 0.15s ease;
}
.course-job-row:hover{border-color:var(--primary);}
.course-job-title{flex:1;font-weight:600;color:var(--text-color);}
.course-job-lvl{
    display:inline-block;font-size:0.72rem;font-weight:700;color:var(--primary);
    background:var(--primary-glow);padding:1px 7px;border-radius:20px;margin-left:4px;
}
.course-job-prog{font-size:0.82rem;color:var(--text-muted);}
.course-job-badge{
    font-size:0.7rem;font-weight:700;text-transform:uppercase;letter-spacing:0.03em;
    padding:2px 8px;border-radius:20px;
}
.course-st-draft{background:#eee5fb;color:#6f5fe4;}
.course-st-ready{background:#fdeede;color:#c9781a;}
.course-st-running{background:#dbeafe;color:#2563eb;}
.course-st-done{background:#d7f5e6;color:#0f9d63;}
.course-st-cancelled{background:#f1f0f5;color:#7a7596;}
.course-job-del{background:none;border:0;color:var(--text-muted);cursor:pointer;padding:4px;}
.course-job-del:hover{color:var(--danger);}
.course-job-head{display:flex;align-items:center;gap:10px;margin:14px 0 12px;}
.course-job-h{flex:1;font-weight:700;font-size:1.02rem;color:var(--text-color);}
.course-progress{display:flex;align-items:center;gap:12px;margin-bottom:10px;}
.course-bar{flex:1;height:9px;background:var(--card-border);border-radius:20px;overflow:hidden;}
.course-bar-fill{
    display:block;height:100%;border-radius:20px;position:relative;overflow:hidden;
    background:linear-gradient(90deg,var(--primary),var(--accent));transition:width 0.4s ease;
}
/* 57 run lockdown — while generating, the ONLY live control is Stop — every other button (the modal ×
   included) goes inert, so an interruption can only be intentional. Inputs are already disabled by
   setControlsBusy(), covering the buttons + giving the run its "alive" cues. */
/* 62 — generation is a server-side job — the modal stays CLOSABLE and browsable mid-run (×, Back,
   Refresh live), while only the outline-mutating controls lock (the server refuses those saves anyway). */
#academy-course-modal.is-running button:not(#course-stop):not(.academy-modal-close):not(#course-back):not(#course-refresh){pointer-events:none;opacity:0.4;}
#academy-course-modal.is-running #course-stop,#academy-course-modal.is-running .academy-modal-close,#academy-course-modal.is-running #course-back,#academy-course-modal.is-running #course-refresh{pointer-events:auto;opacity:1;}
/* Fast holographic sheen sweeping the filled part of the progress bar while the run is live. */
#academy-course-modal.is-running .course-bar-fill::after{
    content:'';position:absolute;top:0;left:-45%;width:45%;height:100%;
    background:linear-gradient(105deg,transparent 0%,rgba(255,255,255,0.75) 50%,transparent 100%);
    animation:course-sheen 1.1s linear infinite;
}
@keyframes course-sheen{to{left:110%;}}
.course-status-spin{color:var(--primary);margin-right:2px;}
/* A denied close attempt (×/backdrop/Esc during a run) shakes the card — refusal, not a dead click. */
.academy-modal-card.is-deny{animation:course-deny 0.3s ease;}
@keyframes course-deny{25%{transform:translateX(-7px);}75%{transform:translateX(7px);}}
@media(prefers-reduced-motion:reduce){#academy-course-modal.is-running .course-bar-fill::after{animation:none;display:none;}.academy-modal-card.is-deny{animation:none;}.course-status-spin{animation:none;}}
.course-prog-num{font-size:0.82rem;font-weight:600;color:var(--text-muted);white-space:nowrap;}
.course-ladder{margin:6px 0 14px;}
.course-chapters{display:flex;flex-direction:column;gap:12px;}
.course-ch{border:1px solid var(--card-border);border-radius:12px;padding:10px 12px;background:var(--bg-color);}
.course-ch-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px;}
.course-ch-num{
    display:inline-flex;align-items:center;justify-content:center;
    width:22px;height:22px;border-radius:50%;flex:0 0 auto;
    background:var(--primary);color:#fff;font-size:0.75rem;font-weight:700;
}
.course-ch-name{font-weight:700;color:var(--text-color);}
.course-ch-goalr{color:var(--text-muted);font-size:0.85rem;}
.course-ch-title{flex:1;min-width:140px;font-weight:700;}
.course-ch-goal{flex:2;min-width:160px;}
.course-ch-cp{color:var(--accent);margin-left:auto;}
.course-ls-list{display:flex;flex-direction:column;gap:7px;}
.course-ls{
    display:flex;gap:8px;align-items:flex-start;padding:7px 8px;
    border-radius:9px;background:var(--card-bg);border:1px solid var(--card-border);
}
.course-ls-locked{align-items:center;}
.course-ls-title{flex:1;font-weight:600;color:var(--text-color);}
.course-ls-meta{font-size:0.76rem;color:var(--text-muted);}
.course-ls-fields{flex:1;display:flex;flex-direction:column;gap:6px;}
.course-ls-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap;}
.course-in{
    font:inherit;font-weight:400;padding:6px 8px;
    border:1px solid var(--card-border);border-radius:8px;background:var(--card-bg);color:var(--text-color);
}
.course-in-title{font-weight:700;}
.course-ls-fields>.course-in{width:100%;}
.course-in-gr{flex:1;min-width:120px;}
.course-pro{display:inline-flex;align-items:center;gap:4px;font-size:0.8rem;color:var(--text-muted);}
.course-badge{
    flex:0 0 auto;width:22px;height:22px;display:inline-flex;
    align-items:center;justify-content:center;border-radius:50%;font-size:0.72rem;margin-top:2px;
}
.course-badge.is-done{background:var(--success);color:#fff;}
.course-badge.is-fail{background:var(--danger);color:#fff;}
.course-badge.is-pending{background:var(--card-border);color:var(--text-muted);}
.course-ls-rm{background:none;border:0;color:var(--text-muted);cursor:pointer;padding:4px;flex:0 0 auto;}
.course-ls-rm:hover{color:var(--danger);}
.course-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:14px;}
.course-done-msg{color:var(--success);font-weight:600;}
.course-add-ls{margin-top:8px;}
.btn-xs{padding:4px 10px;font-size:0.78rem;}
.course-asm-report{margin-top:12px;}
.course-asm-list{
    list-style:none;margin:0;padding:0;
    display:flex;flex-direction:column;gap:5px;font-size:0.86rem;color:var(--text-color);
}
.course-asm-list li{display:flex;align-items:baseline;gap:7px;}
.course-ok{color:var(--success);}
.course-warn{color:var(--accent);}
.course-err{color:var(--danger);}
.course-muted-i{color:var(--text-muted);}

/* 52 — coherence-lint findings modal (fixed header + scrolling accordion). Compound selector so the
   panel's flex/overflow/padding beat the base .academy-modal-card rule defined later in the file. */
.academy-modal-card.academy-lint-panel{
    max-width:600px;display:flex;flex-direction:column;
    max-height:82vh;overflow:hidden;padding:0;
}
.academy-lint-head{flex:0 0 auto;position:relative;padding:16px 20px 12px;border-bottom:1px solid var(--card-border);}
.academy-lint-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;padding:12px 20px 18px;}
.academy-lint-title{margin:0 30px 0 0;font-size:1rem;font-weight:800;color:var(--text-color);display:flex;align-items:center;gap:7px;min-width:0;text-transform:none;}
.academy-lint-title>i{color:var(--primary);flex:0 0 auto;}
.academy-lint-title-name{font-weight:600;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.academy-lint-meta{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:0.74rem;color:var(--text-muted);margin:9px 0 0;}
.academy-lint-count{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:0.8rem;font-weight:600;color:var(--text-muted);margin:8px 0 0;}
.academy-lint-loading{color:var(--text-muted);display:flex;align-items:center;gap:10px;font-size:0.9rem;padding:8px 0;}
.academy-lint-clean{color:var(--success);font-weight:600;display:flex;align-items:center;gap:8px;}
.academy-lint-err{color:var(--danger);display:flex;align-items:center;gap:8px;margin:0 0 8px;}
.academy-lint-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px;}
.academy-lint-item{border:1px solid var(--card-border);border-radius:10px;overflow:hidden;}
.academy-lint-item.is-broken{border-left:4px solid var(--danger);}
.academy-lint-item.is-misleading{border-left:4px solid var(--accent);}
.academy-lint-item.is-minor{border-left:4px solid var(--text-muted);}
.academy-lint-rowhead{display:flex;align-items:center;gap:9px;width:100%;padding:9px 11px;border:none;background:none;cursor:pointer;text-align:left;font:inherit;color:inherit;}
.academy-lint-rowhead:hover{background:var(--bg-color);}
.academy-lint-sev{font-size:0.6rem;font-weight:700;text-transform:uppercase;letter-spacing:0.03em;padding:2px 7px;border-radius:20px;flex:0 0 auto;background:var(--bg-color);color:var(--text-muted);}
.academy-lint-item.is-broken .academy-lint-sev{background:#fde2e2;color:#c0392b;}
.academy-lint-item.is-misleading .academy-lint-sev{background:#fdeede;color:#c9781a;}
.academy-lint-cat{flex:1;min-width:0;font-size:0.78rem;font-weight:700;color:var(--text-color);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.academy-lint-cat em{font-style:normal;font-weight:600;color:var(--text-muted);font-size:0.68rem;}
.academy-lint-chev{flex:0 0 auto;color:var(--text-muted);font-size:0.8rem;transition:transform 0.2s ease;}
.academy-lint-item.is-open .academy-lint-chev{transform:rotate(180deg);}
.academy-lint-drawer{display:none;flex-direction:column;gap:7px;padding:2px 11px 11px;}
.academy-lint-item.is-open .academy-lint-drawer{display:flex;}
.academy-lint-detail{font-size:0.85rem;color:var(--text-color);line-height:1.45;}
.academy-lint-tags{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.academy-lint-tags:empty{display:none;}
.academy-lint-src{font-size:0.72em;color:var(--text-muted);opacity:0.75;margin-left:2px;}
.academy-lint-conf{display:inline-flex;align-items:center;color:var(--text-muted);font-size:0.92rem;cursor:help;}
.academy-lint-verd{font-size:0.66rem;font-weight:700;color:var(--text-muted);}
.academy-lint-verd.is-confirmed{color:var(--danger);}
.academy-lint-fix{align-self:flex-start;}
.academy-lint-fixall{margin:0;}
.academy-lint-fixbox:empty{display:none;}
.academy-lint-fixprev{margin-top:8px;padding:9px 11px;border:1px solid var(--card-border);border-radius:9px;background:var(--bg-color);}
.academy-fix-label{font-size:0.72rem;font-weight:700;color:var(--primary);margin:0 0 6px;}
.academy-fix-fields{
    list-style:none;margin:0 0 8px;padding:0;
    display:flex;flex-direction:column;gap:3px;font-size:0.82rem;color:var(--text-color);
}
.academy-fix-k{font-weight:700;color:var(--text-muted);}
.academy-fix-acts{display:flex;gap:8px;}
.academy-lint-item.is-fixed{opacity:0.55;}
.academy-lint-item.is-fixed .academy-lint-detail{text-decoration:line-through;}
.academy-lint-item.is-fixed .academy-lint-cat::after{content:' · fixed';color:var(--success);font-weight:700;font-size:0.66rem;}
.academy-lint-item.is-fixing{opacity:0.7;}
.academy-lint-item.is-failed .academy-lint-cat::after{content:' · fix failed';color:var(--danger);font-weight:700;font-size:0.66rem;}

/* Manage quality: whole-language control centre — fixed head (controls + progress) · scrolling findings
   · fixed footer (scope + Fix-all). Findings reuse the .academy-lint-item accordion above. */
.academy-modal-card.academy-manage-card{
    max-width:640px;display:flex;flex-direction:column;
    max-height:86vh;overflow:hidden;padding:0;
}
/* 71.7b: the tab strip now draws the separating hairline itself, so the head must not draw a second
   one, and its tabs sit flush at the head's bottom edge (no 18px trailing gap inside the head). */
/* The modal has no tinted wrapper - its head keeps the separating border and the pill tabs sit above it. */
.academy-manage-head{flex:0 0 auto;position:relative;padding:18px 22px 12px;border-bottom:1px solid var(--card-border);}
#academy-manage-modal .nb-tabs{margin:12px 0 0;}
/* 68.2/71.5/71.7: THE shared tab strip (Quality-review modal + Academy settings). Generic on
   purpose - a third tabbed container reuses .nb-tabs/.nb-tab, never copies them.
   71.7c (owner mockup) — the tabs live INSIDE the settings container, along its top edge - the
   active tab is a white pane-coloured pill and the tinted box wraps strip AND content. The chrome
   MOVES here from .set-groups rather than being added on top of it, so there is still exactly ONE
   container (the box-in-a-box the owner rejected was a second one). */
.nb-tabs{display:flex;gap:4px;flex-wrap:wrap;}
.nb-tab{border:none;background:transparent;color:var(--text-muted);font-family:var(--font-display);font-weight:700;font-size:0.86rem;padding:9px 16px;border-radius:10px;cursor:pointer;display:flex;align-items:center;gap:8px;}
.nb-tab i{font-size:0.92em;opacity:0.85;}
.nb-tab:hover{color:var(--text-color);background:rgba(255,255,255,0.55);}
.nb-tab.active{color:var(--primary);background:var(--card-bg);box-shadow:0 1px 3px rgba(42,39,64,0.06);}
/* The wrapper IS the settings container: tinted, rounded, holding the strip and the panes. */
.nb-tabwrap{background:var(--bg-color);border:1px solid var(--card-border);border-radius:12px;padding:8px;margin-top:14px;}
.nb-tabwrap .nb-tabs{margin:0 0 8px;}
/* .set-groups gives up its own chrome inside a tabbed wrapper - one box, not two. */
.nb-tabwrap .nb-tabpane>.set-groups{background:none;border:none;border-radius:0;padding:0;}
.academy-manage-pane{flex:0 0 auto;padding:14px 22px 16px;}
.academy-manage-pane.academy-manage-scroll{flex:1 1 auto;}
#academy-manage-tab-revision .academy-manage-fix{border-top:none;padding:0;}
/* Summary stat cards — quiet dashboard tiles. */
.amq-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px;}
.amq-card{display:flex;flex-direction:column;gap:2px;padding:12px 14px;border:1px solid var(--card-border);border-radius:12px;background:var(--bg-color);}
.amq-val{font-family:var(--font-display);font-weight:800;font-size:1.25rem;color:var(--text-color);font-variant-numeric:tabular-nums;}
.amq-lab{font-size:0.74rem;color:var(--text-muted);}
.amq-card.amq-bad .amq-val{color:var(--danger);}
.amq-card.amq-warn .amq-val{color:#b58a2a;}
.amq-card.amq-good .amq-val{color:var(--success);}
.amq-card.amq-accent .amq-val{color:var(--primary);}
.academy-manage-title{margin:0 30px 4px 0;font-size:1.1rem;font-weight:800;color:var(--text-color);display:flex;align-items:center;gap:8px;}
.academy-manage-title>i{color:var(--primary);}
.academy-manage-sub{margin:0 0 12px;font-size:0.8rem;color:var(--text-muted);line-height:1.45;}
.academy-manage-ctl{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.academy-manage-packet{margin-top:14px;padding-top:13px;border-top:1px solid var(--card-border);display:flex;flex-direction:column;gap:10px;}
.academy-manage-packet-copy{display:flex;flex-direction:column;gap:2px;font-size:0.76rem;color:var(--text-muted);line-height:1.4;}
.academy-manage-packet-copy strong{font-size:0.8rem;color:var(--text-color);}
.academy-manage-stat{font-size:0.76rem;color:var(--text-muted);font-weight:600;}
.academy-manage-bar{height:6px;background:var(--card-border);border-radius:999px;overflow:hidden;margin:10px 0 0;}
.academy-manage-bar span{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--primary),var(--secondary));border-radius:999px;transition:width 0.3s ease;}
.academy-manage-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;padding:14px 22px 16px;display:flex;flex-direction:column;gap:14px;}
.academy-manage-empty{font-size:0.85rem;color:var(--text-muted);line-height:1.5;margin:6px 0;}
.academy-manage-clean{color:var(--success);font-weight:600;display:flex;align-items:center;gap:8px;font-size:0.9rem;margin:6px 0;}
.academy-manage-group{display:flex;flex-direction:column;gap:7px;}
.academy-manage-ghead{display:flex;align-items:center;gap:9px;}
.academy-manage-gtitle{font-size:0.85rem;font-weight:800;color:var(--text-color);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.academy-manage-gcount{font-size:0.68rem;font-weight:700;color:var(--text-muted);flex:0 0 auto;margin-left:auto;}
.academy-manage-gb{font-size:0.6rem;font-weight:800;text-transform:uppercase;letter-spacing:0.03em;color:#c0392b;background:#fde2e2;border-radius:20px;padding:1px 7px;flex:0 0 auto;}
.academy-manage-gstale{font-size:0.6rem;font-weight:800;text-transform:uppercase;letter-spacing:0.03em;color:#8a6d1f;background:#fdf3d6;border-radius:20px;padding:1px 7px;flex:0 0 auto;display:inline-flex;align-items:center;gap:4px;}
.academy-manage-group.is-stale .academy-lint-list{opacity:0.55;}
.academy-manage-fix{flex:0 0 auto;border-top:1px solid var(--card-border);padding:12px 22px 16px;}
.academy-manage-fixrow{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.academy-manage-scopelbl{display:flex;align-items:center;gap:7px;font-size:0.76rem;font-weight:700;color:var(--text-muted);}
.academy-manage-scopelbl select{font:inherit;font-size:0.8rem;padding:5px 8px;border-radius:8px;border:1px solid var(--card-border);background:var(--card-bg);color:var(--text-color);}
@media(prefers-reduced-motion:reduce){.academy-chap-body{transition:none;}}
.academy-chap-empty{margin:6px 0;font-size:0.85rem;color:var(--text-muted);font-style:italic;text-align:center;padding:12px 0;border:1px dashed var(--card-border);border-radius:10px;}
.academy-row-num{font-size:0.72rem;font-weight:800;color:var(--primary);background:rgba(111,95,228,0.1);border-radius:8px;min-width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;}
.academy-exam-wrap{margin-top:12px;}
.academy-row.is-exam{border-color:rgba(111,95,228,0.5);background:rgba(111,95,228,0.05);}
/* Academy popups (49): the +Lesson generator + the checkpoint/exam assembly modals. */
.academy-modal-overlay{position:fixed;inset:0;background:rgba(17,24,39,0.55);backdrop-filter:blur(3px);z-index:2000;display:flex;align-items:center;justify-content:center;padding:20px;}
.academy-modal-overlay.hidden{display:none;}
.academy-modal-card {
    position:relative;
    background:var(--card-bg);
    border:1px solid var(--card-border);
    border-radius:20px;
    width:100%;
    max-width:520px;
    max-height:88vh;
    overflow-y:auto;
    padding:24px 26px;
    box-shadow:0 24px 50px -12px rgba(17,24,39,0.4);
}
.academy-modal-title{margin:0 34px 4px 0;font-size:1.2rem;color:var(--text-color);display:flex;align-items:center;gap:9px;}
.academy-modal-title i{color:var(--primary);}
.academy-modal-sub{margin:0 0 16px;font-size:0.85rem;color:var(--text-muted);}
.academy-modal-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:14px;}
.academy-modal-spacer{flex:1;}
@media(max-width:640px){
    .mie-stage{flex-wrap:wrap;}
    .mie-nav-btn{order:2;}
    .mie-stage-main{order:1;flex-basis:100%;}
}

/* Voice-per-language settings (collapsible panels) */
.voices-list{display:flex;flex-direction:column;gap:10px;}
.voice-lang-panel{border:1px solid var(--card-border);border-radius:12px;background:var(--bg-color);overflow:hidden;}
.voice-lang-header {
    width:100%;
    display:flex;
    align-items:center;
    gap:12px;
    padding:14px 16px;
    background:none;
    border:none;
    cursor:pointer;
    text-align:left;
    font:inherit;
}
.voice-lang{display:flex;align-items:center;gap:10px;font-weight:700;}
.voice-lang-summary{margin-left:auto;color:var(--text-muted);font-weight:600;font-size:0.9rem;}
.voice-lang-caret{color:var(--text-muted);transition:transform 0.2s;}
.voice-lang-caret.open{transform:rotate(180deg);}
.voice-lang-body{display:flex;flex-direction:column;gap:8px;padding:0 16px 16px;}
.voice-field-label{font-weight:700;font-size:0.8rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.04em;margin-top:6px;}
.voice-field-row{display:flex;gap:10px;align-items:center;}
.voice-select{width:100%;min-width:0;}
.voice-preview-input{flex:1;min-width:0;}
.voice-style{width:100%;resize:vertical;min-height:48px;font-family:inherit;font-size:0.9rem;}
.voice-preview-btn {
    flex-shrink:0;
    display:inline-flex;
    align-items:center;
    gap:7px;
    padding:10px 18px;
    font-size:0.85rem;
    font-weight:800;
    white-space:nowrap;
    border:none;
    border-radius:10px;
    background:var(--primary);
    color:#fff;
    cursor:pointer;
    box-shadow:0 2px 6px var(--primary-glow);
    transition:all 0.15s;
}
.voice-preview-btn:hover{background:var(--primary-hover);transform:translateY(-1px);}
.voice-preview-btn:disabled{opacity:0.6;cursor:not-allowed;box-shadow:none;}
.voice-lang-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px;}
.voice-sync-btn{display:inline-flex;align-items:center;gap:7px;padding:7px 14px;font-size:0.82rem;font-weight:700;border:1px solid var(--primary);border-radius:9px;background:none;color:var(--primary);cursor:pointer;transition:all 0.15s;}
.voice-sync-btn:hover{background:var(--primary);color:#fff;}
.voice-sync-btn:disabled{opacity:0.6;cursor:not-allowed;}
.voice-delete-btn{display:inline-flex;align-items:center;gap:7px;padding:7px 14px;font-size:0.82rem;font-weight:700;border:1px solid var(--danger);border-radius:9px;background:none;color:var(--danger);cursor:pointer;transition:all 0.15s;}
.voice-delete-btn:hover{background:var(--danger);color:#fff;}
.voice-delete-btn:disabled{opacity:0.6;cursor:not-allowed;}
.voice-sync-block,.img-sync-block{margin-top:28px;padding-top:22px;border-top:1px solid var(--card-border);}

.users-table-wrapper{width:100%;overflow:visible;margin-top:20px;}
.theme-table{width:100%;border-collapse:collapse;text-align:left;font-size:0.95rem;}
.theme-table th,.theme-table td{padding:14px 16px;border-bottom:1px solid var(--card-border);}
.theme-table th{font-weight:800;color:var(--text-muted);text-transform:uppercase;font-size:0.8rem;letter-spacing:1px;}
.theme-table tbody tr:hover{background:rgba(111,95,228,0.02);}
.table-loading-text{text-align:center;padding:30px!important;color:var(--text-muted);font-weight:700;}
.badge {
    padding:6px 12px;
    border-radius:20px;
    font-size:0.8rem;
    font-weight:800;
    display:inline-flex;
    align-items:center;
    gap:6px;
}
.badge-admin{background:rgba(239,68,68,0.1);color:#ef4444;border:1.5px solid rgba(239,68,68,0.25);}
.badge-user{background:rgba(111,95,228,0.1);color:var(--primary);border:1.5px solid rgba(111,95,228,0.25);}
.badge-active{background:rgba(16,185,129,0.1);color:#10b981;border:1.5px solid rgba(16,185,129,0.25);}
.badge-warning{background:rgba(244,162,60,0.1);color:#F4A23C;border:1.5px solid rgba(244,162,60,0.25);}
.badge-moderator{background:rgba(20,184,166,0.1);color:#0d9488;border:1.5px solid rgba(20,184,166,0.28);}
.badge-pro{background:rgba(234,179,8,0.12);color:#b8860b;border:1.5px solid rgba(234,179,8,0.35);}
.badge-manual{background:rgba(59,130,246,0.09);color:#356dc4;border:1px solid rgba(59,130,246,0.22);}
.badge-test{background:rgba(168,85,247,0.1);color:#7e3ec4;border:1px solid rgba(168,85,247,0.22);}
.badge-signup{background:rgba(16,185,129,0.09);color:#128568;border:1px solid rgba(16,185,129,0.2);}
.user-pro-crown{color:#eab308;margin:0 6px 0 2px;font-size:0.9em;}
.users-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px;}
.users-add-btn{margin-left:auto;}
/* 71.7: the SEARCH field absorbs the leftover width and shrinks first, so a trailing icon button
   (Refresh) keeps its place on the row instead of being pushed onto a second line. */
.users-toolbar .users-tool-search{flex:1 1 180px;min-width:150px;}
.users-toolbar .users-tool-search input[type="search"]{width:100%;min-width:0;}
.users-tool{display:inline-flex;align-items:center;gap:7px;font-size:0.82rem;color:var(--text-muted);}
.users-tool select{padding:7px 10px;border:1px solid var(--card-border);border-radius:8px;background:var(--bg-color);color:var(--text-color);font-size:0.85rem;font-weight:700;cursor:pointer;}
.users-tool input[type="search"]{padding:7px 10px;border:1px solid var(--card-border);border-radius:8px;background:var(--bg-color);color:var(--text-color);font-size:0.85rem;min-width:200px;}
.users-tool i{color:var(--primary);}
.users-tool-sep{width:1px;height:22px;background:var(--card-border);margin:0 2px;}
.users-dir-btn{width:34px;height:34px;border:1px solid var(--card-border);border-radius:8px;background:var(--bg-color);color:var(--primary);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all 0.15s;}
.users-dir-btn:hover{background:rgba(111,95,228,0.12);border-color:var(--primary);}
.user-cell-meta{display:flex;flex-direction:column;gap:2px;}
.user-cell-title{font-weight:800;color:var(--text-color);}
.user-id-badge {
    font-size:0.75rem;
    color:var(--text-muted);
    background:rgba(255,255,255,0.05);
    padding:2px 6px;
    border-radius:4px;
    margin-left:6px;
    font-weight:700;
}
.user-cell-sub{font-size:0.8rem;color:var(--text-muted);margin-top:2px;}
.user-cell-badges{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:4px;}
.user-cell-badges .badge{padding:3px 7px;font-size:0.65rem;}
.user-stats-cell{display:flex;flex-direction:column;gap:4px;font-size:0.85rem;font-weight:700;}
.text-gold{color:#F4A23C;}
.text-orange{color:#f97316;}
.badge-locked{background:rgba(239,68,68,0.1);color:#ef4444;border:1.5px solid rgba(239,68,68,0.25);}

.switch-container {
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding:14px 16px;
    background:rgba(255,255,255,0.02);
    border:1px solid var(--card-border);
    border-radius:10px;
    margin-bottom:12px;
}
.switch-label-group{display:flex;flex-direction:column;gap:4px;margin-right:16px;}
.switch-title{font-weight:700;font-size:0.95rem;color:var(--text-color);}
.switch-desc{font-size:0.8rem;color:var(--text-muted);}
.admin-inline-input{flex-shrink:0;width:120px;padding:8px 10px;font-family:ui-monospace,monospace;font-size:0.9rem;text-align:center;color:var(--text-color);background:var(--card-bg);border:1px solid var(--card-border);border-radius:8px;}
.admin-inline-input:read-only{opacity:0.6;cursor:not-allowed;}
.admin-inline-input:focus{outline:none;border-color:var(--primary);}
.switch{position:relative;display:inline-block;width:48px;height:24px;}
.switch input{opacity:0;width:0;height:0;}
.slider {
    position:absolute;
    cursor:pointer;
    top:0;
    left:0;
    right:0;
    bottom:0;
    background-color:rgba(255,255,255,0.1);
    transition:.3s;
    border-radius:24px;
    border:1px solid var(--card-border);
}
.slider:before {
    position:absolute;
    content:"";
    height:16px;
    width:16px;
    left:3px;
    bottom:3px;
    background-color:#94a3b8;
    transition:.3s;
    border-radius:50%;
}
input:checked + .slider{background-color:rgba(111,95,228,0.2);border-color:var(--primary);}
input:checked + .slider:before{transform:translateX(24px);background-color:var(--primary);box-shadow:0 0 8px var(--primary);}

.user-action-dropdown-container{position:relative;display:inline-block;}
.user-menu-trigger-btn {
    background:var(--bg-color);
    border:1px solid var(--card-border);
    color:var(--text-muted);
    width:32px;
    height:32px;
    padding:0;
    border-radius:50%;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    cursor:pointer;
    transition:all 0.2s;
}
.user-menu-trigger-btn:hover{background:rgba(111,95,228,0.12);border-color:var(--primary);color:var(--primary);}
.user-actions-dropdown {
    position:absolute;
    right:0;
    top:calc(100% + 8px);
    background:var(--card-bg);
    border:1px solid var(--card-border);
    border-radius:16px;
    box-shadow:0 18px 40px -12px rgba(17,24,39,0.3),0 6px 14px -8px rgba(17,24,39,0.14);
    z-index:1000;
    width:214px;
    display:flex;
    flex-direction:column;
    padding:8px;
    gap:1px;
    animation:fadeSlideUp 0.16s ease forwards;
}
.user-actions-dropdown.hidden{display:none;}
.user-actions-dropdown.drop-up{top:auto;bottom:calc(100% + 8px);}/* flip above the trigger on last rows */
.user-actions-dropdown .dropdown-divider{height:1px;background:var(--card-border);margin:6px 6px;}
.user-actions-dropdown .dropdown-item {
    width:100%;
    text-align:left;
    background:transparent;
    border:none;
    color:var(--text-color);
    padding:9px 11px;
    font-size:0.88rem;
    font-weight:700;
    display:flex;
    align-items:center;
    gap:11px;
    cursor:pointer;
    border-radius:10px;
    white-space:nowrap;
    transition:background 0.15s,color 0.15s;
}
.user-actions-dropdown .dropdown-item i{width:16px;text-align:center;font-size:0.95rem;color:var(--text-muted);transition:color 0.15s;}
.user-actions-dropdown .dropdown-item:hover{background:rgba(111,95,228,0.1);color:var(--primary);}
.user-actions-dropdown .dropdown-item:hover i{color:var(--primary);}
.user-actions-dropdown .dropdown-item.danger{color:var(--danger);}
.user-actions-dropdown .dropdown-item.danger i{color:var(--danger);}
.user-actions-dropdown .dropdown-item.danger:hover{background:rgba(239,68,68,0.12);}
/* No pointer-events:none — it would suppress the not-allowed cursor AND the title tooltip. A native
   disabled <button> already blocks clicks, so hover feedback is safe to keep. */
.user-actions-dropdown .dropdown-item:disabled{opacity:0.4;cursor:not-allowed;color:var(--text-muted);}
.user-actions-dropdown .dropdown-item:disabled:hover{background:transparent;color:var(--text-muted);}
.user-actions-dropdown .dropdown-item:disabled i{color:var(--text-muted);}

/* User-details modal (admin) */
.user-modal-overlay{position:fixed;inset:0;background:rgba(17,24,39,0.55);backdrop-filter:blur(3px);z-index:2000;display:flex;align-items:center;justify-content:center;padding:20px;}
.user-modal-overlay.hidden{display:none;}
.user-modal-card {
    position:relative;
    background:var(--card-bg);
    border:1px solid var(--card-border);
    border-radius:20px;
    width:100%;
    max-width:460px;
    max-height:85vh;
    overflow-y:auto;
    padding:26px;
    box-shadow:0 24px 50px -12px rgba(17,24,39,0.4);
    scrollbar-width:thin;
    scrollbar-color:var(--card-border) transparent;
}
.user-modal-card::-webkit-scrollbar{width:8px;}
.user-modal-card::-webkit-scrollbar-track{background:transparent;}
.user-modal-card::-webkit-scrollbar-thumb{background:var(--card-border);border-radius:8px;border:2px solid var(--card-bg);}
.user-modal-card::-webkit-scrollbar-thumb:hover{background:var(--text-muted);}
.user-modal-close{position:absolute;top:14px;right:14px;width:34px;height:34px;border-radius:50%;border:1px solid var(--card-border);background:var(--bg-color);color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all 0.2s;}
.user-modal-close:hover{background:var(--danger);color:#fff;border-color:var(--danger);}
.user-create-card{max-width:650px;}
.user-password-card,.user-credential-card{max-width:520px;}
.user-modal-kicker{display:flex;align-items:center;gap:7px;margin:0 44px 7px 0;color:var(--primary);font-size:0.72rem;font-weight:850;letter-spacing:0.11em;text-transform:uppercase;}
.user-modal-title{margin:0 44px 7px 0;font-family:var(--font-display);font-size:1.45rem;color:var(--text-color);}
.user-modal-intro{margin:0 30px 20px 0;color:var(--text-muted);font-size:0.9rem;line-height:1.55;}
.user-create-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px;}
.user-optional{color:var(--text-muted);font-size:0.72rem;font-weight:700;}
.user-test-choice {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:18px;
    margin:2px 0 20px;
    padding:13px 14px;
    border:1px solid var(--card-border);
    border-radius:12px;
    background:rgba(111,95,228,0.045);
}
.user-test-choice>div{display:flex;flex-direction:column;gap:3px;}
.user-test-choice strong{font-size:0.9rem;}
.user-test-choice span{color:var(--text-muted);font-size:0.76rem;line-height:1.4;}
.user-password-mode{display:flex;gap:7px;padding:5px;border:1px solid var(--card-border);border-radius:12px;background:rgba(111,95,228,0.035);}
.user-mode-btn{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 11px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--text-muted);font:700 0.78rem var(--font-body);cursor:pointer;transition:background 0.15s,color 0.15s,border-color 0.15s;}
.user-mode-btn.active{background:var(--card-bg);border-color:rgba(111,95,228,0.18);color:var(--primary);box-shadow:0 5px 14px -10px rgba(54,41,132,0.6);}
.user-custom-password{margin:12px 0 0;}
.user-field-hint{margin:6px 0 0;color:var(--text-muted);font-size:0.72rem;}
.user-form-error{margin:12px 0 0;padding:10px 12px;border:1px solid rgba(239,68,68,0.2);border-radius:9px;background:rgba(239,68,68,0.07);color:var(--danger);font-size:0.82rem;font-weight:700;}
.user-modal-actions{display:flex;align-items:center;justify-content:flex-end;gap:9px;margin-top:20px;}
.user-credential-warning{display:flex;align-items:flex-start;gap:9px;margin-bottom:16px;padding:11px 12px;border:1px solid rgba(244,162,60,0.24);border-radius:10px;background:rgba(244,162,60,0.08);color:#966018;font-size:0.78rem;line-height:1.45;}
.user-credential-warning i{margin-top:2px;color:var(--secondary);}
.user-credential-row{margin-top:13px;}
.user-credential-row>label{display:block;margin-bottom:6px;color:var(--text-muted);font-size:0.72rem;font-weight:800;text-transform:uppercase;letter-spacing:0.06em;}
.user-credential-row>div{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px;}
.user-credential-row input{min-width:0;padding:10px 11px;border:1px solid var(--card-border);border-radius:8px;background:var(--bg-color);color:var(--text-color);font:700 0.86rem ui-monospace,monospace;}
.udt-head{display:flex;align-items:center;gap:16px;margin-bottom:4px;}
.udt-avatar{width:60px;height:60px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:1.8rem;color:var(--primary);background:var(--bg-color);border:1px solid var(--card-border);}
.udt-name{font-family:var(--font-display);margin:0 0 6px;font-size:1.3rem;}
.udt-badges{display:flex;gap:8px;flex-wrap:wrap;}
.udt-section{margin-top:20px;}
.udt-section-title{display:flex;align-items:center;gap:8px;font-size:0.78rem;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);font-weight:800;margin:0 0 8px;padding-bottom:8px;border-bottom:1px solid var(--card-border);}
.udt-section-title i{color:var(--primary);}
.udt-row{display:flex;justify-content:space-between;gap:14px;padding:6px 0;font-size:0.92rem;}
.udt-label{color:var(--text-muted);font-weight:700;}
.udt-value{font-weight:700;text-align:right;word-break:break-word;}
.udt-yes{color:#10b981;font-weight:800;}
.udt-no{color:var(--text-muted);font-weight:700;}
/* PR2/PR4: role + Pro management inside the details modal */
.udt-manage .udt-value select.udt-role-select{width:auto;min-width:150px;padding:8px 34px 8px 12px;font-size:0.9rem;}
.udt-pro-controls{margin-top:14px;display:flex;flex-direction:column;gap:9px;}
.udt-pro-line{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.udt-pro-lbl{font-size:0.76rem;font-weight:800;text-transform:uppercase;letter-spacing:0.4px;color:var(--text-muted);width:72px;flex:none;}
.udt-pro-inline{display:inline-flex;align-items:center;gap:6px;}
.udt-pro-amount{width:56px;padding:7px 8px;border:1px solid var(--card-border);border-radius:7px;background:var(--background);color:var(--text);font-size:0.85rem;text-align:center;}
.udt-pro-date{padding:7px 9px;border:1px solid var(--card-border);border-radius:7px;background:var(--background);color:var(--text);font-size:0.85rem;}
.udt-pro-btn{padding:7px 12px;border:1px solid var(--card-border);border-radius:7px;background:var(--bg-color);color:var(--text-color);font-size:0.82rem;font-weight:700;cursor:pointer;white-space:nowrap;display:inline-flex;align-items:center;gap:5px;transition:all 0.15s;}
.udt-pro-btn:hover{border-color:var(--primary);color:var(--primary);}
.udt-pro-btn.is-primary{background:var(--primary);border-color:var(--primary);color:#fff;}
.udt-pro-btn.is-primary:hover{filter:brightness(1.06);color:#fff;}
.udt-pro-btn.is-danger{color:var(--danger);border-color:rgba(239,68,68,0.3);}
.udt-pro-btn.is-danger:hover{background:rgba(239,68,68,0.1);border-color:var(--danger);color:var(--danger);}
.udt-pro-note{margin:4px 0 0;font-size:0.77rem;color:var(--text-muted);line-height:1.5;display:flex;gap:7px;}
.udt-pro-note i{color:var(--primary);margin-top:2px;flex:none;}
.udt-account-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:12px;}

.custom-select-wrapper{position:relative;width:100%;}
.custom-select-trigger {
    background:var(--card-bg);
    border:2px solid var(--card-border);
    border-radius:12px;
    padding:12px 18px;
    color:var(--text-color);
    font-weight:700;
    display:flex;
    align-items:center;
    justify-content:space-between;
    cursor:pointer;
    transition:all 0.25s ease;
    box-shadow:0 4px 10px rgba(0,0,0,0.02);
}
.custom-select-trigger:hover,.custom-select-wrapper.open .custom-select-trigger{border-color:var(--primary);box-shadow:0 0 10px var(--primary-glow);}
.custom-select-trigger i{transition:transform 0.25s ease;}
.custom-select-wrapper.open .custom-select-trigger i{transform:rotate(180deg);}
.custom-select-options {
    position:absolute;
    top:calc(100% + 8px);
    left:0;
    right:0;
    background:var(--card-bg);
    border:2px solid var(--card-border);
    border-radius:12px;
    box-shadow:0 10px 25px rgba(0,0,0,0.08);
    z-index:999;
    opacity:0;
    visibility:hidden;
    transform:translateY(-10px) scale(0.95);
    transition:opacity 0.2s cubic-bezier(0.16,1,0.3,1),transform 0.2s cubic-bezier(0.16,1,0.3,1),visibility 0.2s;
    max-height:250px;
    overflow-y:auto;
}
.custom-select-wrapper.open .custom-select-options{opacity:1;visibility:visible;transform:translateY(0) scale(1);}
.custom-select-option{padding:10px 16px;cursor:pointer;transition:background 0.2s,color 0.2s;color:var(--text-color);font-weight:600;}
.custom-select-option:hover{background:rgba(111,95,228,0.08);color:var(--primary);}
.custom-select-option.selected{background:rgba(111,95,228,0.15);color:var(--primary);font-weight:800;}

body.hyper-theme .custom-select-trigger{background:rgba(15,23,42,0.8);border-color:#1e293b;color:#f8fafc;}
body.hyper-theme .custom-select-options{background:rgba(15,23,42,0.95);backdrop-filter:blur(12px);border-color:#1e293b;box-shadow:0 10px 30px rgba(0,0,0,0.5);}
body.hyper-theme .custom-select-option:hover{background:rgba(255,255,255,0.05);color:#fff;}
body.hyper-theme .custom-select-option.selected{background:rgba(111,95,228,0.25);color:#fff;}

.header-particle{position:absolute;border-radius:50%;background:rgba(111,95,228,0.4);pointer-events:none;animation:floatParticle 6s infinite linear;}
@keyframes floatParticle {
    0% { transform:translateY(20px) scale(0);opacity:0;}
    50% { opacity:0.8;}
    100% { transform:translateY(-40px) scale(1);opacity:0;}
}

/* First-run onboarding overlay */
.onboarding-overlay{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:24px;overflow-y:auto;background:rgba(12,10,30,0.72);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);animation:onbFade 0.3s ease;}
@keyframes onbFade{from{opacity:0;}to{opacity:1;}}
.onboarding-card{background:var(--card-bg);border:1px solid var(--card-border);border-radius:24px;padding:36px 32px;max-width:560px;width:100%;text-align:center;box-shadow:0 24px 70px rgba(0,0,0,0.4);}
.onb-rocket{font-size:3rem;color:var(--primary);margin-bottom:10px;}
.onboarding-card h1{font-size:1.9rem;margin:0 0 6px;}
.onb-sub{color:var(--text-muted);margin:0 0 24px;}
.onb-step{margin-bottom:20px;text-align:left;}
.onb-step-title{font-size:0.95rem;font-weight:800;color:var(--text-color);margin:0 0 10px;display:flex;align-items:center;gap:8px;}
.onb-step-title i{color:var(--primary);}
.onb-tiles{display:flex;flex-wrap:wrap;gap:10px;}
.onb-tile{display:flex;align-items:center;gap:9px;padding:10px 16px;border-radius:14px;border:2px solid var(--card-border);background:var(--card-bg);cursor:pointer;font-weight:700;color:var(--text-color);font-size:0.98rem;transition:all 0.18s;}
.onb-tile:hover{border-color:var(--primary);transform:translateY(-2px);}
.onb-tile.selected{border-color:var(--primary);background:var(--primary-glow);color:var(--primary);box-shadow:0 0 0 3px var(--primary-glow);}
.onb-flag{font-size:1.4rem;line-height:1;}
.onb-error{color:var(--danger);font-size:0.88rem;font-weight:600;margin:4px 0 16px;}
.onb-start{margin-top:8px;width:100%;}
/* ===== Admin Dashboard (Galaxy look) — rendered by assets/js/admin-dashboard.js ===== */
.dash-body{position:relative;z-index:1;}
.dash-galaxy{display:flex;flex-direction:column;gap:16px;}
/* engagement pulse hero — headline + mini-stats on the left, a real 14-day activity chart on the right */
.dash-hero{display:flex;align-items:center;justify-content:space-between;gap:28px;flex-wrap:wrap;padding:20px 24px;border-radius:20px;border:1px solid var(--card-border);background:linear-gradient(120deg,rgba(111,95,228,0.10),rgba(244,130,92,0.08));box-shadow:0 10px 30px rgba(111,95,228,0.12);}
.dash-hero-left{display:flex;flex-direction:column;gap:14px;}
.dash-hero-num{font-family:var(--font-display);font-weight:800;font-size:3.4rem;line-height:1;background:linear-gradient(120deg,var(--primary),var(--secondary));-webkit-background-clip:text;background-clip:text;color:transparent;}
.dash-hero-lab{color:var(--text-muted);font-size:0.95rem;margin-top:4px;max-width:240px;}
.dash-hero-minis{display:flex;gap:22px;flex-wrap:wrap;}
.dash-mini{display:flex;flex-direction:column;}
.dash-mini b{font-family:var(--font-display);font-size:1.35rem;color:var(--text-color);}
.dash-mini span{font-size:0.72rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.5px;}
.dash-hero-chart{flex:1 1 420px;min-width:260px;max-width:760px;margin-left:auto;}
.dash-hero-chart-cap{font-size:0.72rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.6px;margin-bottom:8px;}
.dash-sparkline{position:relative;width:100%;height:clamp(72px,7vw,92px);}
.dash-sparkline svg{width:100%;height:100%;display:block;overflow:visible;}
.dash-spark-end {
    position:absolute;
    left:calc(98.333% - 4px);
    top:calc(var(--dash-end-y) - 4px);
    width:8px;
    height:8px;
    border-radius:50%;
    background:var(--secondary);
    box-shadow:0 0 0 3px rgba(244,130,92,0.12),0 0 12px rgba(244,130,92,0.28);
    pointer-events:none;
}
.dash-spark-empty {
    position:absolute;
    top:50%;
    left:50%;
    padding:2px 8px;
    border-radius:999px;
    background:var(--card-bg);
    color:var(--text-muted);
    font-size:0.72rem;
    transform:translate(-50%,-50%);
}
/* attention chips (shown only when non-zero) */
.dash-flags{display:flex;gap:10px;flex-wrap:wrap;}
.dash-flag{display:inline-flex;align-items:center;gap:7px;font-size:0.85rem;font-weight:600;padding:6px 12px;border-radius:999px;background:var(--card-glass);border:1px solid var(--card-border);color:var(--text-muted);}
.dash-flag.warn{color:var(--danger);border-color:rgba(239,68,68,0.3);}
.dash-flag i{opacity:0.8;}
.dash-sec{font-family:var(--font-display);font-weight:700;font-size:0.85rem;text-transform:uppercase;letter-spacing:0.8px;color:var(--text-muted);margin:2px 2px -4px;}
/* stat grid */
.dash-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;}
.dash-card{position:relative;overflow:hidden;padding:16px;border-radius:18px;border:1px solid var(--card-border);background:var(--card-glass);box-shadow:0 8px 22px rgba(111,95,228,0.08);transition:transform 0.18s ease,box-shadow 0.18s ease;}
.dash-card:hover{transform:translateY(-4px);box-shadow:0 16px 34px rgba(111,95,228,0.18);}
.dash-card::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--tc),transparent);}
.dash-card-ic{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;margin-bottom:12px;font-size:1.05rem;color:var(--tc);background:var(--tc-soft);box-shadow:0 4px 12px var(--tc-glow);}
/* fixed min-height + bottom-align so a small value (e.g. the newest-user name) keeps the label row aligned with sibling cards */
.dash-card-big{font-family:var(--font-display);font-weight:800;font-size:1.9rem;line-height:1.05;min-height:2rem;display:flex;align-items:flex-end;background:linear-gradient(120deg,var(--tc),var(--text-color));-webkit-background-clip:text;background-clip:text;color:transparent;}
.dash-card-big.sm{font-size:1.15rem;word-break:break-word;}
.dash-card-lab{font-size:0.85rem;color:var(--text-color);margin-top:5px;font-weight:600;}
.dash-card-sub{font-size:0.78rem;color:var(--text-muted);margin-top:4px;}
.dash-card.t-violet,.dash-bar.t-violet{--tc:var(--primary);--tc-soft:rgba(111,95,228,0.14);--tc-glow:rgba(111,95,228,0.24);}
.dash-card.t-coral,.dash-bar.t-coral{--tc:var(--secondary);--tc-soft:rgba(244,130,92,0.16);--tc-glow:rgba(244,130,92,0.24);}
.dash-card.t-gold,.dash-bar.t-gold{--tc:var(--accent);--tc-soft:rgba(244,162,60,0.16);--tc-glow:rgba(244,162,60,0.24);}
.dash-card.t-mint,.dash-bar.t-mint{--tc:var(--success);--tc-soft:rgba(16,185,129,0.14);--tc-glow:rgba(16,185,129,0.22);}
/* lower panels */
.dash-low{display:grid;grid-template-columns:1.25fr 1fr;gap:14px;}
.dash-panel{padding:16px 18px;border-radius:18px;border:1px solid var(--card-border);background:var(--card-glass);}
.dash-panel h3{font-family:var(--font-display);font-size:1rem;margin:0 0 14px;display:flex;align-items:center;gap:9px;}
.dash-panel h3 i{color:var(--primary);}
.dash-skeleton-shell{pointer-events:none;}
.dash-skeleton-shell .dash-hero-left{flex:0 1 310px;}
.dash-skeleton-shell .dash-hero-left>.dash-hero-minis{margin-top:2px;}
.dash-skeleton-mini{display:flex;flex-direction:column;gap:7px;width:62px;}
.dash-skeleton-mini .sk-short{width:74%;}
.dash-skeleton-mini .sk-medium{width:100%;height:9px;}
.dash-skeleton-chart .sk-chart{width:100%;height:76px;margin-top:12px;border-radius:16px;}
.dash-skeleton-section{width:92px;height:12px;margin:2px 2px -4px;}
.dash-skeleton-card{min-height:160px;}
.dash-skeleton-card .skeleton-bar{margin-bottom:10px;}
.dash-skeleton-card .sk-icon{margin-bottom:16px;}
.dash-skeleton-panel{display:flex;flex-direction:column;gap:14px;min-height:170px;}
.dash-skeleton-table{display:flex;flex-direction:column;gap:15px;}
.dash-skeleton-row{display:grid;grid-template-columns:1.2fr 1.5fr 0.7fr;gap:18px;padding-top:3px;}
.dash-skeleton-row .skeleton-bar{width:100%;}
/* coverage bars (current vs full-coverage target) */
.dash-bar{display:flex;align-items:center;gap:12px;margin:11px 0;}
.dash-bar-lab{font-size:0.85rem;color:var(--text-color);width:148px;flex:none;}
.dash-bar-track{flex:1;height:9px;border-radius:9px;background:rgba(111,95,228,0.10);overflow:hidden;}
.dash-bar-fill{display:block;height:100%;border-radius:9px;background:var(--tc);transition:width 0.4s ease;}
.dash-bar-val{font-family:var(--font-display);font-weight:700;font-size:0.85rem;color:var(--text-color);min-width:58px;text-align:right;white-space:nowrap;}
.dash-bar-val small{font-weight:600;color:var(--text-muted);}
/* languages — baseline-align the name and the meta so their text sits on one line; centre the flag */
.dash-lang{display:flex;align-items:baseline;gap:11px;padding:9px 0;border-bottom:1px dashed var(--card-border);}
.dash-lang:last-child{border-bottom:0;}
.dash-lang .fi{align-self:center;flex:none;}
.dash-lang-name{flex:1;font-weight:600;font-size:0.9rem;}
.dash-lang-meta{font-size:0.8rem;color:var(--text-muted);}
/* recent signups */
.dash-rows-scroll{overflow-x:auto;}
.dash-rows{width:100%;border-collapse:collapse;}
.dash-rows td{padding:10px 6px;font-size:0.88rem;border-bottom:1px solid var(--card-border);white-space:nowrap;}
.dash-rows tr:last-child td{border-bottom:0;}
.dash-nm{font-weight:700;}
.dash-muted{color:var(--text-muted);}
.dash-tag-cell{text-align:right;}
.dash-tag{display:inline-block;font-family:var(--font-display);font-weight:700;font-size:0.68rem;letter-spacing:0.4px;padding:3px 9px;border-radius:999px;text-transform:uppercase;}
.dash-tag.pro{background:rgba(244,162,60,0.18);color:var(--accent-hover);}
.dash-tag.free{background:rgba(122,117,150,0.14);color:var(--text-muted);}
.dash-tag.admin{background:rgba(111,95,228,0.16);color:var(--primary);margin-left:6px;}
@media(max-width:900px){
.dash-grid{grid-template-columns:repeat(2,1fr);}
.dash-low{grid-template-columns:1fr;}
.dash-hero-chart{max-width:none;margin-left:0;}
}
@media(max-width:520px){
.dash-hero-num{font-size:2.6rem;}
.dash-hero-chart{min-width:0;}
}

/* Image-batch live thumbnails (Batch sync + Batch generation) — assets/js/admin.js renderBatchThumb */
.img-filmstrip{
    display:flex;
    gap:6px;
    flex-wrap:nowrap;
    overflow-x:auto;
    margin-top:10px;
    padding-bottom:4px;
}
.img-thumb{
    position:relative;
    width:56px;
    height:38px;
    flex:none;
    border-radius:7px;
    overflow:hidden;
    border:1px solid var(--card-border);
    background:var(--bg-color);
    cursor:pointer;
    display:grid;
    place-items:center;
}
.img-thumb img{width:100%;height:100%;object-fit:cover;display:block;}
.img-thumb:hover{border-color:var(--primary);box-shadow:0 2px 8px rgba(111,95,228,0.25);}
.img-thumb.failed{cursor:default;color:var(--text-muted);font-size:14px;background:rgba(122,117,150,0.1);}
.img-thumb.img-thumb-broken img{display:none;}
.img-cat-picker{
    display:inline-flex;
    align-items:center;
    gap:6px;
    font-size:0.85rem;
    color:var(--text-muted);
    margin-right:4px;
}
.img-cat-picker select{padding:6px 8px;min-width:120px;}

/* Generator activity viewer (Admin → General → Activity log) — assets/js/admin.js activityRender */
.gen-log-filters{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:14px;}
/* Segmented pill selector for the log filters — one filled segment marks the active filter. */
.gen-log-seg{display:inline-flex;background:var(--bg-color);border:1px solid var(--card-border);border-radius:999px;padding:3px;gap:2px;flex-wrap:wrap;}
.gen-log-chip{border:none;background:transparent;color:var(--text-muted);font-weight:700;font-size:0.82rem;padding:6px 14px;border-radius:999px;cursor:pointer;white-space:nowrap;transition:color 0.15s,background 0.15s;}
.gen-log-chip:hover{color:var(--primary);}
.gen-log-chip.active{background:var(--primary);color:#fff;box-shadow:0 2px 7px -2px rgba(111,95,228,0.5);}
.gen-log-chip.active:hover{color:#fff;}
.gen-log-refresh-btn{width:34px;height:34px;border-radius:50%;border:1px solid var(--card-border);background:var(--card-bg);color:var(--text-muted);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all 0.15s;}
.gen-log-refresh-btn:hover{border-color:var(--primary);color:var(--primary);}
.gen-log-list{
    display:flex;
    flex-direction:column;
    gap:6px;
}
.gen-log-row{border:1px solid var(--card-border);border-radius:12px;overflow:hidden;background:var(--card-bg);}
.gen-log-row.warn{border-color:rgba(232,152,63,0.5);}
.gen-log-head{
    display:flex;
    align-items:center;
    gap:12px;
    width:100%;
    padding:10px 14px;
    background:none;
    border:0;
    cursor:pointer;
    text-align:left;
    font:inherit;
    color:var(--text-color);
}
.gen-log-head:hover{background:rgba(111,95,228,0.05);}
.gen-log-fam{
    font-family:var(--font-display);
    font-weight:700;
    font-size:0.8rem;
    color:var(--primary);
    min-width:120px;
    flex:none;
    text-transform:capitalize;
}
.gen-log-sum{flex:1;font-size:0.85rem;color:var(--text-color);min-width:0;}
.gen-log-ago{font-size:0.78rem;color:var(--text-muted);flex:none;}
.gen-log-detail{
    margin:0;
    padding:12px 14px;
    border-top:1px solid var(--card-border);
    background:var(--bg-color);
    font-size:0.78rem;
    overflow-x:auto;
    white-space:pre;
    color:var(--text-color);
}
.gen-log-more-row{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:12px;}
.gen-log-shown{font-size:0.78rem;color:var(--text-muted);}
/* Activity log (aggregated system-events feed) — one flat row per event, colour-coded by type. */
.sys-log-list{display:flex;flex-direction:column;gap:6px;}
.sys-log-row{display:flex;align-items:center;gap:12px;padding:9px 14px;border:1px solid var(--card-border);border-radius:12px;background:var(--card-bg);font-size:0.86rem;}
.sys-log-icon{flex:none;width:30px;height:30px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:rgba(111,95,228,0.1);color:var(--primary);font-size:0.82rem;}
.sys-log-user{font-weight:800;color:var(--text-color);flex:none;min-width:90px;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sys-log-detail{color:var(--text-muted);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sys-log-row .gen-log-ago{flex:none;}
.sys-log-row.act-login .sys-log-icon{background:rgba(16,185,129,0.12);color:#10b981;}
.sys-log-row.act-logout .sys-log-icon{background:rgba(148,163,184,0.18);color:#64748b;}
.sys-log-row.act-sub .sys-log-icon{background:rgba(234,179,8,0.14);color:#b8860b;}
.sys-log-row.act-complete .sys-log-icon{background:rgba(16,185,129,0.12);color:#10b981;}
.sys-log-row.act-session .sys-log-icon{background:rgba(111,95,228,0.12);color:var(--primary);}
.sys-log-row.act-settings .sys-log-icon{background:rgba(59,130,246,0.14);color:#3b82f6;}
.sys-log-row.act-security .sys-log-icon{background:rgba(239,68,68,0.12);color:#ef4444;}
.sys-log-row.act-admin .sys-log-icon{background:rgba(244,162,60,0.14);color:#e8983f;}

/* --- Public course catalogue (/courses) ------------------------------------------------------- */
/* Deliberately built from pages.css + dashboard.css primitives only. academy.css is a deferred shell
   asset and pulling it into the critical set would cost every SSR page a payload for one route. */
.catalog-lang{margin-bottom:46px;}
.catalog-lang-head{display:flex;align-items:center;flex-wrap:wrap;gap:14px;margin-bottom:22px;padding-bottom:16px;border-bottom:1px solid var(--card-border);}
.catalog-lang-flag{width:34px;height:26px;border-radius:4px;flex:none;box-shadow:0 2px 8px rgba(0,0,0,0.14);}
.catalog-lang-name{font-size:1.7rem;font-weight:800;margin:0;}
.catalog-lang-stats{display:flex;flex-wrap:wrap;gap:8px;margin-left:auto;}
.catalog-stat{display:inline-flex;align-items:center;gap:6px;font-size:0.82rem;font-weight:700;color:var(--text-muted);background:var(--card-glass);border:1px solid var(--card-border);border-radius:999px;padding:5px 12px;}
.catalog-stat i{color:var(--primary);}
.catalog-level{margin-bottom:24px;}
.catalog-level-badge{display:inline-block;font-size:0.78rem;font-weight:800;letter-spacing:0.06em;color:#fff;background:linear-gradient(135deg,var(--primary),var(--secondary));border-radius:6px;padding:4px 12px;margin-bottom:14px;}
.catalog-chapter{background:var(--card-glass);border:1px solid var(--card-border);border-radius:12px;margin-bottom:10px;overflow:hidden;}
.catalog-chapter[open]{border-color:rgba(111,95,228,0.4);}
.catalog-chapter-head{display:flex;align-items:center;gap:12px;padding:14px 18px;cursor:pointer;list-style:none;font-weight:700;}
.catalog-chapter-head::-webkit-details-marker{display:none;}
.catalog-chapter-head:hover{background:rgba(111,95,228,0.05);}
.catalog-chapter-title{flex:1;min-width:0;}
.catalog-chapter-count{flex:none;font-size:0.76rem;font-weight:800;color:var(--text-muted);background:rgba(111,95,228,0.1);border-radius:999px;padding:2px 9px;}
.catalog-chapter-caret{flex:none;font-size:0.8rem;color:var(--text-muted);transition:transform 0.25s ease;}
.catalog-chapter[open] .catalog-chapter-caret{transform:rotate(180deg);}
.catalog-lesson-list{list-style:none;margin:0;padding:0 18px 14px;}
.catalog-lesson{display:flex;align-items:center;gap:11px;padding:9px 0;border-top:1px solid var(--card-border);font-size:0.94rem;}
.catalog-lesson-icon{flex:none;width:22px;color:var(--text-muted);font-size:0.82rem;}
.catalog-lesson.is-checkpoint .catalog-lesson-icon{color:#e8983f;}
.catalog-lesson.is-exam .catalog-lesson-icon{color:#b8860b;}
.catalog-lesson.is-checkpoint .catalog-lesson-title,.catalog-lesson.is-exam .catalog-lesson-title{font-weight:700;}
.catalog-lesson-title{flex:1;min-width:0;}
.catalog-chip{flex:none;font-size:0.7rem;font-weight:700;color:var(--text-muted);border:1px solid var(--card-border);border-radius:999px;padding:2px 9px;}
.catalog-soon-lead{color:var(--text-muted);margin:0 0 18px;}
.catalog-soon-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px;}
.catalog-soon-card{background:var(--card-glass);border:1px solid var(--card-border);border-radius:12px;padding:18px;text-align:center;}
.catalog-soon-card .catalog-lang-flag{margin:0 auto 10px;display:block;}
.catalog-soon-name{font-weight:800;margin-bottom:3px;}
.catalog-soon-words{font-size:0.8rem;color:var(--text-muted);}
.catalog-empty{text-align:center;color:var(--text-muted);padding:60px 20px;}
.catalog-empty i{font-size:2.6rem;color:var(--primary);opacity:0.5;margin-bottom:14px;}
/* Level-closing nodes (exams) carry no chapter_id — rendered as a standalone row, not a chapter. */
.catalog-finale{display:flex;align-items:center;gap:11px;background:linear-gradient(135deg,rgba(184,134,11,0.07),rgba(232,152,63,0.07));border:1px solid rgba(184,134,11,0.3);border-radius:12px;padding:14px 18px;margin-top:10px;font-weight:700;}
.catalog-finale-icon{flex:none;width:22px;color:#b8860b;font-size:0.9rem;}
.catalog-finale-title{flex:1;min-width:0;}

/* --- Public verified support (Phase 81) --- */
.public-support-page{position:relative;max-width:1480px;margin:0 auto;padding:58px 28px 82px;min-height:75vh;}
.public-support-page>#cosmic-canvas{position:fixed;inset:0;z-index:-1;pointer-events:none;}
.public-support-hero{max-width:790px;margin:0 auto 34px;text-align:center;}
.public-support-kicker{display:inline-flex;align-items:center;gap:8px;margin-bottom:12px;color:var(--primary);font-size:0.78rem;font-weight:800;letter-spacing:0.13em;text-transform:uppercase;}
.public-support-hero h1{margin:0 0 12px;font-family:var(--font-display),sans-serif;font-size:clamp(2rem,4vw,3.3rem);line-height:1.05;color:var(--text-color);}
.public-support-hero p{max-width:710px;margin:0 auto;color:var(--text-muted);font-size:1.02rem;line-height:1.7;}
.public-support-layout {
    display:grid;
    grid-template-columns:minmax(260px,0.72fr) minmax(520px,1.6fr);
    gap:22px;
    align-items:start;
    max-width:1180px;
    margin:0 auto;
}
.public-support-side{display:flex;flex-direction:column;gap:18px;}
.public-support-help,.public-support-account,.public-support-console{position:relative;overflow:hidden;}
.public-support-help,.public-support-account{padding:22px;}
.public-support-console{padding:28px;}
.public-support-section-head{display:flex;align-items:center;gap:13px;margin-bottom:22px;}
.public-support-section-head h2{margin:0 0 3px;font-size:1.08rem;color:var(--text-color);}
.public-support-section-head p{margin:0;color:var(--text-muted);font-size:0.8rem;line-height:1.4;}
.public-support-section-icon{display:grid;place-items:center;width:42px;height:42px;flex:0 0 42px;border:1px solid rgba(111,95,228,0.14);border-radius:12px;background:rgba(111,95,228,0.08);color:var(--primary);box-shadow:inset 0 1px rgba(255,255,255,0.75);}
.public-support-section-icon.is-warm{background:rgba(244,130,92,0.08);border-color:rgba(244,130,92,0.15);color:var(--secondary);}
.public-support-shortcuts{display:flex;flex-direction:column;gap:6px;}
.public-support-shortcuts a {
    display:grid;
    grid-template-columns:26px 1fr 16px;
    gap:10px;
    align-items:center;
    padding:11px 9px;
    border-radius:10px;
    color:var(--text-color);
    text-decoration:none;
    transition:background 0.2s,transform 0.2s;
}
.public-support-shortcuts a:hover,.public-support-shortcuts a:focus-visible{background:rgba(111,95,228,0.07);transform:translateX(2px);}
.public-support-shortcuts a>i:first-child{color:var(--primary);text-align:center;}
.public-support-shortcuts a>i:last-child{color:var(--text-muted);font-size:0.72rem;}
.public-support-shortcuts span{display:flex;flex-direction:column;gap:2px;}
.public-support-shortcuts strong{font-size:0.84rem;}
.public-support-shortcuts small{color:var(--text-muted);font-size:0.72rem;line-height:1.35;}
.public-support-account{display:flex;align-items:flex-start;gap:14px;}
.public-support-account>i{margin-top:2px;color:var(--secondary);font-size:1.45rem;}
.public-support-account h2{margin:0 0 5px;font-size:0.98rem;}
.public-support-account p{margin:0 0 12px;color:var(--text-muted);font-size:0.79rem;line-height:1.5;}
.public-support-form{display:flex;flex-direction:column;gap:12px;}
.public-support-fields-two{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.public-support-form .support-label{display:flex;flex-direction:column;gap:7px;}
.public-support-form .theme-input{width:100%;}
.public-support-trap{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important;}
.public-support-submit{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:4px;}
.public-support-submit p{max-width:470px;margin:0;color:var(--text-muted);font-size:0.74rem;line-height:1.5;}
.public-support-submit p i{margin-right:5px;color:var(--primary);}
.public-support-submit .btn{flex:0 0 auto;}
.public-support-privacy{margin:22px 0 0;padding-top:16px;border-top:1px solid rgba(111,95,228,0.1);color:var(--text-muted);font-size:0.72rem;line-height:1.55;}
.public-support-noscript{margin:16px 0 0;padding:12px;border:1px solid var(--card-border);border-radius:10px;color:var(--text-muted);}
.public-support-loading,.public-support-access-error{display:grid;place-items:center;gap:11px;min-height:320px;text-align:center;color:var(--text-muted);}
.public-support-loading i,.public-support-access-error>i{font-size:2.1rem;color:var(--primary);}
.public-support-access-error h3{margin:0;color:var(--text-color);}
.public-support-access-error p{max-width:480px;margin:0 0 8px;line-height:1.6;}
.public-support-reply{margin-top:18px;padding-top:18px;border-top:1px solid var(--card-border);}
.public-support-att-img{max-width:none!important;padding:6px 10px!important;}
.support-att[data-psact]{font:inherit;color:inherit;cursor:pointer;}
.support-source{display:inline-flex;align-items:center;padding:1px 5px;border-radius:5px;background:rgba(111,95,228,0.08);color:var(--primary);font-size:0.66rem;font-weight:800;text-transform:uppercase;}
.support-source--guest{background:rgba(244,130,92,0.09);color:#B4532F;}
.support-readiness{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:11px;}
.support-ready{display:inline-flex;align-items:center;gap:5px;padding:5px 8px;border-radius:8px;font-size:0.72rem;font-weight:700;}
.support-ready.is-ready{background:rgba(16,185,129,0.09);color:#047857;}
.support-ready.is-missing{background:rgba(239,68,68,0.08);color:#B91C1C;}

/* --- Support tickets (Phase 59) --- */
.support-nav-dot{width:8px;height:8px;border-radius:50%;background:var(--secondary);margin-left:auto;flex:none;}
.support-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px;}
.support-email-opt{display:flex;align-items:center;gap:8px;font-size:0.85rem;color:var(--text-muted);cursor:pointer;}
.support-list{display:flex;flex-direction:column;gap:8px;}
.support-row {
    display:grid;
    grid-template-columns:110px 1fr auto auto;
    gap:12px;
    align-items:center;
    width:100%;
    text-align:left;
    padding:12px 14px;
    background:var(--card-glass);
    border:1px solid var(--card-border);
    border-radius:12px;
    cursor:pointer;
    transition:border-color 0.15s ease, transform 0.15s ease;
}
.support-row:hover{border-color:var(--primary);transform:translateY(-1px);}
.support-row-ref{font-weight:800;font-size:0.82rem;color:var(--primary);display:flex;align-items:center;gap:6px;}
.support-dot{width:8px;height:8px;border-radius:50%;background:var(--secondary);flex:none;}
.support-row-subject{font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.support-row-meta{font-size:0.78rem;color:var(--text-muted);white-space:nowrap;}
.badge-st-open{background:rgba(111,95,228,0.1);color:var(--primary);border:1.5px solid rgba(111,95,228,0.25);}
.badge-st-turn{background:rgba(244,162,60,0.12);color:#b8730a;border:1.5px solid rgba(244,162,60,0.35);}
.badge-st-resolved{background:rgba(16,185,129,0.1);color:#0d9668;border:1.5px solid rgba(16,185,129,0.25);}
.badge-st-closed{background:rgba(122,117,150,0.1);color:var(--text-muted);border:1.5px solid rgba(122,117,150,0.25);}
.support-empty{text-align:center;color:var(--text-muted);padding:48px 20px;}
/* inline-block, NOT block: a duotone icon's second layer pins to its box edge — a full-width block
   tears the layers apart and un-centers the glyph (the parent's text-align centers the box). */
.support-empty i{font-size:2.4rem;color:var(--primary);opacity:0.5;display:inline-block;margin-bottom:12px;}
.support-pager{display:flex;gap:6px;justify-content:center;margin-top:14px;}
.support-detail-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px;}
.support-detail-ref{font-weight:800;color:var(--primary);}
.support-detail-subject{margin:0 0 4px;}
.support-detail-meta{font-size:0.82rem;color:var(--text-muted);margin:0 0 16px;}
.support-thread{display:flex;flex-direction:column;gap:10px;margin-bottom:18px;}
.support-msg {
    max-width:85%;
    padding:12px 14px;
    border-radius:14px;
    border:1px solid var(--card-border);
    background:var(--card-glass);
    align-self:flex-start;
}
.support-msg.is-mine{align-self:flex-end;background:rgba(111,95,228,0.07);border-color:rgba(111,95,228,0.25);}
.support-msg-head{font-size:0.74rem;font-weight:700;color:var(--text-muted);margin-bottom:5px;}
.support-msg-body{line-height:1.5;overflow-wrap:anywhere;}
.support-msg-atts{display:flex;flex-wrap:wrap;gap:8px;margin-top:9px;}
.support-att{display:inline-flex;align-items:center;gap:6px;font-size:0.78rem;padding:5px 10px;border:1px solid var(--card-border);border-radius:8px;background:var(--card-bg);}
.support-att span{color:var(--text-muted);}
.support-att-img{padding:0;overflow:hidden;max-width:180px;}
.support-att-img img{display:block;max-width:100%;height:auto;}
.support-event{text-align:center;font-size:0.76rem;color:var(--text-muted);padding:2px 0;}
.support-event-when{opacity:0.7;}
.support-replybox{display:flex;flex-direction:column;gap:9px;margin-bottom:14px;}
.support-file-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
/* No overflow:hidden here — it clipped the label ("Att…"); the file input is `hidden`, so the
   label needs no clipping tricks. flex:none keeps crowded action rows from squeezing it. */
.support-file-btn{flex:none;white-space:nowrap;}
.support-file-chips{display:flex;flex-wrap:wrap;gap:6px;}
.support-chip{display:inline-flex;align-items:center;gap:5px;font-size:0.74rem;padding:3px 9px;border:1px solid var(--card-border);border-radius:8px;background:var(--card-bg);}
.support-chip-bad{color:var(--danger);border-color:rgba(239,68,68,0.4);}
.support-reply-actions{display:flex;justify-content:flex-end;align-items:center;gap:12px;}
.support-detail-actions{display:flex;gap:10px;flex-wrap:wrap;border-top:1px solid var(--card-border);padding-top:14px;}
.support-form{display:flex;flex-direction:column;gap:9px;}
.support-label{font-weight:700;font-size:0.85rem;}
.support-counter{font-size:0.74rem;color:var(--text-muted);text-align:right;}
.support-turnstile{min-height:65px;}

/* --- Admin support + Turnstile panes (Phase 59) --- */
.admin-nav-badge{background:var(--secondary);color:#fff;font-size:0.68rem;font-weight:800;border-radius:9px;padding:1px 7px;margin-left:auto;flex:none;}
.adm-support-row.is-needs-reply{border-left:3px solid var(--secondary);}
.adm-support-user{display:block;font-size:0.74rem;font-weight:400;color:var(--text-muted);}
.adm-support-grid{display:grid;grid-template-columns:1fr 250px;gap:18px;align-items:start;}
.adm-support-card{border:1px solid var(--card-border);border-radius:12px;padding:14px;margin-bottom:12px;background:var(--card-glass);}
.adm-support-card h4{margin:0 0 6px;font-size:0.82rem;}
.adm-support-card h4:not(:first-child){margin-top:12px;}
.adm-support-card p{margin:0 0 4px;font-size:0.8rem;color:var(--text-muted);overflow-wrap:anywhere;}
.support-msg.is-note{background:rgba(244,162,60,0.09);border-color:rgba(244,162,60,0.4);align-self:stretch;max-width:100%;}
.adm-side-label{display:block;font-size:0.72rem;font-weight:800;text-transform:uppercase;letter-spacing:0.4px;color:var(--text-muted);margin:10px 0 4px;}
.adm-side-label:first-child{margin-top:0;}
.adm-support-card .theme-input{width:100%;}
.adm-support-delete{width:100%;justify-content:center;margin-top:2px;}
.support-actions-spacer{flex:1;}
.support-copylink{margin-left:auto;padding:7px 10px;}
.support-diag-opt{display:flex;align-items:flex-start;gap:9px;font-size:0.82rem;color:var(--text-muted);cursor:pointer;line-height:1.45;}
.support-diag-opt input{margin-top:3px;flex:none;}
.adm-support-noterow{display:flex;gap:8px;align-items:flex-start;border-top:1px dashed var(--card-border);padding-top:9px;}
.adm-support-noterow textarea{flex:1;}
/* 59.2: the composer spans the FULL panel width below the thread/side grid. */
.support-replybox-full{margin-top:18px;border-top:1px solid var(--card-border);padding-top:16px;}
.asd-canned-wrap{flex:none;width:200px;}
.asd-sendstatus-wrap{flex:none;width:190px;}
.support-waiting{color:var(--secondary);font-weight:800;}
.support-nudge{display:flex;align-items:center;gap:9px;flex-wrap:wrap;font-size:0.82rem;padding:9px 12px;border:1px solid rgba(111,95,228,0.35);border-radius:10px;background:rgba(111,95,228,0.07);color:var(--text-color);}
.support-nudge.hidden{display:none;}
.support-nudge i{color:var(--primary);}
.adm-set-h3{margin:18px 0 8px;font-size:0.95rem;}
.adm-set-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:8px 16px;}
.adm-set-grid-wide{grid-template-columns:1fr;}
.adm-set-row{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:0.84rem;}
.adm-set-row .theme-input{max-width:150px;}
.adm-set-grid-wide .adm-set-row .theme-input{max-width:340px;}
.adm-turnstile-key{margin:0 0 6px;font-size:0.86rem;}

/* Phase 59: inline Turnstile holder on the auth forms */
.auth-turnstile{margin:4px 0 14px;min-height:65px;}

/* --- PR7: satisfaction rating + canned replies --- */
.support-ratebox{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border:1px solid var(--card-border);border-radius:12px;padding:12px 14px;margin-bottom:14px;background:var(--card-glass);}
.support-rate-label{font-weight:700;font-size:0.88rem;}
.support-rate-stars{display:inline-flex;gap:2px;}
.support-star{background:none;border:none;font-size:1.35rem;line-height:1;cursor:pointer;color:var(--text-muted);padding:2px;}
.support-star.is-on{color:var(--accent);}
.support-ratebox .theme-input{flex:1;min-width:160px;}
.support-rated{color:var(--accent);font-weight:700;margin:0 0 14px;}
.support-stars-inline{color:var(--accent);font-weight:800;}
.ass-canned-row{display:grid;grid-template-columns:220px 1fr auto;gap:8px;align-items:start;margin-bottom:8px;}

/* --- Grouped settings cards (59.4 — Concept A, the admin settings template) --- */
/* 1-column by default (descriptions are lengthy); .set-groups--2col opts into two columns.
   The tinted panel (bg + border) is the shared settings container every admin settings page uses. */
.set-groups{display:grid;grid-template-columns:1fr;gap:16px;align-items:start;background:var(--bg-color);border:1px solid var(--card-border);border-radius:12px;padding:16px;}
.set-groups--2col{grid-template-columns:1fr 1fr;}
.set-group{border:1px solid var(--card-border);border-radius:14px;padding:2px 16px 8px;background:var(--card-bg);}
.set-group-head{display:flex;align-items:center;gap:10px;padding:14px 2px 10px;font-family:var(--font-display);font-weight:800;font-size:1.02rem;color:var(--text-color);border-bottom:1px solid var(--card-border);}
.set-group-head .sg-ic{width:27px;height:27px;border-radius:8px;display:grid;place-items:center;color:#fff;flex:none;font-size:0.8rem;}
.set-group-note{font-size:0.79rem;line-height:1.45;color:var(--text-muted);padding:9px 2px 3px;}
.sg-ic.v{background:var(--primary);}
.sg-ic.c{background:var(--secondary);}
.sg-ic.g{background:var(--accent);}
.sg-ic.t{background:#8B7FE8;}
.set-arow{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 2px;border-bottom:1px solid var(--border-soft,rgba(228,222,245,0.6));}
.set-arow:last-child{border-bottom:none;}
.set-arow .sa-txt{min-width:0;}
.set-arow .sa-lab{font-weight:600;font-size:0.9rem;color:var(--text-color);margin:0;display:flex;align-items:center;gap:7px;flex-wrap:wrap;}
.set-arow .sa-sub{font-size:0.78rem;line-height:1.4;color:var(--text-muted);margin-top:2px;}
.set-arow .sa-ctl{flex:none;display:flex;align-items:center;gap:8px;}
.set-arow-wide{flex-direction:column;align-items:stretch;gap:10px;}
.set-arow .sa-ctl.model-inputs{flex-direction:column;align-items:stretch;gap:8px;width:100%;}
.model-inputs .model-input-wrap{display:flex;gap:6px;width:100%;}
.model-inputs .academy-model-input{flex:1;min-width:0;}
.set-tier{font-size:0.66rem;font-family:var(--font-display);font-weight:800;letter-spacing:0.4px;padding:2px 7px;border-radius:6px;}
.set-tier.free{background:rgba(111,95,228,0.12);color:var(--primary-hover);}
.set-tier.pro{background:rgba(244,162,60,0.16);color:#b4770f;}
.set-levels{display:flex;gap:7px;flex-wrap:wrap;}
.settings-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:18px;}
.settings-actions .set-note-inline{color:var(--text-muted);font-size:0.82rem;margin:0;}
@media (max-width:820px){.set-groups--2col{grid-template-columns:1fr;}}
