/* ==========================================================================
   WsC - Latihan UAS UT  |  Pastel Rose UI v1.2.0
   Struktur menu, id, dan class mengikuti file lama; hanya tampilan yang diubah.
   ========================================================================== */

/* --- 1. Token desain ----------------------------------------------------- */
:root{
  --ink:#2f1b28;--text:#3c2733;--muted:#95798a;--muted-2:#b39aa4;
  --paper:#fff6fa;--card:#fff;--white:#fff;
  --pink:#f76ca6;--pink-strong:#e8477c;--pink-deep:#c93a6b;
  --pink-soft:#ffe4ef;--pink-tint:#fff5f9;--pink-line:#fbd9e7;
  --violet:#a98cff;--emerald:#12b981;--emerald-soft:#e6f8f0;--amber:#f5a524;
  --line:#f7dfe9;--line-strong:#f0cede;
  --shadow-xs:0 1px 2px rgba(213,110,155,.10);
  --shadow-sm:0 8px 20px rgba(213,110,155,.10);
  --shadow-md:0 16px 38px rgba(213,110,155,.16);
  --shadow-lg:0 28px 70px rgba(160,60,105,.22);
  --glow-pink:0 10px 24px rgba(247,108,166,.34);
  --r-sm:12px;--r-md:16px;--r-lg:20px;--r-xl:24px;--r-pill:999px;
  --ease:cubic-bezier(.22,.61,.36,1);
  --grad-pink:linear-gradient(120deg,#ffa1c4 0%,#f76ca6 52%,#e8477c 100%);
  --grad-soft:linear-gradient(150deg,#fff 0%,#fff5fa 100%);
  --grad-banner:linear-gradient(115deg,#fff0f6 0%,#ffe1ee 48%,#ffd2e6 100%);
  /* alias tema lama agar referensi var() lama tetap jalan */
  --lime:var(--pink);--lime-dark:var(--pink-strong);--orange:var(--pink-strong);
  --blue:var(--pink-soft);--green:var(--emerald-soft);--purple:#f2e8ff;
  --shadow:var(--shadow-md);--confetti:#f76ca6;
}

/* --- 2. Dasar ------------------------------------------------------------ */
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;color:var(--text);font:400 14.5px/1.6 'DM Sans','Segoe UI',system-ui,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--paper);background-image:radial-gradient(760px 420px at 4% -6%,rgba(247,108,166,.13),transparent 62%),radial-gradient(700px 420px at 98% 3%,rgba(255,161,196,.16),transparent 60%);background-repeat:no-repeat;background-attachment:fixed}
h1,h2,h3,h4{font-family:'Space Grotesk','DM Sans',sans-serif;color:var(--ink)}
img{max-width:100%}
button{font-family:inherit}
a{color:inherit}
svg{display:block}
::selection{background:var(--pink-soft);color:var(--ink)}
:focus-visible{outline:2px solid var(--pink-strong);outline-offset:2px;border-radius:10px}
*{scrollbar-width:thin;scrollbar-color:#f3cfdf transparent}
*::-webkit-scrollbar{width:9px;height:9px}
*::-webkit-scrollbar-thumb{background:#f3cfdf;border-radius:99px;border:2px solid transparent;background-clip:content-box}
*::-webkit-scrollbar-thumb:hover{background:#eeb9d1;background-clip:content-box}

/* --- 3. Shell ------------------------------------------------------------ */
.app-shell{display:flex;min-height:100vh}
.sidebar{flex:0 0 262px;width:262px;display:flex;flex-direction:column;padding:26px 18px 20px;background:#fff2f8;border-right:1px solid var(--line)}
.main-content{flex:1;min-width:0;display:flex;flex-direction:column}

/* --- 4. Brand ----------------------------------------------------------- */
.brand{display:flex;align-items:center;gap:11px;margin:0 6px 30px;text-decoration:none;font-family:'Space Grotesk',sans-serif;font-size:22px;font-weight:700;letter-spacing:-.7px;color:var(--pink-strong)}
/* Foto profil brand diambil dari file "Sabrina.png" (1672x941, wajah ada di
   bagian atas-tengah foto). background-size:370% + background-position:50% 0
   memotong foto jadi lingkaran rapi dengan wajah tepat di tengah. */
.brand-logo{flex:0 0 auto;display:block;width:42px;height:42px;border-radius:50%;background-color:#ffe9f2;background-image:url("Sabrina.png");background-repeat:no-repeat;background-size:370% auto;background-position:50% 0;box-shadow:0 6px 16px rgba(213,110,155,.24),0 0 0 3px #fff}
.brand>span:last-child{display:block;line-height:1.06;color:var(--pink-strong)}
.brand>span:last-child span{color:var(--pink-strong)}
.brand small{display:block;margin-top:5px;color:#111;font-family:'DM Sans',sans-serif;font-size:9.5px;font-weight:700;letter-spacing:.3px;text-transform:none}
.brand-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--grad-pink);color:#fff;font-size:17px}

/* --- 5. Navigasi --------------------------------------------------------- */
.sidebar-label,.eyebrow{color:var(--muted);font-size:10px;font-weight:700;letter-spacing:1.3px;text-transform:uppercase}
.sidebar-label{padding:0 14px;margin-bottom:12px}
.nav-list{display:grid;gap:4px}
.nav-item{position:relative;display:flex;align-items:center;gap:12px;width:100%;padding:12px 14px;border:0;border-radius:var(--r-pill);background:transparent;color:var(--text);font:600 13.5px 'DM Sans',sans-serif;text-align:left;text-decoration:none;cursor:pointer;transition:background .18s var(--ease),color .18s var(--ease),transform .18s var(--ease)}
.nav-item:hover{background:#ffe9f2;color:var(--pink-deep);transform:translateX(2px)}
.nav-item.active{background:var(--pink-soft);color:var(--pink-deep);font-weight:700;box-shadow:inset 0 0 0 1px var(--pink-line)}
.nav-icon{display:grid;place-items:center;width:22px;color:var(--pink);transition:color .18s var(--ease)}
.nav-item.active .nav-icon,.nav-item:hover .nav-icon{color:var(--pink-strong)}
.nav-icon svg{width:19px;height:19px}
.profile-nav{margin-top:18px}
.profile-nav::before{content:'';position:absolute;left:4px;right:4px;top:-9px;height:1px;background:var(--line)}
.admin-nav{margin-top:6px}
.sidebar-spacer{flex:1;min-height:22px}
/* --- 6. Kartu sidebar & user chip --------------------------------------- */
.sidebar-card{position:relative;overflow:hidden;margin:20px 0 16px;padding:18px;border-radius:var(--r-lg);background:var(--grad-banner);border:1px solid var(--pink-line)}
.sidebar-card::after{content:'';position:absolute;right:-38px;top:-32px;width:118px;height:118px;border:1px solid #ffc2da;border-radius:50%}
.mini-spark{margin-bottom:10px;color:var(--pink-strong);font-size:19px}
.sidebar-card strong{display:block;color:var(--ink);font-family:'Space Grotesk',sans-serif;font-size:14.5px;line-height:1.32}
.sidebar-card p{margin:14px 0 10px;color:var(--muted);font-size:11px;line-height:1.55}
.sidebar-card p b{color:var(--pink-deep)}
.sidebar-card small{display:block;color:var(--muted);font-size:10px}
.side-progress{height:6px;margin-bottom:8px;border-radius:99px;background:#fff;overflow:hidden;box-shadow:inset 0 0 0 1px var(--pink-line)}
.side-progress span{display:block;width:60%;height:100%;border-radius:99px;background:var(--grad-pink)}
.user-chip{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:var(--r-md);background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-xs)}
.user-chip>div{min-width:0}
.user-chip strong,.user-chip small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.user-chip strong{color:var(--ink);font-size:11.5px}
.user-chip small{margin-top:3px;color:var(--muted);font-size:9.5px}
.avatar{position:relative;overflow:hidden;flex:0 0 36px;display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:var(--grad-pink);color:#fff;font-size:11px;font-weight:700;box-shadow:0 5px 13px rgba(213,110,155,.28)}
.avatar img{display:none;width:100%;height:100%;object-fit:cover}
.avatar.has-image span{display:none}
.avatar.has-image img{display:block}
.more-btn{margin-left:auto;padding:5px 8px;border:0;border-radius:9px;background:transparent;color:var(--muted-2);letter-spacing:2px;cursor:pointer;transition:background .18s var(--ease),color .18s var(--ease)}
.more-btn:hover{background:var(--pink-tint);color:var(--pink-strong)}

/* --- 7. Topbar ---------------------------------------------------------- */
.topbar{position:sticky;top:0;z-index:15;display:flex;align-items:center;justify-content:space-between;gap:16px;height:78px;padding:0 clamp(16px,3.4%,34px);background:rgba(255,246,250,.88);backdrop-filter:blur(12px) saturate(140%);border-bottom:1px solid var(--line);color:var(--muted);font-size:12px}
.breadcrumb{display:inline-flex;align-items:center;gap:9px;color:var(--muted);font-weight:600}
.breadcrumb b{color:var(--pink-line);font-weight:700}
.top-actions{display:flex;align-items:center;gap:14px}
.icon-btn{position:relative;display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--line);border-radius:50%;background:#fff;color:var(--pink-strong);font-size:18px;cursor:pointer;box-shadow:var(--shadow-xs);transition:transform .18s var(--ease),box-shadow .18s var(--ease)}
.icon-btn svg{width:19px;height:19px}
.icon-btn:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm)}
.icon-btn i{position:absolute;right:9px;top:9px;width:7px;height:7px;border-radius:50%;background:var(--pink);box-shadow:0 0 0 2.5px #fff}
.help-btn{display:inline-flex;align-items:center;gap:6px;padding:9px 8px;border:0;border-radius:10px;background:transparent;color:var(--muted);font:600 12px 'DM Sans',sans-serif;cursor:pointer;transition:background .18s var(--ease),color .18s var(--ease)}
.help-btn:hover{background:var(--pink-tint);color:var(--pink-deep)}
.help-btn span{color:var(--pink-strong);font-size:14px}
.auth-button{display:inline-flex;align-items:center;gap:10px;padding:8px 10px 8px 8px;border:1px solid var(--line);border-radius:99px;background:#fff;color:var(--ink);font:700 12.5px 'DM Sans',sans-serif;cursor:pointer;box-shadow:var(--shadow-xs);transition:transform .18s var(--ease),box-shadow .18s var(--ease)}
.auth-button:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm)}
.auth-button img{display:none;width:32px;height:32px;border-radius:50%;object-fit:cover;border:2px solid var(--pink-soft)}
.auth-button.has-image img{display:block}
.mobile-nav-toggle{display:none;place-items:center;width:40px;height:40px;border:1px solid var(--line);border-radius:50%;background:#fff;color:var(--pink-strong);font-size:18px;cursor:pointer;box-shadow:var(--shadow-xs)}
.mobile-nav-toggle svg{width:20px;height:20px}
/* --- 8. Area konten, banner sambutan, & grid dashboard ------------------ */
.page-content{width:100%;max-width:1320px;margin:0 auto;padding:clamp(20px,2.4vw,30px) clamp(16px,3.4%,34px) 34px}
.dashboard{display:grid;grid-template-columns:minmax(0,1fr) 338px;gap:22px;align-items:start}
.dashboard-main{display:grid;gap:22px;min-width:0}
.dashboard-rail{display:grid;gap:18px;min-width:0}
.sim-block{margin-top:0}
.welcome-row{position:relative;overflow:hidden;display:flex;align-items:center;gap:22px;padding:30px 34px;border-radius:var(--r-xl);background:var(--grad-banner);border:1px solid var(--pink-line);box-shadow:var(--shadow-sm)}
.welcome-text{position:relative;z-index:2;min-width:0}
.eyebrow{margin:0 0 8px;color:var(--pink-strong);font-style:italic;letter-spacing:1.1px}
.eyebrow span{color:var(--pink);font-size:12px}
.welcome-row h1{margin:0;font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:clamp(28px,3.6vw,40px);line-height:1.06;letter-spacing:-1.4px;overflow-wrap:anywhere}
.welcome-copy{margin:12px 0 0;color:var(--muted);font-size:13.5px;font-weight:500;line-height:1.6}
.welcome-art{position:absolute;right:20px;bottom:-6px;width:min(330px,42%);pointer-events:none}
.welcome-art svg{width:100%;height:auto}
.welcome-row .streak-card{width:fit-content;margin-top:20px}
.streak-card{display:flex;align-items:center;gap:11px;padding:9px 16px 9px 10px;border-radius:var(--r-pill);background:rgba(255,255,255,.86);border:1px solid var(--pink-line);box-shadow:var(--shadow-xs)}
.streak-icon{flex:0 0 30px;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--pink-soft);color:var(--pink-strong)}
.streak-icon svg{width:17px;height:17px}
.streak-card b,.streak-card span{display:block}
.streak-card b{color:var(--ink);font:700 14px 'Space Grotesk',sans-serif}
.streak-card span{margin-top:1px;color:var(--muted);font-size:10px;font-weight:600}
.streak-dots{display:flex;gap:3px;margin-left:6px}
.streak-dots i{display:block;width:5px;height:5px;border-radius:50%;background:#ffd7e7}
.streak-dots i.done{background:var(--pink-strong)}
/* --- 9. Kartu "Lanjutkan latihan" & tombol ------------------------------ */
.hero-panel{position:relative;overflow:hidden;display:flex;align-items:center;gap:24px;min-height:206px;padding:28px 32px;border-radius:var(--r-xl);background:linear-gradient(120deg,#ff8fb8 0%,#f76ca6 55%,#e8477c 100%);color:#fff;box-shadow:0 16px 34px rgba(232,71,124,.24)}
.hero-panel::before{content:'';position:absolute;inset:0;pointer-events:none;background:radial-gradient(420px 240px at 88% 0%,rgba(255,255,255,.34),transparent 64%)}
.hero-copy{position:relative;z-index:2;max-width:min(430px,52%)}
.pill{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:99px;font-size:9.5px;font-weight:800;letter-spacing:1px;text-transform:uppercase}
.pill.light{border:1px solid rgba(255,255,255,.5);background:rgba(255,255,255,.24);color:#fff}
.pill.dark{background:var(--pink-soft);color:var(--pink-deep)}
.hero-copy h2{margin:14px 0 10px;font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:clamp(22px,2.6vw,29px);line-height:1.1;letter-spacing:-1px;color:#fff}
.hero-copy p{margin:0 0 18px;color:rgba(255,255,255,.92);font-size:12.5px;font-weight:500;line-height:1.6}
.primary-btn,.outline-btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;padding:12px 20px;border:0;border-radius:var(--r-pill);font:700 12.5px 'DM Sans',sans-serif;cursor:pointer;transition:transform .18s var(--ease),box-shadow .18s var(--ease),background .18s var(--ease),border-color .18s var(--ease)}
.primary-btn{background:var(--grad-pink);color:#fff;box-shadow:var(--glow-pink)}
.primary-btn:hover{transform:translateY(-2px);box-shadow:0 14px 28px rgba(232,71,124,.34)}
.outline-btn{border:1px solid var(--line-strong);background:#fff;color:var(--pink-deep);box-shadow:var(--shadow-xs)}
.outline-btn:hover{transform:translateY(-2px);box-shadow:var(--shadow-sm);border-color:var(--pink-line)}
.primary-btn:disabled,.outline-btn:disabled{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}
.primary-btn span,.outline-btn span{font-size:14px}
.hero-panel .outline-btn{border-color:transparent;background:#fff;color:var(--pink-deep);box-shadow:0 10px 22px rgba(150,40,85,.2)}
.hero-score{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;gap:4px;min-width:112px;margin-left:auto;text-align:center}
.hero-score>span{color:rgba(255,255,255,.9);font-size:9px;font-weight:800;letter-spacing:1.1px}
.hero-score>strong{color:#fff;font:700 26px/1 'Space Grotesk',sans-serif}
.hero-score>strong small{color:rgba(255,255,255,.8);font-size:12px}
.circle-progress{position:relative;width:76px;height:76px;margin-top:6px}
.circle-progress svg{width:100%;height:100%;transform:rotate(-90deg)}
.circle-progress circle{fill:none;stroke:rgba(255,255,255,.36);stroke-width:5}
.circle-progress .progress-ring{stroke:#fff;stroke-linecap:round;stroke-dasharray:264;stroke-dashoffset:105}
.circle-progress b{position:absolute;inset:0;display:grid;place-items:center;color:#fff;font:700 13px 'Space Grotesk',sans-serif}

/* --- 10. Ilustrasi buku ------------------------------------------------- */
.hero-book,.book-illustration{position:absolute;z-index:1;display:grid;place-items:center;pointer-events:none}
.hero-book{right:calc(138px + clamp(0px,2vw,40px));top:50%;width:150px;height:126px;transform:translateY(-50%) rotate(-7deg) scale(.78)}
.book-illustration{right:26px;top:20px;width:186px;height:160px;transform:rotate(-7deg)}
.book-pages{position:absolute;width:140px;height:106px;border-radius:8px 18px 18px 8px;background:#fff;box-shadow:8px 8px 0 #ffc2da,16px 15px 0 rgba(160,60,105,.18);transform:skewY(-8deg)}
.book-cover{position:relative;z-index:2;display:flex;flex-direction:column;width:132px;height:102px;padding:15px;border-radius:6px 14px 14px 6px;background:#fff;color:var(--pink-deep);box-shadow:0 14px 26px rgba(150,40,85,.22);transform:translate(-3px,-4px) skewY(-8deg)}
.book-cover span{color:var(--pink-strong);font:800 11.5px 'Space Grotesk',sans-serif;letter-spacing:1.3px}
.book-cover b{margin-top:14px;font:800 12.5px/1.12 'Space Grotesk',sans-serif;letter-spacing:1.1px}
.book-cover small{margin-top:auto;color:var(--muted);font:600 8px 'DM Sans',sans-serif}
.book-illustration .book-pages{width:116px;height:88px}
.book-illustration .book-cover{width:110px;height:86px;padding:12px;background:var(--grad-pink);color:#fff}
.book-illustration .book-cover span,.book-illustration .book-cover small{color:rgba(255,255,255,.9)}
.book-illustration .book-cover b{margin-top:10px;font-size:10px}
.book-illustration .book-cover small{font-size:6.5px}
.sim-illustration{border:0;border-radius:0}
.hero-grid-art{display:none}
/* --- 11. Kartu statistik ------------------------------------------------ */
.stats-row{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.stat{position:relative;overflow:hidden;display:flex;align-items:center;gap:13px;padding:18px 20px;border:1px solid var(--line);border-radius:var(--r-md);background:#fff;box-shadow:var(--shadow-xs);transition:transform .2s var(--ease),box-shadow .2s var(--ease),border-color .2s var(--ease)}
.stat:hover{transform:translateY(-3px);border-color:var(--pink-line);box-shadow:var(--shadow-md)}
.stat-icon,.activity-icon{flex:0 0 42px;display:grid;place-items:center;width:42px;height:42px;border-radius:14px;background:var(--pink-soft);color:var(--pink-strong)}
.stat-icon svg,.activity-icon svg{width:20px;height:20px}
.stat-icon.orange,.activity-icon.orange{background:var(--pink-soft);color:var(--pink-strong)}
.stat-icon.blue,.activity-icon.blue{background:#f4ecff;color:#8b6cf0}
.stat-icon.green,.activity-icon.green{background:var(--emerald-soft);color:#0f9d6f}
.stat small{display:block;margin-bottom:3px;color:var(--muted);font-size:11px;font-weight:600}
.stat strong{color:var(--ink);font:700 19px 'Space Grotesk',sans-serif}
.stat strong i{color:var(--muted-2);font:600 10.5px 'DM Sans',sans-serif;font-style:normal}
.trend{margin-left:auto;padding:5px 9px;border-radius:99px;font-size:10px;font-weight:800;white-space:nowrap}
.trend.up{background:var(--emerald-soft);color:#0f9d6f}
.trend.neutral{background:var(--pink-tint);color:var(--muted);font-weight:700}

/* --- 12. Judul seksi & kartu mata kuliah -------------------------------- */
.section-block{margin-top:0}
.section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}
.section-heading h2{margin:0;font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:clamp(19px,2vw,23px);letter-spacing:-.7px;overflow-wrap:anywhere}
.text-link{display:inline-flex;align-items:center;gap:7px;color:var(--pink-strong);font:700 12px 'DM Sans',sans-serif;text-decoration:none;transition:gap .18s var(--ease),color .18s var(--ease)}
.text-link:hover{gap:11px;color:var(--pink-deep)}
.text-link span{font-size:14px}
.course-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.course-card{position:relative;overflow:hidden;cursor:pointer;display:flex;flex-direction:column;padding:18px;border:1px solid var(--line);border-radius:var(--r-md);background:#fff;box-shadow:var(--shadow-xs);transition:transform .2s var(--ease),box-shadow .2s var(--ease),border-color .2s var(--ease)}
.course-card:hover{transform:translateY(-4px);border-color:var(--pink-line);box-shadow:var(--shadow-md)}
.course-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.course-symbol{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:var(--pink-soft);color:var(--pink-strong)}
.course-symbol svg{width:20px;height:20px}
.course-symbol.purple{background:#f4ecff;color:#8b6cf0}
.course-symbol.green{background:var(--emerald-soft);color:#0f9d6f}
.course-tag{padding:5px 10px;border-radius:99px;background:var(--pink-soft);color:var(--pink-deep);font-size:8.5px;font-weight:800;letter-spacing:.7px;white-space:nowrap}
.course-tag.muted{background:#f8f1f6;color:var(--muted-2)}
.course-card h3{margin:14px 0 4px;font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:15.5px;line-height:1.28;overflow-wrap:anywhere}
.course-card p{margin:0;color:var(--muted-2);font-size:10.5px;font-weight:600}
.course-bottom{display:flex;align-items:center;gap:10px;margin-top:16px}
.tiny-progress{flex:1;height:6px;border-radius:99px;background:#fdeaf3;overflow:hidden}
.tiny-progress span{display:block;height:100%;border-radius:99px;background:var(--grad-pink)}
.course-bottom b{color:var(--pink-strong);font:800 10.5px 'DM Sans',sans-serif}
.course-action{display:inline-flex;align-items:center;gap:8px;width:fit-content;margin-top:14px;padding:9px 16px;border-radius:var(--r-pill);background:var(--pink-tint);border:1px solid var(--pink-line);color:var(--pink-deep);font:700 11.5px 'DM Sans',sans-serif;transition:background .18s var(--ease),color .18s var(--ease),gap .18s var(--ease)}
.course-action i{font-style:normal;font-size:13px}
.course-card:hover .course-action{background:var(--grad-pink);color:#fff;gap:12px}
.course-card.featured{border-color:var(--pink-line);background:linear-gradient(160deg,#fff 0%,#fff2f8 100%)}
.course-card.featured .course-symbol{background:var(--grad-pink);color:#fff;box-shadow:var(--glow-pink)}
.add-course{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:186px;border:1.5px dashed var(--line-strong);border-radius:var(--r-md);background:transparent;color:var(--muted);cursor:pointer;transition:border-color .18s var(--ease),background .18s var(--ease)}
.add-course:hover{border-color:var(--pink);background:var(--pink-tint)}
.add-course span{margin-bottom:7px;font-size:27px;font-weight:300}
.add-course b{color:var(--ink);font-size:11px}
.add-course small{margin-top:4px;font-size:9px}
/* --- 13. Kartu simulasi ------------------------------------------------- */
.simulation-card{position:relative;overflow:hidden;min-height:196px;padding:24px 28px;border-radius:var(--r-lg);background:linear-gradient(120deg,#fff 0%,#fff3f9 100%);border:1px solid var(--pink-line);box-shadow:var(--shadow-sm)}
.simulation-card::before{content:'';position:absolute;inset:0;pointer-events:none;background:radial-gradient(340px 220px at 90% 6%,rgba(255,180,214,.5),transparent 66%)}
.simulation-card>*{position:relative;z-index:2}
.simulation-card h3{margin:16px 0 6px;font:700 22px 'Space Grotesk',sans-serif}
.simulation-card p{margin:0 0 20px;color:var(--muted);font-size:11.5px;font-weight:600}
.simulation-card .outline-btn{border-color:transparent;background:var(--grad-pink);color:#fff;box-shadow:var(--glow-pink)}
.simulation-accent{position:absolute;z-index:1;width:200px;height:200px;border:1px solid #ffd0e3;border-radius:50%;right:-46px;top:18px;pointer-events:none}
.simulation-accent::after{content:'';position:absolute;inset:24px;border:1px solid #ffdcea;border-radius:50%}
.simulation-subject-label{position:relative;z-index:3;display:block;margin:14px 0;color:var(--text);font-size:11.5px;font-weight:700}
.simulation-subject-label select{display:block;width:min(320px,100%);margin-top:7px;padding:11px 13px;border:1px solid var(--line-strong);border-radius:var(--r-pill);background:#fff;color:var(--ink);font:700 12.5px 'DM Sans',sans-serif;cursor:pointer;outline:0;transition:border-color .18s var(--ease),box-shadow .18s var(--ease)}
.simulation-subject-label select:focus{border-color:var(--pink);box-shadow:0 0 0 4px rgba(247,108,166,.16)}

/* --- 14. Panel kutipan -------------------------------------------------- */
.quote-panel{position:relative;overflow:hidden;display:flex;align-items:center;gap:16px;padding:24px 30px;border-radius:var(--r-xl);background:var(--grad-banner);border:1px solid var(--pink-line)}
.quote-mark{color:var(--pink);font:800 46px/0.7 'Space Grotesk',sans-serif}
.quote-panel p{position:relative;z-index:2;margin:0;color:var(--pink-deep);font-family:'Space Grotesk',sans-serif;font-size:clamp(14px,1.5vw,17px);font-style:italic;font-weight:600;line-height:1.55}
.quote-art{position:absolute;right:14px;bottom:-4px;width:min(240px,32%);pointer-events:none}
.quote-art svg{width:100%;height:auto}

/* --- 15. Kartu profil (kolom kanan) ------------------------------------- */
.profile-card{display:flex;flex-direction:column;align-items:center;padding:26px 22px 22px;border:1px solid var(--line);border-radius:var(--r-lg);background:#fff;box-shadow:var(--shadow-sm);text-align:center}
.profile-card-avatar{position:relative;display:grid;place-items:center;width:88px;height:88px;overflow:hidden;border-radius:50%;background:var(--grad-pink);color:#fff;font:700 24px 'Space Grotesk',sans-serif;box-shadow:0 10px 24px rgba(213,110,155,.28),0 0 0 6px #fff5fa}
.profile-card-avatar img{display:none;width:100%;height:100%;object-fit:cover}
.profile-card-avatar.has-image span{display:none}
.profile-card-avatar.has-image img{display:block}
.profile-card>strong{display:block;margin-top:14px;color:var(--ink);font-family:'Space Grotesk',sans-serif;font-size:18px;font-weight:700;overflow-wrap:anywhere}
.profile-badge{display:inline-block;margin-top:8px;padding:5px 13px;border-radius:99px;background:var(--pink-soft);color:var(--pink-deep);font-size:10px;font-weight:800;letter-spacing:.4px}
.profile-rows{display:grid;gap:2px;width:100%;margin-top:18px;border-top:1px solid var(--line);padding-top:14px}
.profile-row{display:flex;align-items:center;gap:11px;padding:9px 2px;text-align:left}
.profile-row .row-icon{flex:0 0 30px;display:grid;place-items:center;width:30px;height:30px;border-radius:10px;background:var(--pink-tint);color:var(--pink-strong)}
.profile-row .row-icon svg{width:16px;height:16px}
.profile-row b{color:var(--muted);font-size:11px;font-weight:700;min-width:92px}
.profile-row span:last-child{margin-left:auto;color:var(--ink);font-size:11.5px;font-weight:700;text-align:right;overflow-wrap:anywhere}
.profile-cta{width:100%;margin-top:18px}

/* --- 16. Riwayat hasil -------------------------------------------------- */
.activity-panel{min-width:0}
.activity-list{padding:2px 16px;border:1px solid var(--line);border-radius:var(--r-lg);background:#fff;box-shadow:var(--shadow-xs)}
.activity-item{display:flex;align-items:center;gap:11px;padding:13px 0;border-bottom:1px solid var(--line)}
.activity-item:last-child{border-bottom:0}
.activity-item>div{flex:1;min-width:0}
.activity-item b,.activity-item small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.activity-item b{color:var(--ink);font-size:12px;font-weight:700}
.activity-item small{margin-top:3px;color:var(--muted-2);font-size:10px;font-weight:600}
.activity-item>strong{flex:0 0 auto;padding:5px 10px;border-radius:99px;background:var(--pink-soft);color:var(--pink-deep);font:800 12px 'Space Grotesk',sans-serif;white-space:nowrap}
.activity-item>strong small{display:inline;color:var(--pink-strong);font-size:9px;font-weight:700}
/* --- 17. Ranking -------------------------------------------------------- */
.ranking-section{margin-top:22px}
.ranking-period{display:inline-flex;align-items:center;gap:7px;padding:7px 14px;border:1px solid var(--pink-line);border-radius:99px;background:#fff;color:var(--pink-strong);font:700 11px 'DM Sans',sans-serif}
.ranking-panel{display:grid;grid-template-columns:.8fr 1.2fr;gap:20px;padding:20px;border:1px solid var(--line);border-radius:var(--r-lg);background:#fff;box-shadow:var(--shadow-sm)}
.ranking-intro{display:flex;gap:14px;align-items:flex-start;padding:20px;border-radius:var(--r-md);background:var(--grad-banner);border:1px solid var(--pink-line)}
.ranking-crown{flex:0 0 42px;display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:var(--grad-pink);color:#fff;font-size:19px;box-shadow:var(--glow-pink)}
.ranking-intro h3{margin:0;font:700 17px 'Space Grotesk',sans-serif}
.ranking-intro p{margin:7px 0 0;color:var(--muted);font-size:11.5px;font-weight:600;line-height:1.55}
.ranking-list{display:grid;gap:8px;align-content:start}
.ranking-item{display:flex;align-items:center;gap:11px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-pill);background:#fff;transition:transform .18s var(--ease),border-color .18s var(--ease),box-shadow .18s var(--ease)}
.ranking-item:hover{transform:translateX(3px);border-color:var(--pink-line);box-shadow:var(--shadow-xs)}
.rank-number{flex:0 0 26px;display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--pink-tint);color:var(--muted);font:800 11px 'Space Grotesk',sans-serif}
.ranking-item.first{border-color:#ffd9a8;background:linear-gradient(120deg,#fffdf6,#fff6e7)}
.ranking-item.first .rank-number{background:linear-gradient(140deg,#ffe7b0,#f7c25a);color:#7a4a06}
.ranking-item.current{border-color:var(--pink-line);background:var(--pink-tint)}
.ranking-avatar{flex:0 0 36px;display:grid;place-items:center;width:36px;height:36px;border-radius:50%;overflow:hidden;background:var(--grad-pink);color:#fff;font-size:11px;font-weight:800}
.ranking-user{flex:1;min-width:0}
.ranking-user b,.ranking-user small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ranking-user b{color:var(--ink);font-size:12px;font-weight:700}
.ranking-user small{margin-top:2px;color:var(--muted-2);font-size:10px;font-weight:600}
.ranking-item>strong{color:var(--pink-deep);font:800 13.5px 'Space Grotesk',sans-serif;white-space:nowrap}
.ranking-item>strong small{color:var(--muted-2);font:700 9.5px 'DM Sans',sans-serif}

/* --- 18. Footer --------------------------------------------------------- */
.site-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:26px;padding-top:16px;border-top:1px solid var(--line);color:var(--muted-2);font-size:11px;font-weight:600}
.footer-note{display:inline-flex;align-items:center;gap:6px;color:var(--pink-strong)}
/* --- 19. Modal: dasar & simulasi ujian ---------------------------------- */
.modal-backdrop{position:fixed;inset:0;z-index:40;display:none;place-items:center;padding:20px;overflow-y:auto;background:rgba(96,32,64,.42);backdrop-filter:blur(6px);animation:fadeIn .2s var(--ease)}
.modal-backdrop.open{display:grid}
.close-modal{position:absolute;right:16px;top:15px;z-index:3;display:grid;place-items:center;width:34px;height:34px;border:1px solid var(--line);border-radius:50%;background:#fff;color:var(--muted);font-size:19px;line-height:1;cursor:pointer;transition:background .18s var(--ease),color .18s var(--ease),transform .18s var(--ease)}
.close-modal:hover{background:var(--pink-tint);color:var(--pink-strong);transform:rotate(90deg)}
.quiz-modal{position:relative;width:min(600px,100%);max-height:calc(100vh - 40px);overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;padding:clamp(20px,3vw,30px);border-radius:var(--r-xl);background:#fff;box-shadow:var(--shadow-lg);animation:popIn .26s var(--ease)}
.quiz-header{display:flex;align-items:center;justify-content:space-between;gap:12px}
.timer{display:inline-flex;align-items:center;gap:7px;padding:7px 14px;border-radius:99px;background:var(--pink-soft);color:var(--pink-deep);font:800 16px 'Space Grotesk',sans-serif}
.quiz-progress{height:7px;margin:20px 0 24px;border-radius:99px;background:#fdeaf3;overflow:hidden}
.quiz-progress span{display:block;width:20%;height:100%;border-radius:99px;background:var(--grad-pink);transition:width .3s var(--ease)}
.question-count{color:var(--muted-2);font-size:9.5px;font-weight:800;letter-spacing:1.1px}
.question-count b{color:var(--pink-strong)}
.quiz-modal h2{margin:12px 0 20px;font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:clamp(18px,2.3vw,23px);line-height:1.3;letter-spacing:-.5px;max-width:48ch;overflow-wrap:anywhere}
.answers{display:grid;gap:10px}
.answers button{position:relative;display:block;width:100%;padding:14px 16px 14px 54px;border:1px solid var(--line);border-radius:var(--r-md);background:#fff;color:var(--text);font:600 12.5px/1.5 'DM Sans',sans-serif;text-align:left;cursor:pointer;transition:border-color .18s var(--ease),background .18s var(--ease),transform .18s var(--ease),box-shadow .18s var(--ease)}
.answers button::before{content:'A';position:absolute;left:15px;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--pink-tint);color:var(--pink-strong);font:800 11px 'Space Grotesk',sans-serif}
.answers button:nth-child(2)::before{content:'B'}
.answers button:nth-child(3)::before{content:'C'}
.answers button:nth-child(4)::before{content:'D'}
.answers button:hover{border-color:var(--pink-line);background:var(--pink-tint);transform:translateX(2px)}
.answers button.selected{border-color:var(--pink);background:var(--pink-soft);box-shadow:0 0 0 3px rgba(247,108,166,.16)}
.answers button.selected::before{background:var(--grad-pink);color:#fff}
.answers button.correct{border-color:#8fdcb8;background:var(--emerald-soft);box-shadow:0 0 0 3px rgba(18,185,129,.12)}
.answers button.correct::before{content:'✓';background:var(--emerald);color:#fff}
.answers button.wrong{border-color:#f9b3cd;background:#fff1f7}
.answers button.wrong::before{content:'✕';background:var(--pink-strong);color:#fff}
.answers button:disabled{cursor:default;transform:none}
.answer-feedback{margin-top:16px;padding:15px 17px;border:1px solid #b9e7cd;border-radius:var(--r-md);background:linear-gradient(160deg,#f2fdf7,#e9faf1);color:var(--text);font:600 12.5px/1.65 'DM Sans',sans-serif;text-align:left;animation:popIn .26s var(--ease)}
.answer-feedback[hidden]{display:none}
.answer-feedback .feedback-title{display:flex;align-items:center;gap:8px;margin-bottom:9px;color:#0f9d6f;font:700 13.5px 'Space Grotesk',sans-serif}
.answer-feedback .feedback-answer{margin:0 0 7px;color:var(--ink);font-weight:700}
.answer-feedback .feedback-answer b{color:#0f9d6f}
.answer-feedback .feedback-explain{color:var(--muted);font-weight:600}
.answer-feedback .feedback-explain b{display:block;margin-bottom:4px;color:#0f9d6f;font-weight:800}
.answer-feedback.is-wrong{border-color:#f9c9dc;background:linear-gradient(160deg,#fff6fa,#fdeaf3)}
.answer-feedback.is-wrong .feedback-title,.answer-feedback.is-wrong .feedback-answer b,.answer-feedback.is-wrong .feedback-explain b{color:var(--pink-strong)}
.check-btn{display:inline-flex;align-items:center;gap:8px;padding:10px 17px;border:1px solid #b9e7cd;border-radius:99px;background:linear-gradient(140deg,#eafaf1,#ddf6e8);color:#0f9d6f;font:800 12px 'DM Sans',sans-serif;cursor:pointer;transition:transform .18s var(--ease),box-shadow .18s var(--ease)}
.check-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 10px 22px rgba(18,185,129,.2)}
.check-btn:disabled{opacity:.45;cursor:not-allowed}
.quiz-footer{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-top:22px;color:var(--muted);font-size:11px;font-weight:600}
.quiz-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.quiz-actions button{margin:0}
.next-btn,.back-btn,.restart-btn{padding:11px 16px}
/* --- 20. Modal: kondisi selesai ----------------------------------------- */
.quiz-modal.quiz-complete{padding:36px 30px 26px;text-align:center;background:linear-gradient(150deg,#fff 0%,#fff2f8 60%,#ffeaf4 100%)}
.quiz-modal.quiz-complete .quiz-header{justify-content:center}
.quiz-modal.quiz-complete .quiz-progress{opacity:.5}
.quiz-modal.quiz-complete .question-count{margin-top:20px}
.quiz-modal.quiz-complete h2{margin:10px 0 18px;font-size:24px}
.quiz-modal.quiz-complete .check-btn{display:none}
.quiz-modal.quiz-complete .quiz-footer{display:flex;flex-direction:column;align-items:center;gap:18px;margin-top:10px}
.quiz-modal.quiz-complete #answerState{display:flex;flex-direction:column;align-items:center;gap:14px;color:var(--ink);font-size:12px}
.result-score{color:var(--pink-strong);font:800 62px/1 'Space Grotesk',sans-serif}
.result-label{margin-top:-6px;color:var(--muted);font:800 10.5px 'DM Sans',sans-serif;letter-spacing:1.5px;text-transform:uppercase}
.result-stats{display:flex;justify-content:center;gap:12px;width:100%}
.result-stat{min-width:112px;padding:13px 16px;border:1px solid var(--line);border-radius:var(--r-md);background:#fff;box-shadow:var(--shadow-xs)}
.result-stat b{display:block;color:var(--ink);font:800 22px/1 'Space Grotesk',sans-serif}
.result-stat span{display:block;margin-top:6px;color:var(--muted);font:700 10px 'DM Sans',sans-serif}
.celebration{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.celebration span{position:absolute;top:42%;left:50%;width:7px;height:18px;border-radius:2px;background:var(--confetti);opacity:0;transform:rotate(var(--rotation));animation:confetti-fall 1.6s ease-out forwards}
.celebration span:nth-child(3n){width:5px;height:12px;border-radius:50%}
.celebration span:nth-child(4n){width:9px;height:4px}
.celebration span:nth-child(1){--x:-200px;--y:-160px;--rotation:22deg;--confetti:#f76ca6}
.celebration span:nth-child(2){--x:-140px;--y:-105px;--rotation:-38deg;--confetti:#a98cff}
.celebration span:nth-child(3){--x:-76px;--y:-180px;--rotation:70deg;--confetti:#f5a524}
.celebration span:nth-child(4){--x:20px;--y:-140px;--rotation:-15deg;--confetti:#ffa1c4}
.celebration span:nth-child(5){--x:96px;--y:-186px;--rotation:45deg;--confetti:#12b981}
.celebration span:nth-child(6){--x:172px;--y:-112px;--rotation:-55deg;--confetti:#f76ca6}
.celebration span:nth-child(7){--x:-220px;--y:-42px;--rotation:35deg;--confetti:#f5a524}
.celebration span:nth-child(8){--x:-114px;--y:-38px;--rotation:-65deg;--confetti:#12b981}
.celebration span:nth-child(9){--x:-28px;--y:-70px;--rotation:14deg;--confetti:#a98cff}
.celebration span:nth-child(10){--x:66px;--y:-56px;--rotation:-30deg;--confetti:#f76ca6}
.celebration span:nth-child(11){--x:144px;--y:-76px;--rotation:60deg;--confetti:#f5a524}
.celebration span:nth-child(12){--x:224px;--y:-38px;--rotation:-20deg;--confetti:#ffa1c4}
.celebration span:nth-child(13){--x:-182px;--y:34px;--rotation:70deg;--confetti:#12b981}
.celebration span:nth-child(14){--x:182px;--y:24px;--rotation:-45deg;--confetti:#a98cff}
@keyframes confetti-fall{0%{opacity:1;transform:translate(0,0) rotate(0)}100%{opacity:0;transform:translate(var(--x),var(--y)) rotate(var(--rotation))}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes popIn{from{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:none}}
/* --- 21. Panel admin & bank soal ---------------------------------------- */
.admin-modal{position:relative;width:min(1010px,100%);max-height:calc(100vh - 40px);overflow:auto;padding:clamp(20px,3vw,32px);border-radius:var(--r-xl);background:#fff;box-shadow:var(--shadow-lg);animation:popIn .26s var(--ease)}
.admin-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;padding-bottom:18px;margin-bottom:20px;border-bottom:1px solid var(--line)}
.admin-header h2{margin:12px 0 6px;font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:clamp(21px,2.6vw,28px);letter-spacing:-.9px}
.admin-header p,.form-heading span,.question-bank span{color:var(--muted);font-size:11.5px;font-weight:600}
.admin-status{display:block;margin-top:12px;color:var(--pink-strong);font-size:11.5px;font-weight:800}
.admin-layout{display:grid;grid-template-columns:1.28fr .72fr;gap:20px}
.admin-form,.import-column{padding:20px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--grad-soft)}
.form-heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:16px}
.form-heading h3,.bank-heading h3{color:var(--ink);font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:16.5px;margin:0}
.admin-form label,.auth-modal label,.profile-edit-form label,.preview-card label{display:block;margin-bottom:13px;color:var(--text);font-size:11px;font-weight:700}
.admin-form input,.admin-form textarea,.admin-form select,.auth-modal input,.profile-edit-form input,.password-modal input,.preview-card input,.preview-card textarea{display:block;width:100%;margin-top:6px;padding:11px 14px;border:1px solid var(--line-strong);border-radius:var(--r-pill);background:#fff;color:var(--ink);font:600 12.5px 'DM Sans',sans-serif;outline:0;transition:border-color .18s var(--ease),box-shadow .18s var(--ease)}
.admin-form textarea,.preview-card textarea,.admin-form select{border-radius:var(--r-sm)}
.admin-form input:focus,.admin-form textarea:focus,.admin-form select:focus,.auth-modal input:focus,.profile-edit-form input:focus,.password-modal input:focus,.preview-card input:focus,.preview-card textarea:focus{border-color:var(--pink);box-shadow:0 0 0 4px rgba(247,108,166,.16)}
.admin-form textarea,.preview-card textarea{resize:vertical;min-height:44px;line-height:1.55}
.option-grid,.form-row{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.full-field{grid-column:1/-1}
#importText{min-height:220px;resize:vertical}
.upload-zone{display:block;padding:28px 18px;border:1.5px dashed #ffc2da;border-radius:var(--r-md);background:var(--pink-tint);text-align:center;cursor:pointer;transition:background .2s var(--ease),border-color .2s var(--ease),transform .2s var(--ease)}
.upload-zone:hover{border-color:var(--pink);background:var(--pink-soft);transform:translateY(-2px)}
.upload-zone input{display:none}
.upload-icon{display:grid;place-items:center;width:46px;height:46px;margin:0 auto 12px;border-radius:50%;background:var(--grad-pink);color:#fff;font-size:20px;box-shadow:var(--glow-pink)}
.upload-zone strong,.upload-zone small{display:block}
.upload-zone strong{color:var(--ink);font-size:12px}
.upload-zone small{margin-top:7px;color:var(--muted);font-size:10px;font-weight:600;line-height:1.55}
.import-status{margin-top:12px;padding:12px 14px;border:1px solid var(--line);border-left:3px solid var(--pink);border-radius:var(--r-sm);background:var(--pink-tint);color:var(--muted);font-size:11.5px;font-weight:700;line-height:1.5;overflow-wrap:anywhere}
.format-note{margin-top:12px;padding:14px;border:1px solid var(--pink-line);border-radius:var(--r-sm);background:#fff}
.format-note b,.format-note span{display:block;font-size:10.5px}
.format-note b{color:var(--ink);font-weight:800}
.format-note span{margin-top:5px;color:var(--muted);font-weight:600;line-height:1.55;overflow-wrap:anywhere}
.import-text-label{margin-bottom:13px;color:var(--text);font-size:11px;font-weight:700}
.question-bank{margin-top:20px;padding:20px;border:1px solid var(--line);border-radius:var(--r-md);background:#fff}
.bank-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}
.question-list{display:grid;gap:8px}
.question-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--line)}
.question-row:first-child{border-top:0}
.question-number{flex:0 0 28px;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--pink-soft);color:var(--pink-deep);font-weight:800}
.question-row div:nth-child(2){flex:1;min-width:0}
.question-row strong,.question-row small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.question-row strong{color:var(--ink);font-size:12.5px}
.question-row small{margin-top:3px;color:var(--muted-2);font-size:10.5px;font-weight:600}
.question-delete{padding:6px 12px;border:1px solid var(--line-strong);border-radius:99px;background:#fff;color:var(--muted);font:700 10.5px 'DM Sans',sans-serif;cursor:pointer;white-space:nowrap;transition:border-color .18s var(--ease),background .18s var(--ease),color .18s var(--ease)}
.question-delete:hover{border-color:var(--pink);background:var(--pink-tint);color:var(--pink-deep)}
.question-empty{padding:22px;border:1.5px dashed var(--line-strong);border-radius:var(--r-md);background:var(--pink-tint);color:var(--muted);font-size:11.5px;font-weight:600;text-align:center;overflow-wrap:anywhere}
.question-filters{display:grid;gap:8px}
.question-filters select{border:1px solid var(--line)!important;border-radius:var(--r-pill)!important;background:#fff!important;color:var(--ink)!important;font:700 12px 'DM Sans',sans-serif!important;cursor:pointer;box-shadow:var(--shadow-xs)}
/* Baris soal ditulis app.js sebagai inline style, jadi perlu dipaksa agar ikut tema */
.question-bank .question-row{display:grid!important;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:12px;padding:12px!important;margin-bottom:0!important;border:1px solid var(--line)!important;border-radius:var(--r-md)!important;background:#fff!important;max-width:100%;min-width:0;box-sizing:border-box;overflow:hidden;transition:border-color .18s var(--ease),background .18s var(--ease),transform .18s var(--ease)}
.question-bank .question-row:hover{border-color:var(--pink-line)!important;background:var(--pink-tint)!important;transform:translateX(2px)}
.question-bank .question-row>div{min-width:0}
.question-bank .question-row strong{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink);font-size:12.5px;line-height:1.35}
.question-bank .question-row small{display:block;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted-2);font-size:10.5px;line-height:1.35}
.question-bank .question-number{display:inline-block;min-width:18px;width:auto;height:auto;border-radius:0;background:none;color:var(--pink-strong);font-weight:800}
.question-bank .question-empty{padding:14px 6px;border:0;background:none;color:var(--muted);font-size:12px}

/* --- 22. Modal password ------------------------------------------------ */
.password-modal{position:relative;width:min(392px,100%);padding:30px;border-radius:var(--r-xl);background:#fff;text-align:center;box-shadow:var(--shadow-lg);animation:popIn .26s var(--ease)}
.password-modal .upload-icon{margin:0 auto 14px}
.password-modal h2{margin:0 0 8px;font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:24px;letter-spacing:-.7px}
.password-modal p{margin:0 0 20px;color:var(--muted);font-size:12px;font-weight:600}
.password-modal input{text-align:center}
.password-modal .primary-btn{width:100%;margin-top:14px}
.password-error{min-height:16px;margin-top:8px;color:var(--pink-strong);font-size:10.5px;font-weight:700}
/* --- 23. Modal profil -------------------------------------------------- */
.profile-modal{position:relative;width:min(452px,100%);max-height:calc(100vh - 40px);overflow:auto;border-radius:var(--r-xl);background:#fff;box-shadow:var(--shadow-lg);animation:popIn .26s var(--ease)}
.profile-cover{position:relative;height:118px;background:linear-gradient(120deg,#ffa1c4 0%,#f76ca6 55%,#e8477c 100%)}
.profile-cover::after{content:'';position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.16) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.16) 1px,transparent 1px);background-size:32px 32px;opacity:.7}
.profile-avatar-large{position:absolute;left:26px;bottom:-34px;z-index:2;display:grid;place-items:center;width:82px;height:82px;overflow:hidden;border:5px solid #fff;border-radius:50%;background:var(--grad-pink);color:#fff;font:800 22px 'Space Grotesk',sans-serif;box-shadow:var(--shadow-md)}
.profile-avatar-large img{display:none;width:100%;height:100%;object-fit:cover}
.profile-avatar-large.has-image span{display:none}
.profile-avatar-large.has-image img{display:block}
.avatar-upload-button{position:absolute;left:90px;bottom:-26px;z-index:3;display:grid;place-items:center;width:30px;height:30px;border:3px solid #fff;border-radius:50%;background:var(--grad-pink);color:#fff;font-size:12px;font-weight:700;cursor:pointer;box-shadow:var(--shadow-sm);transition:transform .18s var(--ease)}
.avatar-upload-button:hover{transform:scale(1.08)}
.avatar-upload-button input{display:none}
.profile-content{padding:50px 26px 26px}
.profile-content h2{margin:16px 0 3px;font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:26px;letter-spacing:-.9px}
.profile-username{margin:0;color:var(--pink-strong);font-size:12px;font-weight:700}
.profile-details{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:24px}
.profile-details div{padding:14px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--pink-tint)}
.profile-details span,.profile-details strong{display:block}
.profile-details span{color:var(--muted);font-size:9.5px;font-weight:800;letter-spacing:.5px;text-transform:uppercase}
.profile-details strong{margin-top:6px;color:var(--ink);font:700 16px 'Space Grotesk',sans-serif;overflow-wrap:anywhere}
.profile-note{margin-top:16px;padding:13px 14px;border:1px dashed var(--pink-line);border-radius:var(--r-md);background:var(--pink-tint);color:var(--muted);font-size:10.5px;font-weight:700;line-height:1.55}
.profile-edit-button{width:100%;margin-top:18px}
.profile-logout-button{width:100%;margin-top:10px}
.profile-edit-form{display:none;margin-top:18px}
#profileModal.editing .profile-view{display:none}
#profileModal.editing .profile-edit-form{display:block}
.profile-form-actions{display:flex;gap:9px;margin-top:16px}
.profile-form-actions button{flex:1;margin:0}

/* --- 24. Modal preview ekstraksi --------------------------------------- */
.preview-modal{position:relative;width:min(860px,100%);max-height:calc(100vh - 40px);overflow:auto;padding:clamp(20px,3vw,28px);border-radius:var(--r-xl);background:#fff;box-shadow:var(--shadow-lg);animation:popIn .26s var(--ease)}
.preview-list{display:grid;gap:12px}
.preview-card{padding:16px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--pink-tint)}
.preview-options{display:grid;grid-template-columns:1fr;gap:10px;margin-top:9px}
.preview-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}

/* --- 25. Modal akun (login/register) ------------------------------------ */
.auth-modal{position:relative;width:min(436px,calc(100vw - 28px));max-height:calc(100vh - 40px);overflow:auto;padding:28px;border-radius:var(--r-xl);background:#fff;box-shadow:var(--shadow-lg);animation:popIn .26s var(--ease)}
.auth-modal h2{margin:14px 0 6px;font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:27px;letter-spacing:-1px}
.auth-modal p{margin:0;color:var(--muted);font-size:11.5px;font-weight:700}
.auth-tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin:20px 0;padding:4px;border-radius:99px;background:var(--pink-tint);border:1px solid var(--line)}
.auth-tab{padding:10px;border:0;border-radius:99px;background:transparent;color:var(--muted);font:800 11.5px 'DM Sans',sans-serif;cursor:pointer;transition:background .18s var(--ease),color .18s var(--ease),box-shadow .18s var(--ease)}
.auth-tab.active{background:var(--grad-pink);color:#fff;box-shadow:var(--glow-pink)}
.register-fields{display:none}
#authModal.register-mode .register-fields{display:block}
.auth-message{min-height:18px;margin:6px 0;color:var(--pink-strong);font-size:10.5px;font-weight:700}
.auth-config-note{margin-top:14px;color:var(--muted);font-size:10px}
.auth-modal .primary-btn{width:100%}
/* --- 26. Responsif ------------------------------------------------------ */
@media(max-width:1400px){
  /* ruang tengah kartu hero tidak cukup: sembunyikan buku agar tidak menimpa teks/skor */
  .hero-book{display:none}
}
@media(max-width:1180px){
  .dashboard{grid-template-columns:minmax(0,1fr) 306px}
  .course-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:1024px){
  .dashboard{grid-template-columns:1fr}
  .dashboard-rail{position:static;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
  .course-grid{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:900px){
  .course-grid{grid-template-columns:repeat(2,1fr)}
  .stats-row{grid-template-columns:1fr 1fr}
  .admin-layout{grid-template-columns:1fr}
  .dashboard-rail{grid-template-columns:1fr}
}
@media(max-width:760px){
  body{overflow-x:hidden}
  .sidebar{position:fixed;z-index:30;inset:0 auto 0 0;flex-basis:auto;width:min(290px,84vw);transform:translateX(-105%);transition:transform .26s var(--ease);overflow-y:auto;box-shadow:22px 0 48px rgba(120,40,80,.24)}
  .sidebar.mobile-open{transform:translateX(0)}
  .mobile-nav-toggle{display:grid}
  .topbar{height:66px;gap:10px;padding:0 16px}
  .topbar .help-btn{display:none}
  .page-content{padding:18px 16px 26px}
  .dashboard,.dashboard-main{gap:16px}
  .welcome-row{align-items:flex-start;padding:24px 22px 26px}
  .welcome-text{max-width:100%}
  .welcome-art{right:-12px;bottom:-4px;width:62%;opacity:.55}
  .welcome-row h1{font-size:clamp(25px,7vw,32px);letter-spacing:-1.1px}
  .welcome-copy{font-size:12.5px;line-height:1.55}
  .welcome-row .streak-card{margin-top:16px}
  .desktop-only{display:none}
  .hero-panel{flex-direction:column;align-items:flex-start;gap:0;min-height:0;padding:24px 22px}
  .hero-copy{max-width:100%}
  .hero-score{align-self:flex-start;margin:20px 0 0;min-width:104px}
  .hero-book{display:block;right:4px;top:auto;bottom:8px;width:188px;height:150px;transform:scale(.5) rotate(-7deg);transform-origin:bottom right}
  .stats-row{grid-template-columns:1fr;gap:11px}
  .section-heading{gap:12px}
  .course-grid{grid-template-columns:1fr;gap:12px}
  .simulation-card{padding:22px}
  .book-illustration{right:6px;top:auto;bottom:8px;transform:scale(.62) rotate(-7deg);transform-origin:bottom right}
  .simulation-subject-label select{width:100%}
  .quote-panel{padding:20px 22px}
  .quote-art{right:-18px;width:46%;opacity:.5}
  .profile-card{padding:22px 18px 18px}
  .profile-row b{min-width:74px}
  .ranking-panel{grid-template-columns:1fr;padding:16px}
  .modal-backdrop{padding:14px}
  .quiz-modal,.admin-modal,.preview-modal{padding:20px 18px;max-height:calc(100vh - 28px)}
  .quiz-modal h2{font-size:19px;line-height:1.3;margin:12px 0 18px}
  .answers button{padding:13px 14px 13px 50px;font-size:12.5px;line-height:1.45}
  .answer-feedback{padding:13px 14px;font-size:12px}
  .quiz-footer{flex-direction:column;align-items:stretch;gap:12px;margin-top:20px}
  .quiz-actions{width:100%;flex-direction:column;gap:9px}
  .quiz-actions button{width:100%}
  .result-stats{flex-wrap:wrap}
  .result-stat{flex:1 1 46%}
  .option-grid,.form-row{grid-template-columns:1fr}
  .preview-actions{flex-direction:column}
  .preview-actions button{width:100%}
  .site-footer{flex-direction:column;align-items:flex-start;gap:6px}
}
@media(max-width:560px){
  .topbar .icon-btn{display:none}
  .breadcrumb{font-size:11px}
  .auth-button{padding:7px 9px 7px 7px;font-size:11.5px}
}
@media(max-width:430px){
  .quiz-modal h2{font-size:17px}
  .answers button{font-size:12px;padding:12px 12px 12px 46px}
  .result-score{font-size:50px}
  .welcome-row h1{font-size:25px}
  .profile-details{grid-template-columns:1fr}
  .stat{padding:15px}
  .stat strong{font-size:17px}
}

/* --- 28. Asisten AI: Sabrina Ai & Parafrase ----------------------------- */
.ai-nav-label{margin:16px 0 10px}
.ai-nav{background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-xs)}
.ai-screen{position:fixed;inset:0;z-index:70;display:none;flex-direction:column;background:var(--paper);background-image:radial-gradient(720px 420px at 6% -8%,rgba(247,108,166,.14),transparent 62%),radial-gradient(680px 400px at 98% 4%,rgba(169,140,255,.14),transparent 60%);background-repeat:no-repeat}
.ai-screen.open{display:flex;animation:fadeIn .2s var(--ease)}
.ai-screen-bar{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px clamp(14px,3vw,28px);background:#fff;border-bottom:1px solid var(--line);box-shadow:var(--shadow-xs)}
.ai-screen-id{display:flex;align-items:center;gap:11px;min-width:0}
.ai-orb{flex:0 0 auto;display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--grad-pink);color:#fff;font-size:17px;box-shadow:var(--glow-pink)}
.ai-orb.alt{background:linear-gradient(120deg,#c3a8ff 0%,#a98cff 55%,#8b6bf0 100%);box-shadow:0 10px 24px rgba(169,140,255,.4)}
/* Logo Sabrina Ai memakai foto Sabrina.png (1672x941, wajah di bagian atas-tengah).
   Nilai 370% + posisi 50% 0 sama seperti logo brand agar potongannya rapi. */
.ai-orb.photo{background-color:#ffe9f2;background-image:url("Sabrina.png");background-repeat:no-repeat;background-size:370% auto;background-position:50% 0;color:transparent;box-shadow:0 6px 16px rgba(213,110,155,.24),0 0 0 3px #fff}
.ai-avatar.ai-avatar-photo{background-color:#ffe9f2;background-image:url("Sabrina.png");background-repeat:no-repeat;background-size:370% auto;background-position:50% 0;color:transparent;overflow:hidden;box-shadow:0 5px 13px rgba(213,110,155,.28),0 0 0 2px #fff}
.ai-screen-id b{display:block;font:700 15.5px 'Space Grotesk',sans-serif;color:var(--ink)}
.ai-screen-id small{display:block;color:var(--muted);font:600 11px 'DM Sans',sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ai-screen-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ai-chip{display:inline-flex;align-items:center;gap:6px;padding:8px 13px;border:1px solid var(--line);border-radius:var(--r-pill);background:#fff;color:var(--muted);font:700 11.5px 'DM Sans',sans-serif;cursor:pointer;transition:background .18s var(--ease),color .18s var(--ease),border-color .18s var(--ease)}
.ai-chip:hover{background:var(--pink-tint);color:var(--pink-deep)}
.ai-chip.is-on{background:var(--pink-soft);border-color:var(--pink-line);color:var(--pink-deep)}
.ai-lang{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font:700 11.5px 'DM Sans',sans-serif}
.ai-lang select{padding:7px 10px;border:1px solid var(--line);border-radius:var(--r-pill);background:#fff;color:var(--text);font:700 11.5px 'DM Sans',sans-serif}
.ai-close{display:grid;place-items:center;width:36px;height:36px;border:1px solid var(--line);border-radius:50%;background:#fff;color:var(--muted);font-size:19px;line-height:1;cursor:pointer;transition:background .18s var(--ease),color .18s var(--ease),transform .18s var(--ease)}
.ai-close:hover{background:var(--pink-tint);color:var(--pink-strong);transform:rotate(90deg)}
.ai-back{display:inline-flex;align-items:center;gap:6px;padding:8px 13px;border:1px solid var(--line);border-radius:var(--r-pill);background:#fff;color:var(--pink-deep);font:700 11.5px 'DM Sans',sans-serif;cursor:pointer;transition:background .18s var(--ease),color .18s var(--ease),transform .18s var(--ease)}
.ai-back:hover{background:var(--pink-tint);transform:translateX(-2px)}
.ai-back-icon{font-size:14px;line-height:1}
.ai-body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:22px clamp(14px,3vw,28px)}
.ai-thread{width:min(880px,100%);margin:0 auto;display:grid;gap:16px;align-content:start}
.ai-empty{width:min(880px,100%);margin:26px auto;text-align:center;color:var(--muted)}
.ai-empty .ai-orb{margin:0 auto 14px}
.ai-empty h2{margin:0 0 6px;font-size:clamp(19px,2.4vw,24px);letter-spacing:-.5px}
.ai-empty p{margin:0 auto;max-width:46ch;font-size:12.5px}
.ai-msg{display:flex;gap:11px;align-items:flex-start}
.ai-msg.user{flex-direction:row-reverse}
.ai-avatar{flex:0 0 auto;display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--grad-pink);color:#fff;font:800 12px 'Space Grotesk',sans-serif;box-shadow:var(--shadow-xs)}
.ai-msg.user .ai-avatar{background:#fff;border:1px solid var(--line-strong);color:var(--pink-deep)}
.ai-bubble{max-width:min(660px,86%);padding:13px 15px;border:1px solid var(--line);border-radius:var(--r-md);background:#fff;color:var(--text);font-size:13.5px;line-height:1.7;box-shadow:var(--shadow-xs);overflow-wrap:anywhere}
.ai-msg.user .ai-bubble{background:var(--grad-pink);border-color:transparent;color:#fff;box-shadow:var(--glow-pink)}
.ai-bubble.is-error{border-color:#f6c9d3;background:#fff6f8;color:var(--pink-deep)}
.ai-bubble>*:first-child{margin-top:0}
.ai-bubble>*:last-child{margin-bottom:0}
.ai-bubble p{margin:0 0 10px}
.ai-bubble b,.ai-bubble strong{color:var(--ink);font-weight:700}
.ai-msg.user .ai-bubble b,.ai-msg.user .ai-bubble strong{color:#fff}
.ai-bubble ul,.ai-bubble ol{margin:0 0 10px;padding-left:20px}
.ai-bubble li{margin:4px 0}
.ai-table{width:100%;margin:0 0 10px;border-collapse:collapse;font-size:12.5px}
.ai-table th,.ai-table td{padding:7px 9px;border:1px solid var(--line);text-align:left;vertical-align:top}
.ai-table th{background:var(--pink-tint);color:var(--ink);font-weight:700}
.ai-table tr:nth-child(even) td{background:#fffafd}
.ai-table .is-right{text-align:right}
.ai-table .is-center{text-align:center}
/* --- Grafik dari blok "chart" --- */
.ai-chart{margin:0 0 12px;padding:12px;border:1px solid var(--line);border-radius:var(--r-md);background:#fffafd}
.ai-chart-title{display:block;margin:0 0 8px;color:var(--ink);font:700 12.5px 'DM Sans',sans-serif}
.ai-chart-svg{display:block;width:100%;height:auto;overflow:visible}
.ai-chart-axis{fill:#95798a;font:600 11px 'DM Sans',sans-serif}
.ai-chart-value{fill:#e8477c;font:700 11px 'DM Sans',sans-serif}
.ai-chart-legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:10px}
.ai-chart-legend span{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font:600 11.5px 'DM Sans',sans-serif}
.ai-chart-legend i{flex:0 0 auto;width:10px;height:10px;border-radius:3px}
.ai-chart-legend b{color:var(--ink)}
.ai-chart-legend em{color:var(--muted-2);font-style:normal}
/* --- Diagram dari blok "mermaid" --- */
.ai-diagram{margin:0 0 12px;padding:10px;border:1px solid var(--line);border-radius:var(--r-md);background:#fff;overflow-x:auto}
.ai-diagram-loading{padding:14px;color:var(--muted);font:600 11.5px 'DM Sans',sans-serif;text-align:center}
.ai-diagram-svg svg{display:block;max-width:100%;height:auto;margin:0 auto}
.ai-diagram-fallback b{display:block;margin-bottom:6px;color:var(--muted);font:800 10px 'DM Sans',sans-serif;letter-spacing:.8px;text-transform:uppercase}
.ai-diagram-fallback pre{margin:0}
.ai-bubble code{padding:2px 6px;border-radius:7px;background:var(--pink-tint);color:var(--pink-deep);font:600 12px 'Consolas','Courier New',monospace}
.ai-bubble pre{margin:0 0 10px;padding:12px 13px;border:1px solid var(--line);border-radius:var(--r-sm);background:#fffafd;overflow-x:auto}
.ai-bubble pre code{padding:0;background:none;color:var(--text);font-size:12px;line-height:1.6}
.ai-bubble a{color:var(--pink-deep);font-weight:700;text-decoration:none;border-bottom:1px dashed var(--pink-line)}
.ai-math{margin:0 0 10px;padding:10px 13px;border:1px dashed var(--pink-line);border-radius:var(--r-sm);background:var(--pink-tint);color:var(--ink);font:600 12.5px/1.8 'Consolas','Courier New',monospace;overflow-x:auto}
.ai-msg.user .ai-bubble .ai-math{background:rgba(255,255,255,.2);border-color:rgba(255,255,255,.55);color:#fff}
.ai-meta{margin-top:9px;color:var(--muted-2);font:700 10.5px 'DM Sans',sans-serif}
.ai-sources{margin-top:11px;padding-top:10px;border-top:1px dashed var(--line);display:grid;gap:6px}
.ai-sources b{color:var(--muted);font:800 10px 'DM Sans',sans-serif;letter-spacing:.8px;text-transform:uppercase}
.ai-source{display:flex;gap:7px;align-items:flex-start;padding:7px 9px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--pink-tint);color:var(--pink-deep);font:600 11.5px/1.5 'DM Sans',sans-serif;text-decoration:none;overflow-wrap:anywhere}
.ai-source:hover{background:#fff;border-color:var(--line-strong)}
.ai-source span{flex:0 0 auto;font-weight:800}

.ai-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.ai-mini{padding:6px 11px;border:1px solid var(--line);border-radius:var(--r-pill);background:#fff;color:var(--muted);font:700 10.5px 'DM Sans',sans-serif;cursor:pointer;transition:background .18s var(--ease),color .18s var(--ease)}
.ai-mini:hover{background:var(--pink-tint);color:var(--pink-deep)}
.ai-mini.is-done{background:var(--emerald-soft);border-color:#bde9d8;color:#0d8b62}
.ai-typing{display:inline-flex;gap:5px;align-items:center;padding:4px 0}
.ai-typing i{width:7px;height:7px;border-radius:50%;background:var(--pink);animation:aiBlink 1.1s infinite ease-in-out}
.ai-typing i:nth-child(2){animation-delay:.18s}
.ai-typing i:nth-child(3){animation-delay:.36s}
@keyframes aiBlink{0%,80%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}
.ai-composer{flex:0 0 auto;padding:12px clamp(14px,3vw,28px) 14px;background:#fff;border-top:1px solid var(--line);box-shadow:0 -8px 22px rgba(213,110,155,.07)}
.ai-suggestions,.ai-tools{display:flex;gap:8px;flex-wrap:wrap;max-width:880px;margin:0 auto 10px}
.ai-suggest,.ai-mode{padding:7px 12px;border:1px solid var(--line);border-radius:var(--r-pill);background:#fff;color:var(--muted);font:700 11.5px 'DM Sans',sans-serif;cursor:pointer;transition:background .18s var(--ease),color .18s var(--ease),border-color .18s var(--ease),box-shadow .18s var(--ease)}
.ai-suggest:hover,.ai-mode:hover{background:var(--pink-tint);color:var(--pink-deep)}
.ai-mode.is-active{background:var(--grad-pink);border-color:transparent;color:#fff;box-shadow:var(--glow-pink)}
.ai-composer form{display:flex;gap:10px;align-items:flex-end;max-width:880px;margin:0 auto}
.ai-composer textarea{flex:1;min-height:48px;max-height:180px;padding:13px 15px;border:1px solid var(--line);border-radius:var(--r-md);background:#fffafd;color:var(--text);font:400 13.5px/1.6 'DM Sans',sans-serif;resize:none;transition:border-color .18s var(--ease),box-shadow .18s var(--ease)}
.ai-composer textarea:focus{outline:none;border-color:var(--pink-line);box-shadow:0 0 0 3px rgba(247,108,166,.13)}
.ai-send{flex:0 0 auto;display:inline-flex;align-items:center;gap:7px;padding:14px 20px;border:none;border-radius:var(--r-md);background:var(--grad-pink);color:#fff;font:800 12.5px 'DM Sans',sans-serif;cursor:pointer;box-shadow:var(--glow-pink);transition:transform .18s var(--ease),filter .18s var(--ease)}
.ai-send:hover{transform:translateY(-1px);filter:brightness(1.04)}
.ai-send:disabled{opacity:.6;cursor:progress;transform:none}
.ai-foot-note{max-width:880px;margin:9px auto 0;color:var(--muted-2);font:600 10.5px 'DM Sans',sans-serif;text-align:center}
body.ai-open{overflow:hidden}
@media(max-width:700px){
  .ai-body{padding:16px 12px}
  .ai-composer{padding:10px 12px 12px}
  .ai-bubble{max-width:100%}
  .ai-suggestions,.ai-tools{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px}
  .ai-suggest,.ai-mode{white-space:nowrap}
  .ai-screen-id small{display:none}
  .ai-back{padding:8px 11px}
  .ai-back-text{display:none}
  .ai-table th,.ai-table td{padding:6px 7px;font-size:11.5px}
  .ai-composer form{flex-direction:column;align-items:stretch}
  .ai-send{justify-content:center}
}

/* --- 27. Aksesibilitas -------------------------------------------------- */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
}

