:root{--navy:#172554;--blue:#2563eb;--ink:#172033;--muted:#6b7280;--line:#e7ebf3;--bg:#f5f7fb;--white:#fff}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}.app-nav{background:rgba(255,255,255,.94);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);min-height:72px}.navbar-brand{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:1.35rem;font-weight:800;color:var(--navy)!important;display:flex;align-items:center;gap:8px}.brand-mark{display:grid;place-items:center;width:31px;height:31px;border-radius:10px;color:white;background:linear-gradient(135deg,#2563eb,#60a5fa);font-size:.94rem}.nav-link{font-weight:600;color:#667085!important;font-size:.86rem;padding:9px 11px!important}.nav-link i{font-size:1rem;margin-right:3px}.btn-primary{background:#2563eb;border-color:#2563eb;border-radius:9px;font-size:.82rem;font-weight:700;padding:9px 13px!important}.profile-trigger{display:flex;align-items:center;gap:7px;color:#465266;text-decoration:none;font-size:.84rem;font-weight:600}.nav-avatar,.avatar{display:grid;place-items:center;border-radius:50%;background:linear-gradient(135deg,#dbeafe,#bfdbfe);color:#1d4ed8;font-weight:800}.nav-avatar{height:29px;width:29px;font-size:.75rem}.feed-heading{display:flex;align-items:flex-end;justify-content:space-between;margin:5px 0 17px}.feed-heading h1{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:1.55rem;font-weight:800;letter-spacing:-.7px;margin:0}.eyebrow{font-size:.65rem;letter-spacing:.12em;font-weight:800;color:#718096}.quick-compose{display:flex;align-items:center;gap:12px;padding:13px 15px;background:white;border:1px solid var(--line);border-radius:13px;text-decoration:none;color:#8a94a6;margin-bottom:15px;box-shadow:0 2px 8px rgba(26,42,75,.035);font-size:.89rem}.quick-compose:hover{border-color:#a9c5ff;color:#2563eb}.quick-compose i{margin-left:auto;color:#2563eb;font-size:1.2rem}.avatar{min-width:38px;height:38px;font-size:.83rem}.filter-bar{display:flex;gap:7px;margin:4px 0 16px}.filter-bar a{font-size:.78rem;color:#64748b;background:transparent;padding:6px 11px;border-radius:8px;text-decoration:none;font-weight:600}.filter-bar a.selected{background:#e0eaff;color:#1d4ed8}.entry-card,.compose-card,.side-card,.auth-card{background:var(--white);border:1px solid var(--line);border-radius:14px;box-shadow:0 3px 12px rgba(31,48,79,.035)}.entry-card{padding:20px;margin-bottom:14px}.author{font-weight:700;font-size:.87rem;color:var(--ink);text-decoration:none}.meta{font-size:.72rem;color:#8b95a5;margin-top:2px}.type-badge{height:max-content;border-radius:7px;background:#eff6ff;color:#3167c9;padding:5px 8px;font-size:.65rem;font-weight:700}.entry-card h2{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:1.14rem;font-weight:800;margin:17px 0 8px}.entry-card h2 a{color:inherit;text-decoration:none}.entry-content{line-height:1.7;color:#465266;font-size:.91rem;margin:0}.image-grid{display:grid;gap:3px;margin-top:16px;overflow:hidden;border-radius:10px;max-height:430px}.image-grid.count-1{grid-template-columns:1fr}.image-grid:not(.count-1){grid-template-columns:1fr 1fr}.image-grid img{width:100%;height:210px;object-fit:cover;display:block}.count-1 img{height:auto;max-height:430px}.entry-footer{border-top:1px solid #f0f2f6;margin-top:17px;padding-top:12px;display:flex;justify-content:space-between;gap:8px;color:#748094;font-size:.74rem}.entry-footer a,.small-link,.back-link,a{color:#2563eb}.profile-card{padding:0 0 15px;overflow:hidden;text-align:center}.profile-cover{height:65px;background:linear-gradient(125deg,#1e3a8a,#3b82f6 62%,#93c5fd)}.side-avatar{height:55px;width:55px;margin:-28px auto 8px;display:grid;place-items:center;border-radius:50%;background:white;border:3px solid white;box-shadow:0 3px 8px rgba(37,99,235,.18);color:#2563eb;font-weight:800}.profile-card h3{font-size:.95rem;font-weight:800;margin:0}.profile-card p{font-size:.75rem;color:#8a94a6;margin:3px 0 14px}.profile-stats{border-top:1px solid #edf0f5;padding-top:12px;display:flex;justify-content:center;gap:23px;font-size:.65rem;color:#8b95a5}.profile-stats strong{display:block;font-size:.85rem;color:#263247}.side-menu{padding:12px 4px}.side-link{display:block;color:#5c687d;text-decoration:none;padding:10px 12px;border-radius:9px;font-size:.84rem;font-weight:600}.side-link i{font-size:1rem;margin-right:9px}.side-link.active,.side-link:hover{background:#eaf1ff;color:#2563eb}.prompt-card{padding:20px;margin-bottom:13px}.prompt-icon{width:35px;height:35px;display:grid;place-items:center;background:#fff1d6;border-radius:10px;margin-bottom:17px;color:#d97706}.quote{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-weight:700;font-size:.99rem;line-height:1.5;margin-bottom:13px}.small-link{font-size:.78rem;text-decoration:none;font-weight:700}.privacy-note{display:flex;gap:10px;padding:14px;color:#748094;font-size:.72rem;line-height:1.4}.privacy-note i{color:#2563eb;font-size:1.1rem}.privacy-note strong{display:block;color:#40506a;font-size:.77rem;margin-bottom:2px}.compose-card{padding:29px;margin-top:12px}.compose-card h1,.auth-card h1,.detail-card h1{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-weight:800;letter-spacing:-.7px}.form-label{font-weight:700;font-size:.8rem;color:#465266}.form-control,.form-select{border-color:#dfe5ef;border-radius:9px;padding:.66rem .75rem;font-size:.9rem}.form-control:focus,.form-select:focus{border-color:#80aaff;box-shadow:0 0 0 .2rem rgba(37,99,235,.12)}textarea.form-control{line-height:1.65}.field-shared_with{display:none}.upload-zone{min-height:124px;border:1.5px dashed #aac5f6;border-radius:10px;background:#f8fbff;display:flex;flex-direction:column;justify-content:center;align-items:center;cursor:pointer;color:#536b91;font-size:.84rem}.upload-zone span{font-size:1.7rem;line-height:1;color:#2563eb}.upload-zone small{color:#8a99b0;margin-top:4px}#id_images{display:none}.preview-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.preview-grid img{width:82px;height:82px;object-fit:cover;border-radius:8px}.back-link{text-decoration:none;font-size:.82rem;font-weight:600}.detail-card h1{font-size:1.9rem;margin:25px 0 15px}.detail-content{line-height:1.8;color:#3e4b60}.auth-wrap{min-height:calc(100vh - 160px);display:flex;align-items:center;justify-content:center}.auth-card{width:100%;max-width:450px;padding:34px}.auth-card .navbar-brand{display:inline-flex;margin-bottom:25px}.auth-card h1{font-size:1.7rem}.auth-card p{color:#728098;font-size:.9rem}.auth-card input{width:100%;border:1px solid #dfe5ef;border-radius:9px;padding:.65rem .75rem}.empty-state{text-align:center;background:white;border:1px dashed #cbd8ed;border-radius:14px;padding:58px 20px;color:#748094}.empty-state>div{font-size:2rem}.empty-state h2{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:var(--ink);font-weight:800;margin-top:10px;font-size:1.35rem}@media(max-width:575px){.entry-card,.compose-card{padding:16px}.feed-heading h1{font-size:1.36rem}.compose-card h1{font-size:1.45rem}.image-grid img{height:150px}.profile-trigger span:last-child{display:none}}

/* Bootstrap social shell */
.nav-search{width:270px;height:39px;align-items:center;gap:8px;background:#f0f3f8;border-radius:22px;padding:0 13px;color:#7d899c}.nav-search input{border:0;outline:0;background:transparent;width:100%;font-size:.82rem;color:#334155}.nav-main{gap:12px}.nav-icon-link{width:100px;text-align:center;border-radius:9px}.nav-icon-link i{display:block;font-size:1.15rem;margin:0 0 2px!important}.nav-icon-link span{font-size:.7rem}.nav-icon-link:hover{background:#f1f5ff;color:#2563eb!important}.nav-actions{display:flex;align-items:center;gap:8px}.action-circle{display:grid;place-items:center;width:35px;height:35px;border-radius:50%;color:#364152;background:#eef2f7;text-decoration:none}.action-circle:hover{background:#dbeafe;color:#1d4ed8}.composer-card{border:1px solid var(--line);border-radius:14px;box-shadow:0 3px 12px rgba(31,48,79,.035);margin-bottom:15px}.composer-card .card-body{padding:12px}.composer-card .quick-compose{border:0;border-bottom:1px solid #edf0f5;border-radius:0;box-shadow:none;margin:0;padding:2px 2px 12px}.composer-actions{display:flex;justify-content:space-around;padding-top:10px}.composer-actions a{font-size:.78rem;font-weight:700;color:#627087;text-decoration:none;padding:5px 8px;border-radius:8px}.composer-actions a:hover{background:#f2f5fa}.composer-actions i{font-size:1rem;margin-right:4px}.profile-cover{position:relative}.profile-cover span{position:absolute;left:12px;top:11px;color:#dbeafe;font-size:.57rem;letter-spacing:.09em;font-weight:800}@media(max-width:991px){.nav-main{margin-top:10px}.nav-actions{margin:10px 0}.nav-icon-link{width:auto;text-align:left}}@media(max-width:575px){.nav-actions{gap:5px}.composer-actions a{font-size:0}.composer-actions i{font-size:1.1rem;margin:0}.nav-search{width:100%}}

/* Interactive feed */
.composer-actions button{border:0;background:transparent;font-size:.78rem;font-weight:700;color:#627087;padding:7px 10px;border-radius:8px}.composer-actions button:hover{background:#f2f5fa}.post-menu{border:0;background:transparent;color:#758197;border-radius:50%;width:30px;height:30px}.post-menu:hover{background:#eef2f7}.entry-context{display:flex;gap:12px;color:#718096;font-size:.73rem;margin-top:14px}.engagement-summary{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #eef1f5;padding:9px 1px;color:#758197;font-size:.75rem}.engagement-summary a{color:#758197;text-decoration:none}.reaction-bubble{display:inline-grid;place-items:center;background:#ef476f;color:white;border:2px solid white;width:20px;height:20px;border-radius:50%;font-size:.65rem}.post-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;padding-top:6px}.post-actions button,.post-actions a{border:0;background:transparent;color:#667085;text-decoration:none;font-weight:700;font-size:.78rem;text-align:center;padding:8px;border-radius:8px}.post-actions button:hover,.post-actions a:hover{background:#f2f5f9}.post-actions .active{color:#e11d48}.composer-modal{border:0;border-radius:16px;box-shadow:0 24px 70px rgba(23,32,51,.2)}.composer-modal .modal-header{padding:18px 22px}.composer-modal .modal-body{padding:20px 22px;max-height:68vh;overflow-y:auto}.composer-modal .modal-title{font-family:'Plus Jakarta Sans';font-weight:800;font-size:1.25rem}.draft-status{font-size:.7rem;color:#8491a5;margin-top:9px}.upload-zone i{font-size:1.6rem;color:#2563eb}.page-link{color:#2563eb;border-color:#e5eaf2}

/* Comments */
.comments-card{background:white;border:1px solid var(--line);border-radius:14px;padding:20px;margin-bottom:30px}.comments-header{display:flex;align-items:center;gap:8px;border-bottom:1px solid #edf0f5;padding-bottom:12px;margin-bottom:15px}.comments-header h2{font:800 1rem 'Plus Jakarta Sans';margin:0}.comments-header span{background:#edf3ff;color:#2563eb;border-radius:99px;padding:2px 7px;font-size:.7rem}.comment{display:flex;align-items:flex-start;gap:9px;margin-bottom:13px}.avatar-sm{min-width:31px;width:31px;height:31px;font-size:.68rem}.comment-bubble{background:#f2f5f9;border-radius:4px 13px 13px 13px;padding:8px 11px;max-width:85%}.comment-bubble a{font-size:.76rem;font-weight:800;color:#263247;text-decoration:none}.comment-bubble p{margin:2px 0;color:#445066;font-size:.82rem}.comment-bubble time{color:#8792a4;font-size:.62rem}.comment-form{display:flex;gap:9px;border-top:1px solid #edf0f5;padding-top:14px}.comment-form .form-control{background:#f2f5f9;border-color:transparent}

/* Profile */
.profile-page{max-width:940px;margin:auto}.profile-hero{background:white;border:1px solid var(--line);border-radius:16px;overflow:hidden;margin-bottom:22px}.profile-hero-cover{height:210px;background:radial-gradient(circle at 78% 25%,rgba(255,255,255,.22),transparent 20%),linear-gradient(120deg,#172554,#2563eb 55%,#60a5fa)}.profile-hero-body{display:flex;align-items:flex-end;gap:17px;padding:0 25px 18px}.profile-avatar-xl{width:112px;height:112px;min-width:112px;border-radius:50%;margin-top:-55px;background:#e0ebff;border:5px solid white;display:grid;place-items:center;color:#2563eb;font:800 2rem 'Plus Jakarta Sans';overflow:hidden}.profile-avatar-xl img{width:100%;height:100%;object-fit:cover}.profile-info{flex:1}.profile-info h1{font:800 1.55rem 'Plus Jakarta Sans';margin:0}.profile-info p{color:#778397;font-size:.82rem;margin:5px 0 0}.profile-tabs{border-top:1px solid #edf0f5;padding:0 25px;display:flex;gap:20px}.profile-tabs span{padding:13px 2px;color:#758197;font-size:.8rem;font-weight:700}.profile-tabs .active{color:#2563eb;border-bottom:3px solid #2563eb}.profile-feed{max-width:650px;margin:auto}.profile-feed>h2,.section-title h2{font:800 1.05rem 'Plus Jakarta Sans';margin:0 0 12px}.profile-entry-image{width:100%;max-height:390px;object-fit:cover;border-radius:10px;margin-top:14px}

/* Family */
.page-heading{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:25px}.page-heading h1,.family-hero h1{font:800 1.8rem 'Plus Jakarta Sans';letter-spacing:-.7px}.page-heading p{color:#748094;margin:0}.family-card{display:block;background:white;border:1px solid var(--line);border-radius:14px;overflow:hidden;text-decoration:none;transition:.18s ease}.family-card:hover{transform:translateY(-2px);box-shadow:0 10px 25px rgba(31,48,79,.08)}.family-card-cover{height:105px;display:grid;place-items:center;background:linear-gradient(135deg,#dbeafe,#e0e7ff);color:#2563eb;font-size:2rem}.family-card-body{padding:15px}.family-card-body h2{font:800 1rem 'Plus Jakarta Sans';color:#243047;margin:0}.family-card-body p{font-size:.72rem;color:#8491a5;margin:4px 0 10px}.member-stack{display:flex}.member-stack span{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#2563eb;color:white;border:2px solid white;margin-left:-5px;font-size:.65rem}.member-stack span:first-child{margin-left:0}.join-card{padding:22px}.join-card h2{font:800 1.05rem 'Plus Jakarta Sans'}.join-card p{font-size:.8rem;color:#7a8699}.family-hero{border-radius:16px;padding:27px 30px;background:linear-gradient(120deg,#172554,#2563eb);color:white;display:flex;align-items:center;justify-content:space-between}.family-hero .eyebrow,.family-hero p{color:#dbeafe}.family-hero h1{margin:3px 0}.family-hero p{margin:0;font-size:.8rem}.member-list a{display:flex;align-items:center;gap:9px;padding:8px 0;text-decoration:none;color:#344054}.member-list strong,.member-list small{display:block;font-size:.76rem}.member-list small{color:#8a95a6;font-size:.65rem}.invite-box{border-top:1px solid #edf0f5;margin-top:15px;padding-top:15px}.invite-box label{font-size:.72rem;font-weight:800;margin-bottom:6px}.invite-box small{display:block;color:#8a95a6;font-size:.65rem;margin-top:6px}

/* Mobile navigation */
.mobile-nav{position:fixed;z-index:1035;left:0;right:0;bottom:0;height:66px;background:rgba(255,255,255,.97);backdrop-filter:blur(12px);border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-around;padding-bottom:env(safe-area-inset-bottom)}.mobile-nav a{color:#748094;text-decoration:none;text-align:center;font-size:.61rem;min-width:54px}.mobile-nav i{display:block;font-size:1.12rem}.mobile-nav .mobile-create{min-width:44px;width:44px;height:44px;margin-top:-20px;border-radius:50%;background:#2563eb;color:white;display:grid;place-items:center;box-shadow:0 7px 18px rgba(37,99,235,.3)}.mobile-nav .mobile-create i{font-size:1.35rem}@media(max-width:991px){body{padding-bottom:65px}.profile-hero-cover{height:150px}.profile-hero-body{padding:0 17px 15px}.family-hero{padding:21px}.app-nav .navbar-collapse{position:absolute;top:71px;left:0;right:0;background:white;padding:8px 18px;border-bottom:1px solid var(--line)}}@media(max-width:575px){.profile-avatar-xl{width:82px;height:82px;min-width:82px;margin-top:-40px}.profile-hero-body{align-items:center;flex-wrap:wrap}.profile-info{min-width:calc(100% - 105px)}.profile-info h1{font-size:1.2rem}.profile-hero-body>.btn{width:100%}.page-heading,.family-hero{align-items:flex-start;gap:14px;flex-direction:column}.family-hero .btn{width:100%}.post-actions span{display:none}}

/* Notifications, lightbox and utilities */
.notification-trigger{position:relative;border:0}.notification-badge,.mobile-badge{position:absolute;display:grid;place-items:center;background:#e11d48;color:white;border:2px solid white;border-radius:99px;font-size:.57rem;font-weight:800;min-width:18px;height:18px}.notification-badge{right:-4px;top:-4px}.mobile-badge{right:7px;top:-7px}.notification-menu{width:min(380px,calc(100vw - 24px));padding:8px;border-radius:14px}.notification-menu-head{display:flex;justify-content:space-between;align-items:center;padding:8px 10px 12px}.notification-menu-head strong{font:800 1rem 'Plus Jakarta Sans'}.notification-menu-head a{font-size:.72rem;text-decoration:none}.notification-item,.notification-row{display:flex;gap:10px;text-decoration:none;color:#344054;border-radius:10px}.notification-item{padding:10px}.notification-item:hover,.notification-item.unread{background:#eef5ff}.notification-icon{display:grid;place-items:center;min-width:36px;height:36px;border-radius:50%;background:#dbeafe;color:#2563eb}.notification-item>span:last-child{font-size:.75rem;line-height:1.4}.notification-item small{display:block;color:#7f8a9d;margin-top:3px}.notification-empty{display:flex;flex-direction:column;align-items:center;color:#8994a6;padding:30px 15px;font-size:.8rem}.notification-empty i{font-size:1.5rem;margin-bottom:7px}.notification-page{background:white;border:1px solid var(--line);border-radius:14px;padding:8px}.notification-row{padding:14px;border-bottom:1px solid #edf0f5;align-items:flex-start}.notification-row:last-child{border-bottom:0}.notification-row.unread{background:#f3f7ff}.notification-row strong{font-size:.8rem}.notification-row p{font-size:.8rem;margin:2px 0;color:#536075}.notification-row small{font-size:.68rem;color:#8490a4}.scroll-top{position:fixed;z-index:1020;right:22px;bottom:24px;border:0;width:40px;height:40px;border-radius:50%;background:#2563eb;color:white;box-shadow:0 8px 22px rgba(37,99,235,.28);opacity:0;transform:translateY(15px);pointer-events:none;transition:.2s}.scroll-top.visible{opacity:1;transform:none;pointer-events:auto}.lightbox-content{background:rgba(8,13,24,.96)}.lightbox-content .modal-body{display:grid;place-items:center;padding:50px}.lightbox-content img{max-width:100%;max-height:calc(100vh - 100px);object-fit:contain}.lightbox-close{position:absolute;z-index:2;right:22px;top:20px}.bookmark-button.active{color:#2563eb!important}

/* Dark theme */
[data-bs-theme=dark]{--ink:#e6edf7;--muted:#94a3b8;--line:#2a3548;--bg:#0f172a;--white:#182235;color-scheme:dark}[data-bs-theme=dark] body{background:var(--bg);color:var(--ink)}[data-bs-theme=dark] .app-nav,[data-bs-theme=dark] .mobile-nav{background:rgba(24,34,53,.95);border-color:var(--line)}[data-bs-theme=dark] .navbar-brand,[data-bs-theme=dark] .author,[data-bs-theme=dark] .profile-card h3,[data-bs-theme=dark] .entry-card h2,[data-bs-theme=dark] .empty-state h2,[data-bs-theme=dark] .profile-info h1{color:#edf4ff!important}[data-bs-theme=dark] .nav-search,[data-bs-theme=dark] .action-circle,[data-bs-theme=dark] .comment-bubble,[data-bs-theme=dark] .comment-form .form-control{background:#253147;color:#cbd5e1}[data-bs-theme=dark] .nav-search input{color:#e2e8f0}[data-bs-theme=dark] .entry-card,[data-bs-theme=dark] .side-card,[data-bs-theme=dark] .composer-card,[data-bs-theme=dark] .compose-card,[data-bs-theme=dark] .comments-card,[data-bs-theme=dark] .profile-hero,[data-bs-theme=dark] .notification-page,[data-bs-theme=dark] .family-card,[data-bs-theme=dark] .modal-content{background:#182235;border-color:#2a3548}[data-bs-theme=dark] .entry-content,[data-bs-theme=dark] .detail-content,[data-bs-theme=dark] .comment-bubble p,[data-bs-theme=dark] .family-card-body h2{color:#cbd5e1}[data-bs-theme=dark] .quick-compose,[data-bs-theme=dark] .upload-zone{background:#202c41;border-color:#34435b}[data-bs-theme=dark] .side-link:hover,[data-bs-theme=dark] .side-link.active,[data-bs-theme=dark] .notification-item:hover,[data-bs-theme=dark] .notification-item.unread,[data-bs-theme=dark] .notification-row.unread{background:#233451}[data-bs-theme=dark] .dropdown-menu{--bs-dropdown-bg:#202b3e;--bs-dropdown-link-color:#d5deeb;--bs-dropdown-link-hover-bg:#2b3950;--bs-dropdown-link-hover-color:white}[data-bs-theme=dark] .form-control,[data-bs-theme=dark] .form-select{background-color:#202c41;border-color:#34435b;color:#e2e8f0}[data-bs-theme=dark] .notification-menu-head,[data-bs-theme=dark] .notification-row,[data-bs-theme=dark] .post-actions,[data-bs-theme=dark] .engagement-summary{border-color:#2a3548}@media(max-width:991px){[data-bs-theme=dark] .app-nav .navbar-collapse{background:#182235;border-color:#2a3548}}@media(max-width:991px){.scroll-top{bottom:82px;right:14px}}

/* IELTS Learning Hub */
.cycle-strip{display:grid;grid-template-columns:1.5fr repeat(7,1fr);align-items:center;gap:8px;background:white;border:1px solid var(--line);border-radius:14px;padding:12px 16px;margin-top:12px}.cycle-strip>div strong{font-size:.82rem}.cycle-strip>span{text-align:center;border-radius:10px;padding:7px 3px;color:#7d899c}.cycle-strip>span.today{background:#e8efff;color:#2563eb}.cycle-strip small,.cycle-strip b,.cycle-strip em{display:block}.cycle-strip small{font-size:.57rem;text-transform:uppercase}.cycle-strip b{font-size:.9rem}.cycle-strip em{font-size:.56rem;font-style:normal}.cycle-strip .eyebrow{margin:0}
.ielts-hero{position:relative;overflow:hidden;display:flex;justify-content:space-between;align-items:center;padding:34px 38px;border-radius:20px;color:white;background:radial-gradient(circle at 85% 5%,rgba(255,255,255,.22),transparent 25%),linear-gradient(125deg,#172554,#3b4fd8 58%,#0ea5e9);box-shadow:0 16px 35px rgba(37,52,150,.18)}.ielts-hero:after{content:'A';position:absolute;right:32%;bottom:-85px;font-size:230px;font-weight:900;color:rgba(255,255,255,.045)}.ielts-label{display:inline-flex;gap:6px;align-items:center;font-size:.65rem;font-weight:800;letter-spacing:.11em;color:#dbeafe}.ielts-hero h1{font-size:2.25rem;font-weight:850;letter-spacing:-1.3px;margin:7px 0}.ielts-hero p{color:#dbeafe;max-width:570px;margin:0 0 20px}.hero-actions{display:flex;gap:8px}.band-orbit{z-index:1;display:flex;align-items:center;gap:16px;padding:19px;border-radius:16px;background:rgba(255,255,255,.12);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.18)}.band-orbit span{font-size:.58rem;letter-spacing:.08em;text-align:center;color:#dbeafe}.band-orbit strong{display:block;font-size:2rem;line-height:1.15;color:white;letter-spacing:-1px}.study-stats{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-top:16px}.study-stat{display:flex;align-items:center;gap:10px;background:white;border:1px solid var(--line);border-radius:13px;padding:14px}.study-stat>i{font-size:1.25rem}.study-stat span{font-size:.68rem;color:#8490a3}.study-stat strong{display:block;font-size:.82rem;color:#344054}.section-heading{display:flex;justify-content:space-between;align-items:end;margin:10px 0 13px}.section-heading h2,.progress-card h2{font-size:1.15rem;font-weight:800;margin:0}.section-heading>span{font-size:.68rem;color:#8a95a6}.recommendation-grid{display:grid;gap:9px}.recommendation-card{display:flex;align-items:center;gap:12px;background:white;border:1px solid var(--line);border-radius:13px;padding:14px;text-decoration:none;color:#344054;transition:.15s}.recommendation-card:hover{transform:translateX(3px);box-shadow:0 7px 18px rgba(31,48,79,.07)}.recommendation-icon{display:grid;place-items:center;min-width:40px;height:40px;border-radius:11px}.recommendation-card>span:nth-child(2){flex:1}.recommendation-card strong,.recommendation-card small{display:block}.recommendation-card strong{font-size:.82rem}.recommendation-card small{font-size:.7rem;color:#7c889b;margin-top:2px}.recommendation-card>i{color:#9aa5b5}.learning-tools{margin-top:25px}.tool-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.tool-grid a{display:grid;grid-template-columns:38px 1fr;column-gap:10px;background:white;border:1px solid var(--line);border-radius:13px;padding:14px;text-decoration:none;color:#344054}.tool-grid i{grid-row:1/3;display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:#e8efff;color:#2563eb}.tool-grid strong{font-size:.78rem}.tool-grid span{font-size:.67rem;color:#8490a3}.progress-card{padding:20px}.skill-progress{margin-top:15px}.skill-progress>div:first-child{display:flex;justify-content:space-between;font-size:.72rem;margin-bottom:6px}.skill-progress .progress{height:7px}.mini-empty{text-align:center;color:#8490a3;padding:28px 8px}.mini-empty i{font-size:1.6rem}.mini-empty p{font-size:.72rem;margin:8px 0}.session-list>div{display:flex;gap:9px;margin:12px 0}.session-dot{width:8px;height:8px;border-radius:50%;background:#3b82f6;margin-top:4px}.session-list strong,.session-list small{display:block;font-size:.72rem}.session-list small{color:#8a95a6;font-size:.64rem}.ielts-page-head{display:flex;justify-content:space-between;align-items:end;margin-bottom:22px}.ielts-page-head h1{font-size:1.8rem;font-weight:850;letter-spacing:-.8px;margin:12px 0 3px}.ielts-page-head p{color:#7c889b;margin:0}.vocab-search{display:flex;align-items:center;gap:9px;background:white;border:1px solid var(--line);border-radius:12px;padding:0 14px;margin-bottom:12px}.vocab-search input{border:0;outline:0;background:transparent;width:100%;padding:12px 0}.vocab-table{background:white;border:1px solid var(--line);border-radius:14px;overflow:hidden}.vocab-row{display:grid;grid-template-columns:1.3fr 1.3fr .7fr 1fr;gap:12px;align-items:center;padding:13px 17px;border-bottom:1px solid #edf0f5;font-size:.76rem}.vocab-row:last-child{border:0}.vocab-head{background:#f7f9fc;color:#7c889b;font-size:.65rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em}.vocab-row strong,.vocab-row small{display:block}.vocab-row small{color:#8a95a6;margin-top:3px}.skill-pill{display:inline-block;background:#e8efff;color:#345fc3;border-radius:99px;padding:4px 8px;font-size:.62rem;font-weight:800}.scan-layout{display:grid;grid-template-columns:1fr 1fr;gap:18px}.scan-upload,.scan-result{background:white;border:1px solid var(--line);border-radius:15px;padding:20px}.scan-upload>label{min-height:230px;border:1.5px dashed #a8bce2;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;text-align:center}.scan-upload>label i{font-size:2.1rem;color:#2563eb}.scan-upload>label strong{font-size:.85rem;margin-top:7px}.scan-upload>label span{font-size:.7rem;color:#8490a3;margin-top:4px}.scan-upload input{display:none}.scan-upload img{display:none;width:100%;max-height:300px;object-fit:contain;margin-top:12px;border-radius:10px}.scan-upload img.visible{display:block}.scan-progress{margin-top:12px}.scan-progress span,.scan-hint{font-size:.68rem;color:#7d899d}.scan-progress .progress{height:7px}.scan-hint{display:flex;gap:6px;align-items:center;margin-top:8px;color:#478260}

/* Spaced repetition review */
.review-shell{max-width:780px;margin:auto}.review-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:25px}.review-progress{width:220px}.review-progress span{display:block;text-align:right;font-size:.68rem;color:#7d899c;margin-bottom:5px}.review-progress .progress{height:6px}.flashcard{height:510px;perspective:1400px}.flashcard-inner{position:relative;width:100%;height:100%;transition:transform .5s cubic-bezier(.2,.75,.25,1);transform-style:preserve-3d}.flashcard.revealed .flashcard-inner{transform:rotateY(180deg)}.flashcard-front,.flashcard-back{position:absolute;inset:0;backface-visibility:hidden;background:white;border:1px solid var(--line);border-radius:21px;box-shadow:0 18px 50px rgba(31,48,79,.1);padding:45px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.flashcard-back{transform:rotateY(180deg)}.flashcard h1{font-size:2.5rem;font-weight:850;letter-spacing:-1px;margin:17px 0}.flashcard-front p,.flashcard-front small,.flashcard-back p{color:#8490a3}.flashcard-front small{margin-top:14px}.flashcard-back h2{font-size:1.25rem;color:#2563eb}.flashcard blockquote{font-size:.9rem;font-style:italic;background:#f6f8fc;border-radius:10px;padding:12px 16px}.grade-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;width:100%;margin-top:8px}.grade-grid button{background:#f5f7fb;border:1px solid #e3e8f0;border-radius:10px;padding:10px 5px;color:#344054}.grade-grid button:hover{border-color:#86a7eb;background:#edf3ff}.grade-grid strong,.grade-grid small{display:block}.grade-grid strong{font-size:.75rem}.grade-grid small{font-size:.58rem;color:#8591a4}.review-complete{text-align:center;background:white;border:1px solid var(--line);border-radius:20px;padding:70px 25px}.review-complete>span{display:grid;place-items:center;width:70px;height:70px;border-radius:50%;background:#dcfce7;color:#16a34a;font-size:2rem;margin:auto}.review-complete h1{font-size:1.6rem;font-weight:850;margin-top:18px}.review-complete p{color:#7c889b}

[data-bs-theme=dark] .study-stat,[data-bs-theme=dark] .recommendation-card,[data-bs-theme=dark] .tool-grid a,[data-bs-theme=dark] .vocab-search,[data-bs-theme=dark] .vocab-table,[data-bs-theme=dark] .scan-upload,[data-bs-theme=dark] .scan-result,[data-bs-theme=dark] .flashcard-front,[data-bs-theme=dark] .flashcard-back,[data-bs-theme=dark] .review-complete{background:#182235;border-color:#2a3548}[data-bs-theme=dark] .study-stat strong,[data-bs-theme=dark] .recommendation-card,[data-bs-theme=dark] .tool-grid a,[data-bs-theme=dark] .grade-grid button{color:#dce5f2}[data-bs-theme=dark] .vocab-head,[data-bs-theme=dark] .grade-grid button,[data-bs-theme=dark] .flashcard blockquote{background:#202c41}[data-bs-theme=dark] .vocab-row{border-color:#2a3548}@media(max-width:991px){.study-stats{grid-template-columns:repeat(2,1fr)}.band-orbit{display:none}.scan-layout{grid-template-columns:1fr}.ielts-hero{padding:28px}.ielts-hero h1{font-size:1.8rem}}@media(max-width:575px){.study-stats{grid-template-columns:1fr 1fr}.study-stat{padding:11px}.tool-grid{grid-template-columns:1fr}.ielts-page-head{align-items:flex-start;flex-direction:column;gap:12px}.vocab-head{display:none}.vocab-row{grid-template-columns:1fr 1fr}.vocab-row>span:last-child{font-size:.65rem}.flashcard{height:480px}.flashcard-front,.flashcard-back{padding:25px 17px}.flashcard h1{font-size:2rem}.grade-grid{grid-template-columns:1fr 1fr}.hero-actions{flex-direction:column}.ielts-hero{padding:23px}.ielts-hero h1{font-size:1.55rem}}
[data-bs-theme=dark] .cycle-strip{background:#182235;border-color:#2a3548}[data-bs-theme=dark] .cycle-strip>span.today{background:#233451}@media(max-width:767px){.cycle-strip{grid-template-columns:repeat(7,1fr);overflow-x:auto}.cycle-strip>div{display:none}}

/* Mộc design system v2: one calm editorial language across feed, family and IELTS */
:root{--moc-ink:#243b36;--moc-accent:#c85b3d;--moc-accent-dark:#a84730;--moc-bg:#f6f5f1;--moc-surface:#fffefa;--moc-line:#e5e8df;--moc-muted:#718078;--moc-focus:rgba(200,91,61,.18)}
body{background:var(--moc-bg);color:var(--moc-ink);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;letter-spacing:-.01em}
.app-nav{background:rgba(255,254,250,.9);border-bottom-color:var(--moc-line);min-height:68px}
.navbar-brand{color:var(--moc-ink)!important;letter-spacing:-.04em}.brand-mark{background:var(--moc-ink);border-radius:9px}
.nav-link{color:#65736c!important}.nav-icon-link:hover{background:#edf1eb;color:var(--moc-ink)!important}.nav-search{background:#eef0eb}.action-circle{background:#edf0eb;color:var(--moc-ink)}.action-circle:hover{background:#dfe8de;color:var(--moc-ink)}
.btn-primary{background:var(--moc-accent);border-color:var(--moc-accent)}.btn-primary:hover,.btn-primary:focus{background:var(--moc-accent-dark);border-color:var(--moc-accent-dark)}
.quick-compose,.entry-card,.compose-card,.side-card,.auth-card,.composer-card,.comments-card,.profile-hero,.family-card,.notification-page{background:var(--moc-surface);border-color:var(--moc-line);box-shadow:0 8px 24px rgba(36,59,54,.045)}
.quick-compose:hover{border-color:#c9d8c9;color:var(--moc-accent)}.filter-bar a.selected,.side-link.active,.side-link:hover{background:#e9f0e8;color:var(--moc-ink)}.type-badge{background:#f7e9e2;color:var(--moc-accent-dark)}
.entry-content,.detail-content{color:#4e625a}.form-control:focus,.form-select:focus{border-color:var(--moc-accent);box-shadow:0 0 0 .2rem var(--moc-focus)}.upload-zone{border-color:#c6d6c6;background:#f8faf6}.upload-zone span,.upload-zone i{color:var(--moc-accent)}
.mobile-nav{background:rgba(255,254,250,.94);border-top-color:var(--moc-line)}.mobile-nav a{color:#718078}.mobile-nav .mobile-create{background:var(--moc-accent);box-shadow:0 7px 18px rgba(200,91,61,.28)}
.profile-cover{background:linear-gradient(125deg,#243b36,#557464 62%,#a9bea9)}.profile-hero-cover{background:linear-gradient(120deg,#243b36,#557464 55%,#a9bea9)}.family-hero{background:linear-gradient(120deg,#243b36,#557464)}
[data-bs-theme=dark]{--moc-bg:#111b18;--moc-surface:#192722;--moc-ink:#e8f0e9;--moc-line:#2c4038;--moc-muted:#a4b7aa}.app-nav,[data-bs-theme=dark] .mobile-nav{background:rgba(25,39,34,.94)}[data-bs-theme=dark] .quick-compose,[data-bs-theme=dark] .entry-card,[data-bs-theme=dark] .compose-card,[data-bs-theme=dark] .side-card,[data-bs-theme=dark] .auth-card,[data-bs-theme=dark] .composer-card,[data-bs-theme=dark] .comments-card,[data-bs-theme=dark] .profile-hero,[data-bs-theme=dark] .family-card{background:var(--moc-surface);border-color:var(--moc-line)}
.today-focus{display:flex;align-items:center;gap:15px;margin:16px 0 12px;padding:16px 18px;border:1px solid #dce8db;border-radius:16px;background:#f0f7ef}.today-focus-icon{display:grid;place-items:center;min-width:42px;height:42px;border-radius:13px;background:#dcecdc;color:#527958;font-size:19px}.today-focus-copy{min-width:0;flex:1}.today-focus-copy .eyebrow{margin:0 0 3px;color:#6b8270}.today-focus-copy h2{font-size:15px;color:#29443a;font-weight:800;margin:0 0 3px}.today-focus-copy p:last-child{font-size:11px;color:#6c7d72;margin:0;line-height:1.45}.today-focus-action{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;color:#a84730;font-size:11px;font-weight:800;text-decoration:none}.today-focus-action:hover{color:#7f3727}.today-focus--urgent{background:#fff3ee;border-color:#f0d8ce}.today-focus--urgent .today-focus-icon{background:#f9ddd3;color:#b64b30}.today-focus--urgent .today-focus-copy h2{color:#7d3526}.today-focus--review{background:#f3f1fc;border-color:#e2ddf3}.today-focus--review .today-focus-icon{background:#e6e0f7;color:#6353a2}.today-focus--focus{background:#f1f6ef}.today-focus--done{background:#edf5f0}.today-focus--done .today-focus-icon{background:#d9ebdd;color:#4d805b}@media(max-width:575px){.today-focus{align-items:flex-start;flex-wrap:wrap;padding:14px}.today-focus-action{width:100%;padding-left:57px}.today-focus-copy h2{font-size:14px}}

/* Desktop composition: deliberate reading width and stronger page rhythm */
@media(min-width:992px){
  main.container{max-width:1360px;padding-left:42px;padding-right:42px}
  .app-nav>.container-fluid{max-width:1420px;margin:auto;padding-left:34px!important;padding-right:34px!important}
  .feed-heading{margin-top:10px;margin-bottom:21px}.feed-heading h1{font-size:1.8rem}
  .row.justify-content-center.g-4{--bs-gutter-x:28px;align-items:start}
  .row.justify-content-center.g-4>section{max-width:690px}
  .row.justify-content-center.g-4>aside{max-width:290px}
  .entry-card{padding:23px 24px;border-radius:17px}.composer-card{border-radius:17px}.side-card{border-radius:17px}
  .studio{max-width:1280px}.studio-top{margin-bottom:29px}.studio-hero{min-height:335px;padding:53px 60px;grid-template-columns:1.2fr .95fr;gap:72px;border-radius:24px}.studio-hero h1{font-size:clamp(42px,4vw,60px)}.hero-notebook{padding:31px 34px 23px 42px}.studio-quick{gap:16px;margin:25px 0 39px}.studio-quick>a{padding:19px 20px;border-radius:15px}.studio-columns{grid-template-columns:minmax(0,2.15fr) minmax(300px,.85fr);gap:28px}.studio-workspace,.studio-panel{border-radius:19px}.studio-section-title{padding:27px 30px}.study-block{padding:29px 30px}.studio-panel{padding:25px}.studio-tip{padding:29px;border-radius:18px}
  .ielts-hero{padding:42px 52px;border-radius:23px}.ielts-hero h1{font-size:2.55rem}.study-stats{gap:12px}.study-stat{padding:16px;border-radius:15px}.recommendation-card,.tool-grid a{border-radius:15px}.today-focus{padding:18px 21px;border-radius:17px}
}
[data-bs-theme=light] .app-nav,[data-bs-theme=light] .mobile-nav{background:rgba(255,254,250,.92);color:var(--moc-ink)}
