/* ============================================
   LIVERTY -- Design System
   Editorial cream/gold aesthetic with SVG icons
============================================ */

/* Arabic language temporarily hidden — re-enable when AR translations land. */
.lang-btn[data-lang="ar"]{display:none!important}

:root, [data-theme="light"] {
    --bg: #F5F2EC;
    --bg2: #EBE8E1;
    --bg3: #FFFFFF;
    --bg-hover: #F0EDE6;
    --white: #1C1917;
    --light: #44403C;
    --grey: #78716C;
    --muted: #D6D3CD;
    --accent: #A6862B;
    --accent2: #8B6F1E;
    --accent-dim: rgba(166,134,43,.1);
    --accent-glow: rgba(166,134,43,.15);
    --line: rgba(166,134,43,.12);
    --line2: rgba(166,134,43,.2);
    --green: #16A34A; --yellow: #CA8A04; --red: #DC2626;
    --purple: #875590;
    --r: 10px;
    --header-bg: rgba(245,242,236,.92);
    --card-shadow: 0 1px 3px rgba(0,0,0,.06), 0 0 0 1px rgba(166,134,43,.08);
    --card-shadow-hover: 0 8px 30px rgba(0,0,0,.08), 0 0 0 1px rgba(166,134,43,.15);
    --modal-overlay-bg: rgba(245,242,236,.85);
    --modal-shadow: 0 25px 60px rgba(0,0,0,.12), 0 0 0 1px rgba(166,134,43,.1);
    --footer-line: linear-gradient(90deg, transparent, var(--accent), transparent);
    --suggestion-bg: rgba(166,134,43,.08);
    --editor-sidebar-width: 280px;
    --editor-toolbar-height: 48px;
    --font-display: 'Playfair Display', Georgia, serif;
    --font-body: 'Montserrat', sans-serif;
    --font-literary: 'Lora', Georgia, serif;
}

[data-theme="dark"] {
    --bg: #0A0A0F;
    --bg2: #111118;
    --bg3: #16161F;
    --bg-hover: #1C1C28;
    --white: #E8E4DC;
    --light: #C4BFB4;
    --grey: #8A8577;
    --muted: #3D3A34;
    --accent: #C9A355;
    --accent2: #E8D5A3;
    --accent-dim: rgba(201,163,85,.15);
    --accent-glow: rgba(201,163,85,.3);
    --line: rgba(201,163,85,.1);
    --line2: rgba(201,163,85,.2);
    --green: #4ADE80; --yellow: #FACC15; --red: #F87171;
    --purple: #A87AB5;
    --r: 10px;
    --header-bg: rgba(10,10,15,.92);
    --card-shadow: 0 2px 8px rgba(0,0,0,.3), 0 0 0 1px rgba(201,163,85,.05);
    --card-shadow-hover: 0 12px 40px rgba(0,0,0,.4), 0 0 30px rgba(201,163,85,.08);
    --modal-overlay-bg: rgba(0,0,0,.82);
    --modal-shadow: 0 40px 80px rgba(0,0,0,.6), 0 0 40px var(--accent-dim);
    --footer-line: linear-gradient(90deg, transparent, var(--accent), transparent);
    --suggestion-bg: rgba(201,163,85,.12);
    --editor-sidebar-width: 280px;
    --editor-toolbar-height: 48px;
    --font-display: 'Playfair Display', Georgia, serif;
    --font-body: 'Montserrat', sans-serif;
    --font-literary: 'Lora', Georgia, serif;
}

/* --- Reset --- */
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;overflow-x:hidden}
body{font-family:var(--font-body);background:var(--bg);color:var(--white);min-height:100vh;-webkit-font-smoothing:antialiased;overflow-x:hidden}

/* --- SVG Icon System --- */
.icon{width:20px;height:20px;flex-shrink:0;display:inline-block;vertical-align:middle}
.icon-xs{width:14px;height:14px}
.icon-sm{width:16px;height:16px}
.icon-lg{width:28px;height:28px}
.icon-xl{width:36px;height:36px}

/* Theme-aware sun/moon icons */
[data-theme="light"] .theme-icon-moon{display:none}
[data-theme="dark"] .theme-icon-sun{display:none}
[data-theme="light"] .theme-icon-sun,
[data-theme="dark"] .theme-icon-moon{display:inline-block}
/* Default (no data-theme set = light) */
:root:not([data-theme]) .theme-icon-moon{display:none}

/* --- Header --- */
body>header{position:sticky;top:0;z-index:150;background:var(--header-bg);backdrop-filter:blur(20px);border-bottom:1px solid var(--line)}
.approval-banner{display:flex;align-items:center;gap:8px;justify-content:center;padding:10px 16px;background:rgba(234,179,8,.12);color:#a16207;border-bottom:1px solid rgba(234,179,8,.3);font:500 12px 'Montserrat',sans-serif;letter-spacing:.2px}
.approval-banner .icon{color:#ca8a04}
body>header::after{content:'';position:absolute;bottom:0;left:0;right:0;height:1px;background:var(--footer-line);opacity:.4}
.nav{max-width:1200px;margin:0 auto;padding:12px 24px;display:flex;align-items:center;justify-content:space-between}
.nav-brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:inherit}
.nav-name{font-family:var(--font-display);font-size:20px;letter-spacing:5px;font-weight:700;text-transform:uppercase;background:linear-gradient(135deg,var(--accent2),var(--accent));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.nav-sub{font-size:9px;letter-spacing:3px;color:var(--accent);font-weight:600}
.nav-actions{display:flex;align-items:center;gap:8px}
.nav-btn{background:0;border:1px solid var(--line);color:var(--grey);font:600 11px 'Montserrat',sans-serif;letter-spacing:.5px;padding:6px 14px;border-radius:20px;cursor:pointer;transition:.2s;text-decoration:none;display:inline-flex;align-items:center;gap:6px}
.nav-btn:hover{border-color:var(--accent);color:var(--accent)}
.nav-btn-with-icon{gap:5px}
.nav-accent-btn{background:var(--accent);color:#fff;border-color:var(--accent)}
.nav-accent-btn:hover{background:var(--accent2);border-color:var(--accent2);color:#fff}
.nav-icon-btn{padding:7px 9px;line-height:1}
.nav-btn-primary{background:var(--accent-dim);border-color:rgba(201,163,85,.45);color:var(--accent)}
.nav-btn-primary:hover{background:var(--accent);color:#fff;border-color:var(--accent)}

/* User menu wrapper — establishes the positioning context for the dropdown */
.nav-user-wrap{position:relative;display:inline-flex;z-index:160}
.nav-user-btn{display:inline-flex;align-items:center;gap:8px;padding:5px 12px 5px 5px}
.nav-user-avatar{width:26px;height:26px;border-radius:50%;background:linear-gradient(135deg,var(--accent),#B5651D);color:#fff;display:inline-flex;align-items:center;justify-content:center;font:700 11px 'Playfair Display',serif;letter-spacing:0;flex-shrink:0}
.nav-user-name{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nav-user-chev{transition:transform .2s;opacity:.7}
.nav-user-btn[aria-expanded="true"] .nav-user-chev{transform:rotate(180deg);opacity:1}
.nav-user-btn[aria-expanded="true"]{border-color:var(--accent);color:var(--accent)}

/* Dropdown — anchored to the wrapper, not the header */
.user-menu{display:none;position:fixed;top:60px;right:16px;background:var(--bg3);border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 40px -12px rgba(0,0,0,.45),0 4px 12px -4px rgba(0,0,0,.25);overflow:hidden;z-index:1000;min-width:240px;font-family:'Montserrat',sans-serif;transform-origin:top right;animation:userMenuIn .18s cubic-bezier(.4,0,.2,1)}
.user-menu.open{display:block}
.user-menu::before{content:'';position:absolute;top:-6px;right:18px;width:12px;height:12px;background:var(--bg3);border-left:1px solid var(--line);border-top:1px solid var(--line);transform:rotate(45deg)}
@keyframes userMenuIn{from{opacity:0;transform:translateY(-6px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}

.user-menu-section{padding:8px 6px;position:relative}
.user-menu-label{display:block;padding:6px 12px 4px;font:700 9px 'Montserrat',sans-serif;letter-spacing:2.5px;text-transform:uppercase;color:var(--grey);opacity:.75}
.user-menu-divider{height:1px;background:var(--line);margin:0 12px}
.user-menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:9px 12px;background:0;border:0;color:var(--light);font:500 12px 'Montserrat',sans-serif;text-align:left;text-decoration:none;cursor:pointer;border-radius:8px;transition:.12s}
.user-menu-item:hover{background:var(--accent-dim);color:var(--accent);transform:translateX(2px)}
.user-menu-item svg{color:var(--grey);flex-shrink:0;transition:.12s}
.user-menu-item:hover svg{color:var(--accent)}
.user-menu-danger{color:var(--red);opacity:.85}
.user-menu-danger:hover{background:rgba(220,68,68,.1);color:var(--red);opacity:1}
.user-menu-danger:hover svg{color:var(--red)}
.user-menu-danger svg{color:var(--red);opacity:.8}

/* Language switcher (Morai-style) */
.lang-filter{display:flex;gap:1px;background:var(--bg3);border-radius:6px;padding:2px;border:1px solid var(--line)}
.lang-btn{background:0;border:0;color:var(--grey);font-family:'Montserrat',sans-serif;font-size:11px;font-weight:700;padding:5px 10px;border-radius:4px;cursor:pointer;transition:.2s;display:inline-flex;align-items:center;gap:4px}
.lang-btn:hover{color:var(--white)}
.lang-btn.active{background:var(--accent);color:#fff}
[data-theme="dark"] .lang-btn.active{color:var(--bg)}
.lang-svg{vertical-align:-2px;opacity:.6}
.lang-btn.active .lang-svg{opacity:1}
.lang-btn:hover .lang-svg{opacity:.9}
.user-menu-lang{padding:8px 12px}

/* --- Footer --- */
footer{margin-top:60px;padding:24px;text-align:center;font-size:12px;color:var(--grey);border-top:1px solid var(--line)}
footer::before{content:'';display:block;height:1px;background:var(--footer-line);margin-bottom:24px;opacity:.3}
.footer-inner{display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap}
.footer-brand{color:var(--accent);font-weight:700;letter-spacing:2px}
.footer-sep{color:var(--muted)}
.footer-heart{color:var(--accent);width:14px;height:14px}
.footer-link{color:var(--grey);text-decoration:none;transition:color .2s}
.footer-link:hover{color:var(--accent)}

/* --- Buttons --- */
.btn{display:inline-flex;align-items:center;gap:6px;padding:10px 20px;border-radius:var(--r);font:600 13px 'Montserrat',sans-serif;letter-spacing:.3px;cursor:pointer;transition:.2s;border:1px solid var(--line);background:var(--bg3);color:var(--white);text-decoration:none}
.btn:hover{border-color:var(--accent);color:var(--accent)}
.btn-accent{background:var(--accent);color:#fff;border-color:var(--accent)}
.btn-accent:hover{background:var(--accent2);border-color:var(--accent2);color:#fff}
.btn-sm{padding:6px 12px;font-size:11px}
.btn-lg{padding:14px 32px;font-size:14px}
.btn-full{width:100%;justify-content:center}
.btn-icon{background:0;border:0;cursor:pointer;padding:4px;color:var(--grey);transition:.2s;display:inline-flex;align-items:center}
.btn-icon:hover{color:var(--accent)}

/* --- Forms --- */
.form-group{margin-bottom:16px}
.form-group label{display:block;font-size:11px;font-weight:600;color:var(--grey);letter-spacing:.5px;margin-bottom:6px;text-transform:uppercase}
.form-group input,.form-group textarea,.form-group select{width:100%;padding:10px 14px;background:var(--bg);border:1px solid var(--line);border-radius:var(--r);color:var(--white);font:400 14px 'Montserrat',sans-serif;transition:.2s;outline:none}
.form-group input:focus,.form-group textarea:focus,.form-group select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}
.form-group textarea{resize:vertical}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.form-error{color:var(--red);font-size:12px;margin-bottom:12px;min-height:18px}

/* --- Hero --- */
.hero{text-align:center;padding:80px 24px 60px;max-width:800px;margin:0 auto}
.hero-badge{display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:16px;background:var(--accent-dim);border:1px solid var(--line2);margin-bottom:28px}
.hero-badge svg{width:28px;height:28px;color:var(--accent)}
.hero-title{font-size:clamp(28px,5vw,48px);font-weight:800;line-height:1.15;margin-bottom:20px;background:linear-gradient(135deg,var(--white),var(--accent));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.hero-desc{font-size:16px;color:var(--grey);line-height:1.7;margin-bottom:32px;max-width:600px;margin-left:auto;margin-right:auto}
.hero-actions{display:flex;gap:12px;justify-content:center}

/* --- Features --- */
.features-section{max-width:1100px;margin:0 auto;padding:0 24px 60px}
.features-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px}
.feature-card{padding:28px;background:var(--bg3);border:1px solid var(--line);border-radius:var(--r);transition:.25s}
.feature-card:hover{box-shadow:var(--card-shadow-hover);border-color:var(--accent)}
.feature-card:hover .feature-icon-wrap{background:var(--accent);border-color:var(--accent)}
.feature-card:hover .feature-icon-wrap svg{color:#fff}
.feature-icon-wrap{width:44px;height:44px;border-radius:12px;background:var(--accent-dim);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;margin-bottom:16px;transition:.25s}
.feature-icon-wrap svg{width:22px;height:22px;color:var(--accent);transition:.25s}
.feature-card h3{font-size:15px;font-weight:700;margin-bottom:8px}
.feature-card p{font-size:13px;color:var(--grey);line-height:1.6}

/* --- Section --- */
.section-title{font-size:20px;font-weight:700;letter-spacing:1px;margin-bottom:24px;text-align:center;color:var(--accent)}

/* --- Book Grid --- */
.book-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:20px;max-width:1100px;margin:0 auto;padding:0 24px}
.book-card{background:var(--bg3);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;text-decoration:none;color:inherit;transition:.25s;cursor:pointer}
.book-card:hover{box-shadow:var(--card-shadow-hover);transform:translateY(-2px)}
.book-cover{height:160px;background:linear-gradient(135deg,var(--accent-dim),var(--bg2));display:flex;align-items:center;justify-content:center;position:relative;background-size:cover;background-position:center}
.book-cover-placeholder{font-size:36px;font-weight:800;color:var(--accent);opacity:.3;text-transform:uppercase;letter-spacing:2px}
.book-status-badge{position:absolute;top:8px;right:8px;font-size:9px;font-weight:700;letter-spacing:.5px;padding:3px 8px;border-radius:12px;text-transform:uppercase}
.badge-draft{background:var(--muted);color:var(--grey)}
.badge-writing{background:var(--accent-dim);color:var(--accent)}
.badge-published{background:rgba(22,163,74,.1);color:var(--green)}
.book-meta{padding:14px}
.book-title{font-size:14px;font-weight:700;margin-bottom:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.book-info{display:flex;justify-content:space-between;font-size:11px;color:var(--grey)}
.book-type{text-transform:capitalize}

/* --- Auth --- */
.auth-section{display:flex;justify-content:center;padding:60px 24px}
.auth-card{width:100%;max-width:420px;background:var(--bg3);border:1px solid var(--line);border-radius:var(--r);padding:32px;box-shadow:var(--card-shadow)}
.auth-tabs{display:flex;gap:0;margin-bottom:28px;border-bottom:1px solid var(--line)}
.auth-tab{flex:1;padding:12px;background:0;border:0;border-bottom:2px solid transparent;color:var(--grey);font:600 13px 'Montserrat',sans-serif;cursor:pointer;transition:.2s}
.auth-tab.active{color:var(--accent);border-bottom-color:var(--accent)}

/* --- Dashboard --- */
.dash{max-width:1200px;margin:0 auto;padding:32px 24px}
.empty-state{grid-column:1/-1;text-align:center;padding:60px;color:var(--grey)}
.empty-state-icon{width:48px;height:48px;color:var(--muted);margin-bottom:16px}

/* Greeting */
.dash-greeting{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px}
.dash-greeting-text{display:flex;align-items:baseline;gap:10px}
.dash-hello{font-size:26px;font-weight:300;color:var(--grey)}
.dash-username{font-size:26px;font-weight:800;background:linear-gradient(135deg,var(--accent2),var(--accent));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}

/* Stats row */
.dash-stats-row{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:32px}
.dash-stat-card{display:flex;align-items:center;gap:14px;background:var(--bg3);border:1px solid var(--line);border-radius:12px;padding:18px 20px;transition:.25s}
.dash-stat-card:hover{box-shadow:var(--card-shadow-hover);border-color:var(--accent)}
.dash-stat-icon{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.dash-stat-icon svg{width:20px;height:20px}
.dash-stat-icon--accent{background:var(--accent-dim);color:var(--accent)}
.dash-stat-icon--green{background:rgba(22,163,74,.1);color:var(--green)}
.dash-stat-icon--purple{background:rgba(135,85,144,.1);color:var(--purple)}
.dash-stat-icon--yellow{background:rgba(202,138,4,.1);color:var(--yellow)}
.dash-stat-body{display:flex;flex-direction:column}
.dash-stat-value{font:800 22px 'Montserrat',sans-serif;color:var(--white);line-height:1.2}
.dash-stat-label{font:500 11px 'Montserrat',sans-serif;color:var(--grey);text-transform:uppercase;letter-spacing:.5px}

/* Main grid: left (books) + right (sidebar widgets) */
.dash-grid{display:grid;grid-template-columns:1fr 320px;gap:28px;align-items:start}
.dash-col-main{display:flex;flex-direction:column;gap:28px}
.dash-col-side{display:flex;flex-direction:column;gap:16px;position:sticky;top:80px}

/* Section */
.dash-section{}
.dash-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.dash-section-header h2{font-size:17px;font-weight:700}
.dash-section-link{font:600 12px 'Montserrat',sans-serif;color:var(--accent);text-decoration:none;letter-spacing:.3px}
.dash-section-link:hover{text-decoration:underline}

/* Book filters */
.dash-book-filters{display:flex;gap:6px}
.dash-filter-btn{background:0;border:1px solid var(--line);color:var(--grey);font:600 11px 'Montserrat',sans-serif;padding:5px 12px;border-radius:16px;cursor:pointer;transition:.2s}
.dash-filter-btn:hover{border-color:var(--accent);color:var(--accent)}
.dash-filter-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}
.dash-book-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px;padding:0}

/* Recent books list */
.dash-recent-books{display:flex;flex-direction:column;gap:2px}
.dash-recent-book{display:flex;align-items:center;gap:14px;padding:12px 14px;background:var(--bg3);border:1px solid var(--line);border-radius:10px;text-decoration:none;color:inherit;transition:.2s}
.dash-recent-book:hover{border-color:var(--accent);box-shadow:var(--card-shadow)}
.dash-recent-book-cover{width:44px;height:56px;border-radius:6px;background:linear-gradient(135deg,var(--accent-dim),var(--bg2));display:flex;align-items:center;justify-content:center;flex-shrink:0;background-size:cover;background-position:center}
.dash-recent-book-ph{font:800 14px 'Montserrat',sans-serif;color:var(--accent);opacity:.4;text-transform:uppercase}
.dash-recent-book-info{flex:1;min-width:0}
.dash-recent-book-title{display:block;font:600 13px 'Montserrat',sans-serif;color:var(--white);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:4px}
.dash-recent-book-meta{display:flex;align-items:center;gap:8px;font:400 11px 'Montserrat',sans-serif;color:var(--grey)}
.dash-recent-book-meta .book-status-badge{font-size:8px;padding:2px 6px}
.dash-recent-book-time{font:400 11px 'Montserrat',sans-serif;color:var(--muted);white-space:nowrap}
.dash-empty-hint{font:400 13px 'Montserrat',sans-serif;color:var(--grey);padding:20px;text-align:center}

/* Sidebar widgets */
.dash-widget{background:var(--bg3);border:1px solid var(--line);border-radius:12px;padding:20px}
.dash-widget-header{display:flex;align-items:center;gap:8px;margin-bottom:16px}
.dash-widget-header svg{color:var(--accent)}
.dash-widget-header h3{font:700 14px 'Montserrat',sans-serif;color:var(--white)}

/* Progress bars */
.dash-progress-bars{display:flex;flex-direction:column;gap:14px}
.dash-progress-item{}
.dash-progress-label{display:flex;justify-content:space-between;margin-bottom:6px;font:500 12px 'Montserrat',sans-serif;color:var(--grey)}
.dash-progress-count{font-weight:700;color:var(--white)}
.dash-progress-track{height:6px;background:var(--bg);border-radius:3px;overflow:hidden}
.dash-progress-fill{height:100%;border-radius:3px;transition:width .6s ease;min-width:2px}
.dash-progress-fill--muted{background:var(--muted)}
.dash-progress-fill--accent{background:var(--accent)}
.dash-progress-fill--green{background:var(--green)}

/* Vocab ring (sidebar version) */
.dash-vocab-ring-section{display:flex;align-items:center;gap:16px}
.dash-vocab-ring-wrap{position:relative;width:90px;height:90px;flex-shrink:0}
.dash-vocab-ring-label{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font:800 18px 'Montserrat',sans-serif;color:var(--accent)}
.dash-vocab-details{display:flex;flex-direction:column;gap:10px;flex:1}
.dash-vocab-detail{display:flex;align-items:center;gap:8px;font:400 12px 'Montserrat',sans-serif;color:var(--grey)}
.dash-vocab-detail strong{margin-left:auto;font-weight:700;color:var(--white)}
.dash-vocab-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.dash-vocab-dot--green{background:var(--green)}
.dash-vocab-dot--accent{background:var(--accent)}
.dash-vocab-dot--grey{background:var(--muted)}

/* Ideas summary */
.dash-ideas-summary{display:flex;gap:8px;margin-bottom:14px}
.dash-idea-stat{flex:1;text-align:center;padding:10px 4px;background:var(--bg);border-radius:8px}
.dash-idea-stat-val{display:block;font:800 18px 'Montserrat',sans-serif;color:var(--white);line-height:1.3}
.dash-idea-stat-val--green{color:var(--green)}
.dash-idea-stat-val--accent{color:var(--accent)}
.dash-idea-stat-lbl{font:500 10px 'Montserrat',sans-serif;color:var(--grey);text-transform:uppercase;letter-spacing:.3px}
.dash-ideas-cats{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.dash-idea-cat{display:inline-flex;align-items:center;gap:4px;font:500 11px 'Montserrat',sans-serif;color:var(--cat-color,var(--grey));padding:3px 10px;border-radius:12px;background:var(--bg);border:1px solid var(--line)}
.dash-idea-cat strong{font-weight:700}
.dash-widget-link{display:block;text-align:center;font:600 12px 'Montserrat',sans-serif;color:var(--accent);text-decoration:none;padding:8px;border:1px solid var(--line);border-radius:8px;transition:.2s}
.dash-widget-link:hover{background:var(--accent-dim);border-color:var(--accent)}

/* Quick links */
.dash-widget--links{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:12px}
.dash-quick-link{display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:8px;text-decoration:none;color:var(--grey);font:500 12px 'Montserrat',sans-serif;transition:.2s;border:1px solid transparent}
.dash-quick-link:hover{background:var(--accent-dim);color:var(--accent);border-color:var(--line)}
.dash-quick-link svg{color:var(--accent)}

/* ── Dashboard responsive ── */
@media(max-width:900px){
    .dash-grid{grid-template-columns:1fr}
    .dash-col-side{position:static;display:grid;grid-template-columns:1fr 1fr;gap:16px}
    .dash-widget--links{grid-column:1/-1}
}
@media(max-width:640px){
    .dash-stats-row{grid-template-columns:1fr 1fr}
    .dash-greeting{flex-direction:column;align-items:flex-start;gap:12px}
    .dash-greeting-text{flex-direction:column;gap:2px}
    .dash-hello{font-size:20px}
    .dash-username{font-size:22px}
    .dash-col-side{grid-template-columns:1fr}
    .dash-book-filters{flex-wrap:wrap}
    .dash-section-header{flex-direction:column;align-items:flex-start;gap:10px}
}

/* --- Modal --- */
.modal-overlay{position:fixed;inset:0;background:var(--modal-overlay-bg);backdrop-filter:blur(10px);display:flex;align-items:center;justify-content:center;z-index:200;padding:24px}
.modal{background:var(--bg3);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--modal-shadow);width:100%;max-width:520px;max-height:90vh;overflow-y:auto;padding:28px}
.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}
.modal-header h2{font-size:18px;font-weight:700}
.modal-close{background:0;border:0;color:var(--grey);cursor:pointer;padding:4px;display:flex;align-items:center;transition:.2s}
.modal-close:hover{color:var(--accent)}
.modal-close svg{width:20px;height:20px}

/* Template selector */
.template-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:8px}
.template-option input{display:none}
.template-card{display:flex;flex-direction:column;align-items:center;gap:6px;padding:14px 8px;border:1px solid var(--line);border-radius:var(--r);cursor:pointer;font-size:11px;text-align:center;transition:.2s}
.template-option input:checked+.template-card{border-color:var(--accent);background:var(--accent-dim)}
.template-icon{width:24px;height:24px;color:var(--grey);transition:.2s}
.template-option input:checked+.template-card .template-icon{color:var(--accent)}

/* --- Library --- */
.library-section{max-width:1100px;margin:0 auto;padding:40px 24px}

/* --- Editor Layout --- */
.editor-layout{display:flex;height:calc(100vh - 65px);overflow:hidden}
.editor-sidebar{width:var(--editor-sidebar-width);background:var(--bg2);border-right:1px solid var(--line);display:flex;flex-direction:column;flex-shrink:0;transition:width .2s}
.editor-sidebar.collapsed{width:0;overflow:hidden}
.sidebar-header{display:flex;align-items:center;gap:8px;padding:14px 16px;border-bottom:1px solid var(--line)}
.sidebar-back{color:var(--grey);text-decoration:none;display:flex;align-items:center;transition:.2s}
.sidebar-back:hover{color:var(--accent)}
.sidebar-title{flex:1;font-size:13px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sidebar-toggle-btn{background:0;border:0;color:var(--grey);cursor:pointer;display:flex;align-items:center;padding:4px}
.sidebar-toggle-btn:hover{color:var(--accent)}
.sidebar-actions{display:flex;gap:8px;padding:10px 16px;border-bottom:1px solid var(--line)}
.chapter-list{flex:1;overflow-y:auto;padding:8px 0}
.chapter-item{display:flex;align-items:center;gap:8px;padding:10px 16px;cursor:pointer;font-size:12px;transition:.15s;border-left:3px solid transparent}
.chapter-item:hover{background:var(--bg-hover)}
.chapter-item.active{background:var(--accent-dim);border-left-color:var(--accent);color:var(--accent)}
.chapter-drag{color:var(--muted);cursor:grab}
.chapter-name{flex:1;line-height:1.4;word-break:break-word}
.chapter-words{font-size:10px;color:var(--grey)}
.sidebar-footer{padding:10px 16px;border-top:1px solid var(--line);font-size:11px;color:var(--grey)}
.book-word-count{font-weight:600}

/* --- Editor Main --- */
.editor-main{flex:1;display:flex;flex-direction:column;overflow:hidden}
.editor-toolbar{display:flex;align-items:center;gap:4px;padding:6px 16px;background:var(--bg2);border-bottom:1px solid var(--line);height:var(--editor-toolbar-height);flex-shrink:0;overflow-x:auto}
.toolbar-group{display:flex;align-items:center;gap:2px}
.toolbar-group+.toolbar-group{margin-left:6px;padding-left:6px;border-left:1px solid var(--line)}
.toolbar-btn{background:0;border:1px solid transparent;color:var(--light);width:32px;height:32px;border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.15s}
.toolbar-btn:hover{background:var(--accent-dim);color:var(--accent);border-color:var(--line)}
.toolbar-btn.active{background:var(--accent-dim);color:var(--accent)}
.toolbar-btn-text{font:600 12px 'Montserrat',sans-serif}
.toolbar-spacer{flex:1}
.chapter-title-input{background:0;border:0;color:var(--white);font:600 13px 'Montserrat',sans-serif;min-width:120px;max-width:400px;flex:1;padding:4px 8px;border-radius:6px;outline:none;transition:.2s}
.chapter-title-input:focus{background:var(--bg);border:1px solid var(--line)}
.toolbar-status{gap:10px}
.word-count-display{font-size:10px;color:var(--grey);white-space:nowrap}
.save-status{font-size:10px;color:var(--green);font-weight:600;white-space:nowrap;display:inline-flex;align-items:center;gap:3px}
.save-status.saving{color:var(--yellow)}
.save-status.error{color:var(--red)}

/* --- Tiptap Editor --- */
.editor-container{flex:1;overflow-y:auto;display:flex;justify-content:center;padding:40px 24px}
.tiptap-editor{max-width:680px;width:100%;font-family:var(--font-literary);font-size:16px;line-height:1.85;color:var(--white);outline:none;min-height:400px}
.tiptap-editor .ProseMirror{outline:none;min-height:400px}
.tiptap-editor .ProseMirror p{margin-bottom:1em}
.tiptap-editor .ProseMirror h1,.tiptap-editor .ProseMirror h2,.tiptap-editor .ProseMirror h3{font-family:var(--font-display);font-weight:700;margin:1.5em 0 .5em;line-height:1.3}
.tiptap-editor .ProseMirror h2{font-size:1.5em}
.tiptap-editor .ProseMirror h3{font-size:1.2em}
.tiptap-editor .ProseMirror blockquote{border-left:3px solid var(--accent);padding-left:20px;margin:1em 0;color:var(--grey);font-style:italic}
.tiptap-editor .ProseMirror ul,.tiptap-editor .ProseMirror ol{margin:1em 0;padding-left:28px}
.tiptap-editor .ProseMirror li{margin-bottom:.3em}
.tiptap-editor .ProseMirror hr{border:0;height:1px;background:var(--line);margin:2em 0}
.tiptap-editor .ProseMirror code{font-family:monospace;background:var(--accent-dim);padding:2px 6px;border-radius:4px;font-size:.9em}
.tiptap-editor .ProseMirror mark{background:var(--suggestion-bg);padding:1px 2px;border-radius:2px}
.tiptap-editor .ProseMirror .is-empty::before{content:attr(data-placeholder);color:var(--muted);pointer-events:none;float:left;height:0}
/* Paragraph hover — subtle left accent bar for selection affordance */
.tiptap-editor .ProseMirror p,.tiptap-editor .ProseMirror blockquote{position:relative;transition:background .15s;border-radius:3px}
.tiptap-editor .ProseMirror p::after{content:'';position:absolute;left:-12px;top:4px;bottom:4px;width:2px;background:var(--accent);border-radius:1px;opacity:0;transition:opacity .15s}
.tiptap-editor .ProseMirror p:hover::after{opacity:.2}
.tiptap-editor .ProseMirror p:hover{background:var(--accent-dim)}

/* --- Plan Page --- */
.plan-section{max-width:900px;margin:0 auto;padding:40px 24px}
.plan-header{display:flex;align-items:center;gap:16px;margin-bottom:32px;flex-wrap:wrap}
.plan-header h1{flex:1;font-size:22px;font-weight:700}
.book-type-badge{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;padding:4px 10px;border-radius:12px;background:var(--accent-dim);color:var(--accent)}
.plan-grid{display:grid;gap:24px}
.plan-card{background:var(--bg3);border:1px solid var(--line);border-radius:var(--r);padding:24px}
.plan-card h3{font-size:15px;font-weight:700;margin-bottom:16px}
.plan-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
.plan-card-header h3{margin-bottom:0}
.plan-chapter-list{display:flex;flex-direction:column;gap:8px}
.plan-chapter-item{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--bg);border:1px solid var(--line);border-radius:8px}
.plan-ch-order{width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:var(--accent-dim);color:var(--accent);border-radius:50%;font-size:11px;font-weight:700;flex-shrink:0}
.plan-ch-info{flex:1;display:flex;align-items:center;gap:12px}
.plan-ch-title{flex:1;background:0;border:0;color:var(--white);font:500 13px 'Montserrat',sans-serif;outline:none;padding:4px}
.plan-ch-title:focus{background:var(--bg3);border-radius:4px}
.plan-ch-words{font-size:10px;color:var(--grey);white-space:nowrap}

/* --- AI Floating Bubble --- */
.ai-bubble{position:fixed;z-index:300;transform:translate(-50%,-100%);opacity:0;pointer-events:none;transition:opacity .15s}
.ai-bubble.visible{opacity:1;pointer-events:auto}
.ai-bubble-actions{display:flex;align-items:center;gap:1px;padding:4px;background:var(--bg3);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 30px rgba(0,0,0,.15),0 0 0 1px var(--line)}
.ai-bubble-btn{background:0;border:0;width:30px;height:30px;border-radius:7px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--grey);transition:.15s}
.ai-bubble-btn:hover{background:var(--accent-dim);color:var(--accent)}
.ai-bubble-sep{width:1px;height:18px;background:var(--line);margin:0 2px}

/* --- AI Context Menu --- */
.ai-ctx-menu{position:fixed;z-index:310;background:var(--bg3);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--modal-shadow);padding:6px;min-width:180px;opacity:0;pointer-events:none;transition:opacity .12s}
.ai-ctx-menu.visible{opacity:1;pointer-events:auto}
.ai-ctx-item{display:flex;align-items:center;gap:10px;width:100%;padding:8px 12px;background:0;border:0;border-radius:6px;color:var(--light);font:500 12px 'Montserrat',sans-serif;cursor:pointer;transition:.12s;text-align:left}
.ai-ctx-item:hover{background:var(--accent-dim);color:var(--accent)}
.ai-ctx-item svg{color:var(--grey);flex-shrink:0}
.ai-ctx-item:hover svg{color:var(--accent)}
.ai-ctx-sep{height:1px;background:var(--line);margin:4px 0}

/* --- AI Suggestion Overlay --- */
.ai-suggestion-overlay{position:absolute;left:50%;transform:translateX(-50%);z-index:200;width:90%;max-width:620px;background:var(--bg3);border:1px solid var(--accent);border-radius:var(--r);box-shadow:0 12px 40px rgba(0,0,0,.12),0 0 0 1px var(--accent-dim);opacity:0;pointer-events:none;transition:opacity .2s;overflow:hidden}
.ai-suggestion-overlay.visible{opacity:1;pointer-events:auto}
.ai-suggestion-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:var(--accent-dim);border-bottom:1px solid var(--line)}
.ai-suggestion-label{display:flex;align-items:center;gap:6px;font:700 11px 'Montserrat',sans-serif;color:var(--accent);letter-spacing:.5px}
.ai-suggestion-actions{display:flex;gap:4px}
.ai-sug-btn{background:0;border:1px solid var(--line);width:28px;height:28px;border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--grey);transition:.15s}
.ai-sug-btn:hover{border-color:var(--accent);color:var(--accent)}
.ai-sug-accept{color:var(--green);border-color:rgba(22,163,74,.2)}
.ai-sug-accept:hover{background:rgba(22,163,74,.1);border-color:var(--green)}
.ai-sug-reject{color:var(--red);border-color:rgba(220,38,38,.2)}
.ai-sug-reject:hover{background:rgba(220,38,38,.1);border-color:var(--red)}
.ai-suggestion-content{padding:16px;font-family:var(--font-literary);font-size:15px;line-height:1.8;color:var(--white);max-height:300px;overflow-y:auto;white-space:pre-wrap}
.ai-suggestion-loading{display:flex;align-items:center;justify-content:center;padding:16px}
.ai-spinner{animation:spin 1s linear infinite;color:var(--accent)}
@keyframes spin{to{transform:rotate(360deg)}}

/* --- AI Chat Panel --- */
.ai-chat-panel{width:0;overflow:hidden;background:var(--bg2);border-left:1px solid var(--line);display:flex;flex-direction:column;transition:width .2s;flex-shrink:0}
.ai-chat-panel.open{width:340px}
.ai-chat-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--line);flex-shrink:0}
.ai-chat-title{display:flex;align-items:center;gap:8px;font:700 13px 'Montserrat',sans-serif;color:var(--accent)}
.ai-chat-close{background:0;border:0;color:var(--grey);cursor:pointer;display:flex;align-items:center;padding:4px;transition:.15s}
.ai-chat-close:hover{color:var(--accent)}
.ai-chat-messages{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px}
.ai-chat-msg{padding:10px 14px;border-radius:12px;font-size:13px;line-height:1.6;max-width:90%;word-break:break-word;white-space:pre-wrap}
.ai-chat-user{background:var(--accent);color:#fff;align-self:flex-end;border-bottom-right-radius:4px}
.ai-chat-assistant{background:var(--bg3);border:1px solid var(--line);color:var(--white);align-self:flex-start;border-bottom-left-radius:4px}
.ai-chat-input{display:flex;gap:8px;padding:12px 16px;border-top:1px solid var(--line);flex-shrink:0}
.ai-chat-input input{flex:1;padding:8px 12px;background:var(--bg);border:1px solid var(--line);border-radius:8px;color:var(--white);font:400 13px 'Montserrat',sans-serif;outline:none}
.ai-chat-input input:focus{border-color:var(--accent)}
.ai-chat-send{background:var(--accent);border:0;width:34px;height:34px;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;transition:.15s}
.ai-chat-send:hover{background:var(--accent2)}

/* --- AI Paragraph Hover Bar --- */
.ai-hover-bar{position:fixed;z-index:250;display:flex;gap:2px;padding:3px;background:var(--bg3);border:1px solid var(--line);border-radius:8px;box-shadow:0 4px 16px rgba(0,0,0,.1);opacity:0;pointer-events:none;transition:opacity .15s}
.ai-hover-bar.visible{opacity:1;pointer-events:auto}
.ai-hb-btn{background:0;border:0;width:24px;height:24px;border-radius:5px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--muted);transition:.12s}
.ai-hb-btn:hover{background:var(--accent-dim);color:var(--accent)}

/* --- AI Chat Context Bar --- */
.ai-chat-context-bar{display:flex;align-items:center;gap:8px;padding:8px 14px;background:var(--accent-dim);border-bottom:1px solid var(--line);flex-shrink:0}
.ai-ctx-badge{display:flex;align-items:center;gap:6px;flex:1;overflow:hidden}
.ai-ctx-badge svg{color:var(--accent);flex-shrink:0}
.ai-ctx-text{font:italic 11px 'Montserrat',sans-serif;color:var(--accent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ai-ctx-clear{background:0;border:0;color:var(--grey);cursor:pointer;display:flex;padding:2px;border-radius:4px;transition:.15s}
.ai-ctx-clear:hover{color:var(--accent);background:var(--line)}

/* --- AI Chat System Messages --- */
.ai-chat-system{background:var(--accent-dim);border:1px dashed var(--line);color:var(--accent);align-self:center;font:italic 11px 'Montserrat',sans-serif;padding:8px 12px;border-radius:8px;max-width:95%;text-align:center}

/* --- AI Chat Apply Button --- */
.ai-chat-apply-btn{display:flex;align-items:center;gap:4px;margin-top:8px;padding:5px 10px;background:var(--accent-dim);border:1px solid var(--accent);border-radius:6px;color:var(--accent);font:600 10px 'Montserrat',sans-serif;cursor:pointer;transition:.15s}
.ai-chat-apply-btn:hover{background:var(--accent);color:#fff}
.ai-chat-apply-btn:disabled{opacity:.5;cursor:default}

/* --- AI Suggestion Chat button --- */
.ai-sug-chat{color:var(--accent);border-color:var(--accent-dim)}
.ai-sug-chat:hover{background:var(--accent-dim)}

/* --- AI Chat bubble highlight for chat button --- */
.ai-bubble-chat-btn{background:var(--accent-dim) !important;color:var(--accent) !important;border-radius:7px}
.ai-bubble-chat-btn:hover{background:var(--accent) !important;color:#fff !important}

/* --- AI toolbar button glow --- */
.toolbar-btn-ai{position:relative}
.toolbar-btn-ai::after{content:'';position:absolute;inset:-1px;border-radius:8px;background:linear-gradient(135deg,var(--accent-dim),transparent);opacity:0;transition:.2s;pointer-events:none}
.toolbar-btn-ai:hover::after{opacity:1}

/* --- Stats Page (redesigned: editorial / minimalist) --- */
.st-section{max-width:1080px;margin:0 auto;padding:48px 28px 80px;font-family:'Montserrat',sans-serif}

.st-head{position:relative;margin-bottom:48px}
.st-back{margin-bottom:18px}
.st-eyebrow{font:700 10px 'Montserrat',sans-serif;letter-spacing:6px;text-transform:uppercase;color:var(--accent);opacity:.75;margin-bottom:8px}
.st-title{font:700 38px/1.1 var(--font-display);color:var(--white);margin:0;letter-spacing:-.5px}
.st-rule{margin-top:22px;height:1px;background:linear-gradient(90deg,var(--accent) 0,var(--accent) 64px,var(--line) 64px,var(--line) 100%)}

.st-loading{display:flex;align-items:center;justify-content:center;gap:10px;padding:80px 0;color:var(--accent);font:500 13px 'Montserrat',sans-serif}

/* Hero monumental numerals */
.st-hero{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;align-items:center;gap:24px;padding:24px 0 40px}
.st-hero-fig{text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px}
.st-hero-num{font:700 68px/1 'Playfair Display',serif;color:var(--white);letter-spacing:-2px;font-feature-settings:"lnum" 1,"tnum" 1}
.st-hero-lbl{font:600 10px 'Montserrat',sans-serif;letter-spacing:3px;text-transform:uppercase;color:var(--grey)}
.st-hero-sep{width:1px;height:54px;background:var(--line)}

/* Secondary pills (compact, borderless) */
.st-pills{display:flex;flex-wrap:wrap;gap:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-bottom:48px}
.st-pill{flex:1;min-width:130px;padding:18px 16px;text-align:center;border-right:1px solid var(--line)}
.st-pill:last-child{border-right:0}
.st-pill-val{display:block;font:700 22px 'Playfair Display',serif;color:var(--accent);margin-bottom:4px}
.st-pill-lbl{font:500 9px 'Montserrat',sans-serif;letter-spacing:2px;text-transform:uppercase;color:var(--grey)}

/* Cards */
.st-card{background:var(--bg3);border:1px solid var(--line);border-radius:14px;padding:26px 28px;margin-bottom:20px;transition:.2s}
.st-card:hover{border-color:rgba(201,163,85,.35)}
.st-card-wide{}
.st-card h3{font:700 11px 'Montserrat',sans-serif;letter-spacing:2.5px;text-transform:uppercase;color:var(--accent);margin:0 0 6px}
.st-card-desc{font:400 12px/1.6 'Montserrat',sans-serif;color:var(--muted);margin:0 0 20px;max-width:540px}
.st-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:14px;flex-wrap:wrap}
.st-legend{display:flex;gap:14px;font:500 10px 'Montserrat',sans-serif;color:var(--grey);text-transform:uppercase;letter-spacing:1.5px}
.st-legend-item{display:inline-flex;align-items:center;gap:6px}
.st-dot{width:14px;height:2px;display:inline-block;background:var(--accent)}
.st-dot-dash{background:repeating-linear-gradient(90deg,var(--grey) 0,var(--grey) 3px,transparent 3px,transparent 6px)}

.st-row{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px}
.st-row > .st-card{margin-bottom:0}

/* Area chart */
.st-area{width:100%;overflow:hidden}
.st-area svg{display:block;overflow:visible}
.st-grid{stroke:var(--line);stroke-width:1;stroke-dasharray:0;opacity:.45}
.st-axis-lbl{font:500 9px 'Montserrat',sans-serif;fill:var(--grey);letter-spacing:.5px}
.st-avg-line{stroke:var(--grey);stroke-width:1;stroke-dasharray:4 4;opacity:.7}
.st-pt circle{fill:var(--bg3);stroke:var(--accent);stroke-width:2;transition:.2s;cursor:pointer}
.st-pt:hover circle{r:6;fill:var(--accent)}

/* Donut */
.st-donut-wrap{display:flex;align-items:center;gap:24px}
.st-donut-wrap canvas{flex-shrink:0}
.st-donut-legend{display:flex;flex-direction:column;gap:10px;flex:1;min-width:0}
.donut-leg-item{display:flex;align-items:center;gap:10px;font:500 11px 'Montserrat',sans-serif;color:var(--light)}
.donut-leg-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.donut-leg-lbl{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.donut-leg-item strong{font:700 11px 'Playfair Display',serif;color:var(--white);font-size:14px}

/* Bars */
.st-bars{display:flex;flex-direction:column;gap:8px;max-height:280px;overflow-y:auto;padding-right:4px}
.st-bar-row{display:grid;grid-template-columns:130px 1fr 38px;align-items:center;gap:10px}
.st-bar-label{font:500 10px 'Montserrat',sans-serif;color:var(--grey);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.st-bar-track{height:6px;background:var(--bg);border-radius:99px;overflow:hidden}
.st-bar-fill{height:100%;background:linear-gradient(90deg,var(--accent),#B5651D);border-radius:99px;transition:width .6s cubic-bezier(.4,0,.2,1)}
.st-bar-value{font:600 10px 'Montserrat',sans-serif;color:var(--accent);text-align:right}

/* Word cloud */
.st-card-cloud{padding:26px 22px}
.st-cloud{width:100%;min-height:320px;position:relative}
.st-cloud-svg text{cursor:default;transition:opacity .2s}
.st-cloud-svg:hover text{opacity:.25}
.st-cloud-svg text:hover{opacity:1 !important}

/* Heatmap */
.st-heatmap{display:grid;grid-template-columns:repeat(auto-fill,minmax(56px,1fr));gap:6px}
.st-hm-cell{aspect-ratio:1;border-radius:6px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;transition:.2s;cursor:default;border:1px solid rgba(201,163,85,.12)}
.st-hm-cell:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(0,0,0,.25)}
.st-hm-num{font:600 8px 'Montserrat',sans-serif;letter-spacing:1px;color:var(--white);opacity:.65}
.st-hm-val{font:700 14px 'Playfair Display',serif;color:var(--white)}

@media(max-width:780px){
    .st-section{padding:32px 18px 60px}
    .st-title{font-size:28px}
    .st-hero{grid-template-columns:1fr;gap:18px}
    .st-hero-sep{display:none}
    .st-hero-num{font-size:48px}
    .st-pills{flex-direction:column}
    .st-pill{border-right:0;border-bottom:1px solid var(--line)}
    .st-pill:last-child{border-bottom:0}
    .st-row{grid-template-columns:1fr}
    .st-card{padding:20px 18px}
    .st-bar-row{grid-template-columns:90px 1fr 36px}
    .st-donut-wrap{flex-direction:column;align-items:flex-start}
}

/* --- Legacy interview styles (still used by /book/{id}/interview) --- */
.iv-section{max-width:780px;margin:0 auto;padding:48px 28px 80px;font-family:'Montserrat',sans-serif}
.iv-page-head{margin-bottom:32px}
.iv-eyebrow{font:700 10px 'Montserrat',sans-serif;letter-spacing:6px;text-transform:uppercase;color:var(--accent);opacity:.75;margin:18px 0 8px}
.iv-page-title{font:700 32px var(--font-display);color:var(--white);margin:0}
.iv-hero-deco{position:absolute;top:-12px;left:50%;transform:translateX(-50%);color:var(--accent);pointer-events:none}
.interview-hero{position:relative;text-align:center;padding:60px 0 40px}
.interview-icon{position:relative;z-index:1;width:64px;height:64px;border-radius:50%;background:var(--accent-dim);display:flex;align-items:center;justify-content:center;margin:0 auto 18px;border:1px solid rgba(201,163,85,.4)}
.interview-icon svg{color:var(--accent)}
.interview-hero h2{font:700 26px 'Playfair Display',serif;margin-bottom:10px;color:var(--white)}
.interview-hero p{font:400 13px/1.7 'Montserrat',sans-serif;color:var(--grey);max-width:520px;margin:0 auto 22px}
.interview-chat{max-width:720px;margin:0 auto}
.interview-messages{max-height:62vh;overflow-y:auto;display:flex;flex-direction:column;gap:14px;padding:16px 0;margin-bottom:12px}
.iv-msg{display:flex;gap:10px;animation:fadeSlideUp .3s ease}
.iv-msg-user{flex-direction:row-reverse}
.iv-msg-avatar{width:32px;height:32px;border-radius:50%;background:var(--accent);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.iv-msg-avatar svg{color:#fff}
.iv-msg-body{padding:12px 16px;border-radius:12px;font:400 13px/1.7 'Montserrat',sans-serif;max-width:80%;white-space:pre-wrap}
.iv-msg-assistant .iv-msg-body{background:var(--bg3);border:1px solid var(--line);color:var(--light);border-bottom-left-radius:4px}
.iv-msg-user .iv-msg-body{background:var(--accent);color:#fff;border-bottom-right-radius:4px}
.iv-msg-system{background:var(--accent-dim) !important;border:1px dashed var(--line) !important;color:var(--accent) !important;font-style:italic;font-size:11px;text-align:center;max-width:100% !important;border-radius:8px !important}
.interview-input{display:flex;gap:8px}
.interview-input input{flex:1;padding:12px 16px;background:var(--bg3);border:1px solid var(--line);border-radius:10px;color:var(--white);font:400 13px 'Montserrat',sans-serif;outline:none;transition:.2s}
.interview-input input:focus{border-color:var(--accent);background:var(--bg)}

/* --- Craft Page (Writing Guide) --- */
.craft{max-width:1100px;margin:0 auto;padding:0 24px 60px}
.craft-hero{text-align:center;padding:60px 0 40px;position:relative}
.craft-hero-deco{position:absolute;top:50%;left:50%;width:280px;height:280px;transform:translate(-50%,-50%);border-radius:50%;border:1px solid var(--line);opacity:.12;pointer-events:none}
.craft-label{font:700 9px 'Montserrat',sans-serif;letter-spacing:6px;text-transform:uppercase;color:var(--accent);opacity:.5}
.craft-title{font:900 42px var(--font-display);margin:8px 0 12px;background:linear-gradient(135deg,var(--white),var(--accent));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.craft-sub{font:400 14px 'Montserrat',sans-serif;color:var(--grey);max-width:540px;margin:0 auto;line-height:1.7}

/* Filters */
.craft-filters{display:flex;gap:6px;justify-content:center;margin-bottom:32px;flex-wrap:wrap}
.craft-filter{background:var(--bg3);border:1px solid var(--line);color:var(--grey);font:600 11px 'Montserrat',sans-serif;padding:6px 14px;border-radius:20px;cursor:pointer;transition:.2s}
.craft-filter:hover{border-color:var(--accent);color:var(--accent)}
.craft-filter.active{background:var(--accent);color:#fff;border-color:var(--accent)}

/* Grid */
.craft-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}

/* Card */
.craft-card{background:var(--bg3);border:1px solid var(--line);border-radius:12px;padding:24px;cursor:pointer;transition:all .25s;position:relative;overflow:hidden;display:flex;flex-direction:column;animation:fadeSlideUp .4s ease both}
.craft-card:hover{transform:translateY(-3px);box-shadow:var(--card-shadow-hover);border-color:var(--accent)}
.craft-card-cat{display:inline-block;font:700 8px 'Montserrat',sans-serif;letter-spacing:1.5px;text-transform:uppercase;color:#fff;padding:3px 8px;border-radius:4px;margin-bottom:12px;align-self:flex-start}
.craft-card-title{font:700 17px 'Playfair Display',serif;margin-bottom:6px;line-height:1.3}
.craft-card-author{font:500 11px 'Montserrat',sans-serif;color:var(--accent);margin-bottom:10px}
.craft-card-summary{font:400 12px 'Montserrat',sans-serif;color:var(--grey);line-height:1.7;flex:1}
.craft-card-cta{display:flex;align-items:center;gap:4px;margin-top:14px;font:600 10px 'Montserrat',sans-serif;color:var(--accent);letter-spacing:.5px;opacity:.6;transition:.2s}
.craft-card:hover .craft-card-cta{opacity:1}

/* Detail overlay */
.craft-detail{position:fixed;inset:0;z-index:500;background:var(--modal-overlay-bg);backdrop-filter:blur(12px);overflow-y:auto;padding:40px 24px;scrollbar-width:none;-ms-overflow-style:none}
.craft-detail::-webkit-scrollbar{display:none}
.craft-detail-close{position:fixed;top:20px;right:24px;z-index:510;background:var(--bg3);border:1px solid var(--line);width:36px;height:36px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--grey);transition:.2s;box-shadow:var(--card-shadow)}
.craft-detail-close:hover{border-color:var(--accent);color:var(--accent)}
.craft-detail-nav{position:fixed;top:50%;right:24px;z-index:510;display:flex;flex-direction:column;gap:8px;transform:translateY(-50%)}
.craft-nav-btn{background:var(--bg3);border:1px solid var(--line);width:36px;height:36px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--grey);transition:.2s;box-shadow:var(--card-shadow)}
.craft-nav-btn:hover{border-color:var(--accent);color:var(--accent)}
.craft-detail-inner{max-width:780px;margin:0 auto;animation:fadeSlideUp .3s ease}

/* Detail hero */
.cd-hero{text-align:center;padding-bottom:32px;margin-bottom:32px;border-bottom:1px solid var(--line)}
.cd-cat{display:inline-block;font:700 8px 'Montserrat',sans-serif;letter-spacing:1.5px;text-transform:uppercase;color:#fff;padding:4px 12px;border-radius:4px;margin-bottom:8px}
.cd-movement{font:italic 12px 'Playfair Display',serif;color:var(--grey);margin-bottom:16px}
.cd-title{font:900 36px 'Playfair Display',serif;line-height:1.2;margin-bottom:10px}
.cd-author{font:500 14px 'Montserrat',sans-serif;color:var(--accent)}
.cd-years{color:var(--grey);font-weight:400}
.cd-summary{font:400 15px 'Montserrat',sans-serif;color:var(--grey);line-height:1.8;max-width:580px;margin:16px auto 0}

/* Detail body */
.cd-body{display:flex;flex-direction:column;gap:28px}
.cd-section{background:var(--bg3);border:1px solid var(--line);border-radius:12px;padding:28px}
.cd-section h3{font:700 10px 'Montserrat',sans-serif;letter-spacing:2px;text-transform:uppercase;color:var(--accent);margin-bottom:14px}
.cd-section p{font:400 14px 'Montserrat',sans-serif;line-height:1.85;color:var(--light);margin-bottom:12px}
.cd-section p:last-child{margin-bottom:0}

/* Deep dive */
.cd-deep-dive p:first-of-type::first-letter{font:700 2.2em 'Playfair Display',serif;color:var(--accent);float:left;line-height:1;margin-right:6px;margin-top:4px}

/* Examples */
.cd-example{margin-bottom:24px;padding-bottom:24px;border-bottom:1px solid var(--line)}
.cd-example:last-child{margin-bottom:0;padding-bottom:0;border-bottom:0}
.cd-ex-source{font:700 11px 'Montserrat',sans-serif;letter-spacing:1px;color:var(--accent);margin-bottom:10px}
.cd-ex-passage{font:italic 15px 'Playfair Display',serif;line-height:1.75;color:var(--light);padding:16px 20px;border-left:3px solid var(--accent);background:var(--accent-dim);border-radius:0 8px 8px 0;margin-bottom:12px}
.cd-ex-analysis{font:400 13px 'Montserrat',sans-serif;color:var(--grey);line-height:1.7;padding-left:20px;border-left:2px solid var(--line)}

/* Two-column layout */
.cd-two-col{display:grid;grid-template-columns:1fr 1fr;gap:20px}

/* Exercise */
.cd-exercise{background:linear-gradient(135deg,var(--accent-dim),var(--bg3));border-color:var(--accent)}
.cd-exercise h3{color:var(--accent)}

/* Pitfalls */
.cd-pitfalls ul{list-style:none;padding:0}
.cd-pitfalls li{padding:8px 0 8px 16px;border-bottom:1px solid var(--line);font:400 13px 'Montserrat',sans-serif;color:var(--light);line-height:1.6;position:relative}
.cd-pitfalls li::before{content:'';position:absolute;left:0;top:14px;width:6px;height:6px;border-radius:50%;background:var(--red);opacity:.5}
.cd-pitfalls li:last-child{border-bottom:0}

/* Movement */
.cd-movement-name{font:700 16px 'Playfair Display',serif;color:var(--white);margin-bottom:8px}

/* Practitioners */
.cd-prac-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.cd-prac-card{padding:16px;background:var(--bg);border:1px solid var(--line);border-radius:8px;transition:.2s}
.cd-prac-card:hover{border-color:var(--accent)}
.cd-prac-name{font:700 13px 'Montserrat',sans-serif;color:var(--white);display:block;margin-bottom:6px}
.cd-prac-note{font:400 12px 'Montserrat',sans-serif;color:var(--grey);line-height:1.6}

/* Quotes */
.cd-quote{font:italic 16px 'Playfair Display',serif;line-height:1.7;color:var(--light);padding:16px 0 16px 20px;border-left:3px solid var(--accent);margin-bottom:16px}
.cd-quote:last-child{margin-bottom:0}
.cd-quote cite{display:block;font:500 11px 'Montserrat',sans-serif;color:var(--accent);margin-top:8px;font-style:normal;letter-spacing:.5px}

/* Related techniques */
.cd-related-links{display:flex;gap:8px;flex-wrap:wrap}
.cd-related-btn{background:var(--bg);border:1px solid var(--line);color:var(--light);font:600 12px 'Montserrat',sans-serif;padding:8px 14px;border-radius:8px;cursor:pointer;transition:.2s}
.cd-related-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-dim)}

/* Responsive */
@media(max-width:768px){
    .craft-title{font-size:28px}
    .craft-grid{grid-template-columns:1fr}
    .cd-title{font-size:24px}
    .cd-two-col{grid-template-columns:1fr}
    .craft-detail-nav{right:12px}
    .cd-prac-grid{grid-template-columns:1fr}
}

/* --- Classics Page --- */
.classics-section{max-width:1100px;margin:0 auto;padding:0 24px 60px}
.classics-hero{text-align:center;padding:60px 0 40px;position:relative}
.classics-hero-deco{position:absolute;top:50%;left:50%;width:280px;height:280px;transform:translate(-50%,-50%);border-radius:50%;border:1px solid var(--line);opacity:.12;pointer-events:none}
.classics-label{font:700 9px 'Montserrat',sans-serif;letter-spacing:6px;text-transform:uppercase;color:var(--accent);opacity:.5}
.classics-title{font:900 42px 'Playfair Display',serif;margin:8px 0 12px;background:linear-gradient(135deg,var(--white),var(--accent));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.classics-sub{font:400 14px 'Montserrat',sans-serif;color:var(--grey);max-width:540px;margin:0 auto;line-height:1.7}
.classics-search{display:flex;gap:8px;max-width:600px;margin:0 auto 32px}
.classics-search input{flex:1;padding:12px 16px;background:var(--bg3);border:1px solid var(--line);border-radius:var(--r);color:var(--white);font:400 14px 'Montserrat',sans-serif;outline:none}
.classics-search input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}
.classics-results{display:grid;gap:12px;margin-bottom:32px}
.classics-loading{display:flex;align-items:center;justify-content:center;gap:8px;padding:20px;color:var(--accent);font:500 13px 'Montserrat',sans-serif}
.classics-empty{text-align:center;padding:40px;color:var(--grey)}

/* Search results */
.cl-search-result{display:flex;gap:16px;background:var(--bg3);border:1px solid var(--line);border-radius:12px;padding:16px;transition:.2s}
.cl-search-result:hover{border-color:var(--accent)}
.cl-search-cover{width:70px;height:100px;border-radius:6px;background:var(--accent-dim);background-size:cover;background-position:center;flex-shrink:0;display:flex;align-items:center;justify-content:center}
.cl-search-ph{font:800 18px 'Playfair Display',serif;color:var(--accent);opacity:.3}
.cl-search-info{flex:1}
.cl-search-info h3{font:700 15px 'Montserrat',sans-serif;margin-bottom:4px}
.cl-search-author{font:500 12px 'Montserrat',sans-serif;color:var(--accent);margin-bottom:4px}
.cl-search-subjects{font:400 11px 'Montserrat',sans-serif;color:var(--grey);margin-bottom:8px}

/* Featured grid */
.classics-featured-title{font:700 11px 'Montserrat',sans-serif;letter-spacing:2px;text-transform:uppercase;color:var(--accent);margin-bottom:20px;padding-left:4px}
.classics-featured{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}

/* Classic card */
.cl-card{background:var(--bg3);border:1px solid var(--line);border-radius:12px;overflow:hidden;transition:.25s;animation:fadeSlideUp .4s ease both}
.cl-card:hover{transform:translateY(-2px);box-shadow:var(--card-shadow-hover);border-color:var(--accent)}
.cl-card-cover{height:80px;background:linear-gradient(135deg,var(--accent-dim),rgba(135,85,144,.08));display:flex;align-items:center;justify-content:center;position:relative}
.cl-card-initials{font:800 28px 'Playfair Display',serif;color:var(--accent);opacity:.2}
.cl-card-lang{position:absolute;top:8px;right:8px;font:700 8px 'Montserrat',sans-serif;letter-spacing:1px;color:var(--accent);background:var(--accent-dim);padding:2px 6px;border-radius:4px}
.cl-card-body{padding:16px}
.cl-card-title{font:700 14px 'Montserrat',sans-serif;margin-bottom:4px;line-height:1.3}
.cl-card-author{display:block;font:500 11px 'Montserrat',sans-serif;color:var(--accent);margin-bottom:2px}
.cl-card-genre{display:block;font:400 10px 'Montserrat',sans-serif;color:var(--grey);letter-spacing:.5px;margin-bottom:8px}
.cl-card-desc{font:400 12px 'Montserrat',sans-serif;color:var(--grey);line-height:1.6;margin-bottom:12px}
.cl-import-btn{width:100%}

/* --- Pantheon (Writers Page) --- */
.pantheon{max-width:1100px;margin:0 auto;padding:0 24px 60px}

/* Hero */
.pantheon-hero{text-align:center;padding:60px 0 48px;position:relative}
.pantheon-hero-deco{position:absolute;top:50%;left:50%;width:300px;height:300px;transform:translate(-50%,-50%);border-radius:50%;border:1px solid var(--line);opacity:.15;pointer-events:none}
.pantheon-label{font:700 9px 'Montserrat',sans-serif;letter-spacing:6px;text-transform:uppercase;color:var(--accent);opacity:.5}
.pantheon-title{font:900 42px 'Playfair Display',serif;margin:8px 0 12px;background:linear-gradient(135deg,var(--white),var(--accent));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.pantheon-sub{font:400 14px 'Montserrat',sans-serif;color:var(--grey);max-width:500px;margin:0 auto;line-height:1.7}

/* Grid */
.pantheon-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;margin-bottom:40px}

/* Card */
.pw-card{display:flex;align-items:center;gap:14px;padding:16px;background:var(--bg3);border:1px solid var(--line);border-radius:12px;cursor:pointer;transition:all .25s;position:relative;overflow:hidden;animation:fadeSlideUp .4s ease both}
.pw-card::before{content:'';position:absolute;inset:0;background:linear-gradient(135deg,var(--accent-dim),transparent);opacity:0;transition:opacity .25s}
.pw-card:hover{transform:translateY(-3px);box-shadow:0 12px 32px rgba(0,0,0,.1),0 0 0 1px var(--accent);border-color:var(--accent)}
.pw-card:hover::before{opacity:1}
.pw-card-portrait{width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--purple));display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;z-index:1}
.pw-initials{font:700 14px 'Playfair Display',serif;color:#fff;letter-spacing:1px}
.pw-card-body{flex:1;min-width:0;position:relative;z-index:1}
.pw-card-name{display:block;font:700 14px 'Montserrat',sans-serif;margin-bottom:2px}
.pw-card-years{display:block;font:400 10px 'Montserrat',sans-serif;color:var(--grey);margin-bottom:3px}
.pw-card-tagline{display:block;font:italic 11px 'Playfair Display',serif;color:var(--accent);opacity:.8}
.pw-card-origin{position:absolute;top:8px;right:10px;font:500 8px 'Montserrat',sans-serif;letter-spacing:1px;text-transform:uppercase;color:var(--muted);z-index:1}
.pw-card-loading{opacity:.5;pointer-events:none}

@keyframes fadeSlideUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}

/* Add writer bar */
.pantheon-add{display:flex;gap:8px;max-width:600px;margin:0 auto 40px}
.pantheon-add input{flex:1;padding:12px 16px;background:var(--bg3);border:1px solid var(--line);border-radius:var(--r);color:var(--white);font:400 14px 'Montserrat',sans-serif;outline:none}
.pantheon-add input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}

/* Detail overlay */
.pantheon-detail{position:fixed;inset:0;z-index:500;background:var(--modal-overlay-bg);backdrop-filter:blur(12px);overflow-y:auto;padding:40px 24px;scrollbar-width:none;-ms-overflow-style:none}
.pantheon-detail::-webkit-scrollbar{display:none}
.pantheon-detail-close{position:fixed;top:20px;right:24px;z-index:510;background:var(--bg3);border:1px solid var(--line);width:36px;height:36px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--grey);transition:.2s;box-shadow:var(--card-shadow)}
.pantheon-detail-close:hover{border-color:var(--accent);color:var(--accent)}
.pantheon-detail-inner{max-width:780px;margin:0 auto;animation:fadeSlideUp .3s ease}

/* Detail hero */
.pw-detail-hero{display:flex;align-items:center;gap:24px;margin-bottom:40px;padding-bottom:32px;border-bottom:1px solid var(--line)}
.pw-detail-portrait{width:80px;height:80px;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--purple));display:flex;align-items:center;justify-content:center;flex-shrink:0}
.pw-initials-lg{font:700 24px 'Playfair Display',serif;color:#fff;letter-spacing:2px}
.pw-detail-name{font:900 32px 'Playfair Display',serif;line-height:1.15;margin-bottom:6px}
.pw-detail-sub{display:flex;align-items:center;gap:8px;font:400 12px 'Montserrat',sans-serif;color:var(--grey);margin-bottom:8px}
.pw-dot{width:3px;height:3px;border-radius:50%;background:var(--accent);opacity:.5}
.pw-detail-tagline{font:italic 16px 'Playfair Display',serif;color:var(--accent)}

/* Detail sections grid */
.pw-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.pw-section{background:var(--bg3);border:1px solid var(--line);border-radius:12px;padding:24px;animation:fadeSlideUp .4s ease both}
.pw-section:nth-child(1){animation-delay:.05s}
.pw-section:nth-child(2){animation-delay:.1s}
.pw-section:nth-child(3){animation-delay:.15s;grid-column:1/-1}
.pw-section:nth-child(4){animation-delay:.2s}
.pw-section:nth-child(5){animation-delay:.25s}
.pw-section:nth-child(6){animation-delay:.3s;grid-column:1/-1}
.pw-section:nth-child(7){animation-delay:.35s;grid-column:1/-1}
.pw-section h3{font:700 11px 'Montserrat',sans-serif;letter-spacing:2px;text-transform:uppercase;color:var(--accent);margin-bottom:12px}
.pw-section p{font:400 14px 'Montserrat',sans-serif;line-height:1.8;color:var(--light)}

/* Technique badge */
.pw-technique-badge{display:inline-block;font:700 8px 'Montserrat',sans-serif;letter-spacing:2px;text-transform:uppercase;color:#fff;background:var(--accent);padding:4px 10px;border-radius:4px;margin-bottom:10px}
.pw-section-technique h3{font:700 18px 'Playfair Display',serif;letter-spacing:0;text-transform:none;color:var(--white);margin-bottom:10px}
.pw-section-technique{background:linear-gradient(135deg,var(--accent-dim),var(--bg3));border-color:var(--accent)}

/* Works list */
.pw-works-list{list-style:none;padding:0}
/* Works list — expandable masterpieces */
.pw-works-list{display:flex;flex-direction:column;gap:0}
.pw-work-item{border-bottom:1px solid var(--line)}
.pw-work-item:last-child{border-bottom:0}
.pw-work-header{display:flex;align-items:center;justify-content:space-between;padding:10px 0;cursor:pointer;transition:.15s}
.pw-work-header:hover{color:var(--accent)}
.pw-work-title{font:500 13px 'Montserrat',sans-serif;color:var(--light)}
.pw-work-year{font-weight:400;color:var(--grey)}
.pw-work-chevron{color:var(--muted);transition:transform .2s}
.pw-work-header.pw-work-open .pw-work-chevron{transform:rotate(90deg);color:var(--accent)}
.pw-work-detail{padding:0 0 12px 0}
.pw-work-summary{font:400 12px 'Montserrat',sans-serif;color:var(--grey);line-height:1.7;margin-bottom:8px}
.pw-work-buy{display:inline-flex;align-items:center;gap:5px;font:600 10px 'Montserrat',sans-serif;color:var(--accent);text-decoration:none;padding:4px 10px;border:1px solid var(--accent-dim);border-radius:6px;transition:.15s;letter-spacing:.3px}
.pw-work-buy:hover{background:var(--accent);color:#fff;border-color:var(--accent)}

/* Influenced by tags */
.pw-influenced-tags{display:flex;flex-wrap:wrap;gap:6px}
.pw-inf-tag{font:500 11px 'Montserrat',sans-serif;color:var(--light);background:var(--bg);border:1px solid var(--line);padding:4px 10px;border-radius:16px;transition:.15s}
.pw-inf-tag:hover{border-color:var(--accent);color:var(--accent)}
.pw-section-influenced h3{margin-bottom:10px}

/* Quotes */
.pw-quote{font:italic 15px 'Playfair Display',serif;line-height:1.7;color:var(--light);padding:12px 0 12px 16px;border-left:3px solid var(--accent);margin-bottom:12px}
.pw-quote:last-child{margin-bottom:0}

/* Anecdote */
.pw-section-anecdote{background:linear-gradient(135deg,rgba(135,85,144,.06),var(--bg3));border-color:var(--purple)}
.pw-section-anecdote h3{color:var(--purple)}

/* Detail panel tabs */
.pw-detail-tabs{display:flex;gap:4px;margin:20px 0 0;border-bottom:1px solid var(--line);padding-bottom:0}
.pw-dtab{background:none;border:none;color:var(--grey);font:600 12px 'Montserrat',sans-serif;padding:10px 16px;cursor:pointer;border-bottom:2px solid transparent;display:flex;align-items:center;gap:6px;transition:all .2s}
.pw-dtab:hover{color:var(--white)}
.pw-dtab.active{color:var(--accent);border-bottom-color:var(--accent)}
.pw-detail-tab-content{display:none}
.pw-detail-tab-content.active{display:block;padding-top:20px}

/* Agent tab tags */
.pw-tag-favor{background:var(--green) !important;color:#fff !important;border-color:var(--green) !important}
.pw-tag-ban{background:var(--red) !important;color:#fff !important;border-color:var(--red) !important;text-decoration:line-through;opacity:.7}

/* Persona section */
.pw-section-persona{grid-column:1/-1}
.pw-section-persona p{font-style:italic;font-size:15px;line-height:1.8;color:var(--accent)}

/* Writer chat */
.pw-chat-panel{display:flex;flex-direction:column;height:min(60vh,500px)}
.pw-chat-intro{padding:12px 16px;background:var(--bg);border-radius:var(--r);margin-bottom:16px;font-size:13px;color:var(--grey);font-style:italic;line-height:1.6}
.pw-chat-messages{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding:8px 0;min-height:100px}
.pw-chat-msg{max-width:85%;padding:12px 16px;border-radius:12px;font-size:14px;line-height:1.7}
.pw-chat-msg p{margin:0}
.pw-chat-user{align-self:flex-end;background:var(--accent-dim);color:var(--white);border-bottom-right-radius:4px}
.pw-chat-writer{align-self:flex-start;background:var(--bg);border:1px solid var(--line);border-bottom-left-radius:4px}
.pw-chat-writer-name{font:700 10px 'Montserrat',sans-serif;letter-spacing:1px;text-transform:uppercase;color:var(--accent);margin-bottom:6px}
.pw-chat-input-row{display:flex;gap:8px;margin-top:12px}
.pw-chat-input-row textarea{flex:1;resize:none;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:10px 14px;font:14px 'Montserrat',sans-serif;color:var(--white);transition:border-color .2s}
.pw-chat-input-row textarea:focus{border-color:var(--accent);outline:none}
.pw-chat-input-row .btn{align-self:flex-end;flex-shrink:0}

/* Responsive */
@media(max-width:768px){
    .pantheon-title{font-size:28px}
    .pantheon-grid{grid-template-columns:1fr}
    .pw-detail-hero{flex-direction:column;text-align:center}
    .pw-detail-name{font-size:24px}
    .pw-detail-grid{grid-template-columns:1fr}
    .pw-section:nth-child(3),.pw-section:nth-child(6),.pw-section:nth-child(7){grid-column:1}
    .pw-detail-tabs{overflow-x:auto;flex-wrap:nowrap}
    .pw-dtab{white-space:nowrap;font-size:11px;padding:8px 12px}
    .pw-chat-panel{height:min(50vh,400px)}
}

/* --- Profile Page --- */
.profile-section{max-width:800px;margin:0 auto;padding:40px 24px}
.profile-header{text-align:center;margin-bottom:32px}
.profile-header h1{font-size:28px;font-weight:800;margin-bottom:8px}
.profile-subtitle{color:var(--grey);font-size:14px}
.profile-grid{display:grid;gap:20px}
.profile-card{background:var(--bg3);border:1px solid var(--line);border-radius:var(--r);padding:24px}
.profile-card h3{font-size:15px;font-weight:700;margin-bottom:16px}
.profile-card-ai{border-color:var(--accent-dim)}
.profile-ai-desc{font-size:12px;color:var(--grey);margin-bottom:12px}
.profile-ai-result{background:var(--bg);border-radius:var(--r);padding:16px;margin-bottom:12px;font-size:13px;line-height:1.7;color:var(--light)}
.profile-ai-empty{color:var(--muted);font-style:italic}
.profile-actions{margin-top:20px;text-align:center}
.profile-card-desc{font-size:12px;color:var(--grey);margin-bottom:16px;line-height:1.6}

/* Vocab profile card */
.profile-card-vocab{border-color:rgba(166,134,43,.2)}
.vp-section-label{font:700 9px 'Montserrat',sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin:14px 0 8px;opacity:.75}
.vp-lang-row{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.vp-lang-label{font:600 10px 'Montserrat',sans-serif;color:var(--grey)}
.vp-lang-toggle{display:flex;gap:2px;background:var(--bg);border-radius:6px;padding:2px;border:1px solid var(--line)}
.vp-lang-btn{background:0;border:0;padding:4px 10px;border-radius:4px;font:700 10px 'Montserrat',sans-serif;color:var(--grey);cursor:pointer;transition:.15s}
.vp-lang-btn.is-active{background:var(--bg3);color:var(--accent);box-shadow:0 1px 3px rgba(0,0,0,.1)}
.vp-levels-inline{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.vp-level-pill{
    display:inline-flex;align-items:center;gap:5px;
    padding:5px 11px;border-radius:999px;
    border:1px solid var(--line);background:0;cursor:pointer;
    font:500 10px 'Montserrat',sans-serif;color:var(--grey);
    transition:.15s;
}
.vp-level-pill:hover{border-color:var(--accent);color:var(--accent)}
.vp-level-pill.is-active{border-color:var(--accent);background:var(--accent-dim);color:var(--accent)}
.vp-pill-code{font:800 10px 'Montserrat',sans-serif}
.vp-domains-inline{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.vp-domain-pill-sm{
    display:inline-flex;align-items:center;gap:5px;
    padding:4px 10px;border-radius:999px;
    border:1px solid var(--line);background:0;
    font:500 10px 'Montserrat',sans-serif;color:var(--grey);
    cursor:pointer;transition:.15s;
}
.vp-domain-pill-sm:hover{border-color:var(--accent);color:var(--accent)}
.vp-domain-pill-sm:has(input:checked){border-color:var(--accent);background:var(--accent-dim);color:var(--accent)}
.vp-domain-pill-sm input{display:none}
.vp-profile-estimate{
    font:600 11px 'Montserrat',sans-serif;color:var(--accent);
    background:var(--accent-dim);border:1px solid rgba(166,134,43,.2);
    border-radius:8px;padding:8px 12px;text-align:center;
    margin-bottom:14px;opacity:.9;
}

/* --- Ideas Page --- */
/* ─── Ideas Page ─── */
.ideas-section{max-width:1160px;margin:0 auto;padding:0 32px 96px}

/* Hero */
.ideas-hero{text-align:center;padding:64px 0 52px;position:relative}
.ideas-label{font:700 9px 'Montserrat',sans-serif;letter-spacing:8px;text-transform:uppercase;color:var(--accent);opacity:.65;display:block;margin-bottom:14px}
.ideas-title{font:900 52px/1.08 'Playfair Display',serif;margin:0 0 16px;letter-spacing:-1px;background:linear-gradient(145deg,var(--white) 20%,var(--accent) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.ideas-sub{font:400 15px/1.8 'Lora',Georgia,serif;font-style:italic;color:var(--grey);max-width:500px;margin:0 auto 32px}
.ideas-hero-ornament{display:flex;align-items:center;gap:14px;max-width:280px;margin:0 auto}
.ideas-hero-ornament::before,.ideas-hero-ornament::after{content:'';flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--accent));opacity:.35}
.ideas-hero-ornament::after{background:linear-gradient(90deg,var(--accent),transparent)}
.ideas-hero-diamond{width:7px;height:7px;background:var(--accent);transform:rotate(45deg);flex-shrink:0;opacity:.7}

/* Compose panel */
.ideas-compose{margin-bottom:48px}
.ideas-compose-postit{
    background:var(--bg2);
    border:1px solid var(--line);
    border-radius:3px;
    padding:52px 36px 28px;
    position:relative;
    box-shadow:0 1px 2px rgba(0,0,0,.05),0 4px 14px rgba(0,0,0,.05),0 14px 36px rgba(0,0,0,.04);
    transition:box-shadow .28s,border-color .28s;
    overflow:visible;
}
.ideas-compose-postit:focus-within{
    border-color:var(--accent);
    box-shadow:0 2px 4px rgba(0,0,0,.06),0 8px 28px rgba(0,0,0,.07),0 24px 56px rgba(0,0,0,.06),0 0 0 3px var(--accent-dim)
}
.ideas-compose-postit::before{
    content:'New Idea';
    position:absolute;top:0;left:0;right:0;height:40px;
    display:flex;align-items:center;justify-content:center;
    font:700 7.5px 'Montserrat',sans-serif;letter-spacing:5px;text-transform:uppercase;
    color:var(--accent);background:var(--accent-dim);
    border-radius:3px 3px 0 0;border-bottom:1px solid var(--line);pointer-events:none
}
.ideas-compose-postit textarea{
    width:100%;padding:0;background:transparent;border:none;
    color:var(--white);font:400 16px 'Lora',Georgia,serif;font-style:italic;
    resize:none;outline:none;margin-bottom:16px;line-height:1.9;min-height:88px
}
.ideas-compose-postit textarea::placeholder{color:var(--muted);font-style:italic}
.ideas-compose-row{
    display:flex;gap:8px;flex-wrap:wrap;align-items:center;
    padding-top:14px;border-top:1px solid var(--line)
}
.ideas-compose-row select,.ideas-compose-row input{
    padding:8px 12px;background:var(--bg);
    border:1px solid var(--line);border-radius:6px;
    color:var(--white);font:400 11px 'Montserrat',sans-serif;outline:none;
    transition:border-color .15s,box-shadow .15s
}
.ideas-compose-row select:focus,.ideas-compose-row input:focus{
    border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-dim)
}
.ideas-compose-row input{flex:1;min-width:120px}
.ideas-compose-hint{font:400 9px 'Montserrat',sans-serif;color:var(--muted);letter-spacing:.3px;margin-left:auto;white-space:nowrap}

/* Filters */
.ideas-filters{
    display:flex;gap:7px;margin-bottom:36px;flex-wrap:wrap;align-items:center;
    padding-bottom:24px;border-bottom:1px solid var(--line)
}
.ideas-filter{
    background:var(--bg3);border:1px solid var(--line);
    color:var(--grey);font:600 9.5px 'Montserrat',sans-serif;
    padding:6px 14px;border-radius:20px;cursor:pointer;
    transition:all .2s;letter-spacing:.4px;text-transform:uppercase
}
.ideas-filter:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-dim)}
.ideas-filter.active{
    background:var(--accent);color:#fff;border-color:var(--accent);
    box-shadow:0 2px 10px var(--accent-glow)
}

/* Corkboard */
.ideas-corkboard{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(248px,1fr));
    gap:52px 28px;
    padding:32px 8px 56px
}
.ideas-empty{
    grid-column:1/-1;text-align:center;padding:80px;
    color:var(--muted);font:italic 14px 'Lora',Georgia,serif
}

@keyframes ideaCardIn{
    from{opacity:0;transform:rotate(var(--card-rot,0deg)) translateY(18px) scale(.95)}
    to{opacity:1;transform:rotate(var(--card-rot,0deg)) translateY(0) scale(1)}
}

/* Post-it cards */
.idea-postit{
    background:var(--postit-bg,var(--bg3));
    border:1px solid var(--line);
    border-top:3px solid var(--cat-color,var(--accent));
    border-radius:2px;
    padding:28px 20px 24px;
    position:relative;
    cursor:pointer;
    transform:rotate(var(--card-rot,0deg));
    transform-origin:50% 6%;
    box-shadow:
        0 1px 2px rgba(0,0,0,.08),
        0 3px 8px rgba(0,0,0,.07),
        0 8px 22px rgba(0,0,0,.06),
        0 20px 44px rgba(0,0,0,.05);
    transition:transform .35s cubic-bezier(.34,1.56,.64,1),box-shadow .35s,border-color .2s;
    animation:ideaCardIn .44s ease both;
    overflow:visible;
    user-select:none;
    min-height:180px
}
.idea-postit:hover{
    transform:rotate(0deg) translateY(-16px) scale(1.04);
    box-shadow:
        0 3px 6px rgba(0,0,0,.1),
        0 10px 22px rgba(0,0,0,.1),
        0 28px 56px rgba(0,0,0,.1),
        0 52px 88px rgba(0,0,0,.07);
    border-color:var(--cat-color,var(--accent));
    z-index:20
}

/* Category label */
.idea-postit-cat-strip{
    font:700 7.5px 'Montserrat',sans-serif;letter-spacing:3.5px;text-transform:uppercase;
    color:var(--cat-color,var(--accent));
    opacity:.75;
    margin-bottom:12px;
    pointer-events:none;
    display:block
}

.idea-postit-mood{font:italic 10px 'Montserrat',sans-serif;color:var(--grey);margin-bottom:8px;line-height:1.4}
.idea-postit-content{
    font:400 13px 'Lora',Georgia,serif;font-style:italic;
    color:var(--white);line-height:1.85;margin-bottom:14px;
    word-break:break-word;
    display:-webkit-box;-webkit-line-clamp:7;-webkit-box-orient:vertical;overflow:hidden
}
.idea-postit-tags{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:10px}
.idea-postit-tag{
    font:600 7.5px 'Montserrat',sans-serif;letter-spacing:.6px;text-transform:uppercase;
    color:var(--cat-color,var(--accent));
    background:rgba(0,0,0,.04);
    border:1px solid rgba(0,0,0,.07);
    padding:2px 7px;border-radius:2px
}
[data-theme="dark"] .idea-postit-tag{background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.08)}
.idea-postit-footer{display:flex;align-items:center;gap:8px}
.idea-postit-date{font:400 9px 'Montserrat',sans-serif;color:var(--grey);letter-spacing:.2px}
.idea-postit-used-badge{
    font:700 7px 'Montserrat',sans-serif;letter-spacing:1px;text-transform:uppercase;
    color:var(--accent);background:var(--accent-dim);padding:2px 7px;border-radius:2px
}

[data-theme="dark"] .idea-postit{
    box-shadow:
        0 1px 2px rgba(0,0,0,.5),
        0 4px 10px rgba(0,0,0,.42),
        0 12px 28px rgba(0,0,0,.36),
        0 28px 56px rgba(0,0,0,.3)
}
[data-theme="dark"] .idea-postit:hover{
    box-shadow:
        0 4px 8px rgba(0,0,0,.52),
        0 14px 30px rgba(0,0,0,.44),
        0 36px 68px rgba(0,0,0,.4),
        0 60px 100px rgba(0,0,0,.3)
}
.idea-postit-used{opacity:.34;filter:saturate(.2) brightness(.88)}

/* Idea Detail Modal */
.idea-modal-overlay{
    position:fixed;inset:0;background:var(--modal-overlay-bg);
    backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
    z-index:900;display:flex;align-items:center;justify-content:center;
    padding:24px;opacity:0;pointer-events:none;transition:opacity .24s
}
.idea-modal-overlay.open{opacity:1;pointer-events:auto}
.idea-modal-card{
    background:var(--postit-bg,var(--bg3));
    border:1px solid var(--line);
    border-top:3px solid var(--cat-color,var(--accent));
    border-radius:2px;
    padding:52px 40px 36px;
    position:relative;
    width:100%;max-width:580px;
    box-shadow:var(--modal-shadow);
    transform:scale(.93) translateY(16px);
    transition:transform .3s cubic-bezier(.34,1.56,.64,1);
    overflow:visible
}
.idea-modal-overlay.open .idea-modal-card{transform:scale(1) translateY(0)}
.idea-modal-card::before{
    content:'';position:absolute;top:0;left:0;right:0;height:42px;
    background:var(--accent-dim);
    border-radius:2px 2px 0 0;border-bottom:1px solid var(--line);pointer-events:none
}
.idea-modal-card::after{display:none}
.idea-modal-close{
    position:absolute;top:11px;right:13px;
    background:transparent;border:none;color:var(--grey);
    cursor:pointer;padding:6px;border-radius:6px;transition:.15s;z-index:5
}
.idea-modal-close:hover{color:var(--white);background:var(--accent-dim)}
.idea-modal-header{display:flex;align-items:center;gap:10px;margin-bottom:20px}
.idea-modal-cat-select{
    padding:6px 11px;background:var(--cat-color,var(--accent));
    color:#fff;border:none;border-radius:4px;
    font:700 8px 'Montserrat',sans-serif;letter-spacing:1.5px;text-transform:uppercase;
    cursor:pointer;outline:none;transition:opacity .15s
}
.idea-modal-cat-select:hover{opacity:.85}
.idea-modal-mood-input{
    flex:1;padding:6px 8px;background:transparent;border:none;
    border-bottom:1px solid var(--line2);color:var(--grey);
    font:italic 12px 'Montserrat',sans-serif;outline:none
}
.idea-modal-mood-input:focus{border-color:var(--accent)}
.idea-modal-content{
    width:100%;padding:0;background:transparent;border:none;
    color:var(--white);font:400 17px 'Lora',Georgia,serif;font-style:italic;
    line-height:1.9;resize:vertical;outline:none;min-height:120px;margin-bottom:18px
}
.idea-modal-tags-row{margin-bottom:14px;border-top:1px solid var(--line);padding-top:14px}
.idea-modal-tags-input{
    width:100%;padding:5px 0;background:transparent;border:none;
    color:var(--light);font:400 11px 'Montserrat',sans-serif;outline:none
}
.idea-modal-tags-input::placeholder{color:var(--muted)}
.idea-modal-date{font:400 9px 'Montserrat',sans-serif;color:var(--grey);margin-bottom:22px;letter-spacing:.3px}
.idea-modal-actions{
    display:flex;gap:8px;flex-wrap:wrap;align-items:center;
    padding-top:18px;border-top:1px solid var(--line)
}
.idea-modal-btn{
    display:inline-flex;align-items:center;gap:6px;
    padding:9px 16px;border-radius:6px;
    border:1px solid var(--line2);background:transparent;
    color:var(--light);font:600 10.5px 'Montserrat',sans-serif;
    cursor:pointer;transition:all .18s;white-space:nowrap;letter-spacing:.3px
}
.idea-modal-btn:hover{background:var(--accent-dim);border-color:var(--accent);color:var(--accent)}
.idea-modal-btn:disabled{opacity:.45;cursor:not-allowed}
.idea-modal-btn-primary{background:var(--accent-dim);border-color:var(--accent);color:var(--accent)}
.idea-modal-btn-primary:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
.idea-modal-btn-book{
    background:var(--accent);color:#fff;border-color:var(--accent);font-weight:700;
    box-shadow:0 2px 10px var(--accent-glow)
}
.idea-modal-btn-book:hover{background:var(--accent2);border-color:var(--accent2);color:#fff;box-shadow:0 4px 16px var(--accent-glow)}
.idea-modal-btn-used.active{color:var(--green);border-color:var(--green);background:rgba(22,163,74,.08)}
.idea-modal-btn-danger{margin-left:auto;color:var(--red);border-color:transparent;background:transparent}
.idea-modal-btn-danger:hover{background:rgba(220,38,38,.08);border-color:rgba(220,38,38,.3);color:var(--red)}

/* --- Agents Page --- */
.agents-section{max-width:1000px;margin:0 auto;padding:0 24px 60px}
.agents-hero{text-align:center;padding:50px 0 36px}
.agents-label{font:700 9px 'Montserrat',sans-serif;letter-spacing:6px;text-transform:uppercase;color:var(--accent);opacity:.5}
.agents-title{font:900 36px 'Playfair Display',serif;margin:8px 0 10px;background:linear-gradient(135deg,var(--white),var(--accent));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.agents-sub{font:400 13px 'Montserrat',sans-serif;color:var(--grey);max-width:520px;margin:0 auto;line-height:1.7}
.agents-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}
.agent-card{display:flex;gap:16px;background:var(--bg3);border:1px solid var(--line);border-radius:12px;padding:20px;cursor:pointer;transition:.25s;animation:fadeSlideUp .4s ease both}
.agent-card:hover{transform:translateY(-2px);box-shadow:var(--card-shadow-hover);border-color:var(--accent)}
.agent-card-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.agent-card-icon svg{color:#fff}
.agent-card-body{flex:1;min-width:0}
.agent-card-role{font:700 9px 'Montserrat',sans-serif;letter-spacing:1.5px;text-transform:uppercase;color:var(--accent);display:block;margin-bottom:2px}
.agent-card-name{font:700 16px 'Montserrat',sans-serif;margin-bottom:6px}
.agent-card-summary{font:400 12px 'Montserrat',sans-serif;color:var(--grey);line-height:1.6}

/* Agent detail overlay */
.agent-detail{position:fixed;inset:0;z-index:500;background:var(--modal-overlay-bg);backdrop-filter:blur(12px);overflow-y:auto;padding:40px 24px}
.agent-detail-close{position:fixed;top:20px;right:24px;z-index:510;background:var(--bg3);border:1px solid var(--line);width:36px;height:36px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--grey);transition:.2s;box-shadow:var(--card-shadow)}
.agent-detail-close:hover{border-color:var(--accent);color:var(--accent)}
.agent-detail-inner{max-width:700px;margin:0 auto;animation:fadeSlideUp .3s ease}
.agent-d-hero{display:flex;gap:20px;align-items:center;margin-bottom:32px;padding-bottom:24px;border-bottom:1px solid var(--line)}
.agent-d-icon{width:64px;height:64px;border-radius:16px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.agent-d-icon svg{color:#fff}
.agent-d-role{font:700 9px 'Montserrat',sans-serif;letter-spacing:2px;text-transform:uppercase;color:var(--accent)}
.agent-d-name{font:700 28px 'Montserrat',sans-serif;margin:4px 0 8px}
.agent-d-summary{font:400 13px 'Montserrat',sans-serif;color:var(--grey);line-height:1.7}
.agent-d-grid{display:grid;gap:20px}
.agent-d-section{background:var(--bg3);border:1px solid var(--line);border-radius:12px;padding:24px}
.agent-d-section h3{font:700 10px 'Montserrat',sans-serif;letter-spacing:2px;text-transform:uppercase;color:var(--accent);margin-bottom:12px}
.agent-d-section p{font:400 13px 'Montserrat',sans-serif;color:var(--light);line-height:1.7}
.agent-d-section ul{list-style:none;padding:0}
.agent-d-section li{padding:8px 0 8px 16px;border-bottom:1px solid var(--line);font:400 13px 'Montserrat',sans-serif;color:var(--light);line-height:1.5;position:relative}
.agent-d-section li::before{content:'';position:absolute;left:0;top:14px;width:6px;height:6px;border-radius:50%;background:var(--accent);opacity:.4}
.agent-d-section li:last-child{border-bottom:0}
.agent-d-prompt{background:linear-gradient(135deg,var(--accent-dim),var(--bg3));border-color:var(--accent)}
.agent-d-prompt pre{font:400 12px 'Montserrat',sans-serif;color:var(--light);line-height:1.7;white-space:pre-wrap;word-break:break-word}

/* --- Global Modal System --- */
.lv-modal-overlay{position:fixed;inset:0;z-index:9000;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,0);backdrop-filter:blur(0);pointer-events:none;transition:background .25s,backdrop-filter .25s}
.lv-modal-overlay.lv-modal-visible{background:rgba(0,0,0,.55);backdrop-filter:blur(12px);pointer-events:auto}
.lv-modal{background:var(--bg3);border:1px solid var(--line2);border-radius:16px;box-shadow:0 32px 80px rgba(0,0,0,.3),0 0 0 1px var(--line);padding:36px 32px 28px;width:90%;max-width:420px;text-align:center;transform:scale(.92) translateY(12px);opacity:0;transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .25s}
.lv-modal-visible .lv-modal{transform:scale(1) translateY(0);opacity:1}
.lv-modal-icon{margin:0 auto 16px;width:52px;height:52px;border-radius:50%;background:var(--accent-dim);display:flex;align-items:center;justify-content:center}
.lv-modal-title{font:700 18px 'Montserrat',sans-serif;margin-bottom:8px;color:var(--white)}
.lv-modal-body{font:400 13px 'Montserrat',sans-serif;color:var(--grey);line-height:1.7;margin-bottom:20px}
.lv-modal-actions{display:flex;gap:10px;justify-content:center}
.lv-modal-btn{padding:10px 24px;border-radius:10px;font:600 13px 'Montserrat',sans-serif;cursor:pointer;transition:.2s;border:0;letter-spacing:.3px}
.lv-modal-btn-accent{background:var(--accent);color:#fff}
.lv-modal-btn-accent:hover{background:var(--accent2)}
.lv-modal-btn-danger{background:var(--red);color:#fff}
.lv-modal-btn-danger:hover{opacity:.85}
.lv-modal-btn-ghost{background:0;border:1px solid var(--line);color:var(--grey)}
.lv-modal-btn-ghost:hover{border-color:var(--accent);color:var(--accent)}
/* Progress bar */
.lv-modal-progress{margin-bottom:16px}
.lv-modal-progress-bar{height:4px;background:var(--accent);border-radius:2px;transition:width .4s;margin-bottom:6px}
.lv-modal-progress-text{font:500 11px 'Montserrat',sans-serif;color:var(--grey)}

/* --- Responsive --- */
@media(max-width:768px){
    .nav{padding:10px 16px}
    .nav-name{font-size:16px;letter-spacing:3px}
    .nav-sub{display:none}
    .hero{padding:40px 16px 30px}
    .features-grid{grid-template-columns:1fr}
    .book-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;padding:0 16px}
    .editor-sidebar{position:fixed;left:0;top:65px;bottom:0;z-index:100;width:280px;transform:translateX(-100%);transition:transform .2s}
    .editor-sidebar.open{transform:translateX(0)}
    .form-row{grid-template-columns:1fr}
    .modal{margin:16px;padding:20px}
    .plan-section{padding:24px 16px}
    .chapter-title-input{min-width:80px;max-width:180px}
}

/* ============================================
   Favorite Button (Dashboard)
============================================ */
.book-card{position:relative}
.book-fav-btn{position:absolute;top:8px;right:8px;z-index:2;background:rgba(0,0,0,.35);border:none;border-radius:50%;width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#fff;opacity:.7;transition:all .2s}
.book-fav-btn:hover{opacity:1;transform:scale(1.15)}
.book-fav-btn.active{opacity:1;color:var(--red)}
.book-fav-btn.active .icon{fill:var(--red)}

/* Gutenberg badge on dashboard cards */
.book-gutenberg-badge{position:absolute;bottom:6px;left:6px;font-size:.6rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;background:rgba(0,0,0,.5);color:#fff;padding:2px 6px;border-radius:4px}

/* ============================================
   Imported state (Classics page)
============================================ */
.cl-card--imported .cl-card-cover::after{content:'';position:absolute;inset:0;background:rgba(22,163,74,.08);border-radius:var(--r) var(--r) 0 0}
.cl-imported-badge{position:absolute;top:8px;right:8px;background:var(--green);color:#fff;font-size:.6rem;font-weight:700;text-transform:uppercase;padding:2px 8px;border-radius:4px}
.cl-open-btn{background:var(--green);color:#fff;border:none;gap:4px}
.cl-open-btn:hover{filter:brightness(1.1)}
.cl-search-result--imported{border-left:3px solid var(--green)}

/* ============================================
   Summary Page
============================================ */
/* ============================================
   Intelligence Page — additive multi-select tiles
============================================ */
.ig-section{max-width:1100px;margin:0 auto;padding:48px 28px 100px;font-family:'Montserrat',sans-serif}

.ig-head{margin-bottom:36px}
.ig-eyebrow{font:700 10px 'Montserrat',sans-serif;letter-spacing:6px;text-transform:uppercase;color:var(--accent);opacity:.75;margin-bottom:8px}
.ig-title{font:700 38px/1.1 'Playfair Display',serif;color:var(--white);margin:0 0 14px;letter-spacing:-.5px}
.ig-sub{font:400 13px/1.65 'Montserrat',sans-serif;color:var(--grey);max-width:620px;margin:0 0 22px}
.ig-rule{height:1px;background:linear-gradient(90deg,var(--accent) 0,var(--accent) 64px,var(--line) 64px,var(--line) 100%)}

/* Groups */
.ig-groups{display:flex;flex-direction:column;gap:34px;margin-bottom:36px}
.ig-group{}
.ig-group-head{display:flex;align-items:baseline;gap:14px;margin-bottom:14px}
.ig-group-num{font:700 12px 'Playfair Display',serif;color:var(--accent);letter-spacing:1px;opacity:.65}
.ig-group-name{font:600 11px 'Montserrat',sans-serif;letter-spacing:3px;text-transform:uppercase;color:var(--light);margin:0}

/* Tile grid */
.ig-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.ig-tile{position:relative;background:var(--bg3);border:1px solid var(--line);border-radius:12px;padding:18px 18px 16px;text-align:left;cursor:pointer;display:grid;grid-template-areas:'ico flag' 'title title' 'desc desc' 'pip pip';grid-template-columns:auto auto;gap:6px 8px;font-family:'Montserrat',sans-serif;color:var(--light);transition:.18s cubic-bezier(.4,0,.2,1);overflow:hidden}
.ig-tile::before{content:'';position:absolute;inset:0;background:radial-gradient(circle at top right,rgba(201,163,85,.16),transparent 60%);opacity:0;transition:.25s;pointer-events:none}
.ig-tile:hover{border-color:rgba(201,163,85,.45);transform:translateY(-2px);box-shadow:0 6px 20px -8px rgba(0,0,0,.5)}
.ig-tile:hover::before{opacity:1}
.ig-tile.is-on{border-color:var(--accent);background:linear-gradient(180deg,rgba(201,163,85,.12),var(--bg3) 60%);box-shadow:inset 0 0 0 1px var(--accent),0 8px 24px -10px rgba(201,163,85,.3)}
.ig-tile.is-on::before{opacity:1}
.ig-tile-ico{grid-area:ico;width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;background:var(--accent-dim);color:var(--accent);transition:.2s}
.ig-tile.is-on .ig-tile-ico{background:var(--accent);color:#fff}
.ig-tile-title{grid-area:title;font:600 13px 'Montserrat',sans-serif;color:var(--white);margin-top:6px}
.ig-tile-desc{grid-area:desc;font:400 11px/1.5 'Montserrat',sans-serif;color:var(--grey)}
.ig-tile-pip{grid-area:pip;justify-self:end;align-self:end;width:7px;height:7px;border-radius:50%;background:var(--line);transition:.2s;margin-top:6px}
.ig-tile.is-cached .ig-tile-pip{background:var(--accent);box-shadow:0 0 0 3px rgba(201,163,85,.18)}
.ig-tile.is-on .ig-tile-pip{background:var(--accent);box-shadow:0 0 0 4px rgba(201,163,85,.28)}
.ig-tile-flag{grid-area:flag;justify-self:end;font:700 8px 'Montserrat',sans-serif;letter-spacing:1.5px;color:var(--accent);background:var(--accent-dim);border:1px solid rgba(201,163,85,.4);padding:2px 6px;border-radius:4px;align-self:start}

/* Status bar */
.ig-status{position:sticky;top:8px;z-index:5;display:flex;align-items:center;gap:10px;background:var(--bg3);border:1px solid var(--accent);border-radius:99px;padding:8px 8px 8px 16px;width:fit-content;margin:0 auto 24px;box-shadow:0 8px 24px -10px rgba(0,0,0,.4);animation:fadeSlideUp .25s ease}
.ig-status-count{font:700 14px 'Playfair Display',serif;color:var(--accent);min-width:18px;text-align:center}
.ig-status-lbl{font:500 11px 'Montserrat',sans-serif;letter-spacing:1.5px;text-transform:uppercase;color:var(--grey)}
.ig-status-clear{margin-left:8px;background:var(--accent);border:0;color:#fff;font:600 10px 'Montserrat',sans-serif;letter-spacing:1px;text-transform:uppercase;padding:6px 14px;border-radius:99px;cursor:pointer;transition:.15s}
.ig-status-clear:hover{background:#B5651D}

/* Panels */
.ig-panels{display:flex;flex-direction:column;gap:18px;margin-bottom:24px}
.ig-panel{background:var(--bg3);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:12px;overflow:hidden;opacity:0;transform:translateY(-8px);transition:opacity .25s,transform .25s}
.ig-panel.is-in{opacity:1;transform:translateY(0)}
.ig-panel.is-out{opacity:0;transform:translateY(-8px)}
.ig-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:22px 24px 14px;flex-wrap:wrap}
.ig-panel-titles{flex:1;min-width:0}
.ig-panel-eyebrow{display:block;font:700 9px 'Montserrat',sans-serif;letter-spacing:3px;text-transform:uppercase;color:var(--accent);opacity:.7;margin-bottom:4px}
.ig-panel-title{font:700 22px 'Playfair Display',serif;color:var(--white);margin:0 0 4px}
.ig-panel-desc{font:400 12px/1.55 'Montserrat',sans-serif;color:var(--grey);margin:0;max-width:560px}
.ig-panel-actions{display:flex;gap:6px;flex-shrink:0}
.ig-panel-btn{display:inline-flex;align-items:center;gap:6px;background:transparent;border:1px solid var(--line);color:var(--light);font:600 11px 'Montserrat',sans-serif;letter-spacing:.5px;padding:8px 12px;border-radius:8px;cursor:pointer;transition:.15s}
.ig-panel-btn:hover{border-color:var(--accent);color:var(--accent)}
.ig-panel-btn:disabled{opacity:.55;cursor:wait}
.ig-panel-gen{background:var(--accent);border-color:var(--accent);color:#fff}
.ig-panel-gen:hover{background:#B5651D;border-color:#B5651D;color:#fff}
.ig-panel-close{padding:8px}
.ig-panel-body{padding:6px 28px 26px;font:400 14px/1.75 'Lora','Playfair Display',serif;color:var(--light)}

/* Streaming cursor */
.ig-stream{font:400 13px/1.7 'Lora',serif;color:var(--grey);min-height:24px}
.ig-cursor{display:inline-block;width:9px;height:16px;background:var(--accent);vertical-align:middle;animation:igBlink 1s steps(2) infinite}
@keyframes igBlink{50%{opacity:0}}

/* Rendered markdown */
.ig-rendered{font:400 14px/1.78 'Lora','Playfair Display',serif;color:var(--light)}
.ig-rendered-h{font:700 14px 'Montserrat',sans-serif;letter-spacing:1.5px;text-transform:uppercase;color:var(--accent);margin:22px 0 8px;padding-left:12px;border-left:2px solid var(--accent)}
.ig-rendered-h:first-child{margin-top:0}
.ig-rendered h4{font:600 14px 'Montserrat',sans-serif;color:var(--white);margin:14px 0 6px}
.ig-rendered p{margin:0 0 12px}
.ig-rendered ul{padding-left:20px;margin:8px 0}
.ig-rendered li{margin:4px 0}
.ig-rendered strong{color:var(--white);font-weight:600}
.ig-rendered em{color:var(--accent);font-style:italic}
.ig-quote{border-left:3px solid var(--accent);padding:10px 18px;margin:14px 0;background:var(--accent-dim);border-radius:0 8px 8px 0;font-style:italic;color:var(--white);font-family:'Playfair Display',serif;font-size:15px}
.ig-pin{display:inline-block;background:var(--accent);color:#fff;font:700 9px 'Montserrat',sans-serif;letter-spacing:1.5px;text-transform:uppercase;padding:2px 8px;border-radius:4px;margin-right:8px;vertical-align:middle}
.ig-placeholder{color:var(--grey);font:italic 400 12px 'Montserrat',sans-serif}

/* Chapters list (inside chapters panel) */
.ig-chapter{border:1px solid var(--line);border-radius:8px;margin-bottom:8px;overflow:hidden;background:var(--bg)}
.ig-chapter-head{width:100%;display:flex;align-items:center;gap:12px;padding:12px 16px;background:transparent;border:0;cursor:pointer;text-align:left;font:inherit;color:var(--white);transition:.15s}
.ig-chapter-head:hover{background:var(--bg-hover,rgba(255,255,255,.03))}
.ig-chapter-num{width:26px;height:26px;border-radius:50%;background:var(--accent-dim);color:var(--accent);display:flex;align-items:center;justify-content:center;font:700 11px 'Playfair Display',serif;flex-shrink:0}
.ig-chapter-title{flex:1;font:500 13px 'Montserrat',sans-serif}
.ig-chapter-chev{color:var(--grey);transition:.2s}
.ig-chapter.open .ig-chapter-chev{transform:rotate(180deg);color:var(--accent)}
.ig-chapter-body{display:none;padding:0 16px 14px 54px;font:400 13px/1.65 'Lora',serif;color:var(--light)}
.ig-chapter.open .ig-chapter-body{display:block}

/* Empty state */
.ig-empty{text-align:center;padding:60px 0;color:var(--grey);font:400 13px 'Montserrat',sans-serif}
.ig-empty svg{color:var(--accent);opacity:.5;margin-bottom:12px}
.ig-empty p{margin:0}

@media(max-width:780px){
    .ig-section{padding:32px 18px 60px}
    .ig-title{font-size:28px}
    .ig-tiles{grid-template-columns:1fr 1fr}
    .ig-panel-head{flex-direction:column;align-items:flex-start;gap:12px}
    .ig-panel-actions{width:100%;justify-content:flex-end}
    .ig-panel-body{padding:6px 18px 22px}
}
@media(max-width:480px){
    .ig-tiles{grid-template-columns:1fr}
}

/* ============================================
   (Legacy summary styles — still used elsewhere?)
============================================ */
.summary-section{max-width:960px;margin:0 auto;padding:40px 24px}
.summary-header{margin-bottom:32px}
.summary-header-top{display:flex;gap:8px;margin-bottom:8px}
.summary-header h1{font-family:'Playfair Display','Lora',serif;font-size:1.8rem;margin:0 0 4px}
.summary-subtitle{font-size:.85rem;color:var(--grey);margin:0 0 20px}
.summary-tab-groups{display:flex;flex-direction:column;gap:12px}
.summary-tab-group{display:flex;align-items:center;gap:10px}
.summary-tab-group-label{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--grey);min-width:72px;flex-shrink:0}
.summary-tabs{display:flex;gap:4px;flex-wrap:wrap}
.summary-tab{display:flex;align-items:center;gap:5px;padding:6px 12px;border:1px solid var(--line);background:var(--bg3);border-radius:var(--r);cursor:pointer;font-size:.78rem;color:var(--grey);transition:all .2s;text-decoration:none}
.summary-tab:hover{border-color:var(--accent);color:var(--white)}
.summary-tab.active{background:var(--accent-dim);border-color:var(--accent);color:var(--accent);font-weight:600}
.summary-tab-content{display:none}
.summary-tab-content.active{display:block}
.summary-panel{background:var(--bg3);border-radius:var(--r);border:1px solid var(--line);padding:28px;box-shadow:var(--card-shadow)}
.summary-panel-header{margin-bottom:20px}
.summary-panel-header h2{font-family:'Playfair Display','Lora',serif;font-size:1.3rem;margin:0 0 4px}
.summary-panel-desc{font-size:.82rem;color:var(--grey);margin:0}
.summary-body{min-height:100px;margin-bottom:20px}
.summary-placeholder{color:var(--grey);font-style:italic;font-size:.85rem}
.summary-generate-btn{gap:8px}

/* Summary rendered content */
.summary-rendered{line-height:1.7;color:var(--light);font-size:.9rem}
.summary-rendered h3.summary-insight-title{font-family:'Playfair Display','Lora',serif;font-size:1.1rem;color:var(--accent);margin:24px 0 8px;padding-left:12px;border-left:3px solid var(--accent)}
.summary-rendered h3.summary-insight-title:first-child{margin-top:0}
.summary-rendered h4{font-size:.95rem;color:var(--white);margin:16px 0 6px}
.summary-rendered p{margin:0 0 12px}
.summary-rendered ul{padding-left:20px;margin:8px 0}
.summary-rendered li{margin:4px 0}
.summary-blockquote{border-left:3px solid var(--accent);padding:8px 16px;margin:12px 0;background:var(--accent-dim);border-radius:0 var(--r) var(--r) 0;font-style:italic;color:var(--white)}

/* Chapter summaries */
.summary-chapter-card{border:1px solid var(--line);border-radius:var(--r);margin-bottom:8px;overflow:hidden}
.summary-chapter-header{display:flex;align-items:center;gap:10px;padding:12px 16px;cursor:pointer;transition:background .15s}
.summary-chapter-header:hover{background:var(--bg-hover)}
.summary-chapter-num{width:28px;height:28px;border-radius:50%;background:var(--accent-dim);color:var(--accent);display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;flex-shrink:0}
.summary-chapter-title{flex:1;font-size:.88rem;font-weight:500;color:var(--white);margin:0}
.summary-chapter-chevron{transition:transform .2s;color:var(--grey)}
.summary-chapter-card.open .summary-chapter-chevron{transform:rotate(180deg)}
.summary-chapter-content{display:none;padding:0 16px 14px 54px;font-size:.85rem;color:var(--light);line-height:1.6}
.summary-chapter-card.open .summary-chapter-content{display:block}

/* Overview tab extras */
.summary-overview-body strong{color:var(--accent)}

/* Turning point badge */
.summary-turning-point{display:inline-block;background:var(--red);color:#fff;font-size:.6rem;font-weight:700;text-transform:uppercase;padding:2px 8px;border-radius:4px;margin-right:6px;letter-spacing:.04em}

/* Kids panel */
.summary-panel--kids{border:2px dashed var(--accent);background:var(--accent-dim)}

/* ============================================
   Vocabulary Page
============================================ */
.vocab-page{max-width:900px;margin:0 auto;padding:40px 24px}
.vocab-hero{text-align:center;margin-bottom:24px}
.vocab-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--accent)}
.vocab-title{font-family:'Playfair Display','Lora',serif;font-size:2rem;margin:8px 0}
.vocab-sub{color:var(--grey);font-size:.88rem;max-width:600px;margin:0 auto}
.vocab-stats-ribbon{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-bottom:24px}
.vocab-tabs{display:flex;gap:4px;margin-bottom:24px;flex-wrap:wrap}
.vocab-tab{display:flex;align-items:center;gap:5px;padding:8px 16px;border:1px solid var(--line);background:var(--bg3);border-radius:var(--r);cursor:pointer;font-size:.82rem;color:var(--grey);transition:all .2s}
.vocab-tab:hover{border-color:var(--accent);color:var(--white)}
.vocab-tab.active{background:var(--accent-dim);border-color:var(--accent);color:var(--accent);font-weight:600}
.vocab-tab-content{display:none}
.vocab-tab-content.active{display:block}

/* Word list */
.vocab-toolbar{display:flex;gap:8px;margin-bottom:16px}
.vocab-toolbar input{flex:1;padding:8px 12px;border:1px solid var(--line);border-radius:var(--r);background:var(--bg3);color:var(--white);font-size:.85rem}
.vocab-toolbar select{padding:8px 12px;border:1px solid var(--line);border-radius:var(--r);background:var(--bg3);color:var(--white);font-size:.85rem}
.vocab-list{display:flex;flex-direction:column;gap:8px}
.vocab-word-card{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:14px 16px;background:var(--bg3);border:1px solid var(--line);border-radius:var(--r);transition:all .2s}
.vocab-word-card:hover{border-color:var(--accent)}
.vocab-word-card.mastered{border-left:3px solid var(--green);opacity:.8}
.vocab-word-main{flex:1;min-width:0}
.vocab-word-term{font-size:1rem;font-weight:600;margin:0 0 4px;color:var(--white)}
.vocab-word-def{font-size:.83rem;color:var(--light);margin:0 0 4px;line-height:1.5}
.vocab-word-context{font-size:.78rem;color:var(--grey);font-style:italic;margin:0}
.vocab-word-translation{font-size:.82rem;color:var(--accent);margin:2px 0 0;opacity:.85}
.vocab-input-with-status{display:flex;align-items:center;gap:8px}
.vocab-input-with-status input{flex:1}
.vocab-lookup-status{width:20px;height:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.vocab-word-actions{display:flex;gap:4px;flex-shrink:0}
.vocab-mastered-btn{background:var(--green) !important;color:#fff !important}
.vocab-empty{text-align:center;padding:40px 20px;color:var(--grey)}
.vocab-loading{text-align:center;padding:32px}

/* Add word form */
.vocab-add-panel{max-width:500px;margin:0 auto}
.vocab-add-form{background:var(--bg3);border:1px solid var(--line);border-radius:var(--r);padding:24px}

/* Discover grid */
.vocab-discover-header{margin-bottom:20px}
.vocab-discover-header h3{font-family:'Playfair Display','Lora',serif;font-size:1.2rem;margin:0 0 4px}
.vocab-discover-header p{font-size:.83rem;color:var(--grey);margin:0}
.vocab-discover-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.vocab-discover-card{background:var(--bg3);border:1px solid var(--line);border-radius:var(--r);padding:16px;transition:border-color .2s}
.vocab-discover-card:hover{border-color:var(--accent)}
.vocab-discover-word{font-size:1.05rem;font-weight:700;color:var(--accent);margin:0 0 6px}
.vocab-discover-def{font-size:.82rem;color:var(--light);margin:0 0 8px;line-height:1.5}
.vocab-discover-source{font-size:.7rem;color:var(--grey);display:block;margin-bottom:10px}

/* Quiz */
.vocab-quiz-panel{max-width:500px;margin:0 auto}
.vocab-quiz-intro{text-align:center;background:var(--bg3);border:1px solid var(--line);border-radius:var(--r);padding:32px}
.vocab-quiz-intro h3{font-family:'Playfair Display','Lora',serif;font-size:1.3rem;margin:0 0 8px}
.vocab-quiz-intro p{font-size:.85rem;color:var(--grey);margin:0 0 20px}
.vocab-quiz-options{display:flex;gap:16px;justify-content:center;margin-bottom:20px;font-size:.85rem}
.vocab-quiz-options label{display:flex;align-items:center;gap:6px;cursor:pointer}
.quiz-progress{display:flex;justify-content:space-between;margin-bottom:16px;font-size:.85rem;color:var(--grey)}
.quiz-card{background:var(--bg3);border:1px solid var(--line);border-radius:var(--r);padding:32px;text-align:center}
.quiz-word{font-family:'Playfair Display','Lora',serif;font-size:2rem;color:var(--accent);margin:0 0 8px}
.quiz-context{font-size:.82rem;color:var(--grey);font-style:italic;margin:0 0 20px}
.quiz-actions{margin-bottom:16px}
.quiz-definition{background:var(--accent-dim);border-radius:var(--r);padding:16px;margin-bottom:16px;font-size:.9rem;color:var(--light);line-height:1.5}
.quiz-verdict{display:flex;gap:12px;justify-content:center}
.quiz-big-score{display:block;font-size:2.5rem;font-weight:800;color:var(--accent)}
.quiz-pct{display:block;font-size:1.2rem;color:var(--grey);margin-top:4px}
.vocab-quiz-results{text-align:center;background:var(--bg3);border:1px solid var(--line);border-radius:var(--r);padding:32px}
.vocab-quiz-results h3{font-family:'Playfair Display','Lora',serif;font-size:1.3rem;margin:0 0 16px}

@media(max-width:768px){
    .vocab-page{padding:24px 16px}
    .vocab-discover-grid{grid-template-columns:1fr}
    .vocab-toolbar{flex-direction:column}
}

/* Upload dropzone */
.upload-dropzone{border:2px dashed var(--line2);border-radius:var(--r);padding:32px 20px;text-align:center;cursor:pointer;transition:all .2s;margin-bottom:16px}
.upload-dropzone:hover,.upload-dropzone.dragover{border-color:var(--accent);background:var(--accent-dim)}
.upload-dropzone.has-file{border-color:var(--green);background:rgba(22,163,74,.06)}
.upload-dropzone-text{margin:8px 0 4px;font-size:.9rem;color:var(--light)}
.upload-dropzone-hint{font-size:.75rem;color:var(--grey)}
.upload-dropzone-filename{display:block;margin-top:8px;font-size:.85rem;font-weight:600;color:var(--accent)}
.dash-greeting-actions{display:flex;gap:8px}

/* Category filters (classics) */
.classics-category-filters{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:20px}

@media(max-width:768px){
    .summary-section{padding:24px 16px}
    .summary-tab-group{flex-direction:column;align-items:flex-start;gap:4px}
    .summary-tab-group-label{min-width:auto}
    .summary-tabs{gap:2px}
    .summary-tab{padding:5px 8px;font-size:.72rem}
    .summary-panel{padding:18px}
}

/* ============================================
   RTL Support (Arabic)
============================================ */
[dir="rtl"]{direction:rtl;text-align:right;font-family:'Noto Sans Arabic','Montserrat',sans-serif}
[dir="rtl"] .nav{direction:ltr;text-align:left}
[dir="rtl"] .nav-actions{direction:rtl}
[dir="rtl"] .dash-greeting{flex-direction:row-reverse}
[dir="rtl"] .dash-greeting-text{flex-direction:row-reverse}
[dir="rtl"] .dash-stat-card{flex-direction:row-reverse}
[dir="rtl"] .dash-recent-book{flex-direction:row-reverse}
[dir="rtl"] .dash-recent-book-info{text-align:right}
[dir="rtl"] .dash-recent-book-meta{flex-direction:row-reverse;justify-content:flex-end}
[dir="rtl"] .dash-section-header{flex-direction:row-reverse}
[dir="rtl"] .dash-widget-header{flex-direction:row-reverse}
[dir="rtl"] .dash-vocab-ring-section{flex-direction:row-reverse}
[dir="rtl"] .dash-vocab-detail{flex-direction:row-reverse}
[dir="rtl"] .dash-vocab-detail strong{margin-left:0;margin-right:auto}
[dir="rtl"] .dash-progress-label{flex-direction:row-reverse}
[dir="rtl"] .dash-quick-link{flex-direction:row-reverse}
[dir="rtl"] .book-info{flex-direction:row-reverse}
[dir="rtl"] .footer-inner{flex-direction:row-reverse}
[dir="rtl"] .user-menu{right:auto;left:0;transform-origin:top left}
[dir="rtl"] .user-menu::before{right:auto;left:18px}
[dir="rtl"] .lang-filter{direction:ltr}
[dir="rtl"] .btn{flex-direction:row-reverse}
[dir="rtl"] .nav-btn{flex-direction:row-reverse}
[dir="rtl"] .modal-header{flex-direction:row-reverse}
[dir="rtl"] .dash-book-filters{flex-direction:row-reverse}
[dir="rtl"] .dash-ideas-summary{flex-direction:row-reverse}
[dir="rtl"] .feature-card{text-align:right}
[dir="rtl"] .hero{text-align:center}
[dir="rtl"] .dash-hello,[dir="rtl"] .dash-username{font-family:'Noto Sans Arabic','Montserrat',sans-serif}
[dir="rtl"] .dash-stat-label,[dir="rtl"] .dash-stat-value{font-family:'Noto Sans Arabic','Montserrat',sans-serif}
[dir="rtl"] .dash-filter-btn{font-family:'Noto Sans Arabic','Montserrat',sans-serif}

/* ============================================
   New Book Modal — description-first
============================================ */
.nb-form .nb-desc textarea{font-size:15px;line-height:1.55;min-height:110px;padding:14px 16px}
.nb-desc-label{font-size:13px!important;text-transform:none!important;letter-spacing:0!important;color:var(--white)!important;font-weight:600!important;margin-bottom:8px!important}
.nb-desc-hint{display:block;margin-top:6px;font-size:11px;color:var(--grey);font-style:italic}
.nb-title-row{display:flex;gap:8px;align-items:stretch}
.nb-title-row input{flex:1}
.nb-suggest-btn{white-space:nowrap;padding:8px 12px;border:1px solid var(--accent);color:var(--accent);background:transparent;display:inline-flex;align-items:center;gap:6px;cursor:pointer;border-radius:var(--r);font-size:12px;font-weight:600;transition:.2s}
.nb-suggest-btn:hover:not(:disabled){background:var(--accent-dim)}
.nb-suggest-btn:disabled{opacity:.4;cursor:not-allowed}
.nb-title-suggestions{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.nb-suggest-chip{background:var(--accent-dim);border:1px solid var(--accent);color:var(--white);padding:6px 12px;border-radius:999px;font-size:12px;cursor:pointer;transition:.2s;font-family:'Montserrat',sans-serif}
.nb-suggest-chip:hover{background:var(--accent);color:var(--bg)}
.nb-suggest-loading,.nb-suggest-empty{font-size:12px;color:var(--grey);font-style:italic}
.nb-tpl-desc{margin-top:10px;padding:10px 12px;background:var(--bg);border-left:2px solid var(--accent);border-radius:4px;font-size:12px;color:var(--grey);line-height:1.5}
.nb-advanced{border:1px solid var(--line);border-radius:var(--r);overflow:hidden;margin-bottom:16px}
.nb-advanced>summary{list-style:none;padding:12px 14px;cursor:pointer;display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600;color:var(--grey);text-transform:uppercase;letter-spacing:.5px;user-select:none;transition:.2s}
.nb-advanced>summary::-webkit-details-marker{display:none}
.nb-advanced>summary:hover{color:var(--accent);background:var(--bg)}
.nb-advanced-chevron{transition:transform .2s;color:var(--grey)}
.nb-advanced[open] .nb-advanced-chevron{transform:rotate(180deg);color:var(--accent)}
.nb-advanced[open]>summary{color:var(--accent);border-bottom:1px solid var(--line)}
.nb-advanced-body{padding:16px 14px 4px}
.nb-advanced-body .form-group:last-child{margin-bottom:4px}

/* ============================================
   Writing Coach (Plan page)
============================================ */
.plan-coach{background:linear-gradient(180deg,var(--bg3),var(--bg));border-left:3px solid var(--accent)}
.plan-coach .coach-head-icon{color:var(--accent);vertical-align:-3px;margin-right:6px}
.coach-intro{font-size:12px;color:var(--grey);font-style:italic;margin-bottom:16px;line-height:1.55}
.coach-body{display:flex;flex-direction:column;gap:6px;transition:max-height .25s ease,opacity .2s ease;overflow:hidden}
.coach-collapsed .coach-body,.coach-collapsed .coach-intro{display:none}
.coach-collapsed .coach-toggle svg{transform:rotate(-90deg)}
.coach-toggle svg{transition:transform .2s}
.coach-phase{background:var(--bg);border:1px solid var(--line);border-radius:8px;overflow:hidden}
.coach-phase>summary{list-style:none;padding:12px 14px;cursor:pointer;display:flex;align-items:center;gap:10px;user-select:none;font-size:13px;font-weight:600;transition:.2s}
.coach-phase>summary::-webkit-details-marker{display:none}
.coach-phase>summary:hover{background:var(--accent-dim)}
.coach-phase[open]>summary{border-bottom:1px solid var(--line);background:var(--accent-dim);color:var(--accent)}
.coach-phase-num{width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;background:var(--accent-dim);color:var(--accent);border-radius:50%;font-size:11px;font-weight:700;flex-shrink:0}
.coach-phase--warn .coach-phase-num{background:rgba(220,80,60,.15);color:var(--red,#d4543a)}
.coach-phase--warn[open]>summary{color:var(--red,#d4543a);background:rgba(220,80,60,.08)}
.coach-phase-title{flex:1}
.coach-tips{list-style:none;padding:10px 14px 14px;margin:0;display:flex;flex-direction:column;gap:8px}
.coach-tips li{font-size:12.5px;line-height:1.6;color:var(--white);padding-left:14px;position:relative}
.coach-tips li::before{content:"";position:absolute;left:0;top:9px;width:6px;height:6px;border-radius:50%;background:var(--accent)}
.coach-phase--warn .coach-tips li::before{background:var(--red,#d4543a)}
[dir="rtl"] .plan-coach{border-left:0;border-right:3px solid var(--accent)}
[dir="rtl"] .coach-tips li{padding-left:0;padding-right:14px}
[dir="rtl"] .coach-tips li::before{left:auto;right:0}
[dir="rtl"] .nb-title-row{flex-direction:row-reverse}
[dir="rtl"] .nb-tpl-desc{border-left:0;border-right:2px solid var(--accent)}

/* ============================================
   Write Flow (/write) — guided book creation
============================================ */
.write-shell{position:relative;max-width:1200px;margin:0 auto;padding:40px 24px 80px;min-height:calc(100vh - 120px)}
.write-progress{display:flex;align-items:center;justify-content:center;gap:6px;margin-bottom:40px}
.wp-dot{width:10px;height:10px;border-radius:50%;background:var(--line);transition:.25s}
.wp-dot.wp-done{background:var(--accent);opacity:.55}
.wp-dot.wp-active{background:var(--accent);box-shadow:0 0 0 4px var(--accent-dim);transform:scale(1.15)}
.wp-bar{flex:0 0 36px;height:1px;background:var(--line)}
.write-reset{position:absolute;top:40px;right:24px;background:transparent;border:1px solid var(--line);color:var(--grey);width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.2s}
.write-reset:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-dim)}
.write-stage{animation:wrFadeIn .4s ease}
@keyframes wrFadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.ws-inner{max-width:720px;margin:0 auto;text-align:center;padding:40px 0}
.ws-inner--narrow{max-width:560px}
.ws-title{font-size:34px;font-weight:700;line-height:1.15;margin-bottom:14px;letter-spacing:-.5px}
.ws-sub{font-size:15px;color:var(--grey);line-height:1.55;margin-bottom:32px;max-width:480px;margin-left:auto;margin-right:auto}
.ws-inner textarea{width:100%;padding:20px 22px;background:var(--bg3);border:1px solid var(--line);border-radius:12px;color:var(--white);font:400 16px 'Montserrat',sans-serif;line-height:1.6;outline:none;transition:.2s;resize:vertical;min-height:160px}
.ws-inner textarea:focus{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-dim);background:var(--bg)}
.ws-hint{margin-top:12px;font-size:11px;color:var(--grey);display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap}
.ws-hint-sep{opacity:.4}
.ws-cta{margin-top:28px;padding:14px 32px;font-size:15px;display:inline-flex;align-items:center;gap:10px}

/* Interview */
.iv-step{display:inline-flex;gap:4px;font-size:11px;letter-spacing:.5px;color:var(--grey);text-transform:uppercase;margin-bottom:18px;background:var(--bg3);padding:5px 12px;border-radius:999px;border:1px solid var(--line)}
.iv-step>span:first-child{color:var(--accent);font-weight:700}
.iv-title{font-size:26px;font-weight:700;line-height:1.2;margin-bottom:8px;letter-spacing:-.3px}
.iv-hint{font-size:13px;color:var(--grey);line-height:1.5;margin-bottom:28px}
.iv-body{margin-bottom:32px}
.iv-chips{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.iv-chip{background:var(--bg3);border:1px solid var(--line);color:var(--white);padding:10px 18px;border-radius:999px;cursor:pointer;font:500 13px 'Montserrat',sans-serif;transition:.2s}
.iv-chip:hover{border-color:var(--accent);color:var(--accent)}
.iv-chip.selected{background:var(--accent);border-color:var(--accent);color:var(--bg);font-weight:600}
.iv-other{margin-top:14px;max-width:360px;margin-left:auto;margin-right:auto}
.iv-other input{width:100%;padding:10px 14px;background:var(--bg);border:1px dashed var(--line);border-radius:10px;color:var(--white);font:400 13px 'Montserrat',sans-serif;text-align:center;outline:none;transition:.2s}
.iv-other input:focus{border-style:solid;border-color:var(--accent);background:var(--bg3)}
.iv-text{width:100%;padding:16px 18px;background:var(--bg3);border:1px solid var(--line);border-radius:10px;color:var(--white);font:400 15px 'Montserrat',sans-serif;line-height:1.55;resize:vertical;outline:none;transition:.2s}
.iv-text:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}
.iv-nav{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:20px}
.iv-nav .iv-back{background:transparent;border:0;color:var(--grey)}
.iv-nav .iv-back:hover:not(:disabled){color:var(--white)}
.iv-nav .iv-back:disabled{opacity:.3;cursor:not-allowed}
.iv-nav .iv-next{padding:12px 24px;font-size:14px}
.iv-nav .iv-next:disabled{opacity:.4;cursor:not-allowed}

/* Generating */
.gen-glow{width:72px;height:72px;margin:0 auto 20px;border-radius:50%;background:radial-gradient(circle,var(--accent-dim) 0%,transparent 70%);display:flex;align-items:center;justify-content:center;animation:genPulse 2s ease-in-out infinite}
@keyframes genPulse{0%,100%{transform:scale(1);opacity:.7}50%{transform:scale(1.15);opacity:1}}
.gen-icon{width:36px;height:36px;color:var(--accent)}
.gen-title{font-size:22px;font-weight:700;margin-bottom:10px}
.gen-hint{font-size:13px;color:var(--grey);margin-bottom:24px}
.gen-dots{display:inline-flex;gap:8px}
.gen-dots span{width:8px;height:8px;border-radius:50%;background:var(--accent);animation:genDot 1.4s ease-in-out infinite}
.gen-dots span:nth-child(2){animation-delay:.2s}
.gen-dots span:nth-child(3){animation-delay:.4s}
@keyframes genDot{0%,80%,100%{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(-5px)}}

/* Canvas */
.canvas-header{margin-bottom:24px;padding-bottom:20px;border-bottom:1px solid var(--line)}
.canvas-titleblock{margin-bottom:14px}
.canvas-title{width:100%;background:transparent;border:0;color:var(--white);font:700 28px 'Montserrat',sans-serif;padding:4px 0;outline:none;letter-spacing:-.3px}
.canvas-title:focus{background:var(--bg3);padding:4px 10px;border-radius:6px}
.title-alts{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 14px;align-items:center}
.title-alts-label{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--grey);margin-right:6px}
.title-alt{background:transparent;border:1px dashed var(--line);color:var(--grey);padding:4px 10px;border-radius:999px;cursor:pointer;font-size:11px;transition:.2s;font-family:'Montserrat',sans-serif}
.title-alt:hover{border-color:var(--accent);color:var(--accent);border-style:solid;background:var(--accent-dim)}
.canvas-pitch{width:100%;background:var(--bg3);border:1px solid var(--line);border-radius:8px;padding:12px 14px;color:var(--white);font:400 13px 'Montserrat',sans-serif;line-height:1.65;resize:vertical;outline:none;transition:.2s}
.canvas-pitch:focus{border-color:var(--accent)}
.canvas-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.canvas-meta-chip{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--grey);background:var(--bg3);padding:4px 10px;border-radius:999px;border:1px solid var(--line)}
.smart-banner{margin:18px 0 8px;padding:16px 18px;border-radius:14px;background:linear-gradient(135deg,var(--accent-dim) 0%,var(--bg3) 100%);border:1px solid var(--line);animation:smartFadeIn .6s ease}
.smart-banner-head{display:flex;align-items:center;gap:8px;color:var(--accent);font-weight:700;font-size:13px;letter-spacing:.3px}
.smart-banner-title{font-family:'Montserrat',sans-serif}
.smart-banner-sub{font-size:12.5px;color:var(--grey);margin:6px 0 12px;line-height:1.55;font-style:italic}
.smart-row{display:flex;align-items:flex-start;gap:10px;margin:6px 0;flex-wrap:wrap}
.smart-row-label{font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:var(--grey);min-width:90px;padding-top:5px}
.smart-row-list{display:flex;flex-wrap:wrap;gap:5px;flex:1}
.smart-chip{background:var(--bg);border:1px solid var(--line);color:var(--white);padding:4px 10px;border-radius:999px;font-size:11px;cursor:default;transition:.2s}
.smart-chip:hover{border-color:var(--accent)}
.smart-chip--soft{background:transparent;color:var(--grey);font-style:italic}
@keyframes smartFadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.gen-title,#genHint{transition:opacity .22s ease}
.canvas-grid{display:grid;grid-template-columns:1fr 380px;gap:24px;align-items:flex-start}
.canvas-rail{display:flex;flex-direction:column;gap:12px}
.canvas-chat{position:sticky;top:80px;background:var(--bg3);border:1px solid var(--line);border-radius:12px;overflow:hidden;display:flex;flex-direction:column;max-height:calc(100vh - 120px)}
.chat-scope{padding:12px 14px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600;color:var(--accent);background:var(--accent-dim)}
.chat-history{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px;min-height:180px;max-height:380px}
.chat-empty{font-size:12px;color:var(--grey);font-style:italic;text-align:center;padding:20px}
.chat-msg{font-size:13px;line-height:1.6;padding:10px 12px;border-radius:10px;max-width:92%;word-wrap:break-word}
.chat-msg--user{background:var(--accent);color:var(--bg);align-self:flex-end;border-bottom-right-radius:3px}
.chat-msg--ai{background:var(--bg);border:1px solid var(--line);color:var(--white);align-self:flex-start;border-bottom-left-radius:3px}
.chat-suggestions{display:flex;flex-wrap:wrap;gap:4px;padding:8px 10px;border-top:1px solid var(--line);background:var(--bg)}
.chat-sug{background:transparent;border:1px solid var(--line);color:var(--grey);padding:4px 10px;border-radius:999px;cursor:pointer;font-size:10.5px;transition:.2s;font-family:'Montserrat',sans-serif}
.chat-sug:hover{border-color:var(--accent);color:var(--accent)}
.chat-input{display:flex;gap:6px;padding:10px;border-top:1px solid var(--line);background:var(--bg3)}
.chat-input textarea{flex:1;padding:8px 12px;background:var(--bg);border:1px solid var(--line);border-radius:8px;color:var(--white);font:400 13px 'Montserrat',sans-serif;resize:none;outline:none;transition:.2s}
.chat-input textarea:focus{border-color:var(--accent)}
.chat-send{background:var(--accent);border:0;color:var(--bg);width:38px;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.2s}
.chat-send:hover{background:var(--white)}

/* Chapter cards */
.chapter-card{background:var(--bg3);border:1px solid var(--line);border-radius:12px;padding:16px 18px;cursor:pointer;transition:.2s;position:relative}
.chapter-card:hover{border-color:var(--accent-dim)}
.chapter-card.ch-focused{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}
.ch-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.ch-num{width:26px;height:26px;border-radius:50%;background:var(--accent-dim);color:var(--accent);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0}
.ch-title{flex:1;background:transparent;border:0;color:var(--white);font:600 15px 'Montserrat',sans-serif;outline:none;padding:2px 4px}
.ch-title:focus{background:var(--bg);border-radius:4px}
.ch-actions{display:flex;gap:4px;opacity:0;transition:opacity .2s}
.chapter-card:hover .ch-actions,.chapter-card.ch-focused .ch-actions{opacity:1}
.ch-icon{background:transparent;border:0;color:var(--grey);cursor:pointer;padding:4px;border-radius:4px;display:flex;align-items:center;transition:.15s}
.ch-icon:hover{color:var(--accent);background:var(--accent-dim)}
.ch-objective{width:100%;background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:8px 10px;color:var(--grey);font:italic 400 12.5px 'Montserrat',sans-serif;line-height:1.55;resize:vertical;outline:none;transition:.2s;margin-bottom:10px}
.ch-objective:focus{border-color:var(--accent);color:var(--white)}
.ch-beats{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:4px}
.ch-beat{display:flex;align-items:flex-start;gap:8px;padding:4px 0;font-size:12.5px;line-height:1.55;color:var(--white)}
.ch-beat-dot{width:5px;height:5px;border-radius:50%;background:var(--accent);margin-top:8px;flex-shrink:0}
.ch-beat-text{flex:1;padding:2px 4px;border-radius:3px;outline:none}
.ch-beat-text:focus{background:var(--bg)}
.ch-beat-del{background:transparent;border:0;color:var(--grey);cursor:pointer;opacity:0;transition:.2s;padding:2px;display:flex;align-items:center}
.ch-beat:hover .ch-beat-del{opacity:1}
.ch-beat-del:hover{color:var(--red,#d4543a)}
.ch-beat-add{font-size:11px;color:var(--grey);cursor:pointer;padding:6px 0;display:flex;align-items:center;gap:6px;border-top:1px dashed var(--line);margin-top:6px;transition:.2s}
.ch-beat-add:hover{color:var(--accent)}
.chapter-add{background:transparent;border:1px dashed var(--line);border-radius:12px;padding:18px;color:var(--grey);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;font-size:13px;font-family:'Montserrat',sans-serif;transition:.2s}
.chapter-add:hover{border-color:var(--accent);color:var(--accent);border-style:solid;background:var(--accent-dim)}

.canvas-actions{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:32px;padding-top:24px;border-top:1px solid var(--line);flex-wrap:wrap}
.canvas-actions .btn-accent{padding:14px 28px;font-size:15px}

@media(max-width:900px){
    .canvas-grid{grid-template-columns:1fr}
    .canvas-chat{position:static;max-height:none;margin-top:12px}
    .chat-history{max-height:300px}
}
@media(max-width:600px){
    .write-shell{padding:24px 16px 60px}
    .ws-title{font-size:26px}
    .iv-title{font-size:20px}
    .canvas-title{font-size:22px}
    .wp-bar{flex:0 0 20px}
}
[dir="rtl"] .write-reset{right:auto;left:24px}
[dir="rtl"] .chat-msg--user{align-self:flex-start;border-bottom-right-radius:10px;border-bottom-left-radius:3px}
[dir="rtl"] .chat-msg--ai{align-self:flex-end;border-bottom-left-radius:10px;border-bottom-right-radius:3px}
[dir="rtl"] .ch-num{font-family:'Montserrat',sans-serif}

/* ============================================
   World System — /book/:id/world
============================================ */
.world-section{max-width:1200px;margin:0 auto;padding:32px 24px 80px}
.world-breadcrumb{display:flex;align-items:center;gap:10px;margin-bottom:14px;font:500 12px 'Montserrat',sans-serif;letter-spacing:.3px;flex-wrap:wrap}
.world-crumb-link{display:inline-flex;align-items:center;gap:6px;color:var(--accent);text-decoration:none;padding:5px 10px;border-radius:8px;border:1px solid rgba(201,163,85,.25);background:rgba(201,163,85,.04);transition:.16s}
.world-crumb-link:hover{background:rgba(201,163,85,.12);border-color:var(--accent)}
.world-crumb-link--soft{border-color:transparent;background:transparent;color:var(--light);padding:5px 4px}
.world-crumb-link--soft:hover{color:var(--accent);background:transparent}
.world-crumb-sep{color:var(--light);opacity:.5}
.world-crumb-current{color:var(--white);font-weight:600;letter-spacing:.5px;text-transform:uppercase;font-size:11px}
.world-header{display:flex;align-items:center;gap:14px;margin-bottom:20px;flex-wrap:wrap}
.world-header h1{font-size:22px;font-weight:700;letter-spacing:-.2px}
.btn-world-link{margin-left:auto}
[dir="rtl"] .btn-world-link{margin-left:0;margin-right:auto}

.world-tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:28px;overflow-x:auto}
.world-tab{background:transparent;border:0;color:var(--grey);padding:12px 18px;cursor:pointer;font:600 13px 'Montserrat',sans-serif;display:flex;align-items:center;gap:8px;border-bottom:2px solid transparent;transition:.2s;white-space:nowrap}
.world-tab:hover{color:var(--white)}
.world-tab.active{color:var(--accent);border-bottom-color:var(--accent)}
.world-tab-count{background:var(--bg3);color:var(--grey);padding:2px 8px;border-radius:999px;font-size:10px;font-weight:700}
.world-tab.active .world-tab-count{background:var(--accent-dim);color:var(--accent)}

.world-pane-header{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;flex-wrap:wrap}
.world-pane-intro{font-size:13px;color:var(--grey);line-height:1.55;max-width:600px;margin:0}
.world-pane-actions{display:flex;gap:8px}
.world-empty{grid-column:1/-1;text-align:center;padding:60px 20px;color:var(--grey);display:flex;flex-direction:column;align-items:center;gap:14px}
.world-empty svg{width:48px;height:48px;opacity:.4}
.world-empty p{max-width:340px;font-size:14px;line-height:1.55}

/* ── Reference character gallery (empty state) ── */
.world-ref-empty{grid-column:1/-1;display:flex;flex-direction:column;align-items:center;gap:20px;padding:32px 16px 40px}
.world-ref-tagline{font-size:13px;color:var(--grey);text-align:center;max-width:360px;margin:0;line-height:1.55}
.world-ref-gallery{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;width:100%}
.world-ref-card{display:flex;flex-direction:column;align-items:center;gap:6px;width:96px;opacity:.72;transition:opacity .2s}
.world-ref-card:hover{opacity:1}
.world-ref-portrait{width:96px;height:116px;border-radius:10px;overflow:hidden;background:var(--bg3);border:1px solid var(--line);display:flex;align-items:flex-end;justify-content:center}
.world-ref-portrait img{width:100%;height:100%;object-fit:cover;object-position:top center}
.world-ref-meta{display:flex;flex-direction:column;align-items:center;gap:1px}
.world-ref-arch{font-size:10.5px;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.5px}
.world-ref-era{font-size:9.5px;color:var(--grey);font-style:italic}
.world-ref-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-top:4px}

.world-stub{max-width:500px;margin:60px auto;text-align:center;padding:40px;background:var(--bg3);border:1px dashed var(--line);border-radius:12px}
.world-stub svg{width:44px;height:44px;color:var(--accent);opacity:.6;margin-bottom:14px}
.world-stub h3{font-size:16px;font-weight:700;margin-bottom:8px}
.world-stub p{font-size:13px;color:var(--grey);line-height:1.55}

/* Character grid */
.char-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}
.char-card{background:var(--bg3);border:1px solid var(--line);border-radius:14px;overflow:hidden;cursor:pointer;transition:.22s ease;display:flex;flex-direction:column;position:relative}
.char-card:hover{border-color:var(--accent);transform:translateY(-3px);box-shadow:0 10px 26px rgba(0,0,0,.22)}
.char-card-portrait{position:relative;height:200px;background:linear-gradient(135deg,var(--accent-dim),var(--bg));display:flex;align-items:flex-end;justify-content:center;overflow:hidden;padding-top:42px}
.char-card-portrait::before{content:"";position:absolute;inset:0 0 auto 0;height:42px;background:linear-gradient(to bottom,rgba(0,0,0,.18),transparent);pointer-events:none;z-index:1}
.char-card-portrait::after{content:"";position:absolute;inset:auto 0 0 0;height:45%;background:linear-gradient(to bottom,transparent,rgba(0,0,0,.45));pointer-events:none}
.char-card-portrait img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.char-card-initials{font-size:64px;font-weight:700;color:var(--accent);letter-spacing:-2px;font-family:'Montserrat',serif;opacity:.45;line-height:1;margin-bottom:24px;z-index:1}
.char-card-role{position:absolute;top:10px;left:10px;z-index:3;font-size:9.5px;text-transform:uppercase;letter-spacing:.6px;padding:5px 11px;border-radius:999px;background:rgba(20,20,20,.78);color:#fff;font-weight:700;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);box-shadow:0 2px 6px rgba(0,0,0,.25);max-width:calc(100% - 56px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.char-card-role--protagonist{background:var(--accent);color:var(--bg)}
.char-card-role--antagonist{background:#c13a3a;color:#fff}
.char-card-coach{position:absolute;top:10px;right:10px;z-index:3;width:30px;height:30px;border-radius:999px;border:0;display:inline-flex;align-items:center;justify-content:center;background:rgba(20,20,20,.78);color:#fff;cursor:pointer;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);box-shadow:0 2px 6px rgba(0,0,0,.25);transition:.18s;opacity:.92}
.char-card-coach:hover{background:var(--accent);color:var(--bg)}
.char-card-body{padding:14px 16px 10px;display:flex;flex-direction:column;gap:8px;flex:1}
.char-card-headline{display:flex;flex-direction:column;gap:2px;min-width:0}
.char-card-name{font-size:16px;font-weight:700;margin:0;line-height:1.2;color:var(--white);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.char-card-arch{font-size:10.5px;color:var(--accent);text-transform:uppercase;letter-spacing:.6px;margin:0;font-weight:600}
.char-card-desire{font-size:12px;color:var(--grey);line-height:1.5;margin:0;padding-top:8px;border-top:1px dashed var(--line)}
.char-card-desire strong{color:var(--white);text-transform:uppercase;font-size:10px;letter-spacing:.5px;display:block;margin-bottom:2px}
.char-card-foot{display:flex;align-items:center;gap:12px;padding:10px 16px 14px;border-top:1px solid var(--line);background:linear-gradient(to bottom,transparent,rgba(255,255,255,.015))}
.char-card-foot .char-card-radar{flex-shrink:0;width:64px;height:64px}
.char-card-foot-meta{display:flex;flex-direction:column;gap:2px;min-width:0}
.char-card-foot-label{font-size:9.5px;color:var(--accent);text-transform:uppercase;letter-spacing:1.2px;font-weight:700}
.char-card-foot-hint{font-size:11px;color:var(--grey);font-style:italic}

/* Drawer */
.drawer-overlay{position:fixed;inset:0;z-index:250;pointer-events:none}
.drawer-overlay[hidden]{display:none}
.drawer-scrim{position:absolute;inset:0;background:rgba(0,0,0,.5);opacity:0;transition:opacity .25s;pointer-events:auto}
.drawer-overlay.open .drawer-scrim{opacity:1}
.drawer{position:absolute;top:0;right:0;bottom:0;width:min(560px,100%);background:var(--bg);border-left:1px solid var(--line);box-shadow:-8px 0 24px rgba(0,0,0,.3);transform:translateX(100%);transition:transform .25s ease;display:flex;flex-direction:column;pointer-events:auto}
.drawer-overlay.open .drawer{transform:translateX(0)}
[dir="rtl"] .drawer{right:auto;left:0;border-left:0;border-right:1px solid var(--line);transform:translateX(-100%);box-shadow:8px 0 24px rgba(0,0,0,.3)}
[dir="rtl"] .drawer-overlay.open .drawer{transform:translateX(0)}
.drawer-head{display:flex;align-items:center;gap:8px;padding:18px 20px;border-bottom:1px solid var(--line);background:var(--bg3)}
.drawer-title{flex:1;background:transparent;border:0;color:var(--white);font:700 18px 'Montserrat',sans-serif;outline:none;padding:4px}
.drawer-title:focus{background:var(--bg);border-radius:6px}
.drawer-close{background:transparent;border:0;color:var(--grey);cursor:pointer;padding:6px;display:flex;transition:.2s}
.drawer-close:hover{color:var(--accent)}
.drawer-body{flex:1;overflow-y:auto;padding:20px 24px 40px}

.dc-section{margin-bottom:26px;padding-bottom:20px;border-bottom:1px solid var(--line)}
.dc-section:last-child{border-bottom:0}
.dc-section-title{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:14px;font-size:13px;font-weight:700;color:var(--white);text-transform:uppercase;letter-spacing:.5px}
.dc-hint{font-size:10px;font-weight:500;color:var(--grey);text-transform:none;letter-spacing:0;font-style:italic}
.dc-section--stub{opacity:.55}
.dc-stub-text{font-size:12px;color:var(--grey);font-style:italic;line-height:1.55}

.dc-sliders{display:flex;flex-direction:column;gap:14px;margin-bottom:18px}
.dc-slider{background:var(--bg3);border:1px solid var(--line);border-radius:8px;padding:10px 12px}
.dc-slider--moral{background:linear-gradient(90deg,rgba(193,58,58,.08),var(--bg3) 50%,var(--accent-dim));border-color:var(--line)}
.dc-slider-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}
.dc-slider-label{font-size:12px;font-weight:600;color:var(--white)}
.dc-slider-val{font-size:11px;color:var(--accent);font-weight:700;font-variant-numeric:tabular-nums}
.dc-slider input[type="range"]{width:100%;margin:4px 0;-webkit-appearance:none;appearance:none;height:4px;background:var(--line);border-radius:4px;outline:none}
.dc-slider input[type="range"]::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;background:var(--accent);border-radius:50%;cursor:pointer;border:2px solid var(--bg);transition:.15s}
.dc-slider input[type="range"]::-webkit-slider-thumb:hover{transform:scale(1.15);box-shadow:0 0 0 4px var(--accent-dim)}
.dc-slider input[type="range"]::-moz-range-thumb{width:16px;height:16px;background:var(--accent);border-radius:50%;cursor:pointer;border:2px solid var(--bg)}
.dc-slider-ends{display:flex;justify-content:space-between;font-size:9.5px;color:var(--grey);text-transform:uppercase;letter-spacing:.4px;margin-top:2px}

.dc-radar-wrap{display:flex;justify-content:center;margin-top:10px;background:var(--bg3);border:1px solid var(--line);border-radius:12px;padding:12px}

.dc-actions{display:flex;justify-content:space-between;align-items:center;gap:12px;border-bottom:0;margin-bottom:0}
.dc-save-status{font-size:11px;color:var(--grey);font-style:italic;transition:color .2s}
.dc-save-status[data-state="saved"]{color:var(--green,#16A34A)}
.dc-save-status[data-state="saving"]{color:var(--accent)}
.dc-save-status[data-state="error"]{color:#c13a3a}
.btn-danger{background:transparent;border:1px solid rgba(193,58,58,.5);color:#c13a3a}
.btn-danger:hover{background:rgba(193,58,58,.12);border-color:#c13a3a}

/* Suggest modal */
.modal-wide{max-width:720px}
.modal-body{max-height:70vh;overflow-y:auto;padding-right:4px}
.suggest-controls{background:var(--bg3);border:1px solid var(--line);border-radius:10px;padding:14px;margin-bottom:16px}
.suggest-controls label{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--grey);font-weight:600;margin-bottom:6px}
.suggest-controls input[type="text"]{width:100%;padding:9px 12px;background:var(--bg);border:1px solid var(--line);border-radius:8px;color:var(--white);font:400 13px 'Montserrat',sans-serif;outline:none;transition:.2s}
.suggest-controls input[type="text"]:focus{border-color:var(--accent)}
.suggest-controls-row{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:12px}
.suggest-controls-row>label{display:flex;align-items:center;gap:8px;margin:0}
.suggest-controls-row select{padding:6px 10px;background:var(--bg);border:1px solid var(--line);border-radius:6px;color:var(--white);font:400 12px 'Montserrat',sans-serif}
.suggest-loading,.suggest-error,.suggest-empty{padding:24px;text-align:center;font-size:13px;color:var(--grey);font-style:italic}
.suggest-error{color:#c13a3a}
.suggest-results{display:flex;flex-direction:column;gap:10px}
.suggest-item{background:var(--bg3);border:1px solid var(--line);border-radius:10px;padding:14px 16px}
.suggest-item-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.suggest-item-head strong{font-size:14px}
.suggest-item-tag{font-size:10px;text-transform:uppercase;letter-spacing:.5px;background:var(--accent-dim);color:var(--accent);padding:2px 8px;border-radius:999px;font-weight:700}
.suggest-item-brief{font-size:12.5px;color:var(--white);line-height:1.55;margin:0 0 8px;font-style:italic}
.suggest-item-anchors{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--grey);margin-bottom:10px}
.suggest-item-anchors strong{color:var(--white);font-size:10px;text-transform:uppercase;letter-spacing:.4px}
.suggest-add-btn{align-self:flex-start}
.suggest-added{opacity:.6;pointer-events:none}

/* ── Suggest Characters — composer + result cards ── */
.cs-composer{display:flex;flex-direction:column;gap:18px;background:var(--bg3);border:1px solid var(--line);border-radius:12px;padding:18px;margin-bottom:18px}
.cs-section{display:flex;flex-direction:column;gap:10px}
.cs-section-title{font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:var(--grey);font-weight:700;display:flex;align-items:baseline;gap:8px}
.cs-section-title small{text-transform:none;letter-spacing:0;font-weight:500;color:var(--grey);opacity:.85;font-size:11px}

/* count buttons row */
.cs-count-row{display:flex;flex-wrap:wrap;gap:6px}
.cs-count-btn{
    width:34px;height:34px;border-radius:8px;border:1px solid var(--line);background:var(--bg);
    color:var(--white);font:600 13px 'Montserrat',sans-serif;cursor:pointer;transition:.15s;
    display:inline-flex;align-items:center;justify-content:center;
}
.cs-count-btn:hover{border-color:var(--accent)}
.cs-count-btn.is-on{background:var(--accent);color:var(--bg);border-color:var(--accent);box-shadow:0 4px 12px -4px rgba(201,163,85,.4)}

/* per-character tabs */
.cs-tabs{display:flex;flex-wrap:wrap;gap:6px}
.cs-tab{
    position:relative;
    display:inline-flex;align-items:center;gap:6px;
    padding:7px 12px;border-radius:8px;
    background:var(--bg);border:1px solid var(--line);
    color:var(--grey);cursor:pointer;
    font:600 12px 'Montserrat',sans-serif;letter-spacing:.02em;
    transition:.15s;
}
.cs-tab:hover{border-color:var(--accent);color:var(--white)}
.cs-tab.is-on{background:var(--accent-dim);border-color:var(--accent);color:var(--accent)}
.cs-tab.is-filled:not(.is-on){border-color:rgba(201,163,85,.45);color:var(--white)}
.cs-tab .icon{width:13px;height:13px}
.cs-tab-num{font-size:12px}
.cs-tab-dot{position:absolute;top:-2px;right:-2px;width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 2px var(--bg3)}

/* brief textarea pane */
.cs-pane{position:relative}
.cs-brief{
    width:100%;min-height:120px;resize:vertical;
    background:var(--bg);border:1px solid var(--line);border-radius:10px;
    padding:12px 14px 30px;color:var(--white);
    font:400 13.5px/1.55 'Lora','Georgia',serif;outline:none;transition:.15s;
}
.cs-brief:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(201,163,85,.15)}
.cs-pane-meta{
    position:absolute;left:12px;right:12px;bottom:8px;
    display:flex;justify-content:space-between;align-items:center;
    pointer-events:none;font-size:10.5px;color:var(--grey);letter-spacing:.04em;
}
.cs-pane-id{color:var(--accent);font-weight:700}

/* composer footer actions */
.cs-actions{display:flex;justify-content:space-between;gap:8px;align-items:center}
.cs-clear{background:transparent;color:var(--grey);border:1px solid var(--line)}
.cs-clear:hover{color:var(--white);border-color:var(--accent)}
.cs-go{min-width:160px}

/* loader */
.cs-loader{
    display:inline-block;width:14px;height:14px;border:2px solid var(--line);border-top-color:var(--accent);
    border-radius:50%;animation:cs-spin 0.8s linear infinite;margin-right:8px;vertical-align:middle;
}
@keyframes cs-spin{to{transform:rotate(360deg)}}

/* results — profile cards with radar */
.cs-results-head{
    display:flex;justify-content:space-between;align-items:center;
    margin:6px 2px 12px;
    font-size:12px;text-transform:uppercase;letter-spacing:.6px;color:var(--grey);font-weight:700;
}
.cs-results-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}
.cs-card{
    background:var(--bg3);border:1px solid var(--line);border-radius:14px;
    padding:14px;display:flex;flex-direction:column;gap:10px;
    transition:border-color .15s, transform .15s;
}
.cs-card:hover{border-color:var(--accent);transform:translateY(-1px)}
.cs-card-head{display:flex;align-items:center;gap:10px}
.cs-card-avatar{
    width:38px;height:38px;border-radius:50%;
    background:linear-gradient(135deg,var(--accent),rgba(201,163,85,.5));
    color:var(--bg);font:700 13px 'Montserrat',sans-serif;
    display:flex;align-items:center;justify-content:center;letter-spacing:.04em;flex:0 0 auto;
}
.cs-card-id{flex:1;min-width:0}
.cs-card-name{margin:0;font:600 15px 'Montserrat',sans-serif;color:var(--white);line-height:1.2}
.cs-card-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.cs-card-tag{font-size:9.5px;text-transform:uppercase;letter-spacing:.5px;background:var(--accent-dim);color:var(--accent);padding:2px 7px;border-radius:999px;font-weight:700}
.cs-card-tag--protagonist{background:rgba(201,163,85,.22);color:var(--accent)}
.cs-card-tag--antagonist{background:rgba(193,58,58,.18);color:#e87878}
.cs-card-tag--secondary{background:rgba(140,140,140,.18);color:var(--grey)}
.cs-card-body{display:grid;grid-template-columns:160px 1fr;gap:12px;align-items:center}
.cs-card-radar{width:160px;height:160px;flex:0 0 auto}
.cs-card-text{display:flex;flex-direction:column;gap:6px;min-width:0}
.cs-card-brief{margin:0;font:italic 12.5px/1.5 'Lora',serif;color:var(--white)}
.cs-card-anchor{margin:0;font-size:11.5px;color:var(--grey);line-height:1.45}
.cs-card-anchor strong{color:var(--white);font-size:10px;text-transform:uppercase;letter-spacing:.4px;font-weight:700;margin-right:4px}
.cs-card-foot{display:flex;justify-content:flex-end;gap:6px;border-top:1px solid var(--line);padding-top:10px}
.cs-add-all{background:transparent;color:var(--accent);border:1px solid var(--accent)}
.cs-add-all:hover{background:var(--accent);color:var(--bg)}

.cs-count-note{
    margin:8px 0 0;font:italic 11.5px/1.4 'Lora',serif;color:var(--grey);
    display:flex;align-items:center;gap:6px;
}
.cs-count-note::before{
    content:'';width:4px;height:4px;border-radius:50%;background:var(--accent);flex:0 0 auto;
}

/* mode toggle (per-character / single prompt) */
.cs-mode-toggle{
    display:inline-flex;background:var(--bg2);border:1px solid var(--line);
    border-radius:999px;padding:3px;margin-bottom:10px;gap:2px;
}
.cs-mode-btn{
    background:transparent;border:0;color:var(--grey);
    padding:6px 14px;border-radius:999px;font:600 11.5px 'Montserrat',sans-serif;
    text-transform:uppercase;letter-spacing:.4px;cursor:pointer;
    display:inline-flex;align-items:center;gap:6px;transition:all .15s;
}
.cs-mode-btn:hover{color:var(--white)}
.cs-mode-btn.is-on{background:var(--accent);color:var(--bg)}

/* saved-state cards + results footer */
.cs-card--saved{border-color:rgba(201,163,85,.45);background:linear-gradient(180deg,rgba(201,163,85,.05),var(--bg3))}
.cs-card-saved-badge{
    width:22px;height:22px;border-radius:50%;
    background:var(--accent);color:var(--bg);
    display:inline-flex;align-items:center;justify-content:center;
    flex:0 0 auto;margin-left:auto;
}
.cs-results-foot{
    display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;
    margin-top:18px;padding-top:14px;border-top:1px solid var(--line);
}

/* refine-on-card */
.cs-refine-box{
    max-height:0;overflow:hidden;transition:max-height .25s ease, margin-top .25s ease;
    margin-top:0;
}
.cs-refine-box.is-open{max-height:240px;margin-top:10px}
.cs-refine-input{
    width:100%;background:var(--bg2);border:1px solid var(--line);border-radius:10px;
    padding:8px 10px;color:var(--white);font:13px/1.5 'Lora',serif;resize:vertical;outline:none;
    transition:border-color .15s, box-shadow .15s;
}
.cs-refine-input:focus{border-color:var(--accent);box-shadow:0 0 0 2px rgba(201,163,85,.18)}
.cs-refine-actions{display:flex;justify-content:flex-end;gap:6px;margin-top:6px}
.cs-card.is-refining{opacity:.7;pointer-events:none}
.dc-prompt-actions{display:flex;justify-content:flex-end;margin-top:6px}
.dc-history{margin-top:10px;border-top:1px solid var(--line);padding-top:10px}
.dc-history > summary{
    cursor:pointer;list-style:none;display:inline-flex;align-items:center;gap:6px;
    color:var(--grey);font:600 11.5px 'Montserrat',sans-serif;text-transform:uppercase;letter-spacing:.4px;
}
.dc-history > summary::-webkit-details-marker{display:none}
.dc-history-count{
    background:var(--bg2);color:var(--accent);padding:1px 7px;border-radius:999px;font-size:10px;
}
.dc-history-list{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}
.dc-history-empty{color:var(--grey);font-size:12px;font-style:italic}
.dc-history-item{
    background:var(--bg2);border:1px solid var(--line);border-radius:10px;padding:8px 10px;
}
.dc-history-meta{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.dc-history-kind{
    font-size:9.5px;text-transform:uppercase;letter-spacing:.5px;font-weight:700;
    padding:1px 7px;border-radius:999px;background:var(--accent-dim);color:var(--accent);
}
.dc-history-kind--refine{background:rgba(140,140,200,.18);color:#9da4d4}
.dc-history-kind--regen{background:rgba(193,128,58,.18);color:#e8b078}
.dc-history-ts{color:var(--grey);font-size:11px;margin-left:auto;margin-right:6px}
.dc-history-reuse{
    background:transparent;border:0;color:var(--grey);cursor:pointer;
    padding:2px;border-radius:6px;display:inline-flex;align-items:center;
}
.dc-history-reuse:hover{color:var(--accent);background:var(--bg3)}
.dc-history-prompt{margin:0;font:italic 12.5px/1.45 'Lora',serif;color:var(--white);white-space:pre-wrap}

.cs-card.is-refining::after{
    content:'';position:absolute;inset:0;border-radius:14px;
    background:linear-gradient(90deg,transparent,rgba(201,163,85,.1),transparent);
    background-size:200% 100%;animation:cs-shimmer 1.2s linear infinite;pointer-events:none;
}
.cs-card{position:relative}
@keyframes cs-shimmer{from{background-position:200% 0}to{background-position:-200% 0}}

@media(max-width:560px){
    .cs-card-body{grid-template-columns:1fr;justify-items:center}
    .cs-card-radar{width:140px;height:140px}
    .cs-results-grid{grid-template-columns:1fr}
}

@media(max-width:600px){
    .world-section{padding:20px 12px 60px}
    .world-header h1{font-size:18px}
    .char-grid{grid-template-columns:1fr}
    .drawer{width:100%}
    .dc-radar-wrap canvas{width:180px;height:180px}
}

/* ============================================
   AIContextChat — reusable coach drawer (Phase 3)
============================================ */
[dir="rtl"] .char-card-role{left:auto;right:10px}
[dir="rtl"] .char-card-coach{right:auto;left:10px}

.drawer-coach{background:transparent;border:1px solid var(--accent);color:var(--accent);width:34px;height:34px;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.2s;margin-right:4px}
.drawer-coach:hover{background:var(--accent);color:var(--bg)}
[dir="rtl"] .drawer-coach{margin-right:0;margin-left:4px}

.world-header-coach{margin-left:0}

/* Chat overlay (stacks above everything, including the character drawer) */
.cc-overlay{position:fixed;inset:0;z-index:300;pointer-events:none}
.cc-overlay[hidden]{display:none}
.cc-scrim{position:absolute;inset:0;background:rgba(0,0,0,.08);opacity:0;transition:opacity .22s;pointer-events:auto}
.cc-overlay.cc-open .cc-scrim{opacity:1}
.cc-panel{position:absolute;top:0;right:0;bottom:0;width:min(440px,100%);background:var(--bg);border-left:1px solid var(--line);box-shadow:-8px 0 24px rgba(0,0,0,.35);transform:translateX(100%);transition:transform .22s ease;display:flex;flex-direction:column;pointer-events:auto}
.cc-overlay.cc-open .cc-panel{transform:translateX(0)}
[dir="rtl"] .cc-panel{right:auto;left:0;border-left:0;border-right:1px solid var(--line);transform:translateX(-100%);box-shadow:8px 0 24px rgba(0,0,0,.35)}
[dir="rtl"] .cc-overlay.cc-open .cc-panel{transform:translateX(0)}

.cc-head{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line);background:var(--bg3)}
.cc-head-icon{color:var(--accent);flex-shrink:0}
.cc-head-labels{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}
.cc-head-scope{font-size:10px;color:var(--accent);font-weight:700;text-transform:uppercase;letter-spacing:.5px}
.cc-head-title{font-size:13px;color:var(--white);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cc-head-btn{background:transparent;border:0;color:var(--grey);cursor:pointer;padding:6px;border-radius:4px;display:flex;align-items:center;transition:.15s}
.cc-head-btn:hover{color:var(--accent);background:var(--accent-dim)}

.cc-body{flex:1;overflow-y:auto;padding:14px 16px;display:flex;flex-direction:column;gap:10px}
.cc-empty{font-size:12.5px;color:var(--grey);font-style:italic;text-align:center;padding:30px 20px;line-height:1.6}
.cc-msg{font-size:13px;line-height:1.65;padding:10px 13px;border-radius:10px;max-width:90%;word-wrap:break-word;white-space:normal}
.cc-msg--user{background:var(--accent);color:var(--bg);align-self:flex-end;border-bottom-right-radius:3px}
.cc-msg--ai{background:var(--bg3);border:1px solid var(--line);color:var(--white);align-self:flex-start;border-bottom-left-radius:3px}
[dir="rtl"] .cc-msg--user{align-self:flex-start;border-bottom-right-radius:10px;border-bottom-left-radius:3px}
[dir="rtl"] .cc-msg--ai{align-self:flex-end;border-bottom-left-radius:10px;border-bottom-right-radius:3px}

.cc-suggestions{display:flex;flex-wrap:wrap;gap:4px;padding:8px 12px;border-top:1px solid var(--line);background:var(--bg3)}
.cc-chip{background:transparent;border:1px solid var(--line);color:var(--grey);padding:5px 11px;border-radius:999px;cursor:pointer;font:500 11px 'Montserrat',sans-serif;transition:.2s}
.cc-chip:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-dim)}

.cc-input{display:flex;gap:8px;align-items:flex-end;padding:10px 12px 12px;border-top:1px solid var(--line);background:var(--bg3)}
.cc-input textarea{flex:1;padding:10px 12px;background:var(--bg);border:1px solid var(--line);border-radius:10px;color:var(--white);font:400 13px 'Montserrat',sans-serif;resize:vertical;outline:none;transition:border-color .2s, box-shadow .2s;line-height:1.6;min-height:72px;max-height:280px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--accent) transparent}
.cc-input textarea::-webkit-scrollbar{width:8px}
.cc-input textarea::-webkit-scrollbar-track{background:transparent;margin:6px 0}
.cc-input textarea::-webkit-scrollbar-thumb{background:linear-gradient(180deg,var(--accent),var(--accent-dim));border-radius:8px;border:2px solid var(--bg)}
.cc-input textarea::-webkit-scrollbar-thumb:hover{background:var(--accent)}
.cc-input textarea::-webkit-resizer{background-image:linear-gradient(135deg,transparent 50%,var(--accent) 50%,var(--accent) 60%,transparent 60%,transparent 70%,var(--accent) 70%,var(--accent) 80%,transparent 80%);border-bottom-right-radius:10px}
.cc-input textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent)}
.cc-send{background:var(--accent);border:0;color:var(--bg);width:44px;height:44px;border-radius:10px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.2s;flex-shrink:0;align-self:flex-end;margin-bottom:2px}
.cc-send:hover{background:var(--white)}

.cc-actions{display:flex;flex-wrap:wrap;gap:6px;padding:6px 12px;border-top:1px solid var(--line);background:var(--bg3)}
.cc-action-btn{display:inline-flex;align-items:center;gap:6px;background:var(--accent-dim);border:1px solid var(--accent);color:var(--accent);padding:6px 12px;border-radius:8px;cursor:pointer;font:600 11px 'Montserrat',sans-serif;transition:.2s}
.cc-action-btn:hover{background:var(--accent);color:var(--bg)}

.cc-proposal{border:1px solid var(--accent);background:var(--bg2);border-radius:10px;padding:12px;margin:8px 0;max-width:92%}
.cc-proposal-head{display:flex;align-items:center;gap:6px;color:var(--accent);margin-bottom:8px;font:600 12px 'Montserrat',sans-serif;text-transform:uppercase;letter-spacing:.5px}
.cc-proposal-body{font:400 13px 'Montserrat',sans-serif;color:var(--white);line-height:1.55}
.cc-prop-title{font:700 15px 'Montserrat',sans-serif;color:var(--white);margin-bottom:4px}
.cc-prop-obj{color:var(--grey-light);margin-bottom:8px;font-style:italic}
.cc-prop-beats{margin:6px 0 8px 18px;color:var(--grey-light);font-size:12px}
.cc-prop-beats li{margin-bottom:3px}
.cc-prop-rat{margin-top:8px;padding-top:8px;border-top:1px dashed var(--line);color:var(--grey);font-size:11px;font-style:italic}
.cc-prop-draft{max-height:240px;overflow-y:auto;padding:8px;background:var(--bg);border:1px solid var(--line);border-radius:6px;margin-bottom:8px}
.cc-prop-draft p{margin:0 0 8px 0}
.cc-proposal-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
.cc-prop-done{color:var(--accent);font:600 12px 'Montserrat',sans-serif;padding:6px 0}
.cc-toast{background:var(--accent-dim);color:var(--accent);border:1px solid var(--accent);padding:8px 12px;border-radius:8px;font:600 12px 'Montserrat',sans-serif;margin:8px 0;text-align:center}
.cc-prop-cat{margin-left:auto;font:500 10px 'Montserrat',sans-serif;background:var(--bg3);color:var(--grey-light);padding:2px 8px;border-radius:999px;text-transform:lowercase;letter-spacing:.3px}
.cc-prop-idea{font:400 14px 'Montserrat',sans-serif;color:var(--white);line-height:1.55;padding:6px 0}
.cc-prop-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.cc-prop-tag{font:500 10px 'Montserrat',sans-serif;background:var(--bg3);color:var(--grey);padding:2px 8px;border-radius:4px}
.cc-proposal--editing .cc-proposal-body{display:flex;flex-direction:column;gap:4px}
.cc-edit-label{font:600 10px 'Montserrat',sans-serif;color:var(--grey);text-transform:uppercase;letter-spacing:.5px;margin-top:6px}
.cc-edit-input,.cc-edit-area{background:var(--bg);border:1px solid var(--line);color:var(--white);padding:6px 10px;border-radius:6px;font:400 13px 'Montserrat',sans-serif;width:100%;box-sizing:border-box;outline:none;resize:vertical}
.cc-edit-input:focus,.cc-edit-area:focus{border-color:var(--accent)}
.cc-edit-area--tall{min-height:180px}

@media(max-width:600px){
    .cc-panel{width:100%}
    .cc-msg{max-width:95%}
}

/* ============================================
   Phase 4 — Portrait / Image blocks
============================================ */
.portrait-block{display:flex;flex-direction:column;gap:12px}
.portrait-preview{position:relative;width:180px;height:180px;background:var(--bg3);border:1px dashed var(--line);border-radius:12px;display:flex;align-items:center;justify-content:center;overflow:hidden;margin:0 auto}
.portrait-preview--wide{width:100%;max-width:340px;height:200px}
.portrait-preview img{width:100%;height:100%;object-fit:cover}
.portrait-empty{font-size:11px;color:var(--grey);font-style:italic}
.portrait-remove{position:absolute;top:6px;right:6px;background:rgba(0,0,0,.6);border:0;color:#fff;width:26px;height:26px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:.8;transition:.15s}
.portrait-remove:hover{opacity:1;background:#c13a3a}
.portrait-style-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.portrait-style-label{font-size:11px;color:var(--grey);text-transform:uppercase;letter-spacing:.08em}
.portrait-style-chip{padding:5px 12px;background:var(--bg);border:1px solid var(--line);border-radius:999px;color:var(--grey);font:500 11px 'Montserrat',sans-serif;cursor:pointer;transition:.15s}
.portrait-style-chip:hover{color:var(--white);border-color:var(--grey)}
.portrait-style-chip.is-active{background:var(--accent);border-color:var(--accent);color:var(--bg)}
.portrait-prompt-row{display:flex;gap:6px;align-items:flex-start}
.portrait-prompt-row textarea{flex:1;padding:10px 12px;background:var(--bg);border:1px solid var(--line);border-radius:8px;color:var(--white);font:400 12px 'Montserrat',sans-serif;resize:vertical;outline:none;line-height:1.5}
.portrait-prompt-row textarea:focus{border-color:var(--accent)}
.portrait-actions{display:flex;gap:6px;flex-wrap:wrap}
.portrait-upload-label{cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.portrait-hint{font-size:11px;color:var(--grey);min-height:14px;margin:2px 0 0;line-height:1.5}

/* ============================================
   Phase 5 — Locations grid
============================================ */
.loc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}
.loc-card{background:var(--bg3);border:1px solid var(--line);border-radius:12px;overflow:hidden;cursor:pointer;transition:.2s;display:flex;flex-direction:column}
.loc-card:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:0 6px 18px rgba(0,0,0,.18)}
.loc-card-image{position:relative;height:140px;background:linear-gradient(135deg,var(--bg),var(--accent-dim));display:flex;align-items:center;justify-content:center;overflow:hidden}
.loc-card-image img{width:100%;height:100%;object-fit:cover}
.loc-card-placeholder{width:36px;height:36px;color:var(--grey);opacity:.5}
.loc-card-kind{position:absolute;top:8px;right:8px;font-size:9.5px;text-transform:uppercase;letter-spacing:.5px;padding:3px 8px;border-radius:999px;background:rgba(0,0,0,.55);color:#fff;font-weight:700}
.loc-card-body{padding:14px 16px;display:flex;flex-direction:column;gap:4px}

/* ============================================
   Phase 5/6 — Era + Timeline
============================================ */
.era-grid{display:grid;grid-template-columns:1fr;gap:20px;max-width:900px}
.era-card{background:var(--bg3);border:1px solid var(--line);border-radius:12px;padding:22px 24px}

/* Era picker — refined minimalism */
.era-card--picker{
    background:radial-gradient(120% 80% at 0% 0%, rgba(201,163,85,.05), transparent 60%), var(--bg3);
    padding:26px 28px;
}
.era-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:6px}
.era-title{
    margin:0;font:600 14px 'Montserrat',sans-serif;text-transform:uppercase;letter-spacing:2.2px;
    color:var(--accent);
}
.era-title::before{content:'';display:inline-block;width:18px;height:1px;background:var(--accent);vertical-align:middle;margin-right:10px;opacity:.6}
.era-status{
    font:500 10.5px 'Montserrat',sans-serif;text-transform:uppercase;letter-spacing:.6px;color:var(--grey);
    display:inline-flex;align-items:center;gap:5px;
}
.era-status::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--grey);transition:background .15s}
.era-status[data-state="saved"]::before{background:#3aa873}
.era-status[data-state="saving"]::before{background:var(--accent);animation:era-pulse 1s ease-in-out infinite}
.era-status[data-state="error"]::before{background:#c13a3a}
@keyframes era-pulse{0%,100%{opacity:.4}50%{opacity:1}}

.era-lead{
    margin:4px 0 22px;font:italic 13px/1.55 'Lora',serif;color:var(--grey);max-width:560px;
}

.era-tiles{
    display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-bottom:22px;
}
.era-tile{
    background:transparent;border:1px solid var(--line);border-radius:10px;
    padding:14px 12px 12px;cursor:pointer;color:var(--white);
    display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;
    transition:border-color .18s, background .18s, transform .18s;
    position:relative;overflow:hidden;
}
.era-tile::before{
    content:'';position:absolute;inset:0;border-radius:10px;
    background:radial-gradient(60% 60% at 50% 0%, rgba(201,163,85,.10), transparent 70%);
    opacity:0;transition:opacity .2s;pointer-events:none;
}
.era-tile:hover{border-color:rgba(201,163,85,.5);transform:translateY(-1px)}
.era-tile:hover::before{opacity:1}
.era-tile.is-on{
    border-color:var(--accent);background:rgba(201,163,85,.06);
    box-shadow:0 0 0 1px var(--accent) inset;
}
.era-tile.is-on::after{
    content:'';position:absolute;top:8px;right:8px;width:6px;height:6px;border-radius:50%;background:var(--accent);
}
.era-glyph{
    width:28px;height:28px;color:var(--grey);transition:color .18s;
}
.era-tile:hover .era-glyph,
.era-tile.is-on .era-glyph{color:var(--accent)}
.era-name{
    font:600 12.5px 'Montserrat',sans-serif;color:var(--white);
    letter-spacing:.2px;
}
.era-range{
    font:italic 10.5px 'Lora',serif;color:var(--grey);letter-spacing:.3px;
}

.era-custom-row{
    display:flex;align-items:center;gap:10px;
    margin:0 0 22px;padding:10px 14px;
    background:var(--bg2);border:1px solid var(--line);border-radius:10px;
    animation:era-slide .25s ease;
}
.era-custom-row[hidden]{display:none}
.era-custom-icon{width:18px;height:18px;color:var(--accent);flex:0 0 auto}
.era-custom-row input{
    flex:1;background:transparent;border:0;outline:none;
    color:var(--white);font:14px 'Lora',serif;
}
@keyframes era-slide{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}

.era-years{display:flex;flex-direction:column;gap:8px}
.era-years-label{
    font:600 10.5px 'Montserrat',sans-serif;text-transform:uppercase;letter-spacing:1.4px;color:var(--grey);
}
.era-years-row{
    display:inline-flex;align-items:center;gap:10px;
    background:var(--bg2);border:1px solid var(--line);border-radius:999px;
    padding:6px 14px;width:fit-content;
    transition:border-color .18s;
}
.era-years-row:focus-within{border-color:var(--accent)}
.era-years-row input{
    width:80px;background:transparent;border:0;outline:none;
    color:var(--white);font:600 14px 'Montserrat',sans-serif;
    text-align:center;letter-spacing:.5px;
}
.era-years-row input::placeholder{color:var(--grey);opacity:.5;font-weight:400}
.era-arrow{width:16px;height:16px;color:var(--grey)}
.era-years-hint{
    font:italic 11px 'Lora',serif;color:var(--grey);
}
.timeline-wrap{margin-top:14px;overflow-x:auto;padding:4px 0 10px}
.timeline-rail{position:relative;display:flex;gap:6px;align-items:flex-start;padding:20px 6px 10px;min-width:100%}
.timeline-line{position:absolute;left:0;right:0;top:32px;height:2px;background:linear-gradient(90deg,transparent,var(--line) 10%,var(--line) 90%,transparent);z-index:0}
.tl-node{position:relative;background:transparent;border:0;cursor:pointer;display:flex;flex-direction:column;align-items:center;padding:0 6px;min-width:96px;z-index:1;color:var(--grey);transition:.2s}
.tl-node:hover{color:var(--white)}
.tl-node:hover .tl-dot{transform:scale(1.2)}
.tl-dot{width:14px;height:14px;border-radius:50%;background:var(--bg);border:2px solid var(--line);margin-bottom:6px;transition:.2s}
.tl-node--marked .tl-dot{border-width:3px}
.tl-dot.tl-marker--start{border-color:var(--green,#16A34A);background:var(--green,#16A34A)}
.tl-dot.tl-marker--turning{border-color:var(--accent);background:var(--accent)}
.tl-dot.tl-marker--climax{border-color:#c13a3a;background:#c13a3a}
.tl-dot.tl-marker--end{border-color:var(--grey);background:var(--grey)}
.tl-title{font-size:11px;font-weight:600;color:var(--white);max-width:110px;text-align:center;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.tl-label{font-size:10px;font-weight:500;color:var(--accent);margin-top:3px;max-width:110px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ============================================
   Phase 7 — Evolution events
============================================ */
.ev-list{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.ev-empty{font-size:12px;color:var(--grey);font-style:italic;padding:12px;text-align:center;background:var(--bg3);border:1px dashed var(--line);border-radius:8px}
.ev-item{background:var(--bg3);border:1px solid var(--line);border-radius:8px;padding:10px 12px}
.ev-head{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.ev-head strong{flex:1;font-size:13px;color:var(--white)}
.ev-chapter{font-size:10px;color:var(--accent);text-transform:uppercase;letter-spacing:.4px;background:var(--accent-dim);padding:2px 8px;border-radius:999px;font-weight:600}
.ev-btn{background:transparent;border:0;color:var(--grey);cursor:pointer;padding:3px;border-radius:4px;display:flex;transition:.15s}
.ev-btn:hover{color:var(--accent);background:var(--accent-dim)}
.ev-btn--danger:hover{color:#c13a3a;background:rgba(193,58,58,.12)}
.ev-desc{font-size:12px;color:var(--grey);margin:4px 0 6px;line-height:1.55}
.ev-deltas{display:flex;flex-wrap:wrap;gap:4px}
.ev-deltas-preview{display:flex;flex-wrap:wrap;gap:4px;padding:8px 10px;background:var(--bg);border:1px solid var(--line);border-radius:6px;min-height:32px;margin-bottom:8px}
.ev-delta{font-size:10px;font-weight:700;padding:3px 8px;border-radius:999px;letter-spacing:.3px;text-transform:uppercase;font-variant-numeric:tabular-nums}
.ev-delta--pos{background:rgba(22,163,74,.18);color:var(--green,#16A34A)}
.ev-delta--neg{background:rgba(193,58,58,.18);color:#c13a3a}

.canvas-option{display:flex;align-items:center;gap:8px;margin-top:20px;padding:12px 14px;background:var(--bg3);border:1px dashed var(--line);border-radius:8px;font-size:12px;color:var(--grey);cursor:pointer}
.canvas-option input[type="checkbox"]{accent-color:var(--accent);width:15px;height:15px;cursor:pointer}
.canvas-option:hover{border-color:var(--accent);color:var(--white)}

/* ============================================
   ATELIER EDITOR (Editorial Atelier — v2)
   Scoped under .atelier so it doesn't leak
============================================ */

.atelier{
    --at-paper:var(--bg);
    --at-paper-2:var(--bg2);
    --at-paper-3:var(--bg3);
    --at-ink:var(--white);
    --at-ink-soft:var(--light);
    --at-ink-grey:var(--grey);
    --at-ink-mute:var(--muted);
    --at-gold:var(--accent);
    --at-gold-deep:var(--accent2);
    --at-gold-wash:var(--accent-dim);
    --at-gold-glow:var(--accent-glow);
    --at-line:var(--line);
    --at-line-strong:var(--line2);
    --at-sage:#5C7854;
    --at-ember:#B5421A;
    --at-plum:#875590;
    --at-ease:cubic-bezier(.2,.8,.2,1);
    --at-rail-l:272px;
    --at-rail-r:360px;

    --font-display:'Playfair Display','EB Garamond',Georgia,serif;
    --font-prose:'Lora','Iowan Old Style',Georgia,serif;

    position:relative;
    height:calc(100vh - 65px);
    display:flex;flex-direction:column;
    overflow:hidden;
    background:
        radial-gradient(1400px 500px at 50% -180px, var(--at-gold-wash), transparent 60%),
        var(--at-paper);
}
[data-theme="dark"] .atelier{
    --at-sage:#9EB695;
    --at-ember:#E08B6B;
    --at-plum:#B58BA4;
}
/* When the atelier is mounted, hide the default footer and neutralise main padding */
body:has(.atelier) footer{display:none}
body:has(.atelier) main{margin:0;padding:0;min-height:0}
body:has(.atelier) main > .atelier{width:100%}

/* ── Subheader ─────────────────────────────── */
.atelier .at-subheader{
    display:flex;align-items:center;gap:14px;
    height:48px;padding:0 20px;
    background:var(--at-paper-2);
    border-bottom:1px solid var(--at-line);
    position:relative;z-index:5;flex-shrink:0;
}
.atelier .at-subheader::after{
    content:'';position:absolute;left:0;right:0;bottom:0;height:1px;
    background:linear-gradient(90deg,transparent 10%,var(--at-gold) 50%,transparent 90%);
    opacity:.25;
}
.atelier .at-back{color:var(--at-ink-grey);display:flex;padding:4px;text-decoration:none;transition:.2s}
.atelier .at-back:hover{color:var(--at-gold)}
.atelier .at-crumb{
    position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
    display:flex;align-items:center;gap:8px;
    pointer-events:none;
    max-width:46%;
}
.atelier .at-crumb-book{
    font:italic 500 15px/1 var(--font-display);color:var(--at-ink);
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
    pointer-events:auto;
}
.atelier .at-crumb-sep,
.atelier .at-crumb-ch{display:none}

.atelier .at-nav{position:relative;display:flex;justify-content:flex-start;gap:22px;isolation:isolate;flex:0 0 auto}
.atelier .at-nav a{
    position:relative;
    text-decoration:none;
    font:600 10px/1 'Montserrat',sans-serif;
    letter-spacing:.22em;text-transform:uppercase;
    color:var(--at-ink-grey);
    padding:6px 2px;
    cursor:pointer;
    transition:color .25s ease;
}
.atelier .at-nav a:hover{color:var(--at-ink)}
.atelier .at-nav a.is-current{color:var(--at-ink)}
.atelier .at-nav .at-nav-extra{
    color:var(--at-ink-grey);
    font:600 10px/1 'Montserrat',sans-serif;
    letter-spacing:.22em;text-transform:uppercase;
    text-decoration:none;
    padding:6px 2px;
    transition:color .25s ease;
    position:relative;
}
.atelier .at-nav .at-nav-extra:hover{color:var(--at-gold)}
.atelier .at-nav .at-nav-extra::after{
    content:'';position:absolute;right:-9px;top:6px;
    width:5px;height:5px;border-top:1px solid currentColor;border-right:1px solid currentColor;
    transform:rotate(45deg);opacity:.55;
}
/* Sliding ink underline — travels between tabs */
.atelier .at-nav-ink{
    position:absolute;left:0;bottom:-3px;height:2px;width:0;
    background:linear-gradient(90deg, transparent 0%, var(--at-gold) 18%, var(--at-gold) 82%, transparent 100%);
    border-radius:2px;
    opacity:0;
    transform:translateX(0);
    transition:transform .42s cubic-bezier(.6,.05,.2,1), width .42s cubic-bezier(.6,.05,.2,1), opacity .25s;
    pointer-events:none;
    z-index:0;
}
.atelier .at-nav-ink::before{
    content:'';position:absolute;inset:-3px 30% auto 30%;height:1px;
    background:var(--at-gold);opacity:.35;filter:blur(1px);
}

.atelier .at-sub-actions{display:flex;align-items:center;gap:8px;margin-left:auto}
.atelier .at-save{
    display:inline-flex;align-items:center;gap:8px;
    padding:0 12px;height:26px;
    border:1px solid var(--at-line);border-radius:999px;
    font:500 10px/1 'Montserrat',sans-serif;
    letter-spacing:.14em;text-transform:uppercase;
    color:var(--at-ink-grey);
}
.atelier .at-save-dot{width:6px;height:6px;border-radius:50%;background:var(--at-sage);box-shadow:0 0 0 4px rgba(92,120,84,.15);animation:atPulse 2.2s ease-in-out infinite}
.atelier .at-save.is-saving .at-save-dot{background:var(--at-gold);box-shadow:0 0 0 4px var(--at-gold-glow)}
.atelier .at-save.is-error .at-save-dot{background:var(--at-ember);box-shadow:0 0 0 4px rgba(181,66,26,.22)}
@keyframes atPulse{50%{box-shadow:0 0 0 7px rgba(92,120,84,0)}}

.atelier .at-pill{
    display:inline-flex;align-items:center;gap:6px;
    height:28px;padding:0 12px;
    border:1px solid var(--at-line-strong);border-radius:999px;
    font:600 10px/1 'Montserrat',sans-serif;letter-spacing:.16em;text-transform:uppercase;
    color:var(--at-ink-soft);background:transparent;text-decoration:none;cursor:pointer;
    transition:.2s var(--at-ease);
}
.atelier .at-pill:hover{border-color:var(--at-gold);color:var(--at-gold)}
.atelier .at-pill-primary{background:var(--at-ink);color:var(--at-paper);border-color:var(--at-ink)}
.atelier .at-pill-primary:hover{background:var(--at-gold-deep);border-color:var(--at-gold-deep);color:var(--at-paper)}

/* ── Shell ─────────────────────────────────── */
.atelier .at-shell{
    flex:1;
    display:grid;
    grid-template-columns:var(--at-rail-l) 1fr var(--at-rail-r);
    min-height:0;
    transition:grid-template-columns .35s var(--at-ease);
}
.atelier.is-right-closed .at-shell{grid-template-columns:var(--at-rail-l) 1fr 0}
.atelier.is-left-closed .at-shell{grid-template-columns:0 1fr var(--at-rail-r)}

/* ── Rails (shared) ────────────────────────── */
.atelier .at-rail{
    background:var(--at-paper-2);
    display:flex;flex-direction:column;
    overflow:hidden;
    min-height:0;
    position:relative;
}
.atelier .at-rail-l{border-right:1px solid var(--at-line)}
.atelier .at-rail-r{border-left:1px solid var(--at-line)}

.atelier .at-rail-head{
    display:flex;align-items:center;gap:8px;
    padding:13px 18px 10px;
    border-bottom:1px solid var(--at-line);
}
.atelier .at-rail-head h3{
    flex:1;
    font:700 10px/1 'Montserrat',sans-serif;
    letter-spacing:.3em;text-transform:uppercase;
    color:var(--at-ink-grey);
}
.atelier .at-icon-btn{
    width:26px;height:26px;border-radius:6px;
    display:inline-flex;align-items:center;justify-content:center;
    color:var(--at-ink-grey);background:0;border:1px solid var(--at-line);cursor:pointer;
    transition:.18s;
}
.atelier .at-icon-btn:hover{color:var(--at-gold);border-color:var(--at-gold)}

.atelier .at-rail-tabs{
    display:flex;gap:2px;margin:12px 16px 0;
    padding:4px;background:var(--at-paper-3);
    border:1px solid var(--at-line);border-radius:10px;
}
.atelier .at-rail-tab{
    flex:1;padding:8px 6px;border-radius:7px;background:0;border:0;cursor:pointer;
    font:600 10px/1 'Montserrat',sans-serif;letter-spacing:.14em;text-transform:uppercase;
    color:var(--at-ink-grey);
    display:inline-flex;align-items:center;justify-content:center;gap:5px;
    transition:.2s;
}
.atelier .at-rail-tab.is-active{background:var(--at-ink);color:var(--at-paper)}
[data-theme="dark"] .atelier .at-rail-tab.is-active{background:var(--at-gold);color:var(--at-paper)}

.atelier .at-rail-body{flex:1;overflow-y:auto;padding:8px 0 80px;min-height:0}
.atelier .at-rail-body::-webkit-scrollbar{width:6px}
.atelier .at-rail-body::-webkit-scrollbar-thumb{background:var(--at-line-strong);border-radius:3px}
.atelier .at-pane{display:none}
.atelier .at-pane.is-active{display:block}

.atelier .at-rail-foot{
    position:absolute;left:0;right:0;bottom:0;
    padding:11px 18px;
    background:var(--at-paper-2);
    border-top:1px solid var(--at-line);
    display:flex;align-items:center;gap:8px;
    font:500 10px/1 'Montserrat',sans-serif;letter-spacing:.14em;text-transform:uppercase;color:var(--at-ink-grey);
}
.atelier .at-rail-foot strong{color:var(--at-ink);font-weight:700;font-size:12px}

/* ── Chapter list ──────────────────────────── */
.atelier .at-ch-add{
    display:flex;align-items:center;gap:8px;
    width:calc(100% - 16px);margin:12px 8px 14px;
    padding:10px 14px;
    border:1px dashed var(--at-line-strong);border-radius:10px;
    background:0;cursor:pointer;
    font:600 10.5px/1 'Montserrat',sans-serif;letter-spacing:.14em;text-transform:uppercase;
    color:var(--at-ink-grey);
    transition:.2s;
}
.atelier .at-ch-add:hover{border-color:var(--at-gold);color:var(--at-gold);background:var(--at-gold-wash)}
.atelier .at-ch-list{display:flex;flex-direction:column;gap:1px;padding:0 4px}
.atelier .at-ch-item{
    position:relative;
    display:flex;align-items:flex-start;gap:10px;
    padding:10px 14px 10px 16px;margin:1px 4px;
    border-radius:10px;cursor:pointer;
    transition:.18s var(--at-ease);
}
.atelier .at-ch-item::before{
    content:'';position:absolute;left:4px;top:11px;bottom:11px;width:2px;
    background:var(--at-gold);border-radius:1px;
    opacity:0;transform:scaleY(.35);transition:.25s var(--at-ease);
}
.atelier .at-ch-item:hover{background:var(--at-paper-3)}
.atelier .at-ch-item.is-active{background:var(--at-paper-3)}
.atelier .at-ch-item.is-active::before{opacity:1;transform:scaleY(1)}
.atelier .at-ch-item.is-scope{
    box-shadow:inset 0 0 0 1px var(--at-gold);
    background:var(--at-gold-wash);
}
.atelier .at-ch-item.is-scope::after{
    content:'IA';
    position:absolute;right:10px;top:50%;transform:translateY(-50%);
    font:700 8px/1 'Montserrat',sans-serif;letter-spacing:.22em;
    color:var(--at-gold);padding:3px 6px;
    border:1px solid var(--at-gold);border-radius:4px;background:var(--at-paper);
}
.atelier .at-ch-num{
    font:italic 500 12.5px/1 var(--font-display);
    color:var(--at-gold);width:18px;padding-top:3px;flex-shrink:0;
}
.atelier .at-ch-body{flex:1;min-width:0}
.atelier .at-ch-title{font:500 13.5px/1.35 var(--font-display);color:var(--at-ink);letter-spacing:-.005em;word-break:break-word}
.atelier .at-ch-meta{display:flex;align-items:center;gap:8px;margin-top:4px;font:400 10px/1 'Montserrat',sans-serif;color:var(--at-ink-grey)}
.atelier .at-ch-drag{color:var(--at-ink-mute);opacity:0;transition:opacity .2s;cursor:grab;margin-top:4px}
.atelier .at-ch-item:hover .at-ch-drag{opacity:.6}

/* ── Version list ──────────────────────────── */
.atelier .at-ver-head{
    display:flex;align-items:center;justify-content:space-between;
    padding:12px 18px;margin:8px 0 4px;
    font:500 9.5px/1 'Montserrat',sans-serif;letter-spacing:.2em;text-transform:uppercase;color:var(--at-ink-grey);
}
.atelier .at-link{
    display:inline-flex;align-items:center;gap:4px;
    background:0;border:0;cursor:pointer;
    color:var(--at-gold);
    font:600 9.5px/1 'Montserrat',sans-serif;letter-spacing:.2em;text-transform:uppercase;
}
.atelier .at-link:hover{color:var(--at-gold-deep)}
.atelier .at-ver-list{padding:4px 12px 0}
.atelier .at-ver-empty{
    padding:24px 12px;text-align:center;
    font:italic 11.5px/1.5 var(--font-display);color:var(--at-ink-grey);
}
.atelier .at-ver-item{
    position:relative;
    padding:11px 14px 11px 28px;
    border-radius:10px;cursor:default;
    margin-bottom:2px;
    transition:.18s;
}
.atelier .at-ver-item:hover{background:var(--at-paper-3)}
.atelier .at-ver-item::before{
    content:'';position:absolute;left:11px;top:13px;width:9px;height:9px;
    border:2px solid var(--at-gold);border-radius:50%;background:var(--at-paper);
}
.atelier .at-ver-item:not(:last-child)::after{
    content:'';position:absolute;left:15px;top:24px;bottom:-4px;width:1px;
    background:linear-gradient(var(--at-line-strong),transparent);
}
.atelier .at-ver-item.is-current::before{background:var(--at-gold);box-shadow:0 0 0 3px var(--at-gold-glow)}
.atelier .at-ver-title{font:500 12px/1.3 var(--font-display);font-style:italic;color:var(--at-ink)}
.atelier .at-ver-meta{display:flex;align-items:center;gap:10px;margin-top:4px;font:400 9.5px/1 'Montserrat',sans-serif;color:var(--at-ink-grey);letter-spacing:.05em}
.atelier .at-ver-delta{display:inline-flex;align-items:center;gap:3px;font-weight:700}
.atelier .at-ver-add{color:var(--at-sage)}
.atelier .at-ver-rem{color:var(--at-ember)}
.atelier .at-ver-actions{display:flex;gap:4px;margin-top:7px;opacity:0;transition:opacity .2s}
.atelier .at-ver-item:hover .at-ver-actions{opacity:1}
.atelier .at-ver-btn{
    font:600 9px/1 'Montserrat',sans-serif;letter-spacing:.15em;text-transform:uppercase;
    color:var(--at-ink-grey);padding:4px 7px;border-radius:4px;
    background:var(--at-paper);border:1px solid var(--at-line-strong);cursor:pointer;
    transition:.15s;
    display:inline-flex;align-items:center;gap:3px;
}
.atelier .at-ver-btn:hover{border-color:var(--at-gold);color:var(--at-gold)}
.atelier .at-ver-btn.is-danger:hover{border-color:var(--at-ember);color:var(--at-ember)}

/* ── Center + toolbar ──────────────────────── */
.atelier .at-center{
    display:flex;flex-direction:column;
    min-width:0;min-height:0;
    background:transparent;
}
.atelier .at-toolbar{
    display:flex;align-items:center;gap:6px;
    height:48px;padding:0 20px;
    background:var(--at-paper-2);
    border-bottom:1px solid var(--at-line);
    position:relative;z-index:4;flex-shrink:0;
    overflow-x:auto;
}
.atelier .at-toolbar::after{
    content:'';position:absolute;left:0;right:0;bottom:0;height:1px;
    background:linear-gradient(90deg,transparent 10%,var(--at-gold) 50%,transparent 90%);
    opacity:.22;
}
.atelier .at-tgroup{display:flex;align-items:center;gap:1px;padding:2px;background:var(--at-paper);border:1px solid var(--at-line);border-radius:9px}
.atelier .at-tgroup + .at-tgroup{margin-left:4px}
.atelier .at-tbtn{
    width:30px;height:30px;border-radius:6px;background:0;border:0;cursor:pointer;
    display:flex;align-items:center;justify-content:center;
    color:var(--at-ink-soft);
    transition:.15s;
}
.atelier .at-tbtn:hover{background:var(--at-gold-wash);color:var(--at-gold-deep)}
.atelier .at-tbtn.is-on{background:var(--at-ink);color:var(--at-paper)}
.atelier .at-tbtn-txt{font:700 11px/1 'Montserrat',sans-serif;letter-spacing:.08em}

.atelier .at-tbtn-ai{
    display:inline-flex;align-items:center;gap:6px;
    height:30px;padding:0 14px;border-radius:7px;cursor:pointer;
    background:linear-gradient(135deg,var(--at-gold-deep),var(--at-gold));
    color:var(--at-paper);border:0;
    font:700 10px/1 'Montserrat',sans-serif;letter-spacing:.22em;text-transform:uppercase;
    transition:.2s;margin-left:4px;
}
.atelier .at-tbtn-ai:hover{filter:brightness(1.08);box-shadow:0 4px 16px var(--at-gold-glow)}

.atelier .at-tspacer{flex:1}

.atelier .at-title-slot{display:none}

.atelier .at-wc-chip{
    display:inline-flex;align-items:baseline;gap:6px;
    padding:0 12px;height:28px;
    border:1px solid var(--at-line);border-radius:999px;
    font:500 10px/1 'Montserrat',sans-serif;letter-spacing:.14em;text-transform:uppercase;
    color:var(--at-ink-grey);
}
.atelier .at-wc-chip b{color:var(--at-ink);font-weight:700;font-size:11px}

/* ── Canvas + page ─────────────────────────── */
.atelier .at-canvas{
    flex:1;overflow-y:auto;
    padding:48px 40px 200px;
    position:relative;
    display:flex;justify-content:center;
    min-height:0;
}
.atelier .at-canvas::-webkit-scrollbar{width:8px}
.atelier .at-canvas::-webkit-scrollbar-thumb{background:var(--at-line-strong);border-radius:4px}

.atelier .at-page{
    width:100%;max-width:740px;
    position:relative;
    animation:atPageIn .6s var(--at-ease) both;
}
/* Plan page reuses the .atelier shell only for the studio subheader; its
   stations need the full standalone reading width, not the editor canvas.
   The same overrides apply when the plan is loaded into the editor's inline
   tabhost (tab-loader stamps `data-tab-key="plan"` on the slot). */
.atelier.atelier--plan{height:auto;overflow:visible}
.atelier.atelier--plan .at-page,
.atelier .at-tabhost-inner[data-tab-key="plan"] .at-page{
    max-width:1180px;margin:0 auto;padding:0 24px 96px;
}
.atelier .at-tabhost-inner[data-tab-key="plan"] .at-fil,
.atelier.atelier--plan .at-fil{position:relative}
.atelier.atelier--plan .at-fil-thread,
.atelier .at-tabhost-inner[data-tab-key="plan"] .at-fil-thread{display:none}
/* Stations: drop the editor's narrow canvas so cards breathe at standalone width. */
.atelier .at-tabhost-inner[data-tab-key="plan"] .at-station{max-width:none;width:100%}
@keyframes atPageIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

.atelier .at-editor{
    font-family:var(--font-prose);
    font-size:17.5px;line-height:1.88;
    color:var(--at-ink-soft);
    outline:none;min-height:420px;
    position:relative;
}
.atelier .at-editor .ProseMirror{outline:none;min-height:420px}
.atelier .at-editor .ProseMirror p{
    margin:0 0 1.1em;
    position:relative;
    padding:4px 18px;margin-left:-18px;margin-right:-18px;
    border-radius:4px;
    transition:background .22s var(--at-ease);
}
.atelier .at-editor .ProseMirror p:not(.is-empty)::before{
    content:'';position:absolute;left:-4px;top:10px;bottom:10px;width:2px;
    background:var(--at-gold);border-radius:1px;
    opacity:0;transform:scaleY(.3);transition:.25s var(--at-ease);
}
.atelier .at-editor .ProseMirror p:hover{background:var(--at-gold-wash)}
.atelier .at-editor .ProseMirror p:hover::before{opacity:.4;transform:scaleY(1)}
.atelier .at-editor .ProseMirror p[data-pinned="true"]{background:var(--at-gold-wash)}
.atelier .at-editor .ProseMirror p[data-pinned="true"]::before{opacity:1;background:var(--at-gold-deep);transform:scaleY(1)}

.atelier .at-editor .ProseMirror blockquote{
    font-style:italic;
    padding:4px 18px 4px 28px;margin:0 -18px 1.1em 0;
    border-left:2px solid var(--at-gold);
    color:var(--at-ink);
    position:relative;
    transition:background .22s var(--at-ease);
    border-radius:0 4px 4px 0;
}
.atelier .at-editor .ProseMirror blockquote:hover{background:var(--at-gold-wash)}
.atelier .at-editor .ProseMirror blockquote[data-pinned="true"]{background:var(--at-gold-wash)}

.atelier .at-editor .ProseMirror h2,
.atelier .at-editor .ProseMirror h3{
    font-family:var(--font-display);font-weight:600;
    letter-spacing:-.01em;
    margin:1.4em 0 .5em;line-height:1.2;
    color:var(--at-ink);
}
.atelier .at-editor .ProseMirror h2{font-size:30px}
.atelier .at-editor .ProseMirror h3{font-size:22px;font-style:italic;color:var(--at-gold-deep)}

.atelier .at-editor .ProseMirror ul,
.atelier .at-editor .ProseMirror ol{margin:1em 0;padding-left:28px}
.atelier .at-editor .ProseMirror li{margin-bottom:.3em}
.atelier .at-editor .ProseMirror hr{border:0;height:1px;background:linear-gradient(90deg,transparent,var(--at-gold) 50%,transparent);margin:2em 0;opacity:.5}
.atelier .at-editor .ProseMirror code{font-family:'JetBrains Mono',monospace;background:var(--at-gold-wash);padding:2px 6px;border-radius:4px;font-size:.88em}
.atelier .at-editor .ProseMirror mark{background:var(--at-gold-wash);padding:1px 2px;border-radius:2px}
.atelier .at-editor .ProseMirror .is-empty::before{content:attr(data-placeholder);color:var(--at-ink-mute);font-style:italic;pointer-events:none;float:left;height:0;position:static;width:auto;left:auto;right:auto;top:auto;bottom:auto;background:none;transform:none;opacity:1}

/* Vocabulary word highlighting */
.atelier .at-editor .at-voc{border-bottom:1px dotted var(--at-gold);cursor:help;transition:.15s;padding:0 1px}
.atelier .at-editor .at-voc:hover{background:var(--at-gold-wash);color:var(--at-gold-deep)}

/* ── ATELIER CARD (floating pinned rectangle) ── */
.atelier .atc{
    position:absolute;
    z-index:40;
    opacity:0;transform:scale(.95);transform-origin:top center;pointer-events:none;
    transition:opacity .18s var(--at-ease),transform .22s var(--at-ease);
    will-change:opacity,transform;
}
.atelier .atc.is-visible{opacity:1;transform:scale(1);pointer-events:auto}
.atelier .atc.is-pinned{filter:drop-shadow(0 10px 32px rgba(20,17,13,.12))}
.atelier .atc-thread{
    position:absolute;width:1px;
    background:linear-gradient(180deg,var(--at-gold) 0%,transparent 100%);
    opacity:.45;
    transition:left .2s var(--at-ease);
}
.atelier .atc-frame-tl,.atelier .atc-frame-tr,
.atelier .atc-frame-bl,.atelier .atc-frame-br{
    position:absolute;width:16px;height:16px;
    border:2px solid var(--at-gold);
    transition:.3s var(--at-ease);
    pointer-events:none;
}
.atelier .atc-frame-tl{top:-9px;left:-9px;border-right:0;border-bottom:0}
.atelier .atc-frame-tr{top:-9px;right:-9px;border-left:0;border-bottom:0}
.atelier .atc-frame-bl{bottom:-9px;left:-9px;border-right:0;border-top:0}
.atelier .atc-frame-br{bottom:-9px;right:-9px;border-left:0;border-top:0}
.atelier .atc.is-pinned .atc-frame-tl,
.atelier .atc.is-pinned .atc-frame-tr,
.atelier .atc.is-pinned .atc-frame-bl,
.atelier .atc.is-pinned .atc-frame-br{
    width:22px;height:22px;border-color:var(--at-gold-deep);
}
.atelier .atc-inner{
    background:var(--at-paper-3);
    border:1px solid var(--at-line-strong);
    border-radius:3px;
    overflow:hidden;
    position:relative;
}
.atelier .atc-scope{
    display:flex;gap:2px;
    padding:4px;background:var(--at-paper-2);
    border-bottom:1px solid var(--at-line);
}
.atelier .atc-scope-chip{
    flex:1;background:0;border:0;cursor:pointer;
    display:inline-flex;align-items:center;justify-content:center;gap:6px;
    padding:7px 8px;border-radius:4px;
    font:600 9.5px/1 'Montserrat',sans-serif;letter-spacing:.22em;text-transform:uppercase;
    color:var(--at-ink-grey);
    transition:.15s;
}
.atelier .atc-scope-chip:hover{color:var(--at-ink);background:var(--at-paper-3)}
.atelier .atc-scope-chip.is-active{background:var(--at-ink);color:var(--at-paper)}
[data-theme="dark"] .atelier .atc-scope-chip.is-active{background:var(--at-gold);color:var(--at-paper)}
.atelier .atc-actions{
    display:grid;grid-template-columns:repeat(4,1fr);
    gap:0;border-bottom:1px solid var(--at-line);
}
.atelier .atc-act{
    display:flex;flex-direction:column;align-items:center;gap:5px;
    padding:12px 4px 10px;background:0;border:0;cursor:pointer;
    font:500 9.5px/1.2 'Montserrat',sans-serif;letter-spacing:.14em;text-transform:uppercase;
    color:var(--at-ink-grey);
    transition:.16s;
    border-right:1px solid var(--at-line);border-bottom:1px solid var(--at-line);
}
.atelier .atc-act:nth-child(4n){border-right:0}
.atelier .atc-act:nth-last-child(-n+4){border-bottom:0}
.atelier .atc-act:hover{background:var(--at-gold-wash);color:var(--at-gold-deep)}
.atelier .atc-act.is-primary{color:var(--at-ink);font-weight:600}
.atelier .atc-prompt{
    display:flex;align-items:center;gap:10px;
    padding:11px 14px;background:var(--at-paper-3);
}
.atelier .atc-caret{
    font:italic 500 18px/1 var(--font-display);
    color:var(--at-gold);animation:atCaret 1.1s steps(2) infinite;
}
@keyframes atCaret{50%{opacity:.15}}
.atelier .atc-prompt input{
    flex:1;
    font:400 13px/1.4 var(--font-prose);font-style:italic;
    color:var(--at-ink);
    background:0;border:0;outline:0;
}
.atelier .atc-prompt input::placeholder{color:var(--at-ink-mute);font-style:italic}
.atelier .atc-send{
    width:30px;height:30px;border-radius:50%;
    background:var(--at-ink);color:var(--at-paper);
    border:0;cursor:pointer;
    display:inline-flex;align-items:center;justify-content:center;
    transition:.2s;
}
[data-theme="dark"] .atelier .atc-send{background:var(--at-gold);color:var(--at-paper)}
.atelier .atc-send:hover{background:var(--at-gold-deep);transform:scale(1.05)}
.atelier .atc-foot{
    display:flex;align-items:center;gap:8px;
    padding:7px 14px;
    font:500 9px/1 'Montserrat',sans-serif;letter-spacing:.18em;text-transform:uppercase;
    color:var(--at-ink-mute);
    border-top:1px solid var(--at-line);
    background:var(--at-paper-2);
}
.atelier kbd{
    display:inline-block;padding:2px 5px;
    background:var(--at-paper-3);border:1px solid var(--at-line-strong);border-radius:3px;
    font:600 9px/1 'JetBrains Mono',monospace;letter-spacing:.04em;color:var(--at-ink-grey);
}
.atelier .atc-unpin{
    margin-left:auto;
    display:inline-flex;align-items:center;gap:4px;cursor:pointer;
    color:var(--at-ink-grey);transition:.15s;
}
.atelier .atc-unpin:hover{color:var(--at-ember)}

/* ── SUGGESTION OVERLAY ────────────────────── */
.atelier .atsug{
    position:absolute;z-index:35;
    width:100%;max-width:620px;left:50%;
    transform:translateX(-50%) translateY(8px);
    opacity:0;pointer-events:none;
    transition:.3s var(--at-ease);
}
.atelier .atsug.is-visible{opacity:1;pointer-events:auto;transform:translateX(-50%)}
.atelier .atsug-inner{
    background:var(--at-paper-3);
    border:1px solid var(--at-gold);
    border-radius:3px;
    box-shadow:0 22px 60px rgba(20,17,13,.14),0 0 0 1px var(--at-gold-glow);
    overflow:hidden;position:relative;
}
.atelier .atsug-inner::before{
    content:'';position:absolute;top:0;left:0;right:0;height:2px;
    background:linear-gradient(90deg,var(--at-gold),var(--at-gold-deep),var(--at-gold));
    background-size:200% 100%;
    animation:atShimmer 2.2s linear infinite;
}
@keyframes atShimmer{to{background-position:-200% 0}}
.atelier .atsug-head{
    display:flex;align-items:center;justify-content:space-between;
    padding:10px 14px;background:var(--at-gold-wash);
}
.atelier .atsug-label{
    display:inline-flex;align-items:center;gap:7px;
    font:700 10px/1 'Montserrat',sans-serif;letter-spacing:.28em;text-transform:uppercase;color:var(--at-gold-deep);
}
.atelier .atsug-dot{width:6px;height:6px;border-radius:50%;background:var(--at-gold);animation:atLive 1.3s ease-in-out infinite}
@keyframes atLive{50%{transform:scale(1.6);opacity:.4}}
.atelier .atsug-acts{display:flex;gap:4px}
.atelier .atsug-btn{
    width:30px;height:30px;border-radius:6px;
    display:inline-flex;align-items:center;justify-content:center;
    border:1px solid var(--at-line-strong);cursor:pointer;
    color:var(--at-ink-grey);background:var(--at-paper);
    transition:.18s;
}
.atelier .atsug-btn:hover{border-color:var(--at-gold);color:var(--at-gold-deep)}
.atelier .atsug-btn.is-accept{color:var(--at-sage);border-color:rgba(92,120,84,.35)}
.atelier .atsug-btn.is-accept:hover{background:rgba(92,120,84,.12);border-color:var(--at-sage)}
.atelier .atsug-btn.is-reject{color:var(--at-ember);border-color:rgba(181,66,26,.35)}
.atelier .atsug-btn.is-reject:hover{background:rgba(181,66,26,.1);border-color:var(--at-ember)}

.atelier .atsug-body{
    padding:18px 22px;max-height:340px;overflow-y:auto;
    font:400 16px/1.72 var(--font-prose);
    color:var(--at-ink);position:relative;
}
.atelier .atsug-old{
    display:block;
    font:italic 400 13px/1.6 var(--font-prose);
    color:var(--at-ink-grey);
    padding-bottom:10px;margin-bottom:12px;
    border-bottom:1px dashed var(--at-line-strong);
}
.atelier .atsug-old::before{
    content:'AVANT';display:inline-block;margin-right:10px;
    font:700 8.5px/1 'Montserrat',sans-serif;letter-spacing:.25em;color:var(--at-ink-mute);
    padding:3px 7px;background:var(--at-paper-2);border-radius:3px;
    vertical-align:middle;
}
.atelier .atsug-old:empty{display:none}
.atelier .atsug-new::before{
    content:'APRÈS';display:inline-block;margin-right:10px;
    font:700 8.5px/1 'Montserrat',sans-serif;letter-spacing:.25em;color:var(--at-gold-deep);
    padding:3px 7px;background:var(--at-gold-wash);border-radius:3px;
    vertical-align:middle;
}
.atelier .typing::after{
    content:'▍';font-family:var(--font-display);
    color:var(--at-gold);margin-left:2px;
    animation:atBlink 1s steps(2) infinite;
}
@keyframes atBlink{50%{opacity:0}}

/* ── WORD TOOLTIP ──────────────────────────── */
.atelier .atwt{
    position:absolute;z-index:38;
    background:var(--at-ink);color:var(--at-paper);
    border-radius:3px;padding:14px 16px 12px;
    min-width:260px;max-width:320px;
    box-shadow:0 18px 48px rgba(20,17,13,.22);
    opacity:0;pointer-events:none;transform:translateY(-4px);
    transition:.22s var(--at-ease);
}
.atelier .atwt.is-visible{opacity:1;transform:none;pointer-events:auto}
[data-theme="dark"] .atelier .atwt{background:var(--at-paper-3);color:var(--at-ink);border:1px solid var(--at-gold)}
.atelier .atwt-head{display:flex;align-items:baseline;justify-content:space-between;gap:14px;margin-bottom:4px}
.atelier .atwt-word{font:600 18px/1 var(--font-display);letter-spacing:-.005em}
.atelier .atwt-ipa{font:400 11px/1 'JetBrains Mono',monospace;opacity:.65}
.atelier .atwt-pos{display:inline-block;margin-bottom:8px;font:italic 11px/1 var(--font-display);opacity:.75}
.atelier .atwt-def{font:400 13px/1.55 var(--font-prose);opacity:.92;margin-bottom:12px}
.atelier .atwt-def:empty{display:none}
.atelier .atwt-actions{display:flex;gap:6px;margin-top:8px;padding-top:10px;border-top:1px solid rgba(255,255,255,.14)}
[data-theme="dark"] .atelier .atwt-actions{border-top-color:var(--at-line)}
.atelier .atwt-btn{
    flex:1;
    display:inline-flex;align-items:center;justify-content:center;gap:5px;
    padding:7px 6px;border-radius:3px;cursor:pointer;
    font:600 9px/1 'Montserrat',sans-serif;letter-spacing:.18em;text-transform:uppercase;
    background:0;border:1px solid rgba(255,255,255,.2);color:inherit;opacity:.8;
    transition:.15s;
}
[data-theme="dark"] .atelier .atwt-btn{border-color:var(--at-line-strong)}
.atelier .atwt-btn:hover{opacity:1;border-color:var(--at-gold);color:var(--at-gold)}
.atelier .atwt-btn.is-save{background:var(--at-gold);color:var(--at-ink);opacity:1;border-color:var(--at-gold)}
.atelier .atwt-btn.is-save:hover{background:transparent;color:var(--at-gold)}
.atelier .atwt-btn.is-done{background:var(--at-sage)!important;color:#fff!important;border-color:var(--at-sage)!important}

/* ── MENTION AUTOCOMPLETE ──────────────────── */
.atelier .atmention{
    position:absolute;z-index:42;
    min-width:220px;max-width:300px;
    background:var(--at-paper-3);
    border:1px solid var(--at-line-strong);border-radius:8px;
    box-shadow:0 14px 36px rgba(20,17,13,.14);
    opacity:0;pointer-events:none;transform:translateY(-4px);
    transition:.18s var(--at-ease);
    overflow:hidden;
}
.atelier .atmention.is-visible{opacity:1;pointer-events:auto;transform:none}
.atelier .atmention-item{
    display:flex;align-items:center;gap:10px;
    padding:9px 12px;cursor:pointer;
    font:500 13px/1.25 var(--font-display);color:var(--at-ink);
    border-bottom:1px solid var(--at-line);
    transition:.12s;
}
.atelier .atmention-item:last-child{border-bottom:0}
.atelier .atmention-item:hover,.atelier .atmention-item.is-focus{background:var(--at-gold-wash);color:var(--at-gold-deep)}
.atelier .atmention-item .kind{font:500 9px/1 'Montserrat',sans-serif;letter-spacing:.2em;text-transform:uppercase;color:var(--at-ink-grey);margin-left:auto}

/* ── Right rail: pane switch + scope ribbon ── */
.atelier .at-pane-switch{
    display:flex;padding:10px 14px;gap:4px;
    border-bottom:1px solid var(--at-line);
    background:var(--at-paper-3);flex-shrink:0;
}
.atelier .at-pswitch{
    flex:1;background:0;border:0;cursor:pointer;
    display:flex;align-items:center;justify-content:center;gap:6px;
    padding:9px 8px;border-radius:7px;
    font:600 10px/1 'Montserrat',sans-serif;letter-spacing:.18em;text-transform:uppercase;
    color:var(--at-ink-grey);
    transition:.2s;position:relative;
}
.atelier .at-pswitch.is-active{color:var(--at-ink);background:var(--at-paper)}
.atelier .at-pswitch.is-active::after{
    content:'';position:absolute;left:14px;right:14px;bottom:-1px;height:2px;
    background:var(--at-gold);
}
.atelier .at-pbadge{
    display:inline-block;padding:1px 5px;border-radius:999px;
    font:700 8px/1.3 'Montserrat',sans-serif;letter-spacing:.04em;
    background:var(--at-gold);color:var(--at-paper);
}
.atelier .at-pbadge[hidden]{display:none}

.atelier .at-scope-ribbon{
    display:flex;align-items:center;gap:10px;
    padding:10px 16px;
    background:var(--at-ink);color:var(--at-paper);
    position:relative;flex-shrink:0;
}
[data-theme="dark"] .atelier .at-scope-ribbon{background:var(--at-gold);color:var(--at-paper)}
.atelier .at-scope-ribbon::before{
    content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--at-gold);
}
[data-theme="dark"] .atelier .at-scope-ribbon::before{background:var(--at-gold-deep)}
.atelier .at-scope-dot{width:7px;height:7px;border-radius:50%;background:var(--at-gold);box-shadow:0 0 0 0 var(--at-gold);animation:atLiveDot 2s ease-in-out infinite}
[data-theme="dark"] .atelier .at-scope-dot{background:var(--at-paper)}
@keyframes atLiveDot{50%{box-shadow:0 0 0 6px rgba(166,134,43,0)}}
.atelier .at-scope-body{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}
.atelier .at-scope-label{font:700 9px/1 'Montserrat',sans-serif;letter-spacing:.3em;text-transform:uppercase;opacity:.65}
.atelier .at-scope-name{font:italic 500 13px/1.2 var(--font-display);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.atelier .at-scope-clear{
    width:24px;height:24px;border-radius:50%;
    display:inline-flex;align-items:center;justify-content:center;
    background:0;border:0;cursor:pointer;color:inherit;opacity:.7;transition:.15s;
}
.atelier .at-scope-clear:hover{background:rgba(255,255,255,.12);opacity:1}
[data-theme="dark"] .atelier .at-scope-clear:hover{background:rgba(20,17,13,.15)}

/* ── Chat ──────────────────────────────────── */
.atelier .at-chat-scroll{
    flex:1;overflow-y:auto;
    padding:20px 18px;display:flex;flex-direction:column;gap:14px;
    min-height:0;
}
.atelier .at-chat-scroll::-webkit-scrollbar{width:6px}
.atelier .at-chat-scroll::-webkit-scrollbar-thumb{background:var(--at-line-strong);border-radius:3px}

.atelier .at-msg{max-width:94%;display:flex;flex-direction:column;gap:5px;animation:atMsgIn .35s var(--at-ease) both}
@keyframes atMsgIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.atelier .at-msg-meta{display:flex;align-items:center;gap:8px;font:500 9px/1 'Montserrat',sans-serif;letter-spacing:.22em;text-transform:uppercase;color:var(--at-ink-grey)}
.atelier .at-msg-who{font-weight:700;color:var(--at-gold-deep)}
.atelier .at-msg-body{
    font:400 13.5px/1.65 var(--font-prose);color:var(--at-ink);
    padding:11px 14px;border-radius:4px;
    background:var(--at-paper);border:1px solid var(--at-line);
    position:relative;white-space:pre-wrap;word-break:break-word;
}
.atelier .at-msg.is-user{align-self:flex-end;align-items:flex-end}
.atelier .at-msg.is-user .at-msg-body{
    background:var(--at-ink);color:var(--at-paper);
    font-style:italic;border-color:var(--at-ink);
}
[data-theme="dark"] .atelier .at-msg.is-user .at-msg-body{background:var(--at-gold);color:var(--at-paper);border-color:var(--at-gold)}
.atelier .at-msg.is-ai .at-msg-body{
    background:linear-gradient(180deg,var(--at-paper-3),var(--at-paper));
    border-color:var(--at-line-strong);
}
.atelier .at-msg.is-ai .at-msg-body::before{
    content:'';position:absolute;left:0;top:10px;bottom:10px;width:2px;
    background:var(--at-gold);border-radius:1px;
}
.atelier .at-msg-sel{
    align-self:center;max-width:94%;
    font:italic 400 11.5px/1.5 var(--font-display);
    color:var(--at-ink-grey);
    padding:6px 14px 6px 16px;margin:2px 0;
    border-left:2px solid var(--at-gold);background:var(--at-gold-wash);
    border-radius:0 4px 4px 0;
    white-space:pre-wrap;word-break:break-word;
}
.atelier .at-msg-sel::before{content:'« ';color:var(--at-gold)}
.atelier .at-msg-sel::after{content:' »';color:var(--at-gold)}
.atelier .at-msg-apply{
    display:inline-flex;align-items:center;gap:5px;
    padding:5px 10px;margin-top:8px;
    border:1px solid var(--at-gold);border-radius:999px;
    font:700 9.5px/1 'Montserrat',sans-serif;letter-spacing:.2em;text-transform:uppercase;
    color:var(--at-gold-deep);background:var(--at-gold-wash);cursor:pointer;
    transition:.18s;align-self:flex-start;
}
.atelier .at-msg-apply:hover{background:var(--at-gold);color:var(--at-paper)}
.atelier .at-session-divider{
    display:flex;align-items:center;gap:10px;margin:4px 0;
    font:500 9px/1 'Montserrat',sans-serif;letter-spacing:.3em;text-transform:uppercase;color:var(--at-ink-mute);
}
.atelier .at-session-divider::before,.atelier .at-session-divider::after{content:'';flex:1;height:1px;background:var(--at-line-strong)}

.atelier .at-chat-input{
    padding:14px 16px 14px;
    background:var(--at-paper-3);
    border-top:1px solid var(--at-line);flex-shrink:0;
}
.atelier .at-ctx-tag{
    display:inline-flex;align-items:center;gap:6px;
    margin-bottom:10px;padding:4px 10px 4px 8px;
    background:var(--at-gold-wash);border:1px solid var(--at-gold-deep);border-radius:999px;
    font:italic 400 10.5px/1.3 var(--font-display);
    color:var(--at-gold-deep);max-width:100%;
}
.atelier .at-ctx-tag[hidden]{display:none}
.atelier .at-ctx-t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:220px}
.atelier .at-ctx-x{opacity:.6;cursor:pointer;margin-left:2px;transition:.15s;display:inline-flex}
.atelier .at-ctx-x:hover{opacity:1;color:var(--at-ember)}
.atelier .at-chat-field{
    display:flex;align-items:flex-end;gap:8px;
    background:var(--at-paper);
    border:1px solid var(--at-line-strong);border-radius:12px;
    padding:9px 10px 9px 14px;
    transition:.2s;
}
.atelier .at-chat-field:focus-within{border-color:var(--at-gold);box-shadow:0 0 0 4px var(--at-gold-glow)}
.atelier .at-chat-field textarea{
    flex:1;min-height:22px;max-height:120px;
    resize:none;background:0;border:0;outline:0;
    font:400 13.5px/1.55 var(--font-prose);font-style:italic;color:var(--at-ink);
}
.atelier .at-chat-field textarea::placeholder{color:var(--at-ink-mute);font-style:italic}
.atelier .at-chat-send{
    width:34px;height:34px;border-radius:50%;
    background:var(--at-ink);color:var(--at-paper);border:0;cursor:pointer;
    display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;
    transition:.18s;
}
[data-theme="dark"] .atelier .at-chat-send{background:var(--at-gold);color:var(--at-paper)}
.atelier .at-chat-send:hover{background:var(--at-gold-deep);transform:scale(1.05)}
.atelier .at-chat-aux{
    display:flex;justify-content:space-between;align-items:center;
    margin-top:10px;
    font:500 9.5px/1 'Montserrat',sans-serif;letter-spacing:.16em;text-transform:uppercase;color:var(--at-ink-grey);
}
.atelier .at-chat-aux button{
    display:inline-flex;align-items:center;gap:5px;
    background:0;border:0;cursor:pointer;color:inherit;
    font:inherit;transition:.15s;
}
.atelier .at-chat-aux button:hover{color:var(--at-gold-deep)}
.atelier .at-chat-hint{display:inline-flex;align-items:center;gap:5px}

/* ── Agent picker (writer's calling card) ────────────────────────────── */
.atelier .at-agent-wrap{position:relative;display:inline-flex;align-items:center}
.atelier .at-agent-pick{
    display:inline-flex;align-items:center;gap:7px;
    padding:3px 10px 3px 4px;border-radius:999px;
    background:var(--at-gold-wash);border:1px solid var(--at-gold);
    color:var(--at-ink);
    font:600 9.5px/1 'Montserrat',sans-serif;letter-spacing:.14em;text-transform:uppercase;
    cursor:pointer;transition:.18s ease;
}
.atelier .at-agent-pick:hover{background:var(--at-gold);color:var(--at-paper)}
.atelier .at-agent-pick:hover .at-agent-pick-emblem{background:var(--at-paper);color:var(--at-gold-deep);border-color:var(--at-paper)}
.atelier .at-agent-pick[data-kind="writer"]{border-color:var(--at-gold-deep)}
.atelier .at-agent-pick-emblem{
    display:inline-flex;align-items:center;justify-content:center;
    width:20px;height:20px;border-radius:50%;
    background:var(--at-paper);border:1px solid var(--at-gold);
    color:var(--at-gold-deep);transition:.18s ease;
}
.atelier .at-agent-pick-emblem svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.atelier .at-agent-chev{opacity:.7;width:10px;height:10px}

.atelier .at-agent-menu{
    position:absolute;bottom:calc(100% + 10px);left:0;
    min-width:288px;max-width:320px;
    background:var(--at-paper);
    border:1px solid var(--at-line);border-radius:14px;
    box-shadow:0 18px 40px -12px rgba(28,22,12,.28), 0 2px 6px rgba(28,22,12,.06);
    padding:10px 8px 8px;z-index:1000;
    display:flex;flex-direction:column;gap:1px;
    background-image:
        radial-gradient(circle at 0 0, var(--at-gold-wash) 0, transparent 40%),
        radial-gradient(circle at 100% 100%, var(--at-gold-wash) 0, transparent 35%);
}
/* The class above sets display:flex, which beats the bare [hidden] UA rule
   on specificity. Force closed state when the JS toggles `hidden`. */
.atelier .at-agent-menu[hidden]{ display:none !important; }
.atelier .at-agent-menu::before{
    content:'';position:absolute;top:-5px;left:18px;width:10px;height:10px;
    background:var(--at-paper);border-left:1px solid var(--at-line);border-top:1px solid var(--at-line);
    transform:rotate(45deg);
}
.atelier .at-agent-group-title{
    display:flex;align-items:center;gap:10px;
    padding:10px 12px 6px;
    font:600 9px/1 'Montserrat',sans-serif;letter-spacing:.22em;text-transform:uppercase;
    color:var(--at-ink-mute);
}
.atelier .at-agent-group-title::after{
    content:'';flex:1;height:1px;
    background:linear-gradient(90deg, var(--at-gold) 0, transparent 100%);
    opacity:.55;
}
.atelier .at-agent-group-title + .at-agent-opt{margin-top:2px}

.atelier .at-agent-opt{
    display:flex;align-items:flex-start;gap:11px;
    padding:9px 10px;border-radius:9px;
    background:0;border:0;cursor:pointer;text-align:left;
    transition:.15s ease;position:relative;
}
.atelier .at-agent-opt::before{
    content:'';position:absolute;left:4px;top:50%;width:2px;height:0;
    background:var(--at-gold);border-radius:1px;transform:translateY(-50%);
    transition:.18s ease;
}
.atelier .at-agent-opt:hover{background:var(--at-gold-wash)}
.atelier .at-agent-opt:hover::before{height:60%}
.atelier .at-agent-opt.is-active{background:var(--at-gold-wash)}
.atelier .at-agent-opt.is-active::before{height:70%}

.atelier .at-agent-emblem{
    flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;
    width:34px;height:34px;border-radius:50%;
    background:var(--at-paper);
    border:1px solid var(--at-gold);
    color:var(--at-gold-deep);
    box-shadow:inset 0 0 0 3px var(--at-paper), 0 0 0 1px var(--at-gold-wash);
    transition:.2s ease;
}
.atelier .at-agent-emblem .at-agent-glyph{
    width:20px;height:20px;fill:none;stroke:currentColor;
    stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;
}
.atelier .at-agent-opt[data-kind="writer"] .at-agent-emblem{
    border-color:var(--at-gold-deep);
    color:var(--at-gold-deep);
}
.atelier .at-agent-opt:hover .at-agent-emblem{
    background:var(--at-gold);color:var(--at-paper);
    box-shadow:inset 0 0 0 3px var(--at-gold), 0 0 0 1px var(--at-gold-deep);
    transform:rotate(-3deg);
}
.atelier .at-agent-opt.is-active .at-agent-emblem{
    background:var(--at-gold-deep);color:var(--at-paper);
    border-color:var(--at-gold-deep);
    box-shadow:inset 0 0 0 3px var(--at-gold-deep), 0 0 0 1px var(--at-gold);
}

.atelier .at-agent-opt-text{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.atelier .at-agent-opt-name{
    font:600 12.5px/1.2 'Playfair Display',serif;
    color:var(--at-ink);text-transform:none;letter-spacing:.01em;
}
.atelier .at-agent-opt[data-kind="writer"] .at-agent-opt-name{color:var(--at-ink)}
.atelier .at-agent-opt[data-kind="writer"] .at-agent-opt-name::after{
    content:'·';margin-left:6px;color:var(--at-gold-deep);font-weight:700;
}
.atelier .at-agent-opt-hint{
    font:400 11px/1.4 var(--font-prose);font-style:italic;
    color:var(--at-ink-mute);text-transform:none;letter-spacing:0;
}

/* ── Markdown rendering inside chat bubbles ────────────────────────────── */
.atelier .at-msg .at-md > *:first-child{margin-top:0}
.atelier .at-msg .at-md > *:last-child{margin-bottom:0}
.atelier .at-msg .at-md p{margin:0 0 .55em}
.atelier .at-msg .at-md strong{font-weight:700;color:var(--at-ink)}
.atelier .at-msg .at-md em{font-style:italic}
.atelier .at-msg .at-md code{
    font-family:'JetBrains Mono',monospace;font-size:.88em;
    background:var(--at-gold-wash);padding:1px 5px;border-radius:3px;
}
.atelier .at-msg .at-md ul,
.atelier .at-msg .at-md ol{margin:.35em 0 .55em;padding-left:20px}
.atelier .at-msg .at-md li{margin:.15em 0}
.atelier .at-msg .at-md h2,
.atelier .at-msg .at-md h3{
    font-family:var(--font-display);font-weight:600;
    margin:.6em 0 .3em;line-height:1.25;color:var(--at-ink);
}
.atelier .at-msg .at-md h2{font-size:15px}
.atelier .at-msg .at-md h3{font-size:13.5px;font-style:italic;color:var(--at-gold-deep)}
.atelier .at-msg .at-md blockquote{
    margin:.4em 0;padding:.2em 10px;
    border-left:2px solid var(--at-gold);
    color:var(--at-ink);font-style:italic;
}
.atelier .at-msg .at-md a{color:var(--at-gold-deep);text-decoration:underline}

/* ── World pane ────────────────────────────── */
.atelier .at-world-pane{
    flex:1;overflow:hidden;
    display:none;min-height:0;
    position:relative;
    flex-direction:column;
}
.atelier .at-world-pane.is-active{display:flex}
#atWorldList{
    flex:1;overflow-y:auto;padding:16px 18px 60px;
    transition:opacity .22s,transform .22s;
}
#atWorldList.is-behind{opacity:.3;pointer-events:none;transform:translateX(-8px)}
#atWorldList::-webkit-scrollbar{width:6px}
#atWorldList::-webkit-scrollbar-thumb{background:var(--at-line-strong);border-radius:3px}

.atelier .at-wsec{margin-bottom:22px}
.atelier .at-wsec-head{
    display:flex;align-items:center;gap:10px;margin-bottom:10px;
    font:500 9.5px/1 'Montserrat',sans-serif;letter-spacing:.3em;text-transform:uppercase;color:var(--at-ink-grey);
}
.atelier .at-wsec-head > span:first-child{flex:0 0 auto}
.atelier .at-wsec-head::after{content:'';flex:1;height:1px;background:linear-gradient(90deg,var(--at-line-strong),transparent);order:1}
.atelier .at-wsec-head .at-wsec-add{order:2}
.atelier .at-wsec-add{
    color:var(--at-gold-deep);display:inline-flex;align-items:center;gap:4px;
    font-size:9.5px;letter-spacing:.22em;text-decoration:none;transition:.15s;
}
.atelier .at-wsec-add:hover{color:var(--at-gold)}
.atelier .at-wsec-foot{
    margin-top:18px;padding-top:14px;
    border-top:1px dashed var(--at-line);
    display:flex;flex-direction:column;gap:10px;align-items:center;
}
.atelier .at-wsec-extract{
    display:inline-flex;align-items:center;gap:8px;
    padding:10px 16px;
    background:linear-gradient(135deg,var(--at-gold-wash),transparent);
    border:1px solid var(--at-gold);border-radius:4px;
    color:var(--at-gold-deep);cursor:pointer;
    font:600 10px/1 'Montserrat',sans-serif;letter-spacing:.22em;text-transform:uppercase;
    transition:.18s;
}
.atelier .at-wsec-extract:hover{background:var(--at-gold);color:var(--at-paper)}
.atelier .at-wsec-extract.is-loading{opacity:.7;cursor:wait}
.atelier .at-wsec-extract.is-error{border-color:var(--at-ember);color:var(--at-ember)}
.at-spin{animation:at-spin 1s linear infinite}
@keyframes at-spin{to{transform:rotate(360deg)}}

/* ── Events list (imported_timeline) ── */
.atelier .at-event-list{display:flex;flex-direction:column;gap:8px}
.atelier .at-event-item{
    display:flex;gap:10px;
    padding:10px 12px;
    border:1px solid var(--at-line);border-radius:8px;
    background:var(--at-paper-3);
    transition:.15s;
}
.atelier .at-event-item:hover{border-color:var(--at-gold-wash)}
.atelier .at-event-item.is-turning{
    border-color:var(--at-gold);
    background:linear-gradient(135deg,var(--at-gold-wash),var(--at-paper-3));
}
.atelier .at-event-num{
    font:500 10px/1 'JetBrains Mono',monospace;
    color:var(--at-gold-deep);letter-spacing:.1em;
    padding-top:2px;flex-shrink:0;
}
.atelier .at-event-body{flex:1;min-width:0}
.atelier .at-event-title{
    font:italic 500 12.5px/1.3 var(--font-display);color:var(--at-ink);
    margin-bottom:4px;
}
.atelier .at-event-tag{
    display:inline-block;
    padding:2px 5px;margin-left:4px;
    font:700 7.5px/1 'Montserrat',sans-serif;letter-spacing:.18em;
    color:var(--at-gold-deep);background:var(--at-gold-wash);
    border:1px solid var(--at-gold);border-radius:2px;vertical-align:middle;
}
.atelier .at-event-meta{
    font:400 10.5px/1.5 var(--font-prose);color:var(--at-ink-soft);
    margin-top:2px;
}
.atelier .at-event-k{
    display:inline-block;min-width:38px;
    font:500 8.5px/1 'Montserrat',sans-serif;letter-spacing:.2em;text-transform:uppercase;
    color:var(--at-gold-deep);margin-right:6px;
}
.atelier .at-event-impact{
    margin-top:6px;padding-top:6px;
    border-top:1px dashed var(--at-line);
    font:italic 400 11px/1.5 var(--font-prose);color:var(--at-ink-grey);
}
.atelier .at-wsec-link{
    display:inline-flex;align-items:center;gap:6px;
    font:500 9.5px/1 'Montserrat',sans-serif;letter-spacing:.22em;text-transform:uppercase;
    color:var(--at-ink-grey);text-decoration:none;transition:.15s;
}
.atelier .at-wsec-link:hover{color:var(--at-gold)}
.atelier .at-w-addlink{
    background:0;border:0;cursor:pointer;
    color:var(--at-gold-deep);font:500 10.5px/1 var(--font-display);font-style:italic;
    transition:.15s;
}
.atelier .at-w-addlink:hover{color:var(--at-gold)}

/* ─────────────────────────────────────────────────────────────────
   In-app modal — editorial, gilded, deliberate.
   Replaces the timid native browser popup with a card that reads like a
   page from the manuscript: a gold rule overhead, an italic Cormorant
   prompt, and two clearly weighted choices.
   ───────────────────────────────────────────────────────────────── */
.at-modal-backdrop{
    position:fixed;inset:0;z-index:9000;
    background:
        radial-gradient(circle at 50% 35%, rgba(64,46,20,.32) 0%, rgba(28,20,10,.72) 70%),
        rgba(28,20,10,.18);
    backdrop-filter:blur(8px) saturate(1.08);
    -webkit-backdrop-filter:blur(8px) saturate(1.08);
    display:flex;align-items:center;justify-content:center;
    opacity:0;pointer-events:none;
    transition:opacity .26s cubic-bezier(.2,.8,.2,1);
    padding:24px;
}
.at-modal-backdrop.is-open{opacity:1;pointer-events:all}
.at-modal{
    position:relative;
    background:
        radial-gradient(circle at 0% 0%, rgba(201,163,85,.06) 0%, transparent 55%),
        linear-gradient(180deg, var(--at-paper, #faf6ec) 0%, color-mix(in srgb, var(--at-paper, #faf6ec) 92%, #f1e8d2) 100%);
    border:1px solid color-mix(in srgb, var(--at-gold, #c9a355) 22%, var(--at-line, #e2d8c1));
    border-radius:4px;
    padding:38px 40px 28px;
    width:min(440px, 92vw);
    box-shadow:
        0 36px 80px -20px rgba(28,20,10,.5),
        0 4px 16px -8px rgba(28,20,10,.3),
        inset 0 1px 0 rgba(255,255,255,.6);
    transform:translateY(18px) scale(.96);
    transition:transform .32s cubic-bezier(.2,.8,.2,1);
    display:flex;flex-direction:column;align-items:center;gap:18px;
    overflow:hidden;
}
.at-modal-backdrop.is-open .at-modal{transform:translateY(0) scale(1)}

/* Top gold rule — like a chapter divider */
.at-modal::before{
    content:"";
    position:absolute;top:0;left:0;right:0;height:3px;
    background:linear-gradient(90deg,
        transparent 0%,
        color-mix(in srgb, var(--at-gold, #c9a355) 50%, transparent) 12%,
        var(--at-gold, #c9a355) 50%,
        color-mix(in srgb, var(--at-gold, #c9a355) 50%, transparent) 88%,
        transparent 100%);
}
/* Tiny ornament centered above the icon */
.at-modal::after{
    content:"❦";
    position:absolute;top:8px;left:50%;transform:translateX(-50%);
    font:italic 14px/1 'Cormorant Garamond', serif;
    color:var(--at-gold, #c9a355);
    letter-spacing:0;
}

.at-modal-icon{
    width:54px;height:54px;border-radius:50%;
    background:
        radial-gradient(circle at 30% 30%, color-mix(in srgb, var(--at-gold, #c9a355) 18%, transparent), transparent 70%),
        var(--at-gold-wash, #f6efde);
    border:1px solid color-mix(in srgb, var(--at-gold, #c9a355) 38%, transparent);
    display:flex;align-items:center;justify-content:center;
    color:var(--at-gold-deep, #a6862b);flex-shrink:0;
    margin-top:6px;
    box-shadow:
        0 0 0 4px color-mix(in srgb, var(--at-gold, #c9a355) 8%, transparent),
        0 6px 14px -8px rgba(166,134,43,.45);
}
.at-modal-icon svg{width:22px;height:22px}

.at-modal-title{
    margin:0;
    font:600 12px/1.2 'Montserrat',sans-serif;
    letter-spacing:.18em;text-transform:uppercase;
    color:var(--at-gold-deep, #a6862b);
    text-align:center;
}
.at-modal-msg{
    margin:0;text-align:center;
    font:italic 400 18px/1.55 'Cormorant Garamond','Playfair Display',Georgia,serif;
    color:var(--at-ink, #2a2418);
    max-width:340px;
    letter-spacing:.005em;
}
.at-modal-input-wrap{width:100%;margin-top:2px}
.at-modal-input{
    width:100%;box-sizing:border-box;
    padding:11px 14px;
    border:0;border-bottom:1.5px solid color-mix(in srgb, var(--at-gold, #c9a355) 35%, var(--at-line, #e2d8c1));
    background:transparent;
    font:italic 400 16px/1.4 'Cormorant Garamond',serif;
    color:var(--at-ink, #2a2418);
    outline:none;transition:border-color .2s;
    text-align:center;
    border-radius:0;
}
.at-modal-input:focus{border-bottom-color:var(--at-gold, #c9a355)}
.at-modal-input::placeholder{color:color-mix(in srgb, var(--at-ink, #2a2418) 35%, transparent);font-style:italic}

.at-modal-foot{
    display:flex;gap:0;width:100%;justify-content:center;align-items:center;
    margin-top:8px;
    border-top:1px dashed color-mix(in srgb, var(--at-gold, #c9a355) 22%, transparent);
    padding-top:18px;
}
.at-modal-btn{
    flex:1;max-width:170px;
    padding:11px 18px;
    border-radius:2px;
    font:600 11px/1 'Montserrat',sans-serif;letter-spacing:.22em;text-transform:uppercase;
    cursor:pointer;
    transition:transform .18s cubic-bezier(.2,.8,.2,1), background .18s, color .18s, box-shadow .18s, letter-spacing .18s;
    position:relative;
}
/* Cancel — quiet, ghosted, with a subtle hover underline */
.at-modal-btn.is-cancel{
    background:transparent;
    border:1px solid transparent;
    color:color-mix(in srgb, var(--at-ink, #2a2418) 55%, transparent);
}
.at-modal-btn.is-cancel:hover{
    color:var(--at-ink, #2a2418);
    background:color-mix(in srgb, var(--at-ink, #2a2418) 5%, transparent);
}
/* Vertical divider between the two buttons */
.at-modal-foot::before{
    content:"";display:none;
}
.at-modal-btn.is-cancel + .at-modal-btn{margin-left:8px}
.at-modal-btn.is-cancel + .at-modal-btn::before{
    content:"";position:absolute;left:-8px;top:20%;bottom:20%;width:1px;
    background:color-mix(in srgb, var(--at-gold, #c9a355) 25%, transparent);
}
/* Confirm — gilded, the gravity of the choice */
.at-modal-btn.is-confirm{
    background:linear-gradient(180deg, var(--at-gold, #c9a355) 0%, var(--at-gold-deep, #a6862b) 100%);
    border:1px solid var(--at-gold-deep, #a6862b);
    color:var(--at-paper, #faf6ec);
    box-shadow:
        0 1px 0 rgba(255,255,255,.35) inset,
        0 6px 14px -8px rgba(166,134,43,.6),
        0 1px 2px rgba(28,20,10,.18);
}
.at-modal-btn.is-confirm:hover{
    transform:translateY(-1px);letter-spacing:.26em;
    box-shadow:
        0 1px 0 rgba(255,255,255,.45) inset,
        0 10px 20px -8px rgba(166,134,43,.75),
        0 2px 4px rgba(28,20,10,.22);
}
.at-modal-btn.is-confirm:active{transform:translateY(0)}
/* Danger — same gravity, different intent */
.at-modal-btn.is-danger-confirm{
    background:linear-gradient(180deg, #c0392b 0%, #962a1f 100%);
    border:1px solid #962a1f;color:#fff;
    box-shadow:
        0 1px 0 rgba(255,255,255,.25) inset,
        0 6px 14px -8px rgba(150,42,31,.55),
        0 1px 2px rgba(28,20,10,.18);
}
.at-modal-btn.is-danger-confirm:hover{
    transform:translateY(-1px);letter-spacing:.26em;
    box-shadow:
        0 1px 0 rgba(255,255,255,.3) inset,
        0 10px 20px -8px rgba(150,42,31,.7),
        0 2px 4px rgba(28,20,10,.22);
}

@media (max-width: 520px){
    .at-modal{padding:30px 22px 22px;width:min(380px,92vw)}
    .at-modal-msg{font-size:17px}
    .at-modal-btn{padding:10px 14px;font-size:10.5px;letter-spacing:.18em}
    .at-modal-btn.is-confirm:hover,.at-modal-btn.is-danger-confirm:hover{letter-spacing:.22em}
}

/* ── Inline world editor overlay ── */
.atelier .at-world-editor{
    position:absolute;inset:0;
    background:var(--at-paper);
    display:flex;flex-direction:column;
    transform:translateX(100%);
    transition:transform .28s var(--at-ease);
    overflow:hidden;
    border-left:1px solid var(--at-line);
}
.atelier .at-world-editor.is-visible{transform:translateX(0)}
.atelier .at-we-head{
    display:flex;align-items:center;gap:10px;
    padding:15px 16px 13px;
    border-bottom:1px solid var(--at-line);
    flex-shrink:0;background:var(--at-paper-2);
}
.atelier .at-we-back{
    width:26px;height:26px;border-radius:50%;
    border:1px solid var(--at-line-strong);background:0;cursor:pointer;
    display:flex;align-items:center;justify-content:center;
    color:var(--at-ink-grey);transition:.15s;flex-shrink:0;
}
.atelier .at-we-back:hover{border-color:var(--at-gold);color:var(--at-gold);background:var(--at-gold-wash)}
.atelier .at-we-title{
    font:italic 500 13.5px/1 var(--font-display);color:var(--at-ink);
}
.atelier .at-we-body{
    flex:1;overflow-y:auto;padding:14px 16px;
    display:flex;flex-direction:column;gap:12px;
}
.atelier .at-we-body::-webkit-scrollbar{width:4px}
.atelier .at-we-body::-webkit-scrollbar-thumb{background:var(--at-line-strong);border-radius:2px}
.atelier .at-we-label{
    display:flex;flex-direction:column;gap:5px;
    font:500 8.5px/1 'Montserrat',sans-serif;
    letter-spacing:.25em;text-transform:uppercase;color:var(--at-ink-grey);
}
.atelier .at-we-input{
    background:var(--at-paper-2);
    border:1px solid var(--at-line-strong);border-radius:4px;
    padding:7px 10px;
    font:400 12.5px/1.5 var(--font-prose);color:var(--at-ink);
    outline:none;transition:border-color .15s,background .15s;
    resize:none;width:100%;box-sizing:border-box;
}
.atelier .at-we-input:focus{border-color:var(--at-gold);background:var(--at-paper-3)}
.atelier .at-we-ta{min-height:72px;resize:vertical}
.atelier .at-we-foot{
    padding:12px 16px;border-top:1px solid var(--at-line);
    display:flex;align-items:center;gap:8px;flex-shrink:0;background:var(--at-paper-2);
}
.atelier .at-we-save{
    flex:1;background:var(--at-ink);color:var(--at-paper);
    border:0;border-radius:4px;padding:8px 14px;
    font:600 9px/1 'Montserrat',sans-serif;letter-spacing:.22em;text-transform:uppercase;
    cursor:pointer;transition:.18s;
}
[data-theme="dark"] .atelier .at-we-save{background:var(--at-gold)}
.atelier .at-we-save:hover:not(:disabled){background:var(--at-gold-deep)}
.atelier .at-we-save:disabled{opacity:.5;cursor:default}
.atelier .at-we-del{
    background:0;border:1px solid var(--at-ember);color:var(--at-ember);
    border-radius:4px;padding:7px 10px;
    font:500 9px/1 'Montserrat',sans-serif;letter-spacing:.15em;text-transform:uppercase;
    cursor:pointer;transition:.15s;
}
.atelier .at-we-del:hover{background:var(--at-ember);color:#fff}
.atelier .at-we-link{
    font:500 8.5px/1 'Montserrat',sans-serif;letter-spacing:.18em;text-transform:uppercase;
    color:var(--at-gold-deep);text-decoration:none;white-space:nowrap;transition:.15s;
}
.atelier .at-we-link:hover{color:var(--at-gold)}
.atelier .at-we-error{
    font:400 10.5px/1.4 var(--font-prose);color:var(--at-ember);margin-bottom:6px;
}

/* ── Card edit button ── */
.atelier .at-w-edit{
    margin-left:auto;flex-shrink:0;
    opacity:0;width:26px;height:26px;
    background:0;border:1px solid transparent;border-radius:50%;cursor:pointer;
    display:inline-flex;align-items:center;justify-content:center;
    color:var(--at-ink-grey);transition:.15s;
}
.atelier .at-w-card:hover .at-w-edit{opacity:1;border-color:var(--at-line-strong)}
.atelier .at-w-edit:hover{border-color:var(--at-gold)!important;color:var(--at-gold);background:var(--at-gold-wash)}

.atelier .at-w-grid{display:flex;flex-direction:column;gap:6px}
.atelier .at-w-empty{
    padding:14px;text-align:center;
    font:italic 11.5px/1.4 var(--font-display);color:var(--at-ink-grey);
    border:1px dashed var(--at-line);border-radius:8px;
}
.atelier .at-w-card{
    display:flex;align-items:center;gap:12px;
    padding:10px 12px;
    border:1px solid var(--at-line);border-radius:10px;
    background:var(--at-paper-3);cursor:pointer;
    transition:.18s var(--at-ease);text-decoration:none;color:inherit;
}
.atelier .at-w-card:hover{border-color:var(--at-gold);background:var(--at-paper);transform:translateX(-2px)}
.atelier .at-w-portrait{
    width:38px;height:48px;flex-shrink:0;border-radius:2px;overflow:hidden;
    background:linear-gradient(135deg,var(--at-gold-wash),rgba(166,134,43,.35));
    position:relative;display:flex;align-items:flex-end;justify-content:center;
}
.atelier .at-w-portrait.has-img{background:0}
.atelier .at-w-portrait img{width:100%;height:100%;object-fit:cover}
.atelier .at-w-portrait::before{
    content:'';position:absolute;inset:0;
    background:radial-gradient(circle at 50% 35%,rgba(246,241,230,.7),transparent 45%);
}
.atelier .at-w-portrait.has-img::before{display:none}
.atelier .at-w-portrait .init{
    position:relative;font:500 14px/1 var(--font-display);color:var(--at-gold-deep);padding-bottom:8px;
}
.atelier .at-w-portrait.is-loc{background:linear-gradient(135deg,var(--at-sage),#8aa282)}
.atelier .at-w-portrait.is-loc::before{background:radial-gradient(circle at 50% 35%,rgba(246,241,230,.55),transparent 45%)}
.atelier .at-w-portrait.is-loc .init{color:var(--at-paper)}
.atelier .at-w-body{flex:1;min-width:0}
.atelier .at-w-name{font:500 13px/1.25 var(--font-display);color:var(--at-ink);letter-spacing:-.005em;overflow:hidden;text-overflow:ellipsis}
.atelier .at-w-role{display:flex;align-items:center;gap:6px;margin-top:3px;font:400 9.5px/1 'Montserrat',sans-serif;letter-spacing:.18em;text-transform:uppercase;color:var(--at-ink-grey)}
.atelier .at-w-role .dot{width:4px;height:4px;border-radius:50%;background:var(--at-gold)}
.atelier .at-w-role.is-prot .dot{background:var(--at-gold-deep)}
.atelier .at-w-role.is-ant .dot{background:var(--at-ember)}

.atelier .at-era-card{
    padding:14px 16px;border:1px solid var(--at-line-strong);border-radius:10px;
    background:linear-gradient(135deg,var(--at-paper-3),var(--at-paper));
    position:relative;overflow:hidden;
}
.atelier .at-era-card::before{
    content:'';position:absolute;right:-30px;top:-30px;width:90px;height:90px;
    background:radial-gradient(var(--at-gold-glow),transparent 70%);border-radius:50%;
}
.atelier .at-era-label{font:500 9px/1 'Montserrat',sans-serif;letter-spacing:.3em;text-transform:uppercase;color:var(--at-ink-grey);margin-bottom:6px;position:relative}
.atelier .at-era-name{font:italic 500 18px/1.2 var(--font-display);color:var(--at-ink);position:relative}
.atelier .at-era-years{display:inline-flex;align-items:center;gap:8px;margin-top:6px;font:500 11px/1 'JetBrains Mono',monospace;color:var(--at-gold-deep);position:relative}
.atelier .at-era-years::before{content:'';width:18px;height:1px;background:var(--at-line-strong)}
.atelier .at-era-timeline{margin-top:14px;padding-top:12px;border-top:1px dashed var(--at-line-strong);position:relative}
.atelier .at-tl-label{font:500 9px/1 'Montserrat',sans-serif;letter-spacing:.3em;text-transform:uppercase;color:var(--at-ink-grey);margin-bottom:14px}
.atelier .at-tl-bar{position:relative;height:2px;background:var(--at-line-strong);border-radius:1px;margin:8px 4px 4px}
.atelier .at-tl-mark{
    position:absolute;top:-4px;width:10px;height:10px;border-radius:50%;
    background:var(--at-paper);border:2px solid var(--at-gold);
    transform:translateX(-5px);cursor:pointer;transition:.18s;
}
.atelier .at-tl-mark:hover{transform:translateX(-5px) scale(1.3);background:var(--at-gold)}
.atelier .at-tl-mark.is-current{background:var(--at-gold);box-shadow:0 0 0 3px var(--at-gold-glow)}
.atelier .at-tl-tip{
    position:absolute;bottom:16px;left:50%;transform:translateX(-50%);
    padding:3px 7px;background:var(--at-ink);color:var(--at-paper);border-radius:3px;
    font:500 9px/1 'Montserrat',sans-serif;letter-spacing:.12em;text-transform:uppercase;
    white-space:nowrap;pointer-events:none;opacity:0;transition:.2s;
}
.atelier .at-tl-mark:hover .at-tl-tip{opacity:1;transform:translateX(-50%) translateY(-2px)}
[data-theme="dark"] .atelier .at-tl-tip{background:var(--at-gold);color:var(--at-paper)}

/* ── Scrollbar taming — the atelier gets its own, quiet ruleset ── */
.atelier,
.atelier *{scrollbar-width:thin;scrollbar-color:var(--at-line-strong) transparent}
.atelier *::-webkit-scrollbar{width:6px;height:6px}
.atelier *::-webkit-scrollbar-track{background:transparent}
.atelier *::-webkit-scrollbar-thumb{background:var(--at-line-strong);border-radius:3px}
.atelier *::-webkit-scrollbar-thumb:hover{background:var(--at-gold);opacity:.6}
.atelier *::-webkit-scrollbar-button{display:none;width:0;height:0}
.atelier *::-webkit-scrollbar-corner{background:transparent}

/* Toolbar + textarea: hide scrollbar entirely (wheel/drag still works) */
.atelier .at-toolbar::-webkit-scrollbar,
.atelier .at-chat-field textarea::-webkit-scrollbar,
.atelier .atc-prompt input::-webkit-scrollbar,
.atelier .at-title-input::-webkit-scrollbar{width:0;height:0;display:none}
.atelier .at-toolbar,
.atelier .at-chat-field textarea,
.atelier .atc-prompt input,
.atelier .at-title-input{scrollbar-width:none}

/* Canvas: never scroll horizontally */
.atelier .at-canvas{overflow-x:hidden}

/* ── AI switch (green LED pill) ─────────────────────── */
.atelier .at-ai-switch{
    display:inline-flex;align-items:center;gap:7px;
    height:28px;padding:0 12px 0 10px;
    border:1px solid var(--at-line-strong);border-radius:999px;
    background:var(--at-paper-3);cursor:pointer;
    font:600 10px/1 'Montserrat',sans-serif;letter-spacing:.16em;text-transform:uppercase;
    color:var(--at-ink-grey);
    transition:.2s var(--at-ease);
    position:relative;
}
.atelier .at-ai-switch:hover{border-color:var(--at-gold)}
.atelier .at-ai-led{
    width:8px;height:8px;border-radius:50%;
    background:var(--at-ink-mute);
    box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);
    transition:.25s var(--at-ease);
}
.atelier .at-ai-switch.is-on{
    color:var(--at-ink);
    background:linear-gradient(180deg, var(--at-paper-3), var(--at-paper-2));
    border-color:var(--at-line-strong);
}
.atelier .at-ai-switch.is-on .at-ai-led{
    background:#3EBE6A;
    box-shadow:0 0 0 3px rgba(62,190,106,.22), 0 0 10px rgba(62,190,106,.55);
    animation:atAiPulse 2.4s ease-in-out infinite;
}
@keyframes atAiPulse{
    0%,100%{box-shadow:0 0 0 3px rgba(62,190,106,.22), 0 0 10px rgba(62,190,106,.45)}
    50%{box-shadow:0 0 0 5px rgba(62,190,106,.08), 0 0 14px rgba(62,190,106,.7)}
}
[data-theme="dark"] .atelier .at-ai-switch.is-on .at-ai-led{
    background:#4DE082;
    box-shadow:0 0 0 3px rgba(77,224,130,.22), 0 0 12px rgba(77,224,130,.6);
}

/* When AI is OFF, dim everything AI-noisy */
.atelier.is-ai-off .at-tbtn-ai{
    filter:grayscale(.9) opacity(.5);
    background:var(--at-paper-2);color:var(--at-ink-grey);
}
.atelier.is-ai-off .at-tbtn-ai:hover{filter:grayscale(.6) opacity(.8)}
.atelier.is-ai-off .at-editor .ProseMirror p::before{display:none}
.atelier.is-ai-off .at-editor .ProseMirror p:hover,
.atelier.is-ai-off .at-editor .ProseMirror blockquote:hover{background:transparent}
.atelier.is-ai-off .at-voc{border-bottom-style:none}
.atelier.is-ai-off .atc,
.atelier.is-ai-off .atsug,
.atelier.is-ai-off .atwt{display:none!important}

/* AI-off ribbon hint in scope ribbon */
.atelier.is-ai-off .at-scope-ribbon{
    background:var(--at-paper-2);color:var(--at-ink-soft);
    border:1px solid var(--at-line);
}
.atelier.is-ai-off .at-scope-ribbon::before{background:var(--at-ink-mute)}
.atelier.is-ai-off .at-scope-dot{background:var(--at-ink-mute);animation:none;box-shadow:none}

/* ── Pill icon-only variant ─────────────────────────── */
.atelier .at-pill-icon{padding:0;width:28px;justify-content:center}

/* ── Focus mode ─────────────────────────────────────── */
.atelier .at-focus-exit{
    position:fixed;top:76px;right:18px;z-index:60;
    display:none;align-items:center;gap:6px;cursor:pointer;
    padding:6px 12px 6px 10px;border-radius:999px;
    background:var(--at-paper-3);border:1px solid var(--at-gold);
    font:600 9.5px/1 'Montserrat',sans-serif;letter-spacing:.22em;text-transform:uppercase;
    color:var(--at-gold-deep);
    box-shadow:0 6px 20px rgba(20,17,13,.08);
    opacity:0;transform:translateY(-6px);
    transition:.28s var(--at-ease);
}
.atelier .at-focus-exit:hover{background:var(--at-gold);color:var(--at-paper)}

.atelier.is-focus{
    background:var(--at-paper);
}
.atelier.is-focus .at-subheader,
.atelier.is-focus .at-toolbar,
.atelier.is-focus .at-rail-l,
.atelier.is-focus .at-rail-r,
.atelier.is-focus .atc,
.atelier.is-focus .atsug,
.atelier.is-focus .atwt,
.atelier.is-focus .atmention{display:none!important}
.atelier.is-focus .at-shell{
    display:block;
    height:100vh;
}
.atelier.is-focus .at-center{width:100%;min-width:0}
.atelier.is-focus{height:100vh}
body:has(.atelier.is-focus) > header{display:none}
.atelier.is-focus .at-canvas{padding:72px 40px 220px}
.atelier.is-focus .at-page{max-width:700px}
.atelier.is-focus .at-editor{font-size:19px;line-height:1.95}
.atelier.is-focus .at-editor .ProseMirror p:hover{background:transparent}
.atelier.is-focus .at-editor .ProseMirror p::before{display:none}
.atelier.is-focus .at-focus-exit{display:inline-flex;opacity:1;transform:none;top:18px}
/* Auto-hide word count chip as a small unobtrusive corner */
.atelier.is-focus::after{
    content:attr(data-focus-wc);
    position:fixed;right:22px;bottom:18px;z-index:40;
    font:500 10.5px/1 'Montserrat',sans-serif;letter-spacing:.22em;text-transform:uppercase;
    color:var(--at-ink-mute);pointer-events:none;
    opacity:.7;
}

/* ── Chapter head (editorial H1 at top of page) ─── */
.atelier .at-chapter-head{
    position:relative;
    margin:0 0 38px;
    animation:atPageIn .6s var(--at-ease) both;
}
.atelier .at-ch-eyebrow{
    display:inline-flex;align-items:baseline;gap:8px;
    font:500 10px/1 'Montserrat',sans-serif;
    letter-spacing:.3em;text-transform:uppercase;color:var(--at-ink-grey);
    margin-bottom:14px;
}
.atelier .at-ch-numeral{
    font:italic 600 16px/1 var(--font-display);
    color:var(--at-gold-deep);font-style:italic;
    letter-spacing:.04em;
}
.atelier .at-page-title{
    font:600 40px/1.12 var(--font-display);
    letter-spacing:-.015em;
    color:var(--at-ink);
    outline:none;
    padding:4px 0 6px;
    border-bottom:1px dashed transparent;
    transition:border-color .2s var(--at-ease);
    min-height:1.2em;word-break:break-word;
}
.atelier .at-page-title:empty::before{
    content:attr(data-placeholder);
    color:var(--at-ink-mute);font-style:italic;font-weight:400;
}
.atelier .at-page-title:hover,
.atelier .at-page-title:focus{border-bottom-color:var(--at-gold)}
.atelier .at-ch-rule{
    display:block;
    margin-top:10px;
    width:48px;height:2px;
    background:linear-gradient(90deg,var(--at-gold),transparent);
    border-radius:1px;
}

/* Focus mode: keep the heading but soften eyebrow */
.atelier.is-focus .at-ch-eyebrow{opacity:.6}
.atelier.is-focus .at-chapter-head{margin-bottom:46px}

/* ── Floating rail-reopen tabs ─────────────── */
.atelier .at-rail-reopen{
    position:fixed;z-index:80;
    top:50%;transform:translateY(-50%);
    display:none;
    align-items:center;justify-content:center;
    width:32px;height:72px;
    background:var(--at-gold);
    border:1px solid var(--at-gold-deep);
    color:var(--at-paper);cursor:pointer;
    transition:.22s var(--at-ease);
    padding:0;
    box-shadow:0 6px 22px rgba(20,17,13,.22);
}
.atelier .at-rail-reopen:hover{
    width:40px;background:var(--at-gold-deep);color:#fff;
    border-color:var(--at-gold-deep);
}
.atelier .at-rail-reopen .icon{width:18px;height:18px}
.atelier .at-rail-reopen-l{left:0;border-left:0;border-radius:0 10px 10px 0}
.atelier .at-rail-reopen-r{right:0;border-right:0;border-radius:10px 0 0 10px}
.atelier.is-left-closed .at-rail-reopen-l{display:inline-flex;animation:atReopenIn .3s var(--at-ease)}
.atelier.is-right-closed .at-rail-reopen-r{display:inline-flex;animation:atReopenIn .3s var(--at-ease)}
.atelier.is-focus .at-rail-reopen{display:none!important}
@keyframes atReopenIn{
    from{opacity:0;transform:translateY(-50%) translateX(-4px)}
    to{opacity:1;transform:translateY(-50%) translateX(0)}
}
.atelier .at-rail-reopen-r[data-side]{transform:translateY(-50%) scaleX(-1)}

/* Nav auto-hides chapter crumb when narrow, keeping book title visible */
@media (max-width:1380px){
    .atelier .at-crumb-sep,
    .atelier .at-crumb-ch{display:none}
    .atelier .at-crumb-book{max-width:300px}
    .atelier .at-nav{gap:16px}
}
@media (max-width:1150px){
    .atelier .at-nav a:nth-child(5),
    .atelier .at-nav a:nth-child(4){display:none}
}

/* ── Responsive ────────────────────────────── */
@media (max-width:1200px){
    .atelier{--at-rail-l:232px;--at-rail-r:320px}
}
@media (max-width:900px){
    .atelier .at-shell{grid-template-columns:0 1fr 0}
    .atelier.is-left-open .at-shell{grid-template-columns:260px 1fr 0}
    .atelier.is-right-open .at-shell{grid-template-columns:0 1fr 320px}
    .atelier .at-nav{display:none}
}

/* ════════════════════════════════════════════
   Selection toolbar (lv-seltb)
   Compact floating contextual menu shown on text
   selection inside the Tiptap editor. Refined
   editorial: dark glass, gold hairline accent,
   downward pointer to the selection.
══════════════════════════════════════════════ */
.lv-seltb{
    position:absolute;
    z-index:1500;
    min-width:380px;
    max-width:480px;
    padding:10px;
    background:rgba(22,22,26,.96);
    color:#f4ece0;
    border:1px solid rgba(212,175,107,.28);
    border-radius:12px;
    box-shadow:0 18px 44px -10px rgba(0,0,0,.55), 0 2px 6px rgba(0,0,0,.35);
    backdrop-filter:saturate(1.4) blur(14px);
    -webkit-backdrop-filter:saturate(1.4) blur(14px);
    font-family:'Montserrat',system-ui,sans-serif;
    opacity:0;
    transform:translateY(4px) scale(.97);
    pointer-events:none;
    transition:opacity .14s ease, transform .16s cubic-bezier(.2,.8,.2,1);
}
.lv-seltb.is-visible{opacity:1;transform:none;pointer-events:auto}
.lv-seltb-inner{display:flex;flex-direction:column;gap:8px}
.lv-seltb-sep{width:1px;height:18px;margin:0 4px;background:rgba(244,236,224,.14)}

/* ── AI head: sparkle + label + selection preview chip ── */
.lv-seltb-aihead{display:flex;align-items:center;gap:8px;padding:0 2px}
.lv-seltb-aimark{
    display:inline-flex;align-items:center;justify-content:center;
    width:22px;height:22px;border-radius:6px;flex:0 0 auto;
    color:#f3d99a;
    background:linear-gradient(135deg,rgba(212,175,107,.22),rgba(212,175,107,.06));
    box-shadow:inset 0 0 0 1px rgba(212,175,107,.32);
}
.lv-seltb-aimark .lv-seltb-ic{width:13px;height:13px}
.lv-seltb-ailabel{
    font:600 10.5px/1 'Montserrat',sans-serif;letter-spacing:.16em;text-transform:uppercase;
    color:#f3d99a;flex:0 0 auto;
}
.lv-seltb-aihead .lv-seltb-ctxchip{
    flex:1 1 auto;min-width:0;margin:0;padding:4px 8px;
    border:1px solid rgba(212,175,107,.18);border-left:2px solid rgba(212,175,107,.55);
    border-radius:6px;background:rgba(212,175,107,.06);
    font:italic 400 11.5px/1.35 'Lora','Georgia',serif;color:#e7decd;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}

/* ── AI action chips ── */
.lv-seltb-chips{
    display:flex;flex-wrap:wrap;gap:6px;
    padding:2px 0;
}
.lv-seltb-chip{
    display:inline-flex;align-items:center;gap:6px;
    padding:6px 10px;height:28px;
    background:rgba(244,236,224,.05);
    border:1px solid rgba(244,236,224,.1);
    border-radius:999px;
    color:#f4ece0;
    font:600 11px/1 'Montserrat',sans-serif;letter-spacing:.04em;
    cursor:pointer;
    opacity:1;
    transition:background .14s ease, border-color .14s ease, transform .12s ease, color .14s ease, opacity .2s ease;
}
.lv-seltb-chip[hidden]{
    opacity:0;
    pointer-events:none;
    transition:opacity .2s ease, visibility 0s .2s;
}
.lv-seltb-chip .lv-seltb-ic{width:13px;height:13px;color:#d4af6b}
.lv-seltb-chip:hover{
    background:rgba(212,175,107,.12);
    border-color:rgba(212,175,107,.4);
    color:#fff5d8;
}
.lv-seltb-chip:active{transform:scale(.97)}

.lv-seltb-btn{
    width:30px;height:30px;
    display:inline-flex;align-items:center;justify-content:center;
    background:transparent;border:0;color:inherit;cursor:pointer;
    border-radius:7px;padding:0;
    transition:background .12s ease, color .12s ease, transform .12s ease;
}
.lv-seltb-btn:hover{background:rgba(244,236,224,.09)}
.lv-seltb-btn:active{transform:scale(.94)}
.lv-seltb-btn.is-on{background:rgba(212,175,107,.2);color:#f3d99a}
.lv-seltb-ic{width:16px;height:16px;display:block;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.lv-seltb-tx{font-size:12px;font-weight:600;letter-spacing:.02em;line-height:1}
.lv-seltb-tx sub,.lv-seltb-tx sup{font-size:9px;font-weight:500}
.lv-seltb-tx--mono{font-family:'JetBrains Mono','SFMono-Regular',Menlo,monospace;font-size:11px}

.lv-seltb-btn--ai{
    color:#f3d99a;
    background:linear-gradient(135deg,rgba(212,175,107,.18),rgba(212,175,107,.06));
}
.lv-seltb-btn--ai:hover{background:linear-gradient(135deg,rgba(212,175,107,.32),rgba(212,175,107,.12))}

/* AI mode container (column with context chip on top, prompt bar below) */
.lv-seltb-col{display:flex;flex-direction:column;gap:6px;padding:4px}
.lv-seltb-ctxchip{
    display:flex;align-items:flex-start;gap:6px;
    padding:6px 8px;
    background:rgba(212,175,107,.08);
    border:1px solid rgba(212,175,107,.18);
    border-left:2px solid rgba(212,175,107,.55);
    border-radius:6px;
    color:#e7decd;
    font-family:'Lora','Georgia',serif;
    font-size:12px;line-height:1.45;
    max-width:100%;
}
.lv-seltb-ctxchip .lv-seltb-ic{
    width:12px;height:12px;flex:0 0 auto;
    color:#d4af6b;margin-top:3px;opacity:.85;
}
.lv-seltb-ctxtext{
    flex:1 1 auto;min-width:0;
    overflow:hidden;text-overflow:ellipsis;
    display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
    word-break:break-word;
}
.lv-seltb-promptbar{
    display:flex;align-items:flex-end;gap:6px;
    padding:6px;border-radius:10px;
    background:rgba(244,236,224,.04);
    border:1px solid rgba(244,236,224,.08);
    transition:border-color .15s ease, background .15s ease;
}
.lv-seltb-promptbar:focus-within{
    border-color:rgba(212,175,107,.45);
    background:rgba(244,236,224,.06);
    box-shadow:0 0 0 2px rgba(212,175,107,.1);
}

/* Frozen-selection: keep the editor's text selection visible while AI mode is open
   (the input steals focus → browsers normally hide the selection highlight). */
.ProseMirror.lv-frozen-sel ::selection{
    background:rgba(212,175,107,.32);
    color:inherit;
}
.ProseMirror.lv-frozen-sel{
    caret-color:transparent;
}
.lv-sel-overlay{
    background:rgba(212,175,107,.28);
    border-radius:2px;
    mix-blend-mode:lighten;
    pointer-events:none;
    z-index:1000;
}
.lv-seltb-input{
    flex:1 1 auto;min-width:0;
    min-height:36px;max-height:120px;
    padding:9px 6px;
    background:transparent;
    color:#f4ece0;
    border:0;
    font-family:inherit;font-size:13px;line-height:1.45;letter-spacing:.005em;
    outline:none;resize:none;
}
.lv-seltb-input::placeholder{color:rgba(189,178,163,.55);font-style:italic}
.lv-seltb-btn--send{
    color:#0c0c0e;background:#d4af6b;
    width:34px;height:34px;border-radius:9px;flex:0 0 auto;
}
.lv-seltb-btn--send:hover{background:#e6c184;color:#0c0c0e}
.lv-seltb-promptbar .lv-seltb-btn:not(.lv-seltb-btn--send){
    width:34px;height:34px;flex:0 0 auto;color:#bdb2a3;
}
.lv-seltb-promptbar .lv-seltb-btn:not(.lv-seltb-btn--send):hover{color:#f3d99a;background:rgba(212,175,107,.14)}

/* Pointer arrow toward the selection */
.lv-seltb-arrow{
    position:absolute;
    bottom:-6px;left:50%;width:12px;height:6px;
    background:rgba(22,22,26,.96);
    border-right:1px solid rgba(212,175,107,.28);
    border-bottom:1px solid rgba(212,175,107,.28);
    transform:translateX(-50%) rotate(45deg);
    transform-origin:center;
    pointer-events:none;
}
.lv-seltb--below .lv-seltb-arrow{
    bottom:auto;top:-6px;
    border:0;
    border-top:1px solid rgba(212,175,107,.28);
    border-left:1px solid rgba(212,175,107,.28);
}

/* AI streaming panel inside the toolbar */
.lv-seltb-stream{
    margin-top:6px;
    padding:8px;
    border-top:1px solid rgba(244,236,224,.08);
    max-width:100%;
}
.lv-seltb-stream-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}
.lv-seltb-stream-label{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:#d4af6b}
.lv-seltb-stream-acts{display:flex;gap:2px}
.lv-seltb-mini{
    width:22px;height:22px;border:0;background:transparent;color:#f4ece0;
    border-radius:5px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;
}
.lv-seltb-mini:hover{background:rgba(244,236,224,.1)}
.lv-seltb-mini[data-stream="accept"]{color:#9adfa1}
.lv-seltb-mini[data-stream="reject"]{color:#e88f86}
.lv-seltb-stream-body{
    font-family:'Lora','Georgia',serif;font-size:13px;line-height:1.55;color:#f4ece0;
    max-height:160px;overflow-y:auto;
    white-space:pre-wrap;
}
.lv-seltb.is-streaming{min-width:280px;max-width:380px}

/* Streaming pulse — subtle gold sweep while AI streams */
.lv-seltb-stream-pulse{height:1px;width:100%;margin:0 0 6px;background:rgba(212,175,107,.15);border-radius:1px;overflow:hidden;position:relative;display:none}
.lv-seltb.is-streaming .lv-seltb-stream-pulse{display:block}
.lv-seltb.is-streaming .lv-seltb-stream-pulse::after{content:"";position:absolute;inset:0;width:40%;background:linear-gradient(90deg,transparent,rgba(212,175,107,.85),transparent);animation:lvSelTbPulse 1.2s ease-in-out infinite}
.lv-seltb.is-stream-done .lv-seltb-stream-pulse::after{animation:none;width:100%;background:rgba(212,175,107,.45)}
@keyframes lvSelTbPulse{0%{transform:translateX(-100%)}100%{transform:translateX(250%)}}

/* Stream actions: refine ↻ tucked, accept primary, reject ghost */
.lv-seltb-mini[data-stream="refine"]{color:#d4af6b;opacity:.8}
.lv-seltb-mini[data-stream="refine"]:hover{opacity:1;background:rgba(212,175,107,.16)}
.lv-seltb.is-streaming:not(.is-stream-done) .lv-seltb-mini[data-stream="accept"],
.lv-seltb.is-streaming:not(.is-stream-done) .lv-seltb-mini[data-stream="refine"]{opacity:.45;pointer-events:none}
.lv-seltb.is-stream-done .lv-seltb-mini[data-stream="accept"]{background:rgba(154,223,161,.14);box-shadow:inset 0 0 0 1px rgba(154,223,161,.3)}

/* AI sparkle button — slightly more presence (the value moment) */
.lv-seltb-btn--ai{box-shadow:inset 0 0 0 1px rgba(212,175,107,.18)}
.lv-seltb-btn--ai:hover{box-shadow:inset 0 0 0 1px rgba(212,175,107,.45),0 0 0 3px rgba(212,175,107,.08)}

/* Définir chip — gold accent to differentiate from AI rewrite chips */
.lv-seltb-chip--define{border-color:rgba(212,175,107,.28);color:#f3d99a}
.lv-seltb-chip--define:hover{background:rgba(212,175,107,.18);border-color:rgba(212,175,107,.6)}

/* ── Definition panel (Définir chip → single-word) ── */
.lv-seltb-def{margin-top:6px;padding:10px 10px 8px;border-top:1px solid rgba(244,236,224,.08)}
.lv-seltb-def-head{display:flex;align-items:baseline;gap:7px;margin-bottom:7px}
.lv-seltb-def-word{font:600 14px/1 'Lora','Georgia',serif;color:#f3d99a;flex:0 0 auto}
.lv-seltb-def-pos{font:italic 400 11px/1 'Lora','Georgia',serif;color:rgba(212,175,107,.65);flex:1 1 auto}
.lv-seltb-def-head .lv-seltb-mini{margin-left:auto;flex:0 0 auto}
.lv-seltb-def-body{font:400 12.5px/1.52 'Lora','Georgia',serif;color:#e7decd}
.lv-seltb-def-ex{margin-top:6px;font:italic 400 11.5px/1.45 'Lora','Georgia',serif;color:rgba(231,222,205,.55);border-left:2px solid rgba(212,175,107,.28);padding-left:8px}
.lv-seltb-def-loading{color:rgba(212,175,107,.5);font-style:italic}
.lv-seltb-def-syns{margin-top:9px;padding-top:9px;border-top:1px solid rgba(244,236,224,.07)}
.lv-seltb-def-syns-lbl{display:block;font:600 9.5px/1 'Montserrat',sans-serif;letter-spacing:.14em;text-transform:uppercase;color:rgba(212,175,107,.65);margin-bottom:7px}
.lv-seltb-def-syns-list{display:flex;flex-wrap:wrap;gap:5px}
.lv-seltb-syn-chip{padding:4px 10px;background:rgba(212,175,107,.07);border:1px solid rgba(212,175,107,.2);border-radius:999px;color:#f4ece0;font:500 11.5px/1 'Lora','Georgia',serif;cursor:pointer;transition:background .14s,border-color .14s,color .14s,transform .1s}
.lv-seltb-syn-chip:hover{background:rgba(212,175,107,.18);border-color:rgba(212,175,107,.55);color:#f3d99a;transform:scale(1.04)}
.lv-seltb-syn-chip:active{transform:scale(.97)}
@media (max-width:520px){
    .lv-seltb{max-width:calc(100vw - 24px)}
}

/* ================================================================
   Inline tab host — slides under the editor subheader, stays in flow
   ================================================================ */
.atelier .at-tabhost{
    position:absolute;
    top:48px;
    left:0;right:0;bottom:0;
    background:var(--at-paper, var(--bg, #faf7f2));
    z-index:40;
    display:flex;flex-direction:column;
    transform:translateY(-12px);
    opacity:0;
    transition:transform .32s cubic-bezier(.5,.05,.2,1), opacity .26s ease;
    box-shadow:0 12px 36px -18px rgba(20,16,8,.18), inset 0 1px 0 rgba(0,0,0,.04);
    pointer-events:none;
}
.atelier .at-tabhost[hidden]{display:none}
.atelier .at-tabhost.is-open{transform:translateY(0);opacity:1;pointer-events:auto}
/* Soft seam where the host meets the subheader */
.atelier .at-tabhost::before{
    content:'';position:absolute;left:0;right:0;top:0;height:1px;
    background:linear-gradient(90deg, transparent, var(--at-line, rgba(0,0,0,.08)) 22%, var(--at-line, rgba(0,0,0,.08)) 78%, transparent);
}
.atelier .at-tabhost::after{
    content:'';position:absolute;left:0;right:0;top:1px;height:14px;
    background:linear-gradient(180deg, rgba(20,16,8,.06), transparent);
    pointer-events:none;
}

.atelier .at-tabhost-bar{
    display:flex;align-items:center;justify-content:space-between;
    padding:10px 22px 6px;
    font:600 10px/1 'Montserrat',sans-serif;
    letter-spacing:.28em;text-transform:uppercase;
    color:var(--at-ink-grey);
}
.atelier .at-tabhost-eyebrow{display:none!important}
.atelier .at-tabhost-bar{display:none!important}
.atelier .at-tabhost-close{display:none!important}
.atelier .at-tabhost-close{
    width:28px;height:28px;border-radius:50%;
    border:1px solid var(--at-line);
    background:transparent;color:var(--at-ink-grey);
    display:inline-flex;align-items:center;justify-content:center;
    cursor:pointer;
    transition:transform .2s, color .2s, border-color .2s, background .2s;
}
.atelier .at-tabhost-close:hover{
    color:var(--at-ink);
    border-color:var(--at-gold);
    background:rgba(190,150,60,.06);
    transform:rotate(90deg);
}

.atelier .at-tabhost-scroll{
    flex:1;overflow:auto;
    -webkit-overflow-scrolling:touch;
    scroll-behavior:smooth;
}
.atelier .at-tabhost-inner{
    opacity:1;
    transform:translateY(0);
    transition:opacity .18s ease, transform .26s cubic-bezier(.5,.05,.2,1);
    will-change:opacity, transform;
    animation:atTabRise .42s cubic-bezier(.5,.05,.2,1) both;
}
.atelier .at-tabhost-inner.is-swapping{opacity:0;transform:translateY(8px)}
@keyframes atTabRise{
    from{opacity:0;transform:translateY(10px)}
    to  {opacity:1;transform:translateY(0)}
}

/* Loading triad */
.atelier .at-tabhost-loading{
    display:flex;align-items:center;justify-content:center;gap:10px;
    padding:80px 20px;
}
.atelier .at-tabhost-orb{
    width:8px;height:8px;border-radius:50%;
    background:var(--at-gold);
    opacity:.35;
    animation:atTabPulse 1.1s ease-in-out infinite;
}
.atelier .at-tabhost-orb--2{animation-delay:.18s}
.atelier .at-tabhost-orb--3{animation-delay:.36s}
@keyframes atTabPulse{
    0%,100%{opacity:.25;transform:scale(.85)}
    50%    {opacity:1;   transform:scale(1.15)}
}

.atelier .at-tabhost-error{
    margin:60px auto;max-width:440px;text-align:center;
    padding:24px;border:1px dashed var(--at-line);border-radius:14px;
    color:var(--at-ink-grey);font:500 13px/1.5 'Montserrat',sans-serif;
}
.atelier .at-tabhost-error small{display:block;margin-top:6px;opacity:.6;font-size:11px}

/* Push the editor shell slightly down so the slide-over reads as layered, not destructive */
.atelier .at-shell--behind{
    transform:scale(.992) translateY(2px);
    transition:transform .32s cubic-bezier(.5,.05,.2,1);
    filter:saturate(.92);
}

@media (max-width:760px){
    .atelier .at-tabhost-bar{padding:10px 14px 4px}
}

/* ─────────────────────────────────────────────────────────────
   PLAN PAGE — editorial dossier (.pl-*)
   ───────────────────────────────────────────────────────────── */
.pl-section{max-width:1140px;margin:0 auto;padding:48px 28px 96px;font-family:'Montserrat',sans-serif}

.pl-head{margin-bottom:36px}
.pl-title{font:700 42px/1.05 'Playfair Display',serif;color:var(--white);margin:0 0 14px;letter-spacing:-.6px}
.pl-meta{display:flex;flex-wrap:wrap;align-items:center;gap:12px;font:500 11px 'Montserrat',sans-serif;color:var(--grey);letter-spacing:.6px}
.pl-meta-chip{padding:5px 12px;border-radius:999px;background:var(--accent);color:var(--bg);font-weight:700;font-size:10px;text-transform:uppercase;letter-spacing:1.4px}
.pl-meta-chip--ghost{background:transparent;color:var(--accent);border:1px solid rgba(201,163,85,.45)}
.pl-meta-dot{width:3px;height:3px;border-radius:50%;background:var(--line)}
.pl-meta-stat{font-size:11px}
.pl-meta-stat strong{color:var(--white);font:700 14px 'Playfair Display',serif;margin-right:4px}
.pl-rule{margin-top:24px;height:1px;background:linear-gradient(90deg,var(--accent) 0,var(--accent) 88px,var(--line) 88px,var(--line) 100%)}

/* ════════════════════════════════════════════════════════════════════
   L'ATELIER DU MAÎTRE — fil conducteur, Roman numerals, side panels
   Aesthetic: literary workbench. Cream/dark + gold thread, Playfair
   epigraphs in italic, Cormorant for ornament numerals.
   ════════════════════════════════════════════════════════════════════ */

.at-page{max-width:1180px;margin:0 auto;padding:0 24px 96px}

/* Header */
.at-head{padding:48px 0 28px;text-align:left;position:relative}
.at-head-cta{position:absolute;top:48px;right:0;display:inline-flex;align-items:center;gap:10px;padding:11px 20px;border-radius:999px;background:var(--accent);color:var(--bg);text-decoration:none;font:700 12px 'Montserrat',sans-serif;letter-spacing:1.2px;text-transform:uppercase;border:1px solid var(--accent);box-shadow:0 8px 24px -10px rgba(201,163,85,.5);transition:transform .18s ease,box-shadow .18s ease,filter .18s ease}
.at-head-cta:hover{transform:translateY(-1px);filter:brightness(1.05);box-shadow:0 12px 28px -10px rgba(201,163,85,.65);color:var(--bg)}
.at-head-cta:active{transform:translateY(0)}
.at-head-cta-arrow{transition:transform .18s ease}
.at-head-cta:hover .at-head-cta-arrow{transform:translateX(3px)}
@media (max-width: 880px){
    .at-head-cta{position:static;margin-bottom:18px}
    .at-head-cta-lbl{display:inline}
}
.at-eyebrow{display:inline-block;font:700 10px 'Montserrat',sans-serif;letter-spacing:6px;text-transform:uppercase;color:var(--accent);margin-bottom:14px}
.at-eyebrow::before{content:"❖ ";opacity:.7;margin-right:6px}
.at-title{font:700 44px/1.05 'Playfair Display',serif;color:var(--white);margin:0 0 14px;letter-spacing:-.6px;max-width:880px}
.at-incipit{font:italic 400 16px/1.6 'Cormorant Garamond','Playfair Display',serif;color:var(--light);max-width:680px;margin:0 0 22px;letter-spacing:.2px}
.at-meta{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:18px}
.at-meta-chip{padding:5px 11px;border-radius:999px;font:600 11px 'Montserrat',sans-serif;letter-spacing:.6px;text-transform:uppercase;border:1px solid var(--line);background:var(--bg);color:var(--light)}
.at-meta-chip--ghost{background:transparent;color:var(--accent);border-color:rgba(201,163,85,.32)}
.at-meta-dot{width:4px;height:4px;border-radius:50%;background:var(--line);margin:0 4px}
.at-meta-stat{font:400 12px 'Montserrat',sans-serif;color:var(--light);letter-spacing:.3px}
.at-meta-stat strong{color:var(--white);font-weight:700;margin-right:4px}
.at-rule{margin-top:24px;height:1px;background:linear-gradient(90deg,var(--accent) 0,var(--accent) 88px,var(--line) 88px,var(--line) 100%)}

.at-phase-chip{text-transform:capitalize}
.at-phase-chip--forge{background:rgba(201,163,85,.18);border-color:rgba(201,163,85,.4);color:var(--accent)}
.at-phase-chip--draft{background:rgba(150,150,150,.12)}
.at-phase-chip--review{background:rgba(75,140,200,.14);border-color:rgba(75,140,200,.4)}
.at-phase-chip--published{background:rgba(70,180,120,.14);border-color:rgba(70,180,120,.4)}
.at-phase-chip--distributed{background:rgba(180,120,200,.14);border-color:rgba(180,120,200,.4)}

/* ── Sticky TOC: numbered chips ── */
.at-toc{position:sticky;top:0;z-index:25;display:flex;align-items:center;gap:8px;padding:12px 0;margin:0 0 32px;background:linear-gradient(180deg,var(--bg) 0,var(--bg) 78%,transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none}
.at-toc--with-meta{justify-content:flex-start}
.at-toc-meta{margin-left:auto;display:inline-flex;align-items:center;gap:14px;flex-shrink:0;padding-left:16px}
.at-toc-meta .at-meta-stat{font-size:11.5px;color:var(--at-ink-grey,var(--light))}
.at-toc-meta .at-meta-chip{font-size:10px;padding:4px 9px}
.at-toc::-webkit-scrollbar{display:none}
.at-toc-link{flex:0 0 auto;display:inline-flex;align-items:center;gap:8px;padding:8px 14px 8px 8px;border-radius:999px;font:600 12px/1 'Montserrat',sans-serif;letter-spacing:.6px;text-transform:uppercase;color:var(--light);text-decoration:none;border:1px solid transparent;transition:.2s ease}
.at-toc-link:hover{color:var(--white);background:rgba(201,163,85,.06)}
.at-toc-link.is-active{color:var(--accent);border-color:rgba(201,163,85,.32);background:rgba(201,163,85,.08)}
.at-toc-num{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:rgba(201,163,85,.12);color:var(--accent);font:italic 700 11px 'Cormorant Garamond',serif;letter-spacing:0}
.at-toc-link.is-active .at-toc-num{background:var(--accent);color:var(--bg)}

/* ── Fil conducteur — the golden thread on the left ── */
.at-fil{position:relative;padding-left:64px}
.at-fil-thread{position:absolute;left:24px;top:8px;bottom:8px;width:2px;pointer-events:none}
.at-fil-line{position:absolute;left:50%;top:0;bottom:0;width:1px;background:linear-gradient(180deg,transparent 0,rgba(201,163,85,.55) 8%,rgba(201,163,85,.55) 92%,transparent 100%);transform:translateX(-50%)}
.at-fil-bead{position:absolute;left:50%;width:14px;height:14px;border-radius:50%;background:var(--bg);border:1.5px solid rgba(201,163,85,.5);transform:translate(-50%,-50%);transition:.35s cubic-bezier(.2,.8,.2,1);box-shadow:0 0 0 0 rgba(201,163,85,0)}
.at-fil-bead::after{content:"";position:absolute;inset:3px;border-radius:50%;background:rgba(201,163,85,.35);transition:.35s ease}
.at-fil-bead.is-active{background:var(--accent);border-color:var(--accent);box-shadow:0 0 0 6px rgba(201,163,85,.15),0 0 22px rgba(201,163,85,.35)}
.at-fil-bead.is-active::after{background:var(--bg);inset:5px}
.at-fil-bead--1{top:8%}
.at-fil-bead--2{top:34%}
.at-fil-bead--3{top:62%}
.at-fil-bead--4{top:90%}
.at-fil-bead--5{top:97%}

/* Save status pill (top-right of L'Idée header) */
.at-save-pill{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:999px;font:600 10px 'Montserrat',sans-serif;letter-spacing:1.2px;text-transform:uppercase;border:1px solid var(--line);color:var(--muted);background:transparent;transition:.2s ease}
.at-save-pill[data-state="saving"]{color:var(--accent);border-color:rgba(201,163,85,.4)}
.at-save-pill[data-state="saved"]{color:#3a8a5b;border-color:rgba(58,138,91,.35);background:rgba(58,138,91,.06)}
.at-save-pill[data-state="dirty"]{color:#c98e36;border-color:rgba(201,142,54,.35)}
.at-save-pill[data-state="error"]{color:#b14848;border-color:rgba(177,72,72,.4)}
.at-save-pill-ico{flex:0 0 auto}

/* Grouped actions in station header */
.at-station-actions{display:flex;gap:8px;flex-wrap:wrap;flex:0 0 auto;margin-left:auto;align-items:center}
@media (max-width: 880px){
    .at-station-actions{margin-left:0;width:100%;justify-content:flex-start}
}
.at-station-action--accent{background:var(--accent);color:var(--bg);border-color:var(--accent)}
.at-station-action--accent:hover{filter:brightness(1.08);color:var(--bg);background:var(--accent);border-color:var(--accent);box-shadow:0 6px 16px rgba(201,163,85,.22)}
.at-station-action.is-loading{opacity:.65;cursor:wait}
.at-station-action[disabled]{opacity:.55;cursor:not-allowed}

/* Ghost CTA used inside empty states */
.at-cta--ghost{background:transparent;color:var(--accent);border:1px solid var(--accent);padding:10px 18px}
.at-cta--ghost:hover{background:rgba(201,163,85,.08);box-shadow:none;transform:none}

.at-world-card--editing{display:flex;flex-direction:column;gap:6px}
.at-world-card--editing input,.at-world-card--editing textarea{font:400 14px/1.5 'Cormorant Garamond',serif;background:transparent;border:0;border-bottom:1px solid var(--line);padding:4px 0;color:var(--light)}
.at-world-card--editing textarea{resize:none;min-height:48px}

/* Editable Le Monde character cards */
.at-world-card--edit{position:relative;display:flex;flex-direction:column;gap:8px;padding:14px 14px 14px;min-height:160px}
.at-wc-name{font:600 14px/1.2 'Montserrat',sans-serif;color:var(--white);background:transparent;border:0;border-bottom:1px solid transparent;padding:2px 0;outline:0;transition:border-color .18s ease}
.at-wc-name:hover,.at-wc-name:focus{border-bottom-color:var(--accent)}
.at-wc-role{font:600 9px/1.2 'Montserrat',sans-serif;letter-spacing:.8px;text-transform:uppercase;color:var(--accent);background:rgba(201,163,85,.08);border:1px solid transparent;border-radius:999px;padding:4px 10px;outline:0;align-self:flex-start;max-width:75%;transition:.18s ease}
.at-wc-role:hover,.at-wc-role:focus{border-color:rgba(201,163,85,.45);background:rgba(201,163,85,.14)}
.at-wc-mot{font:400 13px/1.55 'Cormorant Garamond',serif;color:var(--light);background:transparent;border:0;padding:2px 0;outline:0;resize:none;min-height:48px;width:100%;field-sizing:content;max-height:240px;overflow-y:auto}
.at-wc-mot::placeholder,.at-wc-name::placeholder,.at-wc-role::placeholder{color:var(--muted);opacity:.7}
.at-wc-mot::-webkit-scrollbar{width:8px}
.at-wc-mot::-webkit-scrollbar-thumb{background:rgba(201,163,85,.32);border-radius:999px}
.at-wc-tools{position:absolute;top:8px;right:8px;display:flex;gap:4px;opacity:0;transition:opacity .15s ease}
.at-world-card--edit:hover .at-wc-tools,.at-world-card--edit:focus-within .at-wc-tools{opacity:1}
.at-wc-tool{width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;border-radius:6px;color:var(--muted);cursor:pointer;transition:.15s ease}
.at-wc-tool--coach:hover{color:var(--accent);background:rgba(201,163,85,.1)}
.at-wc-tool--del:hover{color:#b14848;background:rgba(177,72,72,.08)}

/* "Add a character" card — dashed placeholder, matches grid cell shape */
.at-world-card--add{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:160px;padding:18px;background:transparent;border:1.5px dashed rgba(201,163,85,.4);border-radius:14px;cursor:pointer;color:var(--muted);transition:.2s ease;text-align:center}
.at-world-card--add:hover{border-color:var(--accent);color:var(--accent);background:rgba(201,163,85,.04);transform:translateY(-1px)}
.at-world-card-add-ico{opacity:.7}
.at-world-card--add:hover .at-world-card-add-ico{opacity:1}
.at-world-card-add-lbl{font:600 12px/1.2 'Montserrat',sans-serif;letter-spacing:.6px;text-transform:uppercase}
.at-world-card-add-hint{font:italic 400 12px/1.3 'Cormorant Garamond',serif;opacity:.7}

/* Editable era / setting frame */
.at-world-frame-in{width:100%;font:italic 400 15px/1.4 'Cormorant Garamond',serif;color:var(--white);background:transparent;border:0;padding:2px 0;outline:0;min-width:0}
.at-world-frame-in::placeholder{color:rgba(184,184,184,.55);font-style:italic}
.at-world-frame-in:focus::placeholder{color:rgba(184,184,184,.3)}

/* Heading row with inline action */
.at-world-h-row{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:8px}
.at-world-h-row .at-world-h{margin:0}

/* Small variant of station action */
.at-station-action--small{padding:6px 11px;font-size:10px;letter-spacing:.5px}

/* Active station — gold left edge + subtle ring; non-active fade slightly */
.at-station{transition:opacity .35s ease, box-shadow .35s ease, border-color .35s ease}
.at-station::before{content:"";position:absolute;left:-1px;top:14%;bottom:14%;width:2px;background:transparent;border-radius:2px;transition:.4s ease}
.at-station.is-active{border-color:rgba(201,163,85,.35);box-shadow:0 0 0 1px rgba(201,163,85,.12),0 18px 40px -28px rgba(201,163,85,.35)}
.at-station.is-active::before{background:linear-gradient(180deg,transparent,var(--accent) 30%,var(--accent) 70%,transparent)}
.at-fil .at-station:not(.is-active){opacity:.78}
.at-fil .at-station:not(.is-active):hover{opacity:1}

/* Companion rail follows context */
.at-companion-rail--ghost{opacity:.55}
.at-companion-rail-text #atRailScope{color:var(--accent);font-weight:600}

/* Toasts (Atelier identity) */
.at-toast-host{position:fixed;top:24px;left:50%;transform:translateX(-50%);z-index:9999;display:flex;flex-direction:column;gap:10px;pointer-events:none}
.at-toast{pointer-events:auto;max-width:520px;padding:14px 22px;background:var(--card,var(--bg));border:1px solid rgba(201,163,85,.45);border-left:3px solid var(--accent);border-radius:10px;color:var(--light);font:italic 400 15px/1.5 'Cormorant Garamond',serif;box-shadow:0 14px 40px rgba(0,0,0,.18),0 2px 8px rgba(0,0,0,.06);opacity:0;transform:translateY(-8px);transition:opacity .28s ease,transform .28s ease}
.at-toast.is-in{opacity:1;transform:translateY(0)}
.at-toast.is-out{opacity:0;transform:translateY(-8px)}
.at-toast--err{border-left-color:#b14848;border-color:rgba(177,72,72,.4)}
.at-toast--ok{border-left-color:#3a8a5b;border-color:rgba(58,138,91,.4)}

/* ── Stations (sections) ── */
.at-station{position:relative;background:var(--card,var(--bg));border:1px solid var(--line);border-radius:16px;padding:34px 38px}
.at-station--full{margin-bottom:28px}
.at-station--duo{display:grid;grid-template-columns:1fr 1fr;gap:20px;background:transparent;border:0;padding:0;margin-bottom:28px}
.at-station--duo>.at-station-card{background:var(--card,var(--bg));border:1px solid var(--line);border-radius:16px;padding:28px 28px 24px}

.at-station-head{display:flex;align-items:flex-start;gap:18px;margin-bottom:22px;flex-wrap:wrap}
.at-roman{flex:0 0 auto;font:italic 700 56px/.8 'Cormorant Garamond',serif;color:var(--accent);letter-spacing:-1px;padding-right:14px;border-right:1px solid var(--line)}
.at-station-titles{flex:1 1 320px;min-width:0;padding-top:4px}
.at-station-name{display:block;font:700 22px/1.1 'Playfair Display',serif;color:var(--white);letter-spacing:-.2px;margin-bottom:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.at-station-epigraph{margin:0;font:italic 400 13px/1.55 'Cormorant Garamond',serif;color:var(--light);letter-spacing:.2px;max-width:560px;overflow-wrap:break-word;word-break:normal;hyphens:auto}
.at-station-action{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:999px;background:transparent;border:1px solid var(--line);color:var(--light);font:600 11px 'Montserrat',sans-serif;letter-spacing:.6px;text-transform:uppercase;cursor:pointer;text-decoration:none;transition:.18s ease}
.at-station-action:hover{border-color:var(--accent);color:var(--accent);background:rgba(201,163,85,.06)}

/* Decorative ornament between stations */
.at-fleuron{text-align:center;font:400 22px 'Cormorant Garamond',serif;color:rgba(201,163,85,.45);letter-spacing:8px;margin:18px 0 22px}

/* ── L'Idée: form ── */
.at-form{display:flex;flex-direction:column;gap:18px}
.at-field{display:flex;flex-direction:column;gap:6px}
.at-field-lbl{font:700 10px/1 'Montserrat',sans-serif;letter-spacing:1.4px;text-transform:uppercase;color:var(--accent)}
.at-field input,.at-field textarea,.at-field select{width:100%;padding:11px 14px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--white);font:400 14px/1.5 'Montserrat',sans-serif;transition:.18s ease}
.at-field input:focus,.at-field textarea:focus,.at-field select:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px rgba(201,163,85,.14)}
.at-field textarea{
    resize:none;                                       /* auto-grow handles it */
    min-height:120px;
    max-height:320px;
    overflow-y:auto;
    font-family:'Cormorant Garamond','Playfair Display',serif;
    font-size:16px;
    line-height:1.65;
    field-sizing:content;                              /* Chrome 123+/FF 134+ — JS handles the rest */
    scrollbar-width:thin;
    scrollbar-color:rgba(201,163,85,.5) transparent;
    transition:.18s ease, height .12s ease;
}
.at-field textarea::-webkit-scrollbar{width:10px;height:10px}
.at-field textarea::-webkit-scrollbar-track{background:transparent;margin:10px 4px 10px 0}
.at-field textarea::-webkit-scrollbar-thumb{
    background:linear-gradient(180deg,rgba(201,163,85,.55),rgba(201,163,85,.32));
    border-radius:999px;
    border:3px solid transparent;
    background-clip:padding-box;
    transition:.2s ease;
}
.at-field textarea::-webkit-scrollbar-thumb:hover{
    background:linear-gradient(180deg,rgba(201,163,85,.95),rgba(201,163,85,.6));
    background-clip:padding-box;
    border:2px solid transparent;
}
.at-field textarea::-webkit-resizer{display:none;background:transparent}

/* Custom resize handle: a discreet double-chevron at the bottom-right of the field wrapper */
.at-field--text{position:relative}
.at-field--text::after{
    content:"";
    position:absolute;right:10px;bottom:10px;width:14px;height:14px;
    pointer-events:none;opacity:0;transform:translateY(2px);
    background:
        linear-gradient(135deg,transparent 46%,rgba(201,163,85,.6) 46%,rgba(201,163,85,.6) 54%,transparent 54%) 0 0/100% 100%,
        linear-gradient(135deg,transparent 46%,rgba(201,163,85,.4) 46%,rgba(201,163,85,.4) 54%,transparent 54%) -5px -5px/100% 100%;
    transition:.25s cubic-bezier(.2,.8,.2,1);
}
.at-field--text:focus-within::after{opacity:.9;transform:translateY(0)}

/* Gentle "fade-mask" at the bottom of the textarea hints there's more below when scrolled */
.at-field--text[data-overflow="true"] textarea{
    mask-image:linear-gradient(180deg,#000 0,#000 calc(100% - 22px),rgba(0,0,0,.55) 100%);
    -webkit-mask-image:linear-gradient(180deg,#000 0,#000 calc(100% - 22px),rgba(0,0,0,.55) 100%);
}
.at-input--display{font:600 22px/1.3 'Playfair Display',serif !important;padding:14px 16px !important}
.at-field-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.at-cta{align-self:flex-start;display:inline-flex;align-items:center;gap:8px;padding:12px 24px;border-radius:999px;background:var(--accent);color:var(--bg);font:700 12px 'Montserrat',sans-serif;letter-spacing:1.4px;text-transform:uppercase;border:0;cursor:pointer;transition:.2s ease}
.at-cta:hover{filter:brightness(1.08);transform:translateY(-1px);box-shadow:0 8px 22px rgba(201,163,85,.22)}

.at-forge-summary{padding:16px 18px;border-radius:12px;background:rgba(201,163,85,.05);border:1px solid rgba(201,163,85,.2);margin-top:4px}
.at-forge-pitch{margin:0 0 10px;font:italic 400 16px/1.5 'Cormorant Garamond',serif;color:var(--white)}
.at-forge-themes{display:flex;flex-wrap:wrap;gap:6px}
.at-theme-chip{padding:4px 10px;border-radius:999px;background:rgba(201,163,85,.1);color:var(--accent);font:600 10px 'Montserrat',sans-serif;letter-spacing:1px;text-transform:uppercase}

/* ── Charpente: chapter list ── */
.at-chapters{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}
.at-ch{display:flex;flex-direction:column;border-radius:10px;border:1px solid transparent;background:var(--bg);transition:.16s ease}
.at-ch[data-notes-count]:not([data-notes-count="0"]){border-left:2px solid rgba(201,163,85,.35)}
.at-ch-row{display:flex;align-items:center;gap:12px;padding:12px 14px;cursor:pointer;border-radius:10px;transition:.16s ease}
.at-ch-row:hover{background:rgba(201,163,85,.04);transform:translateX(2px)}
.at-ch:has(.at-ch-row:hover){border-color:rgba(201,163,85,.32)}
.at-ch-num{flex:0 0 auto;font:italic 700 14px 'Cormorant Garamond',serif;color:var(--accent);min-width:28px}
.at-ch-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.at-ch-title{width:100%;border:0;background:transparent;color:var(--white);font:600 14px/1.3 'Montserrat',sans-serif;padding:2px 0}
.at-ch-title:focus{outline:0;color:var(--accent)}
.at-ch-beat{margin:0;font:italic 400 12px/1.4 'Cormorant Garamond',serif;color:var(--light);opacity:.85;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.at-ch-status{flex:0 0 auto;width:7px;height:7px;border-radius:50%}
.at-ch-status--drafted{background:var(--accent);box-shadow:0 0 0 3px rgba(201,163,85,.18)}
.at-ch-status--empty{background:rgba(150,150,150,.3)}
.at-ch-words{flex:0 0 auto;font:600 11px 'Montserrat',sans-serif;color:var(--light);min-width:34px;text-align:right;letter-spacing:.4px}
.at-ch-act{flex:0 0 auto;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:transparent;border:1px solid transparent;color:var(--light);cursor:pointer;transition:.16s ease;opacity:0;position:relative}
.at-ch-row:hover .at-ch-act{opacity:.7}
.at-ch-act:hover{opacity:1 !important;border-color:var(--accent);color:var(--accent);background:rgba(201,163,85,.06)}
.at-ch-act--danger:hover{border-color:#c64646;color:#c64646;background:rgba(198,70,70,.08)}
.at-ch-act--edit{text-decoration:none}
.at-ch-act--edit:hover{border-color:var(--accent);color:var(--accent);background:rgba(201,163,85,.06)}

/* Just-updated pulse on chapter row */
@keyframes atChPulse {
    0%   { background:rgba(201,163,85,.04); box-shadow:0 0 0 0 rgba(201,163,85,.0); }
    35%  { background:rgba(201,163,85,.16); box-shadow:0 0 0 4px rgba(201,163,85,.18); }
    100% { background:transparent; box-shadow:0 0 0 0 rgba(201,163,85,0); }
}
.at-ch--just-updated > .at-ch-row{animation:atChPulse 1.4s ease-out}
.at-ch--just-updated{border-color:rgba(201,163,85,.45)!important}
.at-ch-carnet-btn{opacity:.5}
.at-ch[data-notes-count]:not([data-notes-count="0"]) .at-ch-carnet-btn{opacity:.95;color:var(--accent)}
.at-ch-notes-badge{position:absolute;top:-2px;right:-2px;min-width:14px;height:14px;padding:0 3px;border-radius:8px;background:var(--accent);color:var(--bg);font:700 9px/14px 'Montserrat',sans-serif;text-align:center;letter-spacing:0}
.at-ch-empty{padding:24px;text-align:center;font:italic 400 13px 'Cormorant Garamond',serif;color:var(--light);border:1px dashed var(--line);border-radius:10px}

/* ── Carnet (chapter notes) ── */
.at-carnet{margin:2px 14px 12px 50px;padding:14px 16px;border-radius:10px;border:1px dashed rgba(201,163,85,.28);background:linear-gradient(180deg,rgba(201,163,85,.04),rgba(201,163,85,.02));position:relative}
.at-carnet::before{content:"";position:absolute;left:-22px;top:14px;bottom:14px;width:1px;background:repeating-linear-gradient(to bottom,rgba(201,163,85,.4) 0 4px,transparent 4px 8px)}
.at-carnet-head{display:flex;flex-direction:column;gap:2px;margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid rgba(201,163,85,.18)}
.at-carnet-title{font:700 10px 'Montserrat',sans-serif;letter-spacing:1.4px;text-transform:uppercase;color:var(--accent)}
.at-carnet-hint{font:italic 400 12px 'Cormorant Garamond',serif;color:var(--light);opacity:.8}
.at-carnet-list{list-style:none;padding:0;margin:0 0 10px;display:flex;flex-direction:column;gap:6px;max-height:280px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--accent) transparent}
.at-carnet-list::-webkit-scrollbar{width:6px}
.at-carnet-list::-webkit-scrollbar-thumb{background:var(--accent);border-radius:6px}
.at-carnet-empty{font:italic 400 13px 'Cormorant Garamond',serif;color:var(--light);opacity:.7;padding:6px 4px}
.at-carnet-note{padding:8px 10px;border-radius:8px;background:var(--bg);border:1px solid rgba(201,163,85,.14);position:relative;transition:.16s}
.at-carnet-note:hover{border-color:rgba(201,163,85,.32)}
.at-carnet-note-body{font:400 13px/1.55 'Montserrat',sans-serif;color:var(--white);white-space:pre-wrap;word-break:break-word}
.at-carnet-note-meta{display:flex;align-items:center;gap:8px;margin-top:6px;font:500 10px 'Montserrat',sans-serif;color:var(--light);letter-spacing:.3px}
.at-carnet-src{padding:1px 7px;border-radius:999px;font:700 9px 'Montserrat',sans-serif;letter-spacing:.6px;text-transform:uppercase}
.at-carnet-src--manual{background:rgba(150,150,150,.18);color:var(--light)}
.at-carnet-src--chat{background:rgba(201,163,85,.16);color:var(--accent)}
.at-carnet-src--ai{background:rgba(201,163,85,.28);color:var(--accent)}
.at-carnet-time{flex:1;opacity:.75}
.at-carnet-del{width:22px;height:22px;border-radius:50%;border:1px solid transparent;background:transparent;color:var(--light);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;opacity:0;transition:.16s}
.at-carnet-note:hover .at-carnet-del{opacity:.7}
.at-carnet-del:hover{opacity:1;color:#c64646;border-color:#c64646;background:rgba(198,70,70,.08)}
.at-carnet-add{display:flex;gap:8px;align-items:flex-end}
.at-carnet-input{flex:1;padding:8px 10px;border-radius:8px;border:1px solid var(--line);background:var(--bg);color:var(--white);font:400 13px/1.5 'Montserrat',sans-serif;resize:vertical;min-height:48px;max-height:160px;outline:none;transition:.2s}
.at-carnet-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(201,163,85,.14)}
.at-carnet-add-btn{padding:8px 14px;border-radius:8px;border:1px solid var(--accent);background:transparent;color:var(--accent);font:600 11px 'Montserrat',sans-serif;letter-spacing:.6px;text-transform:uppercase;cursor:pointer;transition:.16s;white-space:nowrap}
.at-carnet-add-btn:hover{background:var(--accent);color:var(--bg)}

/* Chat — markdown rendering inside AI bubbles */
.cc-md{font:400 13px/1.55 'Cormorant Garamond',serif;color:var(--white)}
.cc-md>*{margin:0}
.cc-md>*+*{margin-top:8px}
.cc-md h1,.cc-md h2,.cc-md h3,.cc-md h4,.cc-md h5,.cc-md h6{font-family:'Cormorant Garamond',serif;color:var(--accent);font-weight:700;line-height:1.25;letter-spacing:.2px}
.cc-md h1{font-size:18px}
.cc-md h2{font-size:16px}
.cc-md h3{font-size:15px}
.cc-md h4,.cc-md h5,.cc-md h6{font-size:14px}
.cc-md p{font-size:14px;line-height:1.6}
.cc-md strong{color:#f1d99a;font-weight:700}
.cc-md em{font-style:italic;color:var(--light)}
.cc-md code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.85em;background:rgba(201,163,85,.12);border:1px solid rgba(201,163,85,.2);border-radius:4px;padding:0 5px;color:var(--accent)}
.cc-md ul,.cc-md ol{padding-left:22px;font-size:14px;line-height:1.6}
.cc-md ul li,.cc-md ol li{margin:2px 0}
.cc-md ul li::marker{color:var(--accent)}
.cc-md ol li::marker{color:var(--accent);font-weight:700}
.cc-md hr{border:0;border-top:1px solid rgba(201,163,85,.25);margin:10px 0}
.cc-md blockquote{margin:0;padding:6px 12px;border-left:3px solid var(--accent);background:rgba(201,163,85,.05);border-radius:0 8px 8px 0;font-style:italic;color:var(--light)}

/* Per-block insert button — appears on hover next to each block */
.cc-md-block{position:relative;display:block}
.cc-md-block>*{margin:0}
.cc-md-block+.cc-md-block{margin-top:8px}
.cc-md-insert{position:absolute;top:-4px;right:-4px;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;border:1px solid rgba(201,163,85,.35);background:var(--bg);color:var(--accent);cursor:pointer;opacity:0;transform:scale(.8);transition:.16s ease;padding:0}
.cc-md-block:hover .cc-md-insert,.cc-md-insert:focus-visible{opacity:1;transform:scale(1)}
.cc-md-insert:hover{background:var(--accent);color:var(--bg);border-color:var(--accent);box-shadow:0 2px 8px rgba(201,163,85,.35)}
.cc-md-insert--ok{opacity:1;transform:scale(1);background:rgba(108,176,108,.15);border-color:#6cb06c;color:#6cb06c}
.cc-md-insert--ok:hover{background:#6cb06c;color:var(--bg);border-color:#6cb06c}

/* Chat msg → carnet hook */
.cc-msg-actions{margin-top:6px;display:flex;justify-content:flex-end;flex-wrap:wrap;gap:6px}
.cc-msg-action{display:inline-flex;align-items:center;gap:5px;background:transparent;border:1px solid rgba(201,163,85,.3);color:var(--accent);padding:3px 9px;border-radius:999px;font:600 10px 'Montserrat',sans-serif;letter-spacing:.4px;cursor:pointer;transition:.16s;opacity:.6}
.cc-msg--ai:hover .cc-msg-action{opacity:1}
.cc-msg-action:hover{background:rgba(201,163,85,.12);border-color:var(--accent)}
.cc-msg-action--accent{background:rgba(201,163,85,.16);border-color:var(--accent);color:var(--accent);opacity:.9}
.cc-msg-action--accent:hover{background:var(--accent);color:var(--bg)}
.cc-msg-noted{display:inline-block;margin-top:6px;font:italic 400 11px 'Cormorant Garamond',serif;color:var(--accent);opacity:.8}

/* Chat groups (collapsible sections by message type) */
.cc-group{margin:6px 0 12px;border:1px solid rgba(201,163,85,.12);border-radius:10px;overflow:hidden;background:rgba(201,163,85,.02)}
.cc-group-head{width:100%;display:flex;align-items:center;gap:8px;padding:7px 10px;background:rgba(201,163,85,.06);border:0;border-bottom:1px solid rgba(201,163,85,.12);color:var(--accent);font:700 10px 'Montserrat',sans-serif;letter-spacing:1.1px;text-transform:uppercase;cursor:pointer;transition:.16s;text-align:left}
.cc-group-head:hover{background:rgba(201,163,85,.12)}
.cc-group-caret{flex:0 0 auto;transition:transform .2s ease}
.cc-group-icon{flex:0 0 auto;opacity:.85}
.cc-group-title{flex:1;text-align:left}
.cc-group-count{flex:0 0 auto;background:rgba(201,163,85,.18);color:var(--accent);padding:1px 7px;border-radius:999px;font:700 10px 'Montserrat',sans-serif;letter-spacing:.4px}
.cc-group[data-group="drafts"]{border-color:rgba(201,163,85,.28);background:rgba(201,163,85,.04)}
.cc-group[data-group="ideas"] .cc-group-head{color:#d8b66a}
.cc-group[data-group="chapters"] .cc-group-head{color:#c9a355}
.cc-group-body{padding:8px 10px;display:flex;flex-direction:column;gap:6px;max-height:1200px;overflow:hidden;transition:max-height .25s ease, padding .2s ease, opacity .2s ease}
.cc-group[data-collapsed] .cc-group-body{max-height:0;padding:0 10px;opacity:0;pointer-events:none}
.cc-group[data-collapsed] .cc-group-caret{transform:rotate(-90deg)}
.cc-group[data-collapsed] .cc-group-head{border-bottom-color:transparent}

/* ── Le Monde: framing + cards ── */
.at-world-frame{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:22px}
.at-world-frame-item{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;border-radius:12px;background:rgba(201,163,85,.04);border:1px solid rgba(201,163,85,.18);transition:border-color .18s ease,background .18s ease;cursor:text}
.at-world-frame-item:hover,.at-world-frame-item:focus-within{border-color:rgba(201,163,85,.45);background:rgba(201,163,85,.07)}
.at-world-frame-ico{flex:0 0 auto;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;background:rgba(201,163,85,.12);color:var(--accent);margin-top:2px}
.at-world-frame-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.at-world-frame-item strong{font:700 9px 'Montserrat',sans-serif;letter-spacing:1.4px;text-transform:uppercase;color:var(--accent)}
.at-world-frame-item em{font:italic 400 14px/1.3 'Cormorant Garamond',serif;color:var(--white);font-style:italic}
@media (max-width: 720px){
    .at-world-frame{grid-template-columns:1fr}
}

.at-world-h{font:700 10px/1 'Montserrat',sans-serif;letter-spacing:1.6px;text-transform:uppercase;color:var(--accent);margin:22px 0 12px;display:flex;align-items:center;gap:10px}
.at-world-h::before,.at-world-h::after{content:"";flex:0 0 12px;height:1px;background:rgba(201,163,85,.3)}
.at-world-h::after{flex:1}
.at-world-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}
.at-world-card{padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:var(--bg);transition:.18s ease}
.at-world-card:hover{border-color:rgba(201,163,85,.4);transform:translateY(-1px)}
.at-world-card-head{display:flex;align-items:center;gap:8px;margin-bottom:5px;flex-wrap:wrap}
.at-world-name{font:600 14px/1.2 'Montserrat',sans-serif;color:var(--white)}
.at-world-role{font:600 9px/1 'Montserrat',sans-serif;letter-spacing:.8px;text-transform:uppercase;color:var(--accent);padding:3px 7px;border-radius:999px;background:rgba(201,163,85,.1)}
.at-world-mot{margin:0;font:400 13px/1.55 'Cormorant Garamond',serif;color:var(--light);font-style:normal}
.at-world-empty{grid-column:1/-1;padding:18px;text-align:center;font:italic 400 13px 'Cormorant Garamond',serif;color:var(--light);border:1px dashed var(--line);border-radius:10px}

.at-timeline{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}
.at-timeline-item{display:flex;gap:12px;padding:9px 12px;border-left:2px solid var(--accent);background:rgba(201,163,85,.03);border-radius:0 8px 8px 0}
.at-timeline-label{flex:0 0 auto;font:700 10px/1.4 'Montserrat',sans-serif;letter-spacing:.6px;text-transform:uppercase;color:var(--accent);min-width:84px}
.at-timeline-summary{flex:1;font:400 13px/1.55 'Cormorant Garamond',serif;color:var(--light);font-style:normal}

/* ── La Méthode: explanatory full-width ── */
.at-method-why{padding:16px 20px;margin-bottom:22px;border-left:3px solid var(--accent);background:rgba(201,163,85,.04);border-radius:0 12px 12px 0}
.at-method-why-eyebrow{display:block;font:700 10px 'Montserrat',sans-serif;letter-spacing:1.6px;text-transform:uppercase;color:var(--accent);margin-bottom:8px}
.at-method-why p{margin:0;font:italic 400 15px/1.6 'Cormorant Garamond',serif;color:var(--light);max-width:760px}

.at-method-toggle .icon{transition:transform .25s ease}
.at-method.is-collapsed .at-method-toggle .icon{transform:rotate(-90deg)}
.at-method.is-collapsed .at-method-body,
.at-method.is-collapsed .at-method-why{display:none}

.at-method-body{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.at-phase{border:1px solid var(--line);border-radius:12px;background:var(--bg);overflow:hidden}
.at-phase>summary{display:flex;align-items:center;gap:12px;padding:14px 16px;cursor:pointer;list-style:none;transition:.16s ease}
.at-phase>summary::-webkit-details-marker{display:none}
.at-phase>summary:hover{background:rgba(201,163,85,.04)}
.at-phase[open]>summary{border-bottom:1px solid var(--line);background:rgba(201,163,85,.04)}
.at-phase-num{flex:0 0 auto;width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:rgba(201,163,85,.12);color:var(--accent);font:italic 700 13px 'Cormorant Garamond',serif}
.at-phase--warn .at-phase-num{background:rgba(198,70,70,.12);color:#c64646}
.at-phase-title{flex:1;font:600 13px/1.3 'Montserrat',sans-serif;color:var(--white);letter-spacing:.2px}
.at-tips{list-style:none;padding:14px 18px 16px;margin:0;display:flex;flex-direction:column;gap:8px}
.at-tips li{position:relative;padding-left:18px;font:400 13px/1.55 'Cormorant Garamond',serif;color:var(--light)}
.at-tips li::before{content:"▸";position:absolute;left:2px;top:0;color:var(--accent);font-size:11px;line-height:1.7}
.at-tips strong{color:var(--white);font-weight:700}

/* ── Compagnon: vertical rail on the right edge ── */
.at-companion-rail{position:fixed;right:0;top:50%;transform:translateY(-50%) translateX(0);z-index:50;display:flex;flex-direction:column;align-items:center;gap:10px;padding:16px 8px;background:linear-gradient(180deg,rgba(201,163,85,.92),rgba(201,163,85,.78));color:var(--bg);border:0;border-radius:14px 0 0 14px;box-shadow:-6px 8px 28px rgba(0,0,0,.18),inset 1px 0 0 rgba(255,255,255,.18);cursor:pointer;transition:.32s cubic-bezier(.2,.8,.2,1);writing-mode:vertical-rl;text-orientation:mixed}
.at-companion-rail:hover{transform:translateY(-50%) translateX(-3px);filter:brightness(1.05);box-shadow:-10px 12px 36px rgba(0,0,0,.24)}
.at-companion-rail-spark{writing-mode:horizontal-tb;flex:0 0 auto;animation:companionPulse 3.4s ease-in-out infinite}
@keyframes companionPulse{0%,100%{opacity:.6;transform:scale(1)}50%{opacity:1;transform:scale(1.1)}}
.at-companion-rail-text{font:700 11px 'Montserrat',sans-serif;letter-spacing:3px;text-transform:uppercase;writing-mode:vertical-rl;rotate:180deg}
.at-companion-rail-kbd{writing-mode:horizontal-tb;font:600 9px 'Montserrat',sans-serif;letter-spacing:1px;padding:3px 6px;border-radius:5px;background:rgba(0,0,0,.18);color:var(--bg)}

/* ── Responsive ── */
@media (max-width:980px){
    .at-station--duo{grid-template-columns:1fr}
    .at-method-body{grid-template-columns:1fr}
}
@media (max-width:760px){
    .at-page{padding:0 16px 96px}
    .at-head{padding:32px 0 20px}
    .at-title{font-size:32px}
    .at-incipit{font-size:14px}
    .at-fil{padding-left:38px}
    .at-fil-thread{left:16px}
    .at-station,.at-station--duo>.at-station-card{padding:22px 20px}
    .at-station-head{gap:14px;flex-wrap:wrap}
    .at-roman{font-size:42px;padding-right:12px}
    .at-station-name{font-size:18px}
    .at-field-row{grid-template-columns:1fr}
    .at-input--display{font-size:18px !important}
    .at-toc{margin-bottom:22px}
    .at-toc-link{padding:7px 10px 7px 6px;font-size:11px;letter-spacing:.4px}
    .at-toc-num{width:20px;height:20px;font-size:10px}
    .at-companion-rail{top:auto;bottom:18px;right:14px;transform:none;border-radius:14px;writing-mode:horizontal-tb;flex-direction:row;padding:10px 14px}
    .at-companion-rail:hover{transform:translateY(-2px)}
    .at-companion-rail-text{writing-mode:horizontal-tb;rotate:0deg;letter-spacing:1.5px}
    .at-ch-act{opacity:.6}
}

/* ── Atelier eyebrow + sticky TOC ── */
.pl-eyebrow{display:inline-block;font:700 10px 'Montserrat',sans-serif;letter-spacing:5px;text-transform:uppercase;color:var(--accent);margin-bottom:10px}
.pl-toc{position:sticky;top:0;z-index:20;display:flex;gap:4px;padding:10px 4px;margin:0 0 24px;background:linear-gradient(180deg,var(--bg) 0,var(--bg) 78%,transparent);backdrop-filter:blur(6px);border-bottom:1px solid var(--line)}
.pl-toc-link{flex:0 0 auto;padding:8px 14px;border-radius:999px;font:600 12px/1 'Montserrat',sans-serif;letter-spacing:.6px;text-transform:uppercase;color:var(--light);text-decoration:none;transition:.16s ease;border:1px solid transparent}
.pl-toc-link:hover{color:var(--white);background:rgba(201,163,85,.06)}
.pl-toc-link.is-active{color:var(--accent);border-color:rgba(201,163,85,.32);background:rgba(201,163,85,.08)}
@media (max-width:640px){
    .pl-toc{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
    .pl-toc::-webkit-scrollbar{display:none}
    .pl-toc-link{padding:7px 12px;font-size:11px;letter-spacing:.4px}
}

/* Phase chip */
.pl-phase-chip{text-transform:capitalize}
.pl-phase-chip--forge{background:rgba(201,163,85,.18);border-color:rgba(201,163,85,.4)}
.pl-phase-chip--draft{background:rgba(150,150,150,.12)}
.pl-phase-chip--review{background:rgba(75,140,200,.14);border-color:rgba(75,140,200,.4)}
.pl-phase-chip--published{background:rgba(70,180,120,.14);border-color:rgba(70,180,120,.4)}
.pl-phase-chip--distributed{background:rgba(180,120,200,.14);border-color:rgba(180,120,200,.4)}

/* ── Le Monde ── */
.pl-world-summary{margin:0 0 22px;padding:18px 18px 14px;border-radius:12px;background:rgba(201,163,85,.04);border:1px solid rgba(201,163,85,.18)}
.pl-world-pitch{margin:0 0 12px;font:italic 400 17px/1.5 'Playfair Display',serif;color:var(--white)}
.pl-world-meta{display:flex;flex-wrap:wrap;gap:18px;font:400 13px/1.5 'Montserrat',sans-serif;color:var(--light)}
.pl-world-meta-item strong{display:block;font-size:10px;letter-spacing:1.2px;text-transform:uppercase;color:var(--accent);margin-bottom:2px;font-weight:700}
.pl-world-h{font:700 11px/1 'Montserrat',sans-serif;letter-spacing:1.4px;text-transform:uppercase;color:var(--accent);margin:24px 0 12px}
.pl-world-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin-bottom:8px}
.pl-world-card{padding:14px 16px;border:1px solid var(--line);border-radius:10px;background:var(--bg);transition:.18s ease}
.pl-world-card:hover{border-color:rgba(201,163,85,.4);transform:translateY(-1px)}
.pl-world-card-head{display:flex;align-items:center;gap:8px;margin-bottom:6px;flex-wrap:wrap}
.pl-world-name{font:600 14px/1.2 'Montserrat',sans-serif;color:var(--white)}
.pl-world-role{font:600 10px/1 'Montserrat',sans-serif;letter-spacing:.8px;text-transform:uppercase;color:var(--accent);padding:3px 8px;border-radius:999px;background:rgba(201,163,85,.1)}
.pl-world-mot{margin:0;font:400 13px/1.5 'Montserrat',sans-serif;color:var(--light)}
.pl-world-empty{grid-column:1/-1;padding:20px;text-align:center;font:italic 400 13px/1.5 'Montserrat',sans-serif;color:var(--light);border:1px dashed var(--line);border-radius:10px}

.pl-timeline{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}
.pl-timeline-item{display:flex;gap:14px;padding:10px 14px;border-left:2px solid var(--accent);background:rgba(201,163,85,.03);border-radius:0 8px 8px 0}
.pl-timeline-label{flex:0 0 auto;font:700 11px/1.4 'Montserrat',sans-serif;letter-spacing:.6px;text-transform:uppercase;color:var(--accent);min-width:90px}
.pl-timeline-summary{flex:1;font:400 13px/1.5 'Montserrat',sans-serif;color:var(--light)}

/* ── Chapter row with beat + status ── */
.pl-ch{cursor:pointer}
.pl-ch:hover{background:rgba(201,163,85,.04)}
.pl-ch-body{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}
.pl-ch-beat{margin:0;font:400 12px/1.4 'Montserrat',sans-serif;color:var(--light);opacity:.85;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.pl-ch-status{flex:0 0 auto;width:8px;height:8px;border-radius:50%;background:var(--line)}
.pl-ch-status--drafted{background:var(--accent)}
.pl-ch-status--empty{background:rgba(150,150,150,.3)}

/* AI COACH HERO */
.pl-coach-hero{
    position:relative;overflow:hidden;
    background:linear-gradient(135deg,rgba(201,163,85,.08),rgba(201,163,85,.02) 60%,transparent);
    border:1px solid rgba(201,163,85,.28);border-radius:18px;
    padding:36px 36px 30px;margin-bottom:40px;
}
.pl-coach-hero::before{
    content:"";position:absolute;inset:0;
    background:radial-gradient(420px 280px at 92% -20%, rgba(201,163,85,.18), transparent 70%);
    pointer-events:none;
}
.pl-coach-hero-deco{position:absolute;top:-30px;right:-40px;color:var(--accent);opacity:.5;pointer-events:none;animation:plDecoSpin 60s linear infinite}
.pl-coach-dismiss{position:absolute;top:14px;right:14px;z-index:2;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;border:1px solid rgba(201,163,85,.28);background:rgba(0,0,0,.04);color:var(--light);cursor:pointer;transition:.18s ease}
.pl-coach-dismiss:hover{background:rgba(0,0,0,.08);color:var(--white);border-color:var(--accent)}

/* Slim banner shown after the hero is dismissed */
.pl-coach-banner{display:flex;align-items:center;gap:12px;padding:10px 14px;margin:0 0 28px;border:1px solid rgba(201,163,85,.22);border-radius:12px;background:linear-gradient(90deg,rgba(201,163,85,.06),transparent 60%)}
.pl-coach-banner-spark{color:var(--accent);flex:0 0 auto}
.pl-coach-banner-text{flex:1;font:400 13px/1.5 'Montserrat',sans-serif;color:var(--light)}
.pl-coach-banner-cta{flex:0 0 auto;font:600 12px/1 'Montserrat',sans-serif;letter-spacing:.5px;text-transform:uppercase;padding:8px 14px;border-radius:8px;border:1px solid var(--accent);background:transparent;color:var(--accent);cursor:pointer;transition:.18s ease}
.pl-coach-banner-cta:hover{background:var(--accent);color:var(--bg)}
@media (max-width:640px){
    .pl-coach-banner{flex-wrap:wrap}
    .pl-coach-banner-text{flex:1 1 100%;order:2}
    .pl-coach-banner-cta{order:3;margin-left:auto}
}
@keyframes plDecoSpin{to{transform:rotate(360deg)}}
.pl-coach-hero-body{position:relative;max-width:920px}
.pl-coach-eyebrow{display:inline-block;font:700 10px 'Montserrat',sans-serif;letter-spacing:5px;text-transform:uppercase;color:var(--accent);margin-bottom:14px}
.pl-coach-eyebrow::before{content:"❖ ";opacity:.7;margin-right:6px}
.pl-coach-title{font:700 30px/1.15 'Playfair Display',serif;color:var(--white);margin:0 0 12px;letter-spacing:-.4px;max-width:680px}
.pl-coach-lead{font:400 14px/1.7 'Montserrat',sans-serif;color:var(--light);margin:0 0 28px;max-width:640px}

.pl-cap-grid{list-style:none;padding:0;margin:0 0 28px;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:0;border-top:1px solid rgba(201,163,85,.18);border-bottom:1px solid rgba(201,163,85,.18)}
.pl-cap{padding:20px 22px 22px;border-right:1px solid rgba(201,163,85,.12);position:relative;transition:.22s ease}
.pl-cap:last-child{border-right:0}
.pl-cap:hover{background:rgba(201,163,85,.04)}
.pl-cap-num{font:700 10px 'Montserrat',sans-serif;letter-spacing:2.5px;color:var(--accent);opacity:.7}
.pl-cap h4{font:700 15px 'Playfair Display',serif;color:var(--white);margin:6px 0 6px;letter-spacing:.1px}
.pl-cap p{font:400 12px/1.55 'Montserrat',sans-serif;color:var(--grey);margin:0}

.pl-coach-cta-row{display:flex;flex-wrap:wrap;align-items:center;gap:14px}
.pl-cta{display:inline-flex;align-items:center;gap:8px;font:600 12px 'Montserrat',sans-serif;letter-spacing:.4px;padding:11px 18px;border-radius:999px;cursor:pointer;border:1px solid transparent;transition:.2s;text-decoration:none}
.pl-cta--primary{background:var(--accent);color:var(--bg);border-color:var(--accent);box-shadow:0 6px 20px rgba(201,163,85,.28)}
.pl-cta--primary:hover{background:#B5651D;border-color:#B5651D;transform:translateY(-1px);box-shadow:0 10px 26px rgba(201,163,85,.36)}
.pl-cta--ghost{background:transparent;color:var(--accent);border-color:rgba(201,163,85,.4)}
.pl-cta--ghost:hover{background:rgba(201,163,85,.08);border-color:var(--accent)}
.pl-cta--solid{background:var(--accent);color:var(--bg);border:0;border-radius:8px;padding:10px 22px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;font-size:11px}
.pl-cta--solid:hover{background:#B5651D}
.pl-coach-hint{font:italic 400 11px/1.5 'Playfair Display',serif;color:var(--grey);margin-left:auto;max-width:320px;text-align:right;opacity:.85}

/* DOSSIER GRID */
.pl-dossier{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-bottom:36px}
.pl-card{background:var(--bg3);border:1px solid var(--line);border-radius:14px;padding:28px 30px;transition:.22s}
.pl-card:hover{border-color:rgba(201,163,85,.32)}
.pl-card-head{display:flex;align-items:flex-start;gap:16px;margin-bottom:22px}
.pl-card-num{font:700 22px 'Playfair Display',serif;color:var(--accent);line-height:1;padding-top:2px;letter-spacing:1px;min-width:28px}
.pl-card-title{font:700 18px 'Playfair Display',serif;color:var(--white);margin:0 0 4px;letter-spacing:-.2px}
.pl-card-sub{font:400 12px/1.55 'Montserrat',sans-serif;color:var(--grey);margin:0;max-width:340px}
.pl-card-action{margin-left:auto;display:inline-flex;align-items:center;gap:6px;background:transparent;border:1px solid rgba(201,163,85,.4);color:var(--accent);padding:7px 12px;border-radius:999px;font:600 11px 'Montserrat',sans-serif;letter-spacing:.4px;cursor:pointer;transition:.2s}
.pl-card-action:hover{background:var(--accent);color:var(--bg);border-color:var(--accent)}

/* Identity form */
.pl-form{display:flex;flex-direction:column;gap:14px}
.pl-field{display:flex;flex-direction:column;gap:6px}
.pl-field-lbl{font:600 10px 'Montserrat',sans-serif;letter-spacing:2px;text-transform:uppercase;color:var(--grey)}
.pl-field input,.pl-field textarea,.pl-field select{
    background:var(--bg);border:1px solid var(--line);border-radius:8px;
    padding:11px 13px;color:var(--white);font:400 13px 'Montserrat',sans-serif;
    transition:border-color .18s, box-shadow .18s;
}
.pl-field input:focus,.pl-field textarea:focus,.pl-field select:focus{
    outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(201,163,85,.15);
}
.pl-field textarea{resize:vertical;min-height:72px;line-height:1.55;font-family:'Playfair Display',serif;font-size:14px;font-style:italic}
.pl-field-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.pl-form .pl-cta--solid{align-self:flex-start;margin-top:6px}

/* Architecture / chapters */
.pl-chapters{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}
.pl-ch{display:grid;grid-template-columns:36px 1fr auto auto auto;gap:10px;align-items:center;padding:10px 12px;border-radius:10px;background:var(--bg);border:1px solid transparent;transition:.18s}
.pl-ch:hover{border-color:rgba(201,163,85,.28);background:rgba(201,163,85,.04)}
.pl-ch-num{font:700 11px 'Montserrat',sans-serif;letter-spacing:1.5px;color:var(--accent);text-align:center;opacity:.85}
.pl-ch-title{background:transparent;border:0;color:var(--white);font:600 14px 'Playfair Display',serif;padding:4px 6px;border-radius:6px;width:100%;transition:background .18s}
.pl-ch-title:hover{background:rgba(255,255,255,.04)}
.pl-ch-title:focus{outline:none;background:rgba(201,163,85,.08)}
.pl-ch-words{font:500 10px 'Montserrat',sans-serif;color:var(--grey);letter-spacing:1px;padding:0 4px}
.pl-ch-act{width:30px;height:30px;border-radius:50%;border:1px solid transparent;background:transparent;color:var(--grey);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:.18s}
.pl-ch-act:hover{color:var(--accent);border-color:rgba(201,163,85,.35);background:rgba(201,163,85,.08)}
.pl-ch-act--danger:hover{color:#e06969;border-color:rgba(224,105,105,.4);background:rgba(224,105,105,.08)}
.pl-ch-empty{padding:24px;text-align:center;color:var(--grey);font-style:italic;font-family:'Playfair Display',serif;border:1px dashed var(--line);border-radius:10px}

/* Methodology */
.pl-method{margin-bottom:0}
.pl-method-head{margin-bottom:20px}
.pl-method-toggle{padding:6px;width:34px;height:34px;border-radius:50%;justify-content:center;border:1px solid var(--line)}
.pl-method-toggle .icon{transition:transform .25s ease}
.pl-collapsed .pl-method-toggle .icon{transform:rotate(-90deg)}
.pl-method-body{display:flex;flex-direction:column;gap:10px;transition:max-height .35s ease, opacity .25s ease}
.pl-collapsed .pl-method-body{max-height:0;opacity:0;overflow:hidden;pointer-events:none}
.pl-phase{border:1px solid var(--line);border-radius:10px;background:var(--bg);overflow:hidden;transition:border-color .2s}
.pl-phase[open]{border-color:rgba(201,163,85,.35)}
.pl-phase summary{display:flex;align-items:center;gap:14px;padding:14px 18px;cursor:pointer;list-style:none;transition:background .18s}
.pl-phase summary::-webkit-details-marker{display:none}
.pl-phase summary:hover{background:rgba(201,163,85,.04)}
.pl-phase-num{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:rgba(201,163,85,.12);color:var(--accent);font:700 12px 'Playfair Display',serif;flex-shrink:0}
.pl-phase--warn .pl-phase-num{background:rgba(224,105,105,.15);color:#e06969}
.pl-phase-title{font:600 13px 'Playfair Display',serif;color:var(--white);letter-spacing:.1px}
.pl-tips{list-style:none;margin:0;padding:6px 24px 22px 60px;display:flex;flex-direction:column;gap:10px}
.pl-tips li{position:relative;font:400 13px/1.65 'Montserrat',sans-serif;color:var(--light)}
.pl-tips li::before{content:"";position:absolute;left:-18px;top:9px;width:6px;height:1px;background:var(--accent);opacity:.6}
.pl-tips strong{color:var(--white);font-weight:700}

/* Page-load reveal */
.pl-section > *{animation:plRise .55s cubic-bezier(.22,.6,.2,1) both}
.pl-section > *:nth-child(1){animation-delay:.02s}
.pl-section > *:nth-child(2){animation-delay:.10s}
.pl-section > *:nth-child(3){animation-delay:.18s}
.pl-section > *:nth-child(4){animation-delay:.26s}
@keyframes plRise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}

/* Responsive */
@media(max-width:900px){
    .pl-dossier{grid-template-columns:1fr}
    .pl-coach-hero{padding:28px 22px}
    .pl-coach-title{font-size:24px}
    .pl-coach-hint{margin-left:0;text-align:left;max-width:none}
    .pl-cap{border-right:0;border-bottom:1px solid rgba(201,163,85,.12)}
    .pl-cap:last-child{border-bottom:0}
}
@media(max-width:560px){
    .pl-section{padding:32px 16px 60px}
    .pl-title{font-size:30px}
    .pl-card{padding:22px 18px}
    .pl-field-row{grid-template-columns:1fr}
    .pl-ch{grid-template-columns:28px 1fr auto;gap:8px}
    .pl-ch-words,.pl-ch-act:nth-child(n+4){display:none}
}

/* ─── Mobile bottom navigation (Morai-style) ─────────────────────── */
.bottom-nav{display:none}
.mobile-panel{display:none}
.mobile-panel-backdrop{display:none}

@media(max-width:820px){
    .desktop-only{display:none!important}
    body>header .nav{padding:10px 18px;justify-content:flex-start}

    .bottom-nav{
        display:flex;
        position:fixed;left:0;right:0;bottom:0;
        z-index:150;
        background:var(--header-bg);
        backdrop-filter:blur(20px);
        -webkit-backdrop-filter:blur(20px);
        border-top:1px solid var(--line);
        padding:6px 4px;
        padding-bottom:calc(6px + env(safe-area-inset-bottom));
        justify-content:space-around;align-items:stretch;
        box-shadow:0 -8px 24px -12px rgba(0,0,0,.18);
    }
    .bnav-item{
        display:flex;flex-direction:column;align-items:center;justify-content:center;
        gap:4px;flex:1;min-width:0;
        background:0;border:0;text-decoration:none;
        color:var(--grey);
        font:600 9.5px 'Montserrat',sans-serif;letter-spacing:.6px;
        text-transform:uppercase;
        padding:6px 4px;border-radius:10px;
        cursor:pointer;transition:.18s;
        position:relative;
    }
    .bnav-item span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    .bnav-item svg{width:20px;height:20px;opacity:.78;transition:.18s}
    .bnav-item:hover{color:var(--accent)}
    .bnav-item:hover svg{opacity:1;color:var(--accent)}
    .bnav-item.active{color:var(--accent)}
    .bnav-item.active svg{opacity:1;color:var(--accent)}
    .bnav-item.active::before{
        content:'';position:absolute;top:-7px;left:50%;transform:translateX(-50%);
        width:26px;height:3px;border-radius:0 0 4px 4px;
        background:linear-gradient(90deg,var(--accent),var(--accent2,var(--accent)));
    }
    .bnav-item .theme-icon-sun{display:none}
    [data-theme="dark"] .bnav-item .theme-icon-sun{display:block}
    [data-theme="dark"] .bnav-item .theme-icon-moon{display:none}

    /* Slide-up "More" panel */
    .mobile-panel-backdrop{
        display:block;position:fixed;inset:0;
        background:rgba(0,0,0,.4);
        opacity:0;pointer-events:none;
        transition:opacity .25s ease;
        z-index:170;
    }
    .mobile-panel-backdrop.open{opacity:1;pointer-events:auto}

    .mobile-panel{
        display:block;position:fixed;left:0;right:0;bottom:-100%;
        background:var(--bg3);
        border-top:1px solid var(--line);
        border-radius:18px 18px 0 0;
        z-index:180;
        padding:8px 18px 22px;
        padding-bottom:calc(22px + env(safe-area-inset-bottom));
        max-height:80vh;overflow-y:auto;
        box-shadow:0 -22px 50px -18px rgba(0,0,0,.4);
        transition:bottom .28s cubic-bezier(.4,0,.2,1);
        font-family:'Montserrat',sans-serif;
    }
    .mobile-panel.open{bottom:0}
    .panel-grabber{
        width:42px;height:4px;border-radius:3px;
        background:var(--line);opacity:.7;
        margin:6px auto 10px;
    }
    .panel-header{
        display:flex;justify-content:space-between;align-items:center;
        padding:4px 2px 10px;border-bottom:1px solid var(--line);margin-bottom:8px;
    }
    .panel-header h4{
        font:700 13px 'Montserrat',sans-serif;letter-spacing:2px;
        text-transform:uppercase;color:var(--accent2,var(--accent));margin:0;
    }
    .panel-close{
        background:0;border:1px solid var(--line);border-radius:50%;
        width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;
        color:var(--grey);cursor:pointer;transition:.18s;
    }
    .panel-close:hover{color:var(--accent);border-color:var(--accent)}
    .panel-section{padding:10px 0;border-bottom:1px solid var(--line)}
    .panel-section:last-child{border-bottom:0}
    .panel-label{
        display:block;padding:4px 4px 8px;
        font:700 9px 'Montserrat',sans-serif;letter-spacing:2.5px;
        text-transform:uppercase;color:var(--grey);opacity:.75;
    }
    .panel-item{
        display:flex;align-items:center;gap:12px;width:100%;
        padding:11px 12px;border-radius:10px;
        background:0;border:0;text-align:left;text-decoration:none;
        color:var(--light);font:500 13px 'Montserrat',sans-serif;
        cursor:pointer;transition:.15s;
    }
    .panel-item:hover,.panel-item:active{background:var(--accent-dim);color:var(--accent)}
    .panel-item svg{color:var(--grey);flex-shrink:0;transition:.15s}
    .panel-item:hover svg{color:var(--accent)}
    .panel-danger{color:var(--red,#dc4444)}
    .panel-danger svg{color:var(--red,#dc4444)}
    .panel-danger:hover{background:rgba(220,68,68,.1);color:var(--red,#dc4444)}
    .panel-lang{display:flex;gap:8px;padding:4px}
    .panel-lang .lang-btn{flex:1;padding:10px;border-radius:10px;font-size:12px;letter-spacing:1.5px}

    /* Reserve space so content + footer aren't covered by bottom-nav */
    main{padding-bottom:72px}
    footer{padding-bottom:calc(80px + env(safe-area-inset-bottom));margin-top:32px}
    body:has(.atelier) .bottom-nav{display:none}

    /* Compact anonymous top-nav so Login never clips */
    body>header .nav{padding:10px 14px;gap:8px;justify-content:space-between}
    .nav-actions:not(.desktop-only){gap:6px;flex-wrap:nowrap;flex-shrink:0}
    .nav-actions:not(.desktop-only) .lang-filter{padding:1px;gap:0}
    .nav-actions:not(.desktop-only) .lang-btn{padding:5px 7px;font-size:0;gap:0}
    .nav-actions:not(.desktop-only) .lang-btn .lang-svg{width:18px;height:18px;opacity:.85}
    .nav-actions:not(.desktop-only) .nav-icon-btn{padding:6px 7px}
    .nav-actions:not(.desktop-only) .nav-accent-btn{padding:6px 12px;font-size:11px;letter-spacing:.4px}
    .nav-name{font-size:17px;letter-spacing:3.5px}
    .nav-sub{font-size:8px;letter-spacing:2px}
}

[dir="rtl"] .bottom-nav{direction:rtl}
[dir="rtl"] .mobile-panel{direction:rtl}
[dir="rtl"] .panel-item{text-align:right}

/* ─── New Book modal — minimalist fullscreen mobile ─────── */
@media(max-width:640px){
    body.nb-modal-open{overflow:hidden}

    #newBookModal.modal-overlay{
        padding:0;align-items:stretch;justify-content:stretch;
        background:var(--bg);backdrop-filter:none;
    }
    #newBookModal .modal{
        max-width:100%;width:100%;
        max-height:none;height:100dvh;height:100vh;
        border-radius:0;border:0;
        padding:0;overflow:hidden;
        display:flex;flex-direction:column;
        background:var(--bg);
        box-shadow:none;
        animation:nbSheetIn .28s cubic-bezier(.2,.8,.2,1);
    }
    @keyframes nbSheetIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}

    /* Compact top bar */
    #newBookModal .modal-header{
        position:sticky;top:0;z-index:5;
        margin:0;padding:14px 16px;
        background:var(--header-bg);
        backdrop-filter:blur(20px);
        border-bottom:1px solid var(--line);
        display:grid;grid-template-columns:36px 1fr 36px;align-items:center;
    }
    #newBookModal .modal-header h2{
        order:2;text-align:center;
        font:600 13px 'Montserrat',sans-serif;
        letter-spacing:2px;text-transform:uppercase;color:var(--accent2);
        margin:0;
    }
    #newBookModal .modal-close{order:1;justify-self:start}
    #newBookModal .modal-header::after{
        content:"";grid-column:3;width:36px;height:36px;
    }

    /* Form fills screen, sticky CTA at bottom */
    #newBookModal .nb-form{
        display:flex;flex-direction:column;flex:1;min-height:0;
        padding:0;overflow-y:auto;-webkit-overflow-scrolling:touch;
    }
    #newBookModal .nb-form > .form-group,
    #newBookModal .nb-form > .nb-advanced{padding-left:18px;padding-right:18px}

    /* Description = the hero */
    #newBookModal .nb-desc{
        flex:1 1 auto;display:flex;flex-direction:column;min-height:0;
        margin:22px 0 6px;text-align:center;
    }
    #newBookModal .nb-desc-label{
        font-family:'Playfair Display',serif!important;
        font-style:italic;font-weight:500!important;
        font-size:22px!important;line-height:1.25;
        color:var(--white)!important;letter-spacing:-.005em;
        margin:0 auto 16px!important;
        text-transform:none!important;
        text-align:center;
        max-width:18ch;
    }
    #newBookModal .nb-desc-label::after{
        content:"";display:block;width:36px;height:2px;border-radius:2px;
        margin:10px auto 0;
        background:linear-gradient(90deg,transparent,var(--accent),transparent);
        opacity:.85;
    }
    #newBookModal .nb-desc textarea{
        flex:1;min-height:0;width:100%;
        padding:18px 18px 20px;
        font:400 17px/1.5 'Lora',serif;
        color:var(--white);
        background:var(--bg2);
        border:1px solid var(--line);
        border-radius:14px;
        resize:none;
        transition:border-color .2s,background .2s;
    }
    #newBookModal .nb-desc textarea:focus{
        outline:none;border-color:var(--accent);background:var(--bg3);
        box-shadow:0 0 0 4px var(--accent-dim);
    }
    #newBookModal .nb-desc textarea::placeholder{
        font-style:italic;color:var(--grey);opacity:.85;
    }
    #newBookModal .nb-desc-hint{
        margin-top:10px!important;font-size:11px;
        color:var(--grey);font-style:italic;letter-spacing:.2px;
        text-align:center;
    }
    #newBookModal .nb-desc textarea{text-align:left}

    /* Advanced section — quieter, contains Title + Template + meta */
    #newBookModal .nb-advanced{
        margin:14px 0 0;border:0;border-top:1px solid var(--line);
        border-radius:0;background:transparent;
    }
    #newBookModal .nb-advanced>summary{
        padding:14px 18px;font-size:11px;letter-spacing:2px;
        color:var(--grey);text-transform:uppercase;
        justify-content:space-between;
    }
    #newBookModal .nb-advanced[open]>summary{
        color:var(--accent);border-bottom:1px solid var(--line);
    }
    #newBookModal .nb-advanced-body{
        padding:16px 18px 10px;background:var(--bg2);
    }
    /* When hoisted into advanced, give title/template a little air */
    #newBookModal .nb-advanced-body .nb-title{margin-bottom:14px}
    #newBookModal .nb-advanced-body .nb-template{margin-bottom:14px}
    #newBookModal .nb-advanced-body .nb-tpl-desc{margin-bottom:14px}
    #newBookModal .nb-advanced-body label{
        font-size:10.5px;letter-spacing:1.6px;text-transform:uppercase;
        color:var(--grey);font-weight:600;
    }

    /* Title row */
    #newBookModal .nb-title-row{flex-wrap:wrap;gap:8px}
    #newBookModal .nb-title-row input{flex:1 1 100%;min-width:0}
    #newBookModal .nb-suggest-btn{flex:0 0 auto;padding:8px 14px;font-size:11.5px}

    /* Templates: compact 2-col chip-cards */
    #newBookModal .template-grid{grid-template-columns:repeat(2,1fr);gap:8px}
    #newBookModal .template-card{
        padding:12px 8px;font-size:11px;line-height:1.25;gap:6px;
        min-height:64px;border-radius:10px;
    }
    #newBookModal .template-icon{width:20px;height:20px}
    #newBookModal .nb-tpl-desc{font-size:11.5px;padding:9px 11px;margin-top:8px}

    /* Bottom CTA — sticky, never cut, always reachable */
    #newBookModal .nb-form{padding-bottom:calc(86px + env(safe-area-inset-bottom))}
    #newBookModal .nb-form > button[type="submit"]{
        position:sticky;bottom:0;left:0;right:0;
        margin:0;
        padding:16px 18px calc(16px + env(safe-area-inset-bottom));
        font-size:14px;font-weight:700;letter-spacing:.6px;
        border-radius:0;border:0;width:auto;
        background:linear-gradient(135deg,var(--accent),var(--accent2,var(--accent)));
        color:#fff;
        box-shadow:0 -8px 24px -10px rgba(0,0,0,.25),0 -1px 0 0 var(--line);
        z-index:3;
    }
    #newBookModal .nb-form > button[type="submit"]:hover{filter:brightness(1.05)}
    #newBookModal .nb-form > button[type="submit"]:active{transform:none}
}

@media(max-width:380px){
    #newBookModal .nb-desc-label{font-size:20px!important}
    #newBookModal .nb-desc textarea{font-size:16px;padding:16px}
    #newBookModal .template-card{min-height:58px;padding:10px 6px}
}

/* ─── Atelier (book editor) — mobile reflow ──────────────── */
@media(max-width:820px){
    /* Subheader becomes 2 stacked rows: actions row + scrollable tab nav */
    .atelier .at-subheader{
        height:auto;min-height:auto;
        padding:8px 12px 0;
        display:grid;
        grid-template-columns:auto 1fr auto;
        grid-template-rows:auto auto;
        column-gap:10px;row-gap:6px;
        align-items:center;
    }
    .atelier .at-back{grid-column:1;grid-row:1;padding:6px}
    .atelier .at-crumb{
        position:static;transform:none;
        grid-column:2;grid-row:1;
        max-width:none;min-width:0;
        justify-content:flex-start;gap:6px;
        pointer-events:auto;
    }
    .atelier .at-crumb-book{font-size:13px;max-width:none}
    .atelier .at-crumb-ch{display:none}
    .atelier .at-crumb-sep{display:none}

    /* Compact action cluster on the right */
    .atelier .at-sub-actions{
        grid-column:3;grid-row:1;
        gap:6px;
    }
    /* SAVE indicator → dot only */
    .atelier .at-save{
        width:26px;height:26px;padding:0;justify-content:center;border-radius:50%;
    }
    .atelier .at-save span:not(.at-save-dot){display:none}
    /* AI toggle → compact LED pill, hide label */
    .atelier .at-ai-switch{padding:0 10px;height:26px}
    .atelier .at-ai-switch .at-ai-lbl{display:none}
    /* Hide secondary pills (Pin / Focus / Read) — moved into overflow */
    .atelier .at-sub-actions .at-pill{
        width:30px;height:26px;padding:0;justify-content:center;
    }
    .atelier .at-sub-actions .at-pill span:not(.icon){display:none}
    .atelier .at-sub-actions .at-pill .icon{margin:0}
    /* If we want to drop some entirely on small viewports */
    .atelier #atPinVersion{display:none}

    /* Tab nav row — horizontally scrollable */
    .atelier .at-nav{
        grid-column:1/-1;grid-row:2;
        justify-content:flex-start;
        gap:18px;
        overflow-x:auto;
        flex-wrap:nowrap;
        padding:4px 2px 8px;
        -webkit-overflow-scrolling:touch;
        scrollbar-width:none;
        margin:0 -12px;padding-left:12px;padding-right:12px;
        scroll-snap-type:x proximity;
        position:relative;
    }
    .atelier .at-nav::-webkit-scrollbar{display:none}
    .atelier .at-nav a{
        flex:0 0 auto;scroll-snap-align:start;
        padding:6px 0;font-size:10.5px;letter-spacing:.18em;
    }
    /* Sliding ink underline must travel along scrollable row */
    .atelier .at-nav-ink{bottom:5px}

    /* Editor toolbar — horizontally scrollable strip */
    .atelier .at-toolbar{
        flex-wrap:nowrap;overflow-x:auto;
        padding:6px 10px;gap:6px;
        -webkit-overflow-scrolling:touch;
        scrollbar-width:none;
        position:relative;
        scroll-snap-type:x proximity;
        mask-image:linear-gradient(90deg,transparent 0,#000 16px,#000 calc(100% - 16px),transparent 100%);
    }
    .atelier .at-toolbar::-webkit-scrollbar{display:none}
    .atelier .at-tgroup{
        flex:0 0 auto;display:flex;gap:2px;
        padding:0 6px;
        border-right:1px solid var(--at-line);
        scroll-snap-align:start;
    }
    .atelier .at-tgroup:last-of-type{border-right:0}
    .atelier .at-tspacer{display:none}
    .atelier .at-wc-chip{flex:0 0 auto}
    .atelier .at-tbtn-ai{flex:0 0 auto;padding:0 12px}

    /* Three-column shell → single column on mobile; rails become overlays */
    .atelier .at-shell,
    .atelier.is-right-closed .at-shell,
    .atelier.is-left-closed .at-shell{
        grid-template-columns:1fr;
    }
    .atelier .at-rail{
        position:fixed;top:0;bottom:0;
        width:min(86vw,340px);
        z-index:140;
        background:var(--at-paper);
        box-shadow:0 30px 60px -10px rgba(0,0,0,.35);
        transition:transform .28s cubic-bezier(.4,0,.2,1);
    }
    .atelier .at-rail-l{left:0;transform:translateX(-100%);border-right:1px solid var(--at-line)}
    .atelier .at-rail-r{right:0;transform:translateX(100%);border-left:1px solid var(--at-line)}
    .atelier:not(.is-left-closed) .at-rail-l{transform:translateX(0)}
    .atelier:not(.is-right-closed) .at-rail-r{transform:translateX(0)}
    /* Backdrop when a rail is open */
    .atelier:not(.is-left-closed)::before,
    .atelier:not(.is-right-closed)::before{
        content:"";position:fixed;inset:0;z-index:135;
        background:rgba(0,0,0,.35);
        animation:atFadeIn .25s ease both;
    }
    @keyframes atFadeIn{from{opacity:0}to{opacity:1}}

    /* Reopen tabs — flush rectangular handles stuck to each side edge. */
    .atelier .at-rail-reopen{
        position:fixed;top:50%;bottom:auto;
        transform:translateY(-50%);
        width:24px;height:64px;border-radius:0;
        box-shadow:0 6px 18px -8px rgba(0,0,0,.45),0 1px 4px -1px rgba(0,0,0,.2);
        background:var(--at-gold);
        color:var(--at-paper);
        border:1px solid var(--at-gold-deep);
    }
    .atelier .at-rail-reopen:hover{width:28px;background:var(--at-gold-deep);color:#fff}
    .atelier .at-rail-reopen .icon{width:14px;height:14px}
    .atelier .at-rail-reopen-l{left:0;right:auto;border-left:0;border-radius:0 8px 8px 0}
    .atelier .at-rail-reopen-r{right:0;left:auto;border-right:0;border-radius:8px 0 0 8px}
    .atelier.is-left-closed .at-rail-reopen-l,
    .atelier.is-right-closed .at-rail-reopen-r{
        animation:atReopenInM .3s var(--at-ease);
    }
    @keyframes atReopenInM{
        from{opacity:0;transform:translateY(-50%) translateX(-4px)}
        to{opacity:1;transform:translateY(-50%) translateX(0)}
    }
    .atelier .at-rail-reopen-r{transform:translateY(-50%) scaleX(-1)}

    /* Canvas padding tighter on mobile */
    .atelier .at-canvas{padding:18px 14px 80px}
}

@media(max-width:480px){
    .atelier .at-subheader{padding:6px 10px 0;column-gap:6px}
    .atelier .at-crumb-book{font-size:12.5px}
    .atelier .at-sub-actions{gap:4px}
    .atelier .at-tbtn{width:30px;height:30px}
    .atelier .at-tbtn-txt{width:auto;padding:0 8px;font-size:10.5px}
    .atelier .at-canvas{padding:14px 10px 70px}
}

/* ============================================
   LANDING v2 — épuré, editorial
============================================ */
.hero-v2{padding:96px 24px 32px;max-width:880px}
.hero-v2 .hero-content{display:flex;flex-direction:column;align-items:center;gap:18px}
.hero-eyebrow{font-family:'Montserrat',sans-serif;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--accent);font-weight:600}
.hero-title-v2{font-family:'Playfair Display',serif;font-size:clamp(40px,7vw,72px);font-weight:600;line-height:1.05;letter-spacing:-.01em;margin:0;background:none;-webkit-text-fill-color:initial;color:var(--white)}
.hero-sub{font-family:'Lora',serif;font-style:italic;font-size:clamp(17px,2.2vw,22px);color:var(--light);line-height:1.5;max-width:640px;margin:8px auto 12px;text-align:center}
.hero-v2 .hero-actions{margin-top:16px}

/* Manifesto strip */
.manifesto-strip{max-width:920px;margin:48px auto;padding:0 24px;text-align:center}
.manifesto-line{font-family:'Playfair Display',serif;font-style:italic;font-size:clamp(18px,2.4vw,24px);color:var(--grey);letter-spacing:.01em;line-height:1.6;position:relative;padding:24px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}

/* Three moments of help */
.moments{max-width:1080px;margin:80px auto 96px;padding:0 24px;display:grid;grid-template-columns:1fr;gap:48px}
@media(min-width:840px){.moments{grid-template-columns:repeat(3,1fr);gap:40px}}
.moment{display:flex;flex-direction:column;gap:10px;padding-top:24px;border-top:1px solid var(--accent-dim)}
.moment-h{font-family:'Playfair Display',serif;font-weight:600;font-size:22px;line-height:1.25;color:var(--white);margin:0;letter-spacing:-.005em}
.moment-p{font-family:'Lora',serif;font-size:15px;line-height:1.65;color:var(--grey);margin:0}

/* The Trio */
.trio{max-width:720px;margin:96px auto;padding:0 24px;text-align:center}
.trio-glyphs{display:inline-flex;align-items:center;justify-content:center;gap:18px;margin-bottom:20px}
.trio-glyph{width:52px;height:52px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--bg3);border:1px solid var(--accent-dim);box-shadow:var(--card-shadow)}
.trio-glyph svg{width:22px;height:22px;color:var(--accent)}
.trio-link{display:inline-block;width:48px;height:1px;background:linear-gradient(90deg,transparent,var(--accent) 50%,transparent)}
.trio-caption{font-family:'Playfair Display',serif;font-style:italic;font-size:18px;color:var(--light);margin:0;letter-spacing:.005em}

/* Library v2 — more whitespace */
.library-v2{margin-top:40px;margin-bottom:80px}
.library-v2 .section-title{font-family:'Montserrat',sans-serif;font-size:11px;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--accent);margin-bottom:32px}

/* Closing CTA */
.closing-cta{max-width:720px;margin:80px auto 120px;padding:0 24px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:24px}
.closing-line{font-family:'Playfair Display',serif;font-style:italic;font-size:clamp(20px,2.6vw,26px);color:var(--white);line-height:1.45;margin:0;max-width:560px}

/* /about manifesto page */
.about-page{max-width:760px;margin:0 auto;padding:96px 24px 96px}
.about-eyebrow{font-family:'Montserrat',sans-serif;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--accent);font-weight:600;display:block;margin-bottom:18px}
.about-h1{font-family:'Playfair Display',serif;font-size:clamp(36px,5vw,56px);font-weight:600;line-height:1.08;color:var(--white);margin:0 0 56px;letter-spacing:-.01em}
.about-block{margin-bottom:56px}
.about-block h2{font-family:'Montserrat',sans-serif;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--accent);font-weight:600;margin:0 0 14px}
.about-statement{font-family:'Playfair Display',serif;font-style:italic;font-size:clamp(20px,2.4vw,26px);line-height:1.45;color:var(--white);margin:0;font-weight:500}
.about-values{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:1fr;gap:18px}
@media(min-width:680px){.about-values{grid-template-columns:1fr 1fr;gap:24px 32px}}
.about-value{padding:18px 0;border-top:1px solid var(--line)}
.about-value-name{font-family:'Playfair Display',serif;font-weight:600;font-size:18px;color:var(--white);display:block;margin-bottom:6px}
.about-value-desc{font-family:'Lora',serif;font-size:14.5px;line-height:1.6;color:var(--grey);margin:0}
.about-dna{display:flex;flex-direction:column;gap:10px;font-family:'Lora',serif;font-size:15px;color:var(--light);line-height:1.7}
.about-dna li{padding-left:18px;position:relative;list-style:none}
.about-dna li::before{content:"—";position:absolute;left:0;color:var(--accent)}

/* RTL adjustments */
html[dir="rtl"] .hero-eyebrow,
html[dir="rtl"] .about-eyebrow,
html[dir="rtl"] .library-v2 .section-title,
html[dir="rtl"] .about-block h2{letter-spacing:0}
html[dir="rtl"] .about-dna li{padding-left:0;padding-right:18px}
html[dir="rtl"] .about-dna li::before{left:auto;right:0}

@media(max-width:680px){
    .hero-v2{padding:64px 20px 24px}
    .moments{margin:60px auto 72px;gap:36px}
    .trio{margin:72px auto}
    .closing-cta{margin:64px auto 96px}
    .about-page{padding:64px 20px}
}

/* ───────────────────────────────────────────────────────────────
   Chapter Guide — an editorial side-note pinned above the prose.
   Reads like a marginalium: thin gold left rule, small-caps eyebrow,
   italic Cormorant lead for the intent, hand-numbered beats.
   Collapsible without losing its presence on the page.
   ─────────────────────────────────────────────────────────────── */
.ch-guide{
    position:relative;
    margin:0 0 28px;
    padding:0;
    background:
        linear-gradient(180deg,
            color-mix(in srgb, var(--accent, #c9a355) 5%, var(--bg-soft, #faf4e3)) 0%,
            var(--bg-soft, #faf4e3) 100%);
    border:0;
    border-radius:0;
    box-shadow:
        0 1px 0 color-mix(in srgb, var(--accent, #c9a355) 18%, transparent),
        0 -1px 0 color-mix(in srgb, var(--accent, #c9a355) 18%, transparent);
    overflow:hidden;
    transition:box-shadow .25s ease;
}
/* Left gold rule — the marginalium's spine */
.ch-guide::before{
    content:"";
    position:absolute;left:0;top:0;bottom:0;width:3px;
    background:linear-gradient(180deg,
        var(--accent, #c9a355) 0%,
        color-mix(in srgb, var(--accent, #c9a355) 50%, transparent) 100%);
}
/* Decorative ornament in the corner — the editor's mark */
.ch-guide::after{
    content:"❦";
    position:absolute;top:14px;right:18px;
    font:italic 18px/1 'Cormorant Garamond',serif;
    color:color-mix(in srgb, var(--accent, #c9a355) 45%, transparent);
    pointer-events:none;
}

.ch-guide-head{
    display:flex;align-items:center;gap:12px;
    padding:14px 18px 12px 22px;
    border-bottom:1px solid color-mix(in srgb, var(--accent, #c9a355) 14%, transparent);
}
.ch-guide-toggle{
    flex:1 1 auto;
    display:inline-flex;align-items:center;gap:12px;
    background:none;border:0;cursor:pointer;
    padding:2px 0;color:var(--ink, #2a2418);
    text-align:left;
}
.ch-guide-spark{
    color:var(--accent, #c9a355);
    width:14px;height:14px;flex-shrink:0;
}
.ch-guide-title{
    font:600 11px/1 'Montserrat',sans-serif;
    letter-spacing:.32em;text-transform:uppercase;
    color:color-mix(in srgb, var(--ink, #2a2418) 75%, var(--accent, #c9a355));
}
.ch-guide-chev{
    margin-left:8px;
    color:color-mix(in srgb, var(--ink, #2a2418) 45%, transparent);
    transition:transform .25s cubic-bezier(.2,.8,.2,1);
    width:14px;height:14px;
}
.ch-guide.is-collapsed .ch-guide-chev{transform:rotate(-90deg)}
.ch-guide-acts{display:inline-flex;gap:8px;align-items:center;margin-right:30px}
.ch-guide-act{
    display:inline-flex;align-items:center;gap:7px;
    padding:7px 13px;
    border-radius:2px;
    border:1px solid color-mix(in srgb, var(--accent, #c9a355) 45%, transparent);
    background:transparent;color:var(--ink, #2a2418);
    cursor:pointer;
    font:600 10.5px/1 'Montserrat',sans-serif;letter-spacing:.18em;text-transform:uppercase;
    transition:background .18s, color .18s, border-color .18s, transform .18s, letter-spacing .18s;
}
.ch-guide-act:hover{
    background:linear-gradient(180deg, var(--accent, #c9a355) 0%, color-mix(in srgb, var(--accent, #c9a355) 80%, #6b4f1c) 100%);
    color:var(--bg, #faf6ec);
    border-color:transparent;
    letter-spacing:.22em;
    transform:translateY(-1px);
}
.ch-guide-act.ch-guide-dismiss{
    padding:7px;border-radius:50%;width:28px;height:28px;justify-content:center;
    border-color:color-mix(in srgb, var(--ink, #2a2418) 12%, transparent);
    color:color-mix(in srgb, var(--ink, #2a2418) 50%, transparent);
}
.ch-guide-act.ch-guide-dismiss:hover{
    background:transparent;
    color:var(--ink, #2a2418);
    border-color:var(--ink, #2a2418);
    transform:none;letter-spacing:0;
}

.ch-guide-body{
    padding:18px 26px 6px 30px;
    color:var(--ink, #2a2418);
    max-height:1200px;
    transition:max-height .3s cubic-bezier(.2,.8,.2,1), padding .25s, opacity .25s;
}

/* Intent — set as a lead paragraph with a small-caps label aside */
.ch-guide-body .chg-intent{
    margin:0 0 18px;
    font:italic 400 19px/1.5 'Cormorant Garamond','Playfair Display',Georgia,serif;
    color:var(--ink, #2a2418);
    letter-spacing:.005em;
    position:relative;
    padding-top:6px;
}
.ch-guide-body .chg-intent strong{
    display:block;
    font:600 10px/1.2 'Montserrat',sans-serif;
    font-style:normal;
    letter-spacing:.32em;text-transform:uppercase;
    color:var(--accent, #c9a355);
    margin-bottom:6px;
}
.ch-guide-body .chg-intent em{font-style:italic}

/* Beats label */
.ch-guide-body .chg-beats-lbl{
    margin:14px 0 8px;
    font:600 10px/1.2 'Montserrat',sans-serif;
    letter-spacing:.32em;text-transform:uppercase;
    color:var(--accent, #c9a355);
}
.ch-guide-body .chg-beats-lbl strong{font-weight:600}

/* Beats — numbered with italic gold roman numerals */
.ch-guide-body ul.chg-beats{
    list-style:none;
    margin:0 0 6px;
    padding:0;
    counter-reset:chg-beat;
    border-left:1px solid color-mix(in srgb, var(--accent, #c9a355) 18%, transparent);
}
.ch-guide-body ul.chg-beats li{
    counter-increment:chg-beat;
    position:relative;
    padding:6px 0 6px 38px;
    margin:0;
    font:400 16px/1.55 'Cormorant Garamond',serif;
    color:var(--ink, #2a2418);
}
.ch-guide-body ul.chg-beats li + li{
    border-top:1px dashed color-mix(in srgb, var(--accent, #c9a355) 14%, transparent);
}
.ch-guide-body ul.chg-beats li::before{
    content:counter(chg-beat, lower-roman) ".";
    position:absolute;left:14px;top:8px;
    font:italic 600 14px/1 'Cormorant Garamond',serif;
    color:var(--accent, #c9a355);
    letter-spacing:.04em;
    min-width:18px;
}

.ch-guide-foot{
    padding:10px 26px 16px 30px;
    font:italic 13px/1.5 'Cormorant Garamond',serif;
    color:color-mix(in srgb, var(--ink, #2a2418) 55%, transparent);
    border-top:1px dashed color-mix(in srgb, var(--accent, #c9a355) 16%, transparent);
    transition:max-height .3s, padding .25s, opacity .25s;
    max-height:140px;
    text-align:right;
}

/* Collapsed state */
.ch-guide.is-collapsed .ch-guide-head{border-bottom-color:transparent}
.ch-guide.is-collapsed .ch-guide-body,
.ch-guide.is-collapsed .ch-guide-foot{
    max-height:0;padding-top:0;padding-bottom:0;opacity:0;overflow:hidden;border-top:0;
}

/* Smaller screens */
@media (max-width: 720px){
    .ch-guide::after{display:none}
    .ch-guide-head{flex-wrap:wrap;padding:12px 16px}
    .ch-guide-acts{margin-right:0;margin-left:auto}
    .ch-guide-body{padding:14px 18px 4px 22px}
    .ch-guide-body .chg-intent{font-size:17px}
    .ch-guide-body ul.chg-beats li{font-size:15px;padding-left:32px}
    .ch-guide-body ul.chg-beats li::before{left:10px}
    .ch-guide-foot{padding:10px 18px 14px 22px}
}

/* Title-row layout that hosts the chapter title + reopen-guide pill */
.at-ch-titlewrap{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.at-ch-titlewrap .at-page-title{flex:1 1 auto;min-width:0}

/* Reopen-guide pill — a discreet editorial bookmark next to the chapter
   title. Appears only when the guide has been hidden, signaling that the
   author's cues are still within reach. */
.ch-guide-pill{
    display:inline-flex;align-items:center;gap:8px;
    padding:7px 14px 7px 12px;
    border-radius:2px;
    border:1px solid color-mix(in srgb, var(--accent, #c9a355) 38%, transparent);
    background:transparent;
    color:color-mix(in srgb, var(--ink, #2a2418) 75%, var(--accent, #c9a355));
    cursor:pointer;
    font:600 10px/1 'Montserrat',sans-serif;letter-spacing:.28em;text-transform:uppercase;
    transition:background .2s, border-color .2s, color .2s, transform .2s, letter-spacing .2s, box-shadow .2s;
    flex:0 0 auto;
    position:relative;
}
.ch-guide-pill::before{
    content:"";
    position:absolute;left:-1px;top:18%;bottom:18%;width:2px;
    background:var(--accent, #c9a355);
    transition:opacity .2s;
}
.ch-guide-pill:hover{
    background:linear-gradient(180deg, var(--accent, #c9a355) 0%, color-mix(in srgb, var(--accent, #c9a355) 80%, #6b4f1c) 100%);
    color:var(--bg, #faf6ec);
    border-color:transparent;
    letter-spacing:.32em;
    transform:translateY(-1px);
    box-shadow:0 6px 14px -8px color-mix(in srgb, var(--accent, #c9a355) 70%, transparent);
}
.ch-guide-pill:hover::before{opacity:0}
.ch-guide-pill .icon{width:11px;height:11px;opacity:.9}


/* ── Forge generation phases (write.html stage 3) ─────────────────────── */
.gen-phases{
    list-style:none; padding:0; margin:18px auto 8px;
    display:flex; gap:10px; flex-wrap:wrap; justify-content:center;
    max-width:560px;
}
.gen-phase{
    display:flex; align-items:center; gap:8px;
    padding:6px 12px; border-radius:999px;
    background:rgba(0,0,0,.04); color:var(--text-muted, #6b6b6b);
    font:500 12.5px/1 'Montserrat', sans-serif; letter-spacing:.02em;
    transition:background .25s ease, color .25s ease, transform .25s ease;
}
.gen-phase-dot{
    width:8px; height:8px; border-radius:50%;
    background:currentColor; opacity:.35;
}
.gen-phase.is-active{
    background:color-mix(in srgb, var(--accent, #c9a355) 18%, transparent);
    color:var(--accent, #c9a355);
}
.gen-phase.is-active .gen-phase-dot{ opacity:1; animation:gen-phase-pulse 1.1s ease-in-out infinite; }
.gen-phase.is-done{ color:var(--green, #16a34a); }
.gen-phase.is-done .gen-phase-dot{ opacity:1; background:currentColor; }
.gen-phase.is-error{ color:#b3261e; background:rgba(179,38,30,.08); }
.gen-phase-status{ display:none; }
@keyframes gen-phase-pulse{
    0%,100%{ transform:scale(1); }
    50%{ transform:scale(1.6); }
}
.gen-error{
    margin-top:14px; text-align:center;
    display:flex; flex-direction:column; align-items:center; gap:10px;
}
.gen-error-msg{
    color:#b3261e; font:500 13px/1.5 'Montserrat', sans-serif; margin:0;
    max-width:480px;
}

/* ── Write canvas field labels (book title + pitch) ───────────────────── */
.canvas-field{
    display:block; margin-bottom:10px;
}
.canvas-field-lbl{
    display:block;
    font:600 11px/1 'Montserrat', sans-serif;
    letter-spacing:.12em; text-transform:uppercase;
    color:var(--text-muted, #888); margin-bottom:6px;
}
.canvas-field .canvas-title,
.canvas-field .canvas-pitch{ width:100%; }


/* ── Draft overlay (Compagnon "writing" state) ───────────────────────── */
#atEditor{ position:relative; }
.at-draft-overlay{
    position:absolute; inset:0;
    display:flex; align-items:flex-start; justify-content:center;
    padding-top:18%;
    background:linear-gradient(180deg,
        color-mix(in srgb, var(--at-paper, #faf6ec) 72%, transparent) 0%,
        color-mix(in srgb, var(--at-paper, #faf6ec) 92%, transparent) 100%);
    backdrop-filter:saturate(1.05) blur(1px);
    -webkit-backdrop-filter:saturate(1.05) blur(1px);
    opacity:0; pointer-events:none;
    transition:opacity .24s ease;
    z-index:5;
}
.at-draft-overlay.is-visible{ opacity:1; pointer-events:auto; }
.at-draft-overlay-inner{
    display:flex; align-items:center; gap:14px;
    padding:14px 22px;
    background:var(--at-paper, #faf6ec);
    border:1px solid color-mix(in srgb, var(--at-gold, #c9a355) 35%, transparent);
    border-radius:999px;
    box-shadow:0 12px 36px -14px rgba(28,22,12,.28),
               0 0 0 8px color-mix(in srgb, var(--at-gold, #c9a355) 8%, transparent);
}
.at-draft-overlay-quill{
    display:inline-flex; align-items:center; justify-content:center;
    width:30px; height:30px; border-radius:50%;
    background:color-mix(in srgb, var(--at-gold, #c9a355) 12%, transparent);
    color:var(--at-gold-deep, #8a6a1c);
    animation:atDraftQuill 1.6s ease-in-out infinite;
}
.at-draft-overlay-quill svg{ width:14px; height:14px; }
.at-draft-overlay-text{
    font:500 13.5px/1 'Cormorant Garamond', 'Playfair Display', serif;
    letter-spacing:.01em; font-style:italic;
    color:var(--at-ink, #2a2418);
    font-size:15px;
}
@keyframes atDraftQuill{
    0%,100%{ transform:translateY(0) rotate(-6deg); }
    50%    { transform:translateY(-2px) rotate(8deg); }
}

/* The paragraph currently being typed — adds a blinking caret at its end. */
.atelier #atEditor .ProseMirror p.at-tw-line{
    position:relative;
}
.atelier #atEditor .ProseMirror p.at-tw-line::after{
    content:'▍';
    color:var(--at-gold, #c9a355);
    margin-left:1px;
    animation:atBlink 1s steps(2) infinite;
    font-family:var(--font-display);
}

/* ── Mobile PWA install prompt ─────────────────────────── */
.pwa-prompt{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(env(safe-area-inset-bottom,0px) + 14px);z-index:1500;width:min(94vw,420px);pointer-events:none;animation:pwaSlideUp .35s ease-out both}
.pwa-prompt[hidden]{display:none !important}
.pwa-prompt-card{display:flex;align-items:center;gap:10px;background:var(--bg2,var(--bg));color:var(--white);border:1px solid var(--line);border-radius:14px;padding:10px 12px;box-shadow:0 14px 36px rgba(0,0,0,.22);pointer-events:auto;backdrop-filter:saturate(140%) blur(8px)}
.pwa-prompt-icon{width:36px;height:36px;border-radius:10px;background:var(--accent);color:var(--bg);display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.pwa-prompt-icon .icon{width:18px;height:18px}
.pwa-prompt-body{display:flex;flex-direction:column;gap:2px;line-height:1.3;flex:1;min-width:0}
.pwa-prompt-body strong{font:600 13px 'Montserrat',sans-serif;color:var(--white)}
.pwa-prompt-body span{font:400 11px 'Montserrat',sans-serif;color:var(--grey)}
.pwa-prompt-actions{display:flex;align-items:center;gap:6px;flex:0 0 auto}
.pwa-prompt-btn{padding:8px 12px;border-radius:10px;border:1px solid var(--line);background:transparent;color:var(--white);font:600 12px 'Montserrat',sans-serif;cursor:pointer;transition:.15s}
.pwa-prompt-install{background:var(--accent);color:var(--bg);border-color:var(--accent)}
.pwa-prompt-install:hover{filter:brightness(1.05)}
.pwa-prompt-dismiss{padding:6px;display:flex;align-items:center;justify-content:center;color:var(--grey)}
.pwa-prompt-dismiss:hover{color:var(--white)}
.pwa-prompt-dismiss .icon{width:14px;height:14px}
@keyframes pwaSlideUp{from{opacity:0;transform:translate(-50%,16px)}to{opacity:1;transform:translate(-50%,0)}}
@media (min-width: 821px){.pwa-prompt{display:none !important}}
body:has(#bottomNav) .pwa-prompt{bottom:calc(env(safe-area-inset-bottom,0px) + 78px)}

/* ════════════════════════════════════════════════════════════════════════
   MOBILE AUDIT FIXES — derived from tests/screenshots/mobile/audit.json
   - Tap-target floor (40×40) for primary header & toolbar controls
   - World tabs: edge fade so users discover horizontal scroll
   - Plan TOC: same edge-fade affordance
   - Atelier toolbar: ensure mobile-only edge fade is visible
   - PWA banner: pad main content so it never covers the last card
   ════════════════════════════════════════════════════════════════════════ */
@media (max-width: 820px){
    /* Tap-target floor: nav-brand & header chips need ≥40px touch height. */
    body>header .nav-brand{min-height:44px;padding-block:6px}
    body>header .nav-brand .nav-name{line-height:1}
    body>header .nav-icon-btn,
    body>header .nav-user-btn,
    body>header .nav-btn{min-height:40px}
    body>header .lang-btn{min-height:36px;min-width:36px;padding:6px 8px}

    /* World tabs already scroll; add an edge fade as a discoverability hint. */
    .world-tabs{
        scrollbar-width:none;-webkit-overflow-scrolling:touch;
        mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 24px),transparent 100%);
    }
    .world-tabs::-webkit-scrollbar{display:none}
    .world-tab{padding:10px 14px;font-size:12px}

    /* Plan TOC chips — hint scroll with right-edge fade. */
    .at-toc{mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 24px),transparent 100%)}

    /* When the PWA install banner is visible above the bottom nav,
       reserve room so the last card is not hidden behind the banner. */
    body:has(.pwa-prompt:not([hidden])) main{padding-bottom:calc(140px + env(safe-area-inset-bottom,0px))}
    body:has(.pwa-prompt:not([hidden])):has(#bottomNav) main{padding-bottom:calc(180px + env(safe-area-inset-bottom,0px))}
}

@media (max-width: 520px){
    /* Editor toolbar buttons must clear the 40px finger floor on small phones. */
    .atelier .at-tbtn{min-width:36px;min-height:36px}
    .world-tab{padding:10px 12px}
    .world-tab-count{font-size:9px;padding:1px 6px}
}

/* ────────────────────────────────────────────────────────────────────────
   ATELIER (book editor) — compact chapter head on mobile
   Phone screens were giving ≈60% of vertical space to the title block,
   leaving a sliver for the manuscript itself. Tighten everything so the
   editor canvas dominates above the fold.
   ──────────────────────────────────────────────────────────────────────── */
@media (max-width: 820px){
    /* Tighter canvas top padding so the chapter head sits closer to toolbar. */
    .atelier .at-canvas{padding:14px 16px 96px}

    /* Chapter head: collapse to a single tight band. */
    .atelier .at-chapter-head{margin:0 0 18px}
    .atelier .at-ch-eyebrow{
        margin-bottom:6px;font-size:9.5px;letter-spacing:.26em;gap:6px;
    }
    .atelier .at-ch-numeral{font-size:14px}
    .atelier .at-page-title{
        font-size:clamp(22px, 6.6vw, 28px);
        line-height:1.18;letter-spacing:-.012em;
        padding:2px 0 3px;min-height:1.18em;
    }
    /* The decorative gold rule eats a row for nothing on mobile. */
    .atelier .at-chapter-head .at-ch-rule{display:none}
    /* Guide pill — drop the icon-only version next to the title. */
    .atelier .at-ch-titlewrap{gap:8px}
    .atelier .at-ch-titlewrap .ch-guide-pill{
        padding:6px 10px;font-size:9px;letter-spacing:.18em;
    }
    .atelier .at-ch-titlewrap .ch-guide-pill .ch-guide-pill-lbl{display:none}
    /* In focus mode the head margin was even larger — equalise it. */
    .atelier.is-focus .at-chapter-head{margin-bottom:18px}

    /* Compact side-tab handles on smaller screens. */
    .atelier .at-rail-reopen{
        width:22px;height:56px;
        opacity:.94;
    }
    .atelier .at-rail-reopen:hover{width:26px;opacity:1}
    .atelier .at-rail-reopen .icon{width:12px;height:12px}
}

@media (max-width: 520px){
    .atelier .at-canvas{padding:10px 12px 88px}
    .atelier .at-page-title{font-size:clamp(20px, 6vw, 24px)}
    .atelier .at-rail-reopen{width:20px;height:52px}
    .atelier .at-rail-reopen:hover{width:24px}
}

/* ────────────────────────────────────────────────────────────────────────
   ATELIER — pull the global header tight against the subheader on mobile,
   and keep the chapter eyebrow tucked next to the title so the editor
   canvas wins back ~80 px above the fold.
   ──────────────────────────────────────────────────────────────────────── */
@media (max-width: 820px){
    /* Global LIVERTY header — slimmer band on phones (was 12px / 24px). */
    body>header .nav{padding:4px 14px}
    body>header .nav-name{font-size:14px;letter-spacing:3.5px}
    body>header .nav-sub{display:none}

    /* Atelier subheader: flush under LIVERTY band, compressed height. */
    .atelier .at-subheader{height:38px;padding:0 12px}
    .atelier .at-toolbar{height:38px;padding:4px 10px}
    .atelier .at-tbtn{width:28px;height:28px}
    /* Squeeze the action cluster: 4px gap, dot indicator stays compact. */
    .atelier .at-sub-actions{gap:4px}
    .atelier .at-save{width:24px;height:24px}
    .atelier .at-ai-switch{height:24px;padding:0 8px}
    .atelier .at-sub-actions .at-pill{width:28px;height:28px}

    /* Chapter eyebrow inline with the title row — saves a full line. */
    .atelier .at-ch-eyebrow{
        position:absolute;top:-2px;left:0;
        margin:0;padding:0;
        font-size:9px;letter-spacing:.24em;
        background:linear-gradient(90deg,var(--at-paper) 0,var(--at-paper) 78%,transparent);
        padding-right:8px;
    }
    .atelier .at-chapter-head{position:relative;padding-top:14px;margin-bottom:14px}
    .atelier .at-page-title{padding-top:0}
}

@media (max-width: 520px){
    body>header .nav{padding:5px 12px}
    body>header .nav-name{font-size:15px;letter-spacing:3.5px}
    .atelier .at-subheader{padding-top:4px}
    .atelier .at-chapter-head{padding-top:12px;margin-bottom:10px}
}

/* ────────────────────────────────────────────────────────────────────────
   ATELIER — Focus mode tuned for phones.
   The desktop rule reserved 72 px of top padding and 40 px of horizontal
   padding, leaving a slim writing column below a giant void. On mobile we
   lift the chapter head to share the row with the floating exit button,
   shrink the side padding, and inline the Guide pill next to the title.
   ──────────────────────────────────────────────────────────────────────── */
@media (max-width: 820px){
    .atelier.is-focus .at-canvas{padding:8px 18px 160px}
    .atelier.is-focus .at-page{max-width:none}
    .atelier.is-focus .at-editor{font-size:17px;line-height:1.85}

    /* Pull the floating exit FAB tighter to the corner & make it compact. */
    .atelier.is-focus .at-focus-exit{
        top:10px;right:10px;
        padding:5px 10px 5px 9px;
        font-size:9px;letter-spacing:.18em;
        gap:4px;
    }
    .atelier.is-focus .at-focus-exit .icon{width:11px;height:11px}

    /* Reserve right-side room so the eyebrow + title don't hide behind exit. */
    .atelier.is-focus .at-chapter-head{
        padding-top:8px;padding-right:120px;margin-bottom:14px;
    }
    /* Eyebrow stays as the absolutely-positioned label on top of the title. */
    .atelier.is-focus .at-ch-eyebrow{opacity:.65;top:0}
    .atelier.is-focus .at-page-title{font-size:clamp(22px, 6.4vw, 28px)}

    /* Bring the lone Guide-pill (when shown) inline with title row. */
    .atelier.is-focus .at-ch-titlewrap{align-items:center;gap:8px}
    .atelier.is-focus .at-ch-titlewrap .ch-guide-pill{
        margin-top:0;padding:5px 9px;font-size:9px;letter-spacing:.16em;
        flex:0 0 auto;
    }

    /* Word count chip — keep above the bottom safe area. */
    .atelier.is-focus::after{right:14px;bottom:calc(12px + env(safe-area-inset-bottom,0px))}
}

@media (max-width: 520px){
    .atelier.is-focus .at-canvas{padding:6px 14px 140px}
    .atelier.is-focus .at-chapter-head{padding-right:108px}
    .atelier.is-focus .at-editor{font-size:16.5px;line-height:1.8}
}

/* ── Cover Studio — minimalist bottom-sheet / centered dialog ───────────── */
.cs-sheet[hidden]{display:none}
.cs-sheet{
    position:fixed;inset:0;z-index:1200;
    display:flex;align-items:flex-end;justify-content:center;
    pointer-events:none;
}
.cs-sheet .cs-backdrop{
    position:absolute;inset:0;background:rgba(20,16,10,.42);
    opacity:0;transition:opacity .26s ease;pointer-events:auto;
}
.cs-sheet.is-open .cs-backdrop{opacity:1}
.cs-sheet .cs-panel{
    position:relative;z-index:1;pointer-events:auto;
    width:100%;max-width:640px;
    background:#FBF7EE;color:#1B1814;
    border-radius:20px 20px 0 0;
    box-shadow:0 -18px 48px rgba(20,16,10,.28);
    transform:translateY(102%);transition:transform .3s cubic-bezier(.2,.8,.2,1);
    display:flex;flex-direction:column;
    max-height:92svh;overflow:hidden;
    padding-bottom:env(safe-area-inset-bottom,0px);
    border:1px solid rgba(201,163,85,.18);
    border-bottom:0;
}
.cs-sheet.is-open .cs-panel{transform:translateY(0)}
.cs-panel::before{
    content:"";display:block;width:42px;height:4px;border-radius:99px;
    background:rgba(20,16,10,.18);margin:8px auto 0;
}

.cs-head{
    display:flex;align-items:flex-start;gap:12px;
    padding:10px 18px 6px;
}
.cs-head-titles{flex:1;min-width:0}
.cs-head-actions{display:flex;align-items:center;gap:8px;margin-left:auto}

/* Designer's signature: terracotta — the only warm note in a paper-and-gold sheet. */
.cs-suggest{
    display:inline-flex;align-items:center;gap:6px;
    appearance:none;cursor:pointer;
    background:#A14A2C;color:#FBF7EE;
    border:0;border-radius:99px;
    padding:7px 12px 7px 10px;
    font:600 11px/1 'Montserrat',sans-serif;letter-spacing:.16em;text-transform:uppercase;
    box-shadow:0 6px 14px -8px rgba(161,74,44,.55);
    transition:transform .15s ease, box-shadow .15s ease, background .15s ease;
    position:relative;
}
.cs-suggest:hover{background:#8d3e23;transform:translateY(-1px);box-shadow:0 10px 22px -10px rgba(161,74,44,.65)}
.cs-suggest:disabled{opacity:.7;cursor:wait}
.cs-suggest svg{width:13px;height:13px}
.cs-suggest.is-loading{
    color:transparent;
    animation:cs-pulse 1.2s ease-in-out infinite;
}
.cs-suggest.is-loading svg{animation:cs-spin 1s linear infinite;color:#FBF7EE;opacity:.92}
@keyframes cs-pulse{
    0%,100%{box-shadow:0 6px 14px -8px rgba(161,74,44,.55)}
    50%{box-shadow:0 0 0 4px rgba(161,74,44,.18), 0 6px 14px -8px rgba(161,74,44,.55)}
}
@keyframes cs-spin{to{transform:rotate(360deg)}}

.cs-rationale{
    margin:2px 18px 4px;padding:8px 12px;
    background:rgba(161,74,44,.06);
    border-left:2px solid #A14A2C;
    border-radius:0 8px 8px 0;
    font:italic 400 12.5px/1.5 'Cormorant Garamond','Playfair Display',serif;
    color:#5a3a2a;
    animation:cs-rat-in .35s ease both;
}
@keyframes cs-rat-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}

@media (max-width: 520px){
    .cs-suggest{padding:7px 10px;letter-spacing:.12em}
    .cs-suggest span{display:none}
    .cs-suggest svg{width:15px;height:15px}
}
.cs-head .cs-eyebrow{
    display:block;font:600 10px/1 'Montserrat',sans-serif;
    letter-spacing:.22em;text-transform:uppercase;color:#A6862B;
    margin-bottom:4px;
}
.cs-head .cs-title{
    margin:0;font:500 20px/1.15 'Cormorant Garamond','Playfair Display',serif;
    color:#1B1814;letter-spacing:.01em;
}
.cs-head .cs-close{
    margin-left:auto;width:36px;height:36px;border-radius:50%;
    border:1px solid rgba(20,16,10,.12);background:#fff;color:#1B1814;
    display:inline-flex;align-items:center;justify-content:center;cursor:pointer;
    transition:background .15s ease, transform .15s ease;
}
.cs-head .cs-close:hover{background:#F2EBDB;transform:scale(1.04)}
.cs-head .cs-close svg{width:16px;height:16px}

.cs-body{
    display:flex;flex-direction:column;gap:14px;
    padding:6px 18px 14px;overflow-y:auto;
    -webkit-overflow-scrolling:touch;
}

.cs-preview{
    align-self:center;width:min(58%,200px);aspect-ratio:2/3;
    border-radius:8px;overflow:hidden;
    background:#F2EBDB;
    box-shadow:0 14px 32px -10px rgba(20,16,10,.35), 0 1px 0 rgba(201,163,85,.25) inset;
    position:relative;
}
.cs-preview img{width:100%;height:100%;display:block;object-fit:cover}
.cs-preview-cap{
    display:block;text-align:center;margin-top:6px;
    font:500 11px/1 'Montserrat',sans-serif;letter-spacing:.14em;
    text-transform:uppercase;color:#7a6a45;
}

.cs-section-lbl{
    display:block;font:600 10px/1 'Montserrat',sans-serif;
    letter-spacing:.22em;text-transform:uppercase;color:#A6862B;
    margin:4px 2px 8px;
}

.cs-templates{
    display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));
    gap:10px;
}
.cs-tmpl{
    appearance:none;border:1px solid rgba(20,16,10,.10);
    background:#fff;border-radius:12px;padding:8px;cursor:pointer;
    display:flex;flex-direction:column;gap:8px;text-align:left;
    transition:border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}
.cs-tmpl:hover{border-color:rgba(201,163,85,.45)}
.cs-tmpl.is-on{
    border-color:#C9A355;
    box-shadow:0 0 0 2px rgba(201,163,85,.22), 0 4px 14px -8px rgba(166,134,43,.45);
}
.cs-tmpl-thumb{
    display:block;width:100%;aspect-ratio:2/3;border-radius:6px;
    overflow:hidden;background:#F2EBDB;
}
.cs-tmpl-thumb img{width:100%;height:100%;display:block;object-fit:cover}
.cs-tmpl-meta{display:flex;flex-direction:column;gap:2px;padding:0 2px 2px}
.cs-tmpl-name{font:600 12px/1.2 'Montserrat',sans-serif;color:#1B1814}
.cs-tmpl-desc{font:400 11px/1.35 'Montserrat',sans-serif;color:#6b5d3f}

.cs-palettes{
    display:flex;flex-wrap:wrap;gap:8px;
}
.cs-pal{
    appearance:none;border:1px solid rgba(20,16,10,.10);
    background:#fff;border-radius:99px;padding:5px 10px 5px 5px;cursor:pointer;
    display:inline-flex;align-items:center;gap:8px;
    transition:border-color .15s ease, box-shadow .15s ease;
}
.cs-pal:hover{border-color:rgba(201,163,85,.45)}
.cs-pal.is-on{
    border-color:#C9A355;
    box-shadow:0 0 0 2px rgba(201,163,85,.22);
}
.cs-pal-disc{
    width:22px;height:22px;border-radius:50%;
    box-shadow:inset 0 0 0 1px rgba(20,16,10,.10);
    flex:0 0 auto;
}
.cs-pal-name{font:500 12px/1 'Montserrat',sans-serif;color:#1B1814;letter-spacing:.02em}

.cs-foot{
    display:flex;align-items:center;justify-content:space-between;gap:12px;
    padding:10px 18px 14px;
    border-top:1px solid rgba(20,16,10,.06);
    background:linear-gradient(180deg, rgba(251,247,238,0) 0%, #FBF7EE 30%);
}
.cs-note{font:400 11px/1.35 'Montserrat',sans-serif;color:#7a6a45}
.cs-done{
    appearance:none;border:0;background:#1B1814;color:#F2EBDB;
    border-radius:99px;padding:9px 18px;cursor:pointer;
    font:600 12px/1 'Montserrat',sans-serif;letter-spacing:.14em;text-transform:uppercase;
    transition:background .15s ease, transform .15s ease;
}
.cs-done:hover{background:#2a241c;transform:translateY(-1px)}

/* Tablet+ : centered dialog instead of bottom sheet. */
@media (min-width: 720px){
    .cs-sheet{align-items:center}
    .cs-sheet .cs-panel{
        border-radius:18px;border-bottom:1px solid rgba(201,163,85,.18);
        transform:translateY(16px) scale(.98);opacity:0;
        transition:transform .26s ease, opacity .2s ease;
        max-height:86vh;
    }
    .cs-sheet.is-open .cs-panel{transform:translateY(0) scale(1);opacity:1}
    .cs-panel::before{display:none}
    .cs-body{flex-direction:row;gap:22px;padding:10px 22px 18px}
    .cs-preview{width:200px;align-self:flex-start;flex:0 0 auto}
    .cs-controls{flex:1;min-width:0;display:flex;flex-direction:column;gap:14px}
    .cs-head{padding:14px 22px 4px}
}

@media (max-width: 520px){
    .cs-templates{grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:8px}
    .cs-preview{width:min(54%,170px)}
    .cs-head .cs-title{font-size:18px}
    .cs-tmpl-desc{display:none}
}


/* ── Continuity Keeper sheet ───────────────────────────────────────────── */
.at-pill.at-pill-continuity{position:relative}
.at-pill.at-pill-continuity:hover{color:#2E4A6B}

.ck-sheet[hidden]{display:none}
.ck-sheet{
    position:fixed;inset:0;z-index:1200;
    display:flex;align-items:flex-end;justify-content:center;
    pointer-events:none;
}
.ck-backdrop{
    position:absolute;inset:0;background:rgba(20,16,30,.46);
    opacity:0;transition:opacity .26s ease;pointer-events:auto;
}
.ck-sheet.is-open .ck-backdrop{opacity:1}
.ck-panel{
    position:relative;z-index:1;pointer-events:auto;
    width:100%;max-width:680px;
    background:#FBF7EE;color:#1B1814;
    border-radius:20px 20px 0 0;
    box-shadow:0 -18px 48px rgba(20,16,30,.32);
    transform:translateY(102%);transition:transform .3s cubic-bezier(.2,.8,.2,1);
    display:flex;flex-direction:column;
    max-height:92svh;overflow:hidden;
    padding-bottom:env(safe-area-inset-bottom,0px);
    border:1px solid rgba(46,74,107,.18);border-bottom:0;
}
.ck-sheet.is-open .ck-panel{transform:translateY(0)}
.ck-panel::before{
    content:"";display:block;width:42px;height:4px;border-radius:99px;
    background:rgba(46,74,107,.22);margin:8px auto 0;
}

.ck-head{display:flex;align-items:flex-start;gap:12px;padding:10px 18px 6px}
.ck-head-titles{flex:1;min-width:0}
.ck-eyebrow{
    display:block;font:600 10px/1 'Montserrat',sans-serif;
    letter-spacing:.22em;text-transform:uppercase;color:#2E4A6B;margin-bottom:4px;
}
.ck-title{
    margin:0;font:500 20px/1.15 'Cormorant Garamond','Playfair Display',serif;
    color:#1B1814;letter-spacing:.01em;
}
.ck-close{
    margin-left:auto;width:36px;height:36px;border-radius:50%;
    border:1px solid rgba(20,16,30,.12);background:#fff;color:#1B1814;
    display:inline-flex;align-items:center;justify-content:center;cursor:pointer;
    transition:background .15s ease, transform .15s ease;
}
.ck-close:hover{background:#EFF2F8;transform:scale(1.04)}
.ck-close svg{width:16px;height:16px}

.ck-summary{
    margin:2px 18px 8px;padding:8px 12px;
    background:rgba(46,74,107,.06);border-left:2px solid #2E4A6B;
    border-radius:0 8px 8px 0;
    font:italic 400 12.5px/1.5 'Cormorant Garamond',serif;color:#3a4a66;
}

.ck-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:6px 18px 14px}

.ck-empty{
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    gap:14px;text-align:center;padding:32px 12px 24px;color:#5a6378;
    font:400 13.5px/1.55 'Montserrat',sans-serif;
}
.ck-empty svg{width:34px;height:34px;color:#2E4A6B;opacity:.55}
.ck-run, .ck-rerun{
    appearance:none;border:0;cursor:pointer;
    background:#2E4A6B;color:#FBF7EE;border-radius:99px;
    padding:10px 18px;font:600 11.5px/1 'Montserrat',sans-serif;
    letter-spacing:.16em;text-transform:uppercase;
    box-shadow:0 6px 14px -8px rgba(46,74,107,.55);
    transition:transform .15s ease, box-shadow .15s ease, background .15s ease;
}
.ck-run:hover, .ck-rerun:hover{
    background:#23395a;transform:translateY(-1px);
    box-shadow:0 10px 22px -10px rgba(46,74,107,.65);
}
.ck-run:disabled, .ck-rerun:disabled{opacity:.6;cursor:wait}
.ck-sheet.is-loading .ck-empty p{opacity:.7;animation:ck-pulse 1.4s ease-in-out infinite}
@keyframes ck-pulse{0%,100%{opacity:.6}50%{opacity:1}}

.ck-findings{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.ck-find{
    background:#fff;border:1px solid rgba(20,16,30,.08);
    border-left:3px solid #6B7A8F;border-radius:8px;
    padding:10px 12px;
    animation:ck-find-in .35s ease both;
}
@keyframes ck-find-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.ck-find.ck-sev-high{border-left-color:#A14A2C;background:#fff7f3}
.ck-find.ck-sev-medium{border-left-color:#B5894B;background:#fbf6ec}
.ck-find.ck-sev-low{border-left-color:#6B7A8F}
.ck-find-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.ck-sev{
    font:600 10px/1 'Montserrat',sans-serif;letter-spacing:.18em;text-transform:uppercase;
    padding:3px 8px;border-radius:99px;background:#1B1814;color:#FBF7EE;
}
.ck-find.ck-sev-high .ck-sev{background:#A14A2C}
.ck-find.ck-sev-medium .ck-sev{background:#B5894B}
.ck-find.ck-sev-low .ck-sev{background:#6B7A8F}
.ck-type{
    font:500 11px/1 'Montserrat',sans-serif;letter-spacing:.08em;
    color:#5a6378;text-transform:uppercase;
}
.ck-quote{
    margin:6px 0;padding:6px 10px;
    background:rgba(20,16,30,.04);border-radius:6px;
    font:italic 400 13px/1.55 'Cormorant Garamond',serif;color:#2a2520;
}
.ck-problem, .ck-ref, .ck-fix{
    margin:4px 0;font:400 12.5px/1.5 'Montserrat',sans-serif;color:#1B1814;
}
.ck-problem strong{color:#A14A2C;letter-spacing:.04em}
.ck-ref strong{color:#2E4A6B;letter-spacing:.04em}
.ck-fix strong{color:#3F6E4F;letter-spacing:.04em}

.ck-foot{
    display:flex;align-items:center;justify-content:space-between;gap:12px;
    padding:10px 18px 14px;border-top:1px solid rgba(20,16,30,.06);
    background:linear-gradient(180deg, rgba(251,247,238,0) 0%, #FBF7EE 30%);
}
.ck-done{
    appearance:none;border:0;background:#1B1814;color:#F2EBDB;
    border-radius:99px;padding:9px 18px;cursor:pointer;
    font:600 12px/1 'Montserrat',sans-serif;letter-spacing:.14em;text-transform:uppercase;
    transition:background .15s ease, transform .15s ease;
}
.ck-done:hover{background:#2a241c;transform:translateY(-1px)}

@media (min-width:720px){
    .ck-sheet{align-items:center}
    .ck-panel{
        border-radius:18px;border-bottom:1px solid rgba(46,74,107,.18);
        transform:translateY(16px) scale(.98);opacity:0;
        transition:transform .26s ease, opacity .2s ease;
        max-height:86vh;
    }
    .ck-sheet.is-open .ck-panel{transform:translateY(0) scale(1);opacity:1}
    .ck-panel::before{display:none}
}

@media (max-width:520px){
    .ck-title{font-size:18px}
    .ck-quote{font-size:12.5px}
    .ck-find{padding:9px 10px}
}

/* ═══════════════════════════════════════════════════════════ */
/*         Section V — Couverture & Présentation               */
/* ═══════════════════════════════════════════════════════════ */

/* ── Cover preview column ── */
.at-cover-grid{display:grid;grid-template-columns:auto 1fr;gap:28px;align-items:start}
.at-cover-preview-col{position:sticky;top:80px;display:flex;flex-direction:column;align-items:center;gap:14px;width:220px}
.at-cover-right-col{display:flex;flex-direction:column;gap:30px}

/* Book wrap: page-stack illusion behind the cover */
.at-cover-book-wrap{position:relative;width:195px;padding-right:6px;padding-bottom:5px}
.at-cover-book-wrap::before,.at-cover-book-wrap::after{content:'';position:absolute;border-radius:3px 4px 4px 3px;border:1px solid var(--line);background:var(--bg3)}
.at-cover-book-wrap::before{inset:3px 0 0 3px;z-index:0}
.at-cover-book-wrap::after{inset:6px 0 0 6px;z-index:-1;opacity:.6}
.at-cover-img{display:block;width:100%;aspect-ratio:2/3;border-radius:3px 5px 5px 3px;object-fit:cover;position:relative;z-index:1;box-shadow:-5px 2px 0 rgba(0,0,0,.12),0 6px 28px rgba(0,0,0,.22),inset 0 0 0 1px var(--line)}
.at-cover-img--custom{outline:2px solid var(--accent);outline-offset:3px}

/* AI suggest button */
.at-cover-ai-btn{width:100%;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 16px;border-radius:10px;background:linear-gradient(135deg,var(--accent-dim),rgba(201,163,85,.04));border:1px solid rgba(201,163,85,.3);color:var(--accent);font:600 11px 'Montserrat',sans-serif;letter-spacing:.6px;text-transform:uppercase;cursor:pointer;transition:.22s ease;position:relative;overflow:hidden}
.at-cover-ai-btn::before{content:'';position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(201,163,85,.1) 50%,transparent 100%);transform:translateX(-100%);transition:transform .55s ease}
.at-cover-ai-btn:hover::before{transform:translateX(100%)}
.at-cover-ai-btn:hover{background:var(--accent);color:var(--bg);border-color:var(--accent);box-shadow:0 4px 16px rgba(201,163,85,.25)}
.at-cover-ai-btn:disabled{opacity:.5;cursor:wait}

/* ── Template picker ── */
.at-cover-picker{display:flex;flex-direction:column;gap:20px}
.at-cover-tpl-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.at-cover-tpl-opt input{display:none}
.at-cover-tpl-card{display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 10px 16px;border:1px solid var(--line);border-radius:10px;cursor:pointer;font:600 11px 'Montserrat',sans-serif;letter-spacing:.4px;text-align:center;color:var(--grey);transition:.18s ease;text-transform:uppercase}
.at-cover-tpl-opt input:checked+.at-cover-tpl-card{border-color:var(--accent);background:var(--accent-dim);color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.at-cover-tpl-card:hover{border-color:rgba(201,163,85,.5);background:var(--accent-dim)}
.at-cover-tpl-thumb{width:72px;height:108px;border-radius:4px;overflow:hidden;box-shadow:-3px 1px 0 rgba(0,0,0,.1),0 3px 10px rgba(0,0,0,.16)}
.at-cover-tpl-thumb img{width:100%;height:100%;object-fit:cover;display:block}

/* ── Palette picker — mini book swatches ── */
.at-cover-pal-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px 8px}
.at-cover-pal-opt{display:flex;flex-direction:column;align-items:center}
.at-cover-pal-opt input{display:none}
.at-cover-pal-swatch{display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer}
.at-cover-pal-book{position:relative;width:44px;height:66px;border-radius:2px 4px 4px 2px;overflow:hidden;background:var(--pal-bg,#ccc);border:2px solid transparent;box-shadow:-2px 1px 0 rgba(0,0,0,.14),1px 2px 8px rgba(0,0,0,.14);transition:transform .2s ease,box-shadow .2s,border-color .2s}
.at-cover-pal-book::before{content:'';position:absolute;left:0;top:0;bottom:0;width:5px;background:linear-gradient(90deg,rgba(0,0,0,.28),transparent);z-index:1}
.at-cover-pal-book::after{content:'';position:absolute;left:50%;top:55%;transform:translateX(-50%);width:26px;height:2px;background:var(--pal-ink,#333);opacity:.45;box-shadow:0 6px 0 var(--pal-ink,#333)}
.at-cover-pal-name{font:600 9px 'Montserrat',sans-serif;letter-spacing:.4px;color:var(--grey);text-transform:uppercase;text-align:center}
.at-cover-pal-opt input:checked+.at-cover-pal-swatch .at-cover-pal-book{border-color:var(--accent);box-shadow:-2px 1px 0 rgba(0,0,0,.14),0 0 0 3px var(--accent-glow)}
.at-cover-pal-book:hover{transform:translateY(-3px) scale(1.07);box-shadow:-3px 2px 0 rgba(0,0,0,.2),2px 6px 14px rgba(0,0,0,.2)}

/* ── Save / upload / struct ── */
.at-cover-save-btn{display:inline-flex;align-items:center;gap:7px;padding:9px 18px;border-radius:999px;background:var(--accent);color:var(--bg);border:none;font:600 12px 'Montserrat',sans-serif;letter-spacing:.6px;text-transform:uppercase;cursor:pointer;transition:.18s ease;align-self:flex-start}
.at-cover-save-btn:hover{filter:brightness(1.08)}
.at-cover-save-btn:disabled{opacity:.55;cursor:wait}

.at-cover-upload{display:flex;flex-direction:column;gap:12px}
.at-cover-upload-preview{display:flex;align-items:center;gap:12px;padding:10px 14px;border:1px solid var(--line);border-radius:10px;background:rgba(201,163,85,.04)}
#atCoverUploadPreview[hidden]{display:none !important}
.at-cover-upload-preview img{width:40px;height:60px;object-fit:cover;border-radius:3px}
.at-cover-upload-clear{margin-left:auto;padding:5px 12px;border-radius:999px;border:1px solid var(--line2);background:transparent;color:var(--grey);font:600 11px 'Montserrat',sans-serif;cursor:pointer;transition:.15s ease}
.at-cover-upload-clear:hover{border-color:var(--red);color:var(--red)}

.at-cover-struct{display:flex;flex-direction:column;gap:14px}
.at-cover-struct-warn{display:flex;align-items:flex-start;gap:8px;padding:10px 14px;border-left:3px solid var(--yellow);background:rgba(202,138,4,.06);border-radius:0 10px 10px 0;font:400 13px/1.5 'Cormorant Garamond',serif;color:var(--grey)}
.at-cover-struct-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}
.at-cover-struct-opt input{display:none}
.at-cover-struct-card{display:flex;flex-direction:column;gap:5px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;cursor:pointer;transition:.18s ease}
.at-cover-struct-opt input:checked+.at-cover-struct-card{border-color:var(--accent);background:var(--accent-dim)}
.at-cover-struct-card:hover{border-color:rgba(201,163,85,.4)}
.at-cover-struct-name{font:600 13px 'Montserrat',sans-serif;color:var(--white)}
.at-cover-struct-desc{font:400 12px/1.4 'Cormorant Garamond',serif;color:var(--grey)}
.at-cover-struct-badge{display:inline-flex;align-items:center;margin-top:4px;font:600 10px 'Montserrat',sans-serif;letter-spacing:.4px;color:var(--accent);padding:2px 7px;border-radius:999px;background:var(--accent-dim);border:1px solid rgba(201,163,85,.35)}

@media(max-width:760px){
    .at-cover-grid{grid-template-columns:1fr}
    .at-cover-preview-col{position:static;width:100%;flex-direction:row;align-items:flex-start;justify-content:center;gap:20px}
    .at-cover-book-wrap{width:110px}
    .at-cover-tpl-grid{grid-template-columns:1fr 1fr}
}

/* Dashboard "Couverture" hover button */
.mb-cover-btn{position:absolute;bottom:8px;left:50%;transform:translateX(-50%) translateY(6px);display:inline-flex;align-items:center;gap:5px;padding:6px 13px;border-radius:999px;background:rgba(10,10,15,.78);backdrop-filter:blur(6px);border:1px solid rgba(201,163,85,.4);color:var(--accent);font:600 10px 'Montserrat',sans-serif;letter-spacing:.6px;text-transform:uppercase;opacity:0;cursor:pointer;transition:.2s ease;white-space:nowrap;text-decoration:none}
.mb-card:hover .mb-cover-btn{opacity:1;transform:translateX(-50%) translateY(0)}

/* ============================================
   COVER DESIGNER (cv-*)
   3-panel book cover studio
============================================ */

.cv-page{display:flex;flex-direction:column;height:100vh;overflow:hidden;background:var(--bg2)}

/* Shell — 3 columns */
.cv-shell{display:grid;grid-template-columns:260px 1fr 280px;flex:1;min-height:0;overflow:hidden}

/* Left rail */
.cv-left{display:flex;flex-direction:column;background:var(--bg2);border-right:1px solid var(--line);overflow-y:auto;padding:14px 12px;gap:20px;scrollbar-width:thin}
.cv-section{display:flex;flex-direction:column;gap:10px}
.cv-section-title{font:700 10px var(--font-body);letter-spacing:.9px;text-transform:uppercase;color:var(--grey);margin:0}

/* Template grid */
.cv-tpl-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.cv-tpl-skeleton{aspect-ratio:2/3;border-radius:4px;background:var(--muted);animation:cv-pulse 1.4s ease-in-out infinite}
@keyframes cv-pulse{0%,100%{opacity:.4}50%{opacity:.9}}
.cv-tpl-card{display:flex;flex-direction:column;align-items:center;gap:5px;cursor:pointer;border-radius:6px;padding:5px;border:1.5px solid transparent;transition:background .15s,border-color .15s}
.cv-tpl-card:hover{background:var(--bg-hover);border-color:var(--line2)}
.cv-tpl-card.is-active{background:var(--accent-dim);border-color:var(--accent)}
.cv-tpl-thumb{width:100%;aspect-ratio:2/3;border-radius:3px;overflow:hidden;background:var(--muted);box-shadow:0 2px 8px rgba(0,0,0,.15)}
.cv-tpl-thumb img{width:100%;height:100%;object-fit:cover;display:block;position:absolute;top:0;left:0}
.cv-tpl-thumb{position:relative}
.cv-tpl-showcase{opacity:0;transition:opacity .25s}
.cv-tpl-card:hover .cv-tpl-showcase{opacity:1}
.cv-tpl-card.is-active .cv-tpl-showcase{opacity:.35}
.cv-tpl-name{font:600 10px var(--font-body);color:var(--light);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%}
.cv-tpl-card.is-active .cv-tpl-name{color:var(--accent)}

/* Palette chips */
.cv-palette-row{display:flex;flex-wrap:wrap;gap:8px;padding:2px 0}
.cv-palette-chip{width:28px;height:28px;border-radius:50%;background:var(--chip-bg,#888);border:2px solid transparent;cursor:pointer;transition:transform .15s,box-shadow .15s,border-color .15s;position:relative;flex-shrink:0}
.cv-palette-chip:hover{transform:scale(1.18);box-shadow:0 3px 10px rgba(0,0,0,.25)}
.cv-palette-chip.is-active{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow),0 3px 10px rgba(0,0,0,.2);transform:scale(1.12)}

/* Center */
.cv-center{display:flex;flex-direction:column;overflow:hidden;background:var(--bg)}
.cv-toolbar{display:flex;align-items:center;gap:6px;padding:0 16px;height:46px;border-bottom:1px solid var(--line);flex-shrink:0;background:var(--bg2)}
.cv-tbtn{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border-radius:6px;background:transparent;border:1px solid var(--line2);color:var(--light);font:500 12px var(--font-body);cursor:pointer;transition:background .15s,color .15s,border-color .15s}
.cv-tbtn:hover{background:var(--bg-hover);color:var(--white);border-color:var(--muted)}
.cv-tbtn:disabled{opacity:.45;cursor:not-allowed;pointer-events:none}
.cv-tbtn-accent{background:var(--accent);border-color:var(--accent2);color:#fff}
.cv-tbtn-accent:hover{background:var(--accent2);color:#fff}
.cv-tbtn-sep{width:1px;height:20px;background:var(--line);margin:0 2px}
.cv-tspacer{flex:1}
.cv-save-lbl{font:400 11px var(--font-body);color:var(--grey);max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Canvas */
.cv-canvas{flex:1;overflow:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 24px;gap:16px}

/* Spread — Back | Spine | Front */
.cv-spread{display:flex;align-items:flex-end;gap:0;filter:drop-shadow(0 16px 48px rgba(0,0,0,.35))}
.cv-spread-panel{display:flex;flex-direction:column;align-items:center;gap:8px}
.cv-spread-spine-wrap{display:flex;flex-direction:column;align-items:center;gap:8px}

.cv-spread-book{position:relative;aspect-ratio:2/3;height:clamp(260px,calc(100vh - 220px),580px);overflow:hidden;border-radius:2px 5px 5px 2px}
.cv-spread-front{border-radius:2px 5px 5px 2px;box-shadow:inset -3px 0 6px rgba(0,0,0,.2)}
/* Back cover: mirror radius */
.cv-spread-panel:first-child .cv-spread-book{border-radius:5px 2px 2px 5px}

.cv-spread-spine{aspect-ratio:1/10;height:clamp(260px,calc(100vh - 220px),580px);overflow:hidden}

.cv-book-img,.cv-spine-img{width:100%;height:100%;object-fit:cover;display:block;transition:opacity .25s}
.cv-img-loading{opacity:.4}

.cv-spread-label{font:700 9px var(--font-body);letter-spacing:.9px;text-transform:uppercase;color:var(--grey);text-align:center}

/* Right panel */
.cv-right{display:flex;flex-direction:column;background:var(--bg2);border-left:1px solid var(--line);overflow-y:auto;scrollbar-width:thin}
.cv-right-head{padding:14px 16px 10px;font:700 10px var(--font-body);letter-spacing:.9px;text-transform:uppercase;color:var(--grey);border-bottom:1px solid var(--line);flex-shrink:0}
.cv-right-body{padding:16px;display:flex;flex-direction:column;gap:12px}

/* Property fields */
.cv-prop-group{display:flex;flex-direction:column;gap:10px}
.cv-prop-group-title{font:600 10px var(--font-body);letter-spacing:.7px;text-transform:uppercase;color:var(--grey)}
.cv-prop-lbl{display:flex;flex-direction:column;gap:4px;font:500 11px var(--font-body);color:var(--light)}
.cv-prop-inp{padding:7px 10px;border-radius:6px;border:1px solid var(--muted);background:var(--bg3);color:var(--white);font:400 13px var(--font-body);outline:none;transition:border-color .15s,box-shadow .15s;width:100%;box-sizing:border-box}
.cv-prop-inp:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-dim)}
.cv-prop-inp::placeholder{color:var(--grey);opacity:.7}
.cv-prop-textarea{resize:vertical;min-height:80px;font-family:var(--font-body);line-height:1.5}
.cv-prop-divider{height:1px;background:var(--line);margin:2px 0}

/* Action buttons */
.cv-action-btn{display:flex;align-items:center;gap:7px;padding:8px 12px;border-radius:7px;background:var(--bg3);border:1px solid var(--line2);color:var(--light);font:500 12px var(--font-body);cursor:pointer;transition:background .15s,border-color .15s,color .15s;text-align:left;width:100%}
.cv-action-btn:hover{background:var(--bg-hover);color:var(--white);border-color:var(--accent)}
.cv-action-primary{background:var(--accent);border-color:var(--accent2);color:#fff}
.cv-action-primary:hover{background:var(--accent2);color:#fff}
.cv-action-btn:disabled{opacity:.45;cursor:not-allowed;pointer-events:none}

/* Responsive */
@media(max-width:960px){
    .cv-shell{grid-template-columns:220px 1fr}
    .cv-right{display:none}
}
@media(max-width:640px){
    .cv-shell{grid-template-columns:1fr;grid-template-rows:auto 1fr}
    .cv-left{flex-direction:row;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;max-height:none;border-right:none;border-bottom:1px solid var(--line);padding:10px 12px;gap:16px}
    .cv-section{flex-direction:row;align-items:center;gap:10px;flex-shrink:0}
    .cv-tpl-grid{grid-template-columns:repeat(6,68px);grid-template-rows:1fr;gap:6px;flex-shrink:0}
    .cv-section-title{writing-mode:vertical-lr;text-orientation:mixed;transform:rotate(180deg);font-size:9px;white-space:nowrap}
}
