/**
 * Kids Education App - Main Stylesheet
 * Extracted from kids.html for better maintainability and caching
 */

/* ==================== Reset & Variables ==================== */
*{margin:0;padding:0;box-sizing:border-box}
:root{
    --primary:linear-gradient(135deg,#667eea,#764ba2);
    --success:linear-gradient(135deg,#4facfe,#00f2fe);
    --warning:linear-gradient(135deg,#fa709a,#fee140);
    --story:linear-gradient(135deg,#a8edea,#fed6e3);
    --quiz:linear-gradient(135deg,#d299c2,#fef9d7);
    --habit:linear-gradient(135deg,#89f7fe,#66a6ff);
    --draw:linear-gradient(135deg,#ffecd2,#fcb69f);
    --chat:linear-gradient(135deg,#a18cd1,#fbc2eb);
    --video:linear-gradient(135deg,#ff6b6b,#feca57);
    --bg:#F8FAFF;
    --card:#FFF;
    --text:#2D3436;
    --muted:#B2BEC3;
    --shadow:0 8px 30px rgba(102,126,234,.12);
    --radius:20px
}

/* ==================== Base ==================== */
body{font-family:'Nunito',-apple-system,BlinkMacSystemFont,sans-serif;background:var(--bg);min-height:100vh;color:var(--text)}

/* ==================== Decorative Blobs ==================== */
.blob{position:fixed;border-radius:50%;filter:blur(80px);opacity:.4;pointer-events:none;animation:float 20s ease-in-out infinite}
.b1{width:400px;height:400px;background:var(--primary);top:-150px;right:-100px}
.b2{width:300px;height:300px;background:var(--warning);bottom:-80px;left:-80px;animation-delay:-7s}
@keyframes float{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(-20px,20px) scale(.95)}}

/* ==================== App Layout ==================== */
.app{max-width:480px;margin:0 auto;padding:16px;padding-bottom:100px;position:relative;z-index:1}

/* ==================== Header ==================== */
.header{display:flex;align-items:center;justify-content:space-between;padding:20px 0}
.user{display:flex;align-items:center;gap:12px}
.avatar{width:52px;height:52px;border-radius:50%;background:var(--primary);display:flex;align-items:center;justify-content:center;font-size:26px;box-shadow:var(--shadow)}
.user h2{font-size:16px;font-weight:700}
.user p{font-size:12px;color:var(--muted)}
.hbtn{width:44px;height:44px;border-radius:50%;background:var(--card);border:none;box-shadow:0 2px 8px rgba(0,0,0,.08);cursor:pointer;font-size:20px}

/* ==================== Hero Section ==================== */
.hero{background:var(--primary);border-radius:28px;padding:24px;margin-bottom:24px;color:#fff;position:relative;overflow:hidden}
.hero::before{content:'';position:absolute;top:-50%;right:-20%;width:180px;height:180px;background:rgba(255,255,255,.1);border-radius:50%}
.hc{display:flex;align-items:center;gap:16px;position:relative;z-index:1}
.mascot{width:80px;height:80px;background:rgba(255,255,255,.2);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:44px;animation:bounce 3s ease-in-out infinite}
@keyframes bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
.hero h1{font-size:20px;font-weight:800;margin-bottom:4px}
.hero p{font-size:13px;opacity:.9}

/* ==================== Stats ==================== */
.stats{display:flex;gap:10px;margin-top:16px}
.stat{flex:1;background:rgba(255,255,255,.15);border-radius:16px;padding:12px;text-align:center}
.sv{font-size:20px;font-weight:800}
.sl{font-size:10px;opacity:.8}

/* ==================== Section Title ==================== */
.st{font-size:16px;font-weight:700;margin:20px 0 14px;display:flex;align-items:center;gap:8px}

/* ==================== Cards Grid ==================== */
.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:24px}
.card{background:var(--card);border-radius:var(--radius);padding:18px;cursor:pointer;transition:all .3s;box-shadow:0 2px 12px rgba(0,0,0,.06);position:relative;overflow:hidden}
.card:hover{transform:translateY(-4px);box-shadow:var(--shadow)}
.card::before{content:'';position:absolute;top:0;left:0;right:0;height:4px;opacity:0;transition:opacity .3s}
.card:hover::before{opacity:1}
.card.story::before{background:var(--story)}
.card.quiz::before{background:var(--quiz)}
.card.habit::before{background:var(--habit)}
.card.draw::before{background:var(--draw)}
.card.chat{grid-column:span 2;display:flex;align-items:center;gap:14px}
.card.chat::before{background:var(--chat)}

/* ==================== Card Icons ==================== */
.ci{width:52px;height:52px;border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:26px;margin-bottom:12px}
.card.story .ci{background:var(--story)}
.card.quiz .ci{background:var(--quiz)}
.card.habit .ci{background:var(--habit)}
.card.draw .ci{background:var(--draw)}
.card.chat .ci{background:var(--chat);margin-bottom:0;width:58px;height:58px;font-size:30px}

/* ==================== Card Content ==================== */
.ct{font-size:15px;font-weight:700;margin-bottom:2px}
.cd{font-size:11px;color:var(--muted)}
.badge{position:absolute;top:12px;right:12px;padding:3px 8px;border-radius:12px;font-size:9px;font-weight:700;background:var(--warning);color:#fff}
.cc{flex:1}
.status{display:flex;align-items:center;gap:6px;margin-top:4px}
.dot{width:6px;height:6px;border-radius:50%;background:#00D26A;animation:pulse 2s infinite}
@keyframes pulse{50%{opacity:.5}}
.stxt{font-size:10px;color:var(--muted)}
.arrow{width:36px;height:36px;border-radius:50%;background:var(--bg);display:flex;align-items:center;justify-content:center;font-size:16px}

/* ==================== Tasks ==================== */
.tasks{display:flex;flex-direction:column;gap:10px}
.task{background:var(--card);border-radius:16px;padding:14px;display:flex;align-items:center;gap:12px;box-shadow:0 2px 8px rgba(0,0,0,.04);cursor:pointer}
.task.done{background:linear-gradient(135deg,#f0fff4,#dcfce7)}
.ti{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:20px}
.tinfo{flex:1}
.tn{font-size:13px;font-weight:700}
.tr{font-size:10px;color:var(--muted)}
.tc{width:26px;height:26px;border-radius:50%;border:2px solid #ddd;background:var(--bg);display:flex;align-items:center;justify-content:center;font-size:12px;color:transparent}
.task.done .tc{background:var(--success);border:none;color:#fff}

/* ==================== Bottom Navigation ==================== */
.nav{position:fixed;bottom:0;left:0;right:0;background:rgba(255,255,255,.95);backdrop-filter:blur(20px);padding:10px 20px;padding-bottom:calc(10px + env(safe-area-inset-bottom));display:flex;justify-content:space-around;box-shadow:0 -4px 20px rgba(0,0,0,.06);z-index:100}
.ni{display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 16px;border-radius:16px;cursor:pointer}
.ni.active{background:var(--primary)}
.ni span:first-child{font-size:22px}
.ni.active span:first-child{filter:brightness(10)}
.nl{font-size:10px;font-weight:600;color:var(--muted)}
.ni.active .nl{color:#fff}

/* ==================== Modal ==================== */
.modal{position:fixed;inset:0;background:rgba(0,0,0,.5);backdrop-filter:blur(8px);z-index:200;display:none;align-items:flex-end;justify-content:center}
.modal.active{display:flex}
.mbox{background:var(--bg);border-radius:28px 28px 0 0;width:100%;max-width:500px;height:70vh;max-height:70vh;overflow:hidden;animation:slide .3s ease;display:flex;flex-direction:column;transition:all .3s cubic-bezier(.4,0,.2,1)}
.mbox.fullscreen{height:100vh;max-height:100vh;border-radius:0}
@keyframes slide{from{transform:translateY(100%)}}
.mhandle{width:40px;height:5px;background:rgba(0,0,0,.15);border-radius:3px;margin:10px auto 6px;cursor:grab;flex-shrink:0}
.mhandle:active{cursor:grabbing}
.mhead{padding:14px 20px;background:var(--card);border-bottom:1px solid rgba(0,0,0,.06);display:flex;align-items:center;justify-content:space-between}
.mtitle{font-size:17px;font-weight:700;display:flex;align-items:center;gap:8px}
.mclose{width:34px;height:34px;border-radius:50%;border:none;background:var(--bg);cursor:pointer;font-size:16px}
.mbody{flex:1;overflow-y:auto;padding:20px;min-height:0}
#storyM .mbody{overflow:hidden;display:flex;flex-direction:column}

/* ==================== Story Modal ==================== */
.themes{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px}
.theme{background:var(--card);border-radius:16px;padding:14px 10px;text-align:center;cursor:pointer;border:2px solid transparent;transition:all .2s}
.theme:hover{transform:translateY(-2px)}
.theme.sel{border-color:#667eea;background:#f5f3ff}
.thicon{font-size:28px;margin-bottom:4px}
.thname{font-size:11px;font-weight:600}

/* ==================== Buttons ==================== */
.btn{width:100%;padding:14px;border-radius:16px;border:none;font-size:14px;font-weight:700;cursor:pointer;margin-bottom:14px}
.btn-primary{background:var(--primary);color:#fff;box-shadow:0 6px 20px rgba(102,126,234,.3)}
.btn:disabled{opacity:.6;cursor:not-allowed}

/* ==================== Story Output ==================== */
.output{background:var(--card);border-radius:16px;padding:20px;min-height:160px}
.otxt{font-size:14px;line-height:1.7}
.loading{text-align:center;padding:30px}
.spinner{font-size:40px;animation:spin 1.5s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* ==================== Quiz ==================== */
.topics{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.topic{padding:8px 14px;border-radius:20px;font-size:12px;font-weight:600;cursor:pointer;border:2px solid transparent}
.topic.sci{background:#dbeafe;color:#1d4ed8}
.topic.nat{background:#dcfce7;color:#15803d}
.topic.spa{background:#f3e8ff;color:#7c3aed}
.topic.geo{background:#fef3c7;color:#b45309}
.topic.his{background:#fce7f3;color:#be185d}
.topic.sel{border-color:currentColor;transform:scale(1.05)}
.qcard{background:var(--card);border-radius:var(--radius);padding:20px;margin-bottom:16px;box-shadow:var(--shadow)}
.qhead{display:flex;justify-content:space-between;margin-bottom:14px}
.qnum{padding:5px 12px;background:var(--primary);color:#fff;border-radius:16px;font-size:11px;font-weight:700}
.qscore{font-size:13px;color:var(--muted)}
.qq{font-size:17px;font-weight:700;margin-bottom:16px;line-height:1.4}
.opts{display:flex;flex-direction:column;gap:8px}
.opt{padding:14px 16px;border-radius:14px;border:2px solid rgba(0,0,0,.06);background:var(--bg);cursor:pointer;font-size:13px;font-weight:500;transition:all .2s}
.opt:hover{border-color:#667eea;background:#f5f3ff}
.opt.sel{border-color:#667eea;background:#f5f3ff}
.opt.correct{border-color:#22c55e;background:#f0fdf4}
.opt.wrong{border-color:#ef4444;background:#fef2f2}
.exp{margin-top:14px;padding:14px;border-radius:12px;background:#eff6ff;font-size:13px;line-height:1.5;display:none}
.exp.show{display:block;animation:fadeIn .3s}
@keyframes fadeIn{from{opacity:0;transform:translateY(-8px)}}
.qbtns{display:flex;gap:10px}
.qbtn{flex:1;padding:12px;border-radius:14px;border:none;font-size:13px;font-weight:700;cursor:pointer}
.qbtn.sec{background:var(--card);color:#666}
.qbtn.pri{background:var(--success);color:#fff}

/* ==================== Habits ==================== */
.habits{display:flex;flex-direction:column;gap:10px}
.habit{background:var(--card);border-radius:16px;padding:16px;display:flex;align-items:center;gap:12px}
.habit.done{background:linear-gradient(135deg,#f0fdf4,#dcfce7)}
.hicon{width:46px;height:46px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:24px}
.hinfo{flex:1}
.hn{font-size:14px;font-weight:700}
.hs{font-size:11px;color:var(--muted)}
.hs span{color:#f59e0b;font-weight:700}
.hc2{width:30px;height:30px;border-radius:50%;border:2px solid #ddd;background:var(--bg);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;color:transparent}
.habit.done .hc2{background:var(--success);border:none;color:#fff}
.addbtn{width:100%;padding:14px;border-radius:14px;border:2px dashed #ddd;background:transparent;font-size:13px;font-weight:600;color:var(--muted);cursor:pointer;margin-top:10px}
.addbtn:hover{border-color:#667eea;color:#667eea;background:#f5f3ff}

/* ==================== Drawing Canvas ==================== */
.cbox{background:var(--card);border-radius:var(--radius);padding:14px}
.toolbar{display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap;align-items:center}
.colors{display:flex;gap:5px}
.color{width:28px;height:28px;border-radius:50%;border:2px solid transparent;cursor:pointer}
.color.sel{border-color:#333;transform:scale(1.1)}
.divider{width:1px;height:20px;background:#ddd;margin:0 6px}
.tool{padding:6px 12px;border-radius:10px;border:1px solid #ddd;background:var(--bg);font-size:11px;font-weight:600;cursor:pointer}
.tool.sel{background:var(--primary);color:#fff;border:none}
#canvas{width:100%;height:260px;border-radius:14px;border:2px solid rgba(0,0,0,.06);background:#fff;cursor:crosshair;touch-action:none}
.cbtns{display:flex;gap:8px;margin-top:12px}
.cbtn{flex:1;padding:12px;border-radius:12px;border:none;font-size:12px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:4px}
.cbtn.clr{background:#fef2f2;color:#ef4444}
.cbtn.ai{background:var(--chat);color:#fff}
.cbtn.save{background:var(--success);color:#fff}
.fb{margin-top:14px;padding:14px;background:var(--card);border-radius:14px;display:none}
.fb.show{display:block}
.fbt{font-size:13px;font-weight:700;margin-bottom:6px}
.fbtxt{font-size:13px;line-height:1.5;color:#666}

/* ==================== Chat Modal ==================== */
.chatm .mbox{height:70vh;max-height:70vh}
.chatm .mbox.fullscreen{height:100vh;max-height:100vh}
.chtopics{padding:10px 16px;background:var(--card);border-bottom:1px solid rgba(0,0,0,.06);display:flex;gap:8px;overflow-x:auto}
.chtopic{padding:7px 12px;border-radius:16px;font-size:11px;font-weight:600;white-space:nowrap;cursor:pointer;border:2px solid transparent}
.chtopic.sci{background:#dbeafe;color:#1d4ed8}
.chtopic.nat{background:#dcfce7;color:#15803d}
.chtopic.spa{background:#f3e8ff;color:#7c3aed}
.chtopic.lif{background:#fef3c7;color:#b45309}
.chtopic.sel{border-color:currentColor}
.msgs{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:14px}
.bubble{max-width:85%;padding:12px 16px;border-radius:18px;font-size:13px;line-height:1.5;position:relative;animation:bubbleIn .3s}
@keyframes bubbleIn{from{opacity:0;transform:translateY(8px)}}
.bubble.ai{background:var(--card);align-self:flex-start;border-bottom-left-radius:4px;box-shadow:0 2px 8px rgba(0,0,0,.06)}
.bubble.user{background:var(--primary);color:#fff;align-self:flex-end;border-bottom-right-radius:4px}
.bav{position:absolute;bottom:-8px;width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;background:var(--card);box-shadow:0 2px 6px rgba(0,0,0,.1)}
.bubble.ai .bav{left:-6px}
.bubble.user .bav{right:-6px}
.inarea{padding:14px 16px;background:var(--card);border-top:1px solid rgba(0,0,0,.06)}
.quick{display:flex;gap:6px;margin-bottom:10px;overflow-x:auto}
.qk{padding:7px 12px;border-radius:16px;border:1px solid #ddd;background:var(--bg);font-size:11px;font-weight:600;white-space:nowrap;cursor:pointer}
.qk:hover{border-color:#667eea;background:#f5f3ff}
.inrow{display:flex;gap:8px;align-items:center}
.voice{width:44px;height:44px;border-radius:50%;border:none;background:var(--success);color:#fff;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center}
.voice.rec{animation:vp 1s infinite;background:linear-gradient(135deg,#ef4444,#f97316)}
@keyframes vp{50%{box-shadow:0 0 0 10px rgba(239,68,68,0)}}
.chin{flex:1;padding:12px 16px;border-radius:22px;border:2px solid rgba(0,0,0,.06);background:var(--bg);font-size:13px;outline:none;font-family:inherit}
.chin:focus{border-color:#667eea}
.send{width:44px;height:44px;border-radius:50%;border:none;background:var(--primary);color:#fff;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center}

/* ==================== Video List ==================== */
.vlist{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
@media(min-width:420px){.vlist{grid-template-columns:repeat(2,1fr)}}
.vitem{background:var(--card);border-radius:18px;overflow:hidden;cursor:pointer;box-shadow:0 4px 16px rgba(0,0,0,.08);transition:all .3s;position:relative}
.vitem:hover{transform:translateY(-5px) scale(1.02);box-shadow:0 12px 30px rgba(102,126,234,.2)}
.vitem:active{transform:scale(.98)}
.vthumb{position:relative;padding-top:56.25%;background:linear-gradient(135deg,#667eea 0%,#764ba2 50%,#f093fb 100%);overflow:hidden}
.vthumb.has-cover{background:none}
.vthumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .4s}
.vitem:hover .vthumb img{transform:scale(1.08)}
.vplay{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:48px;height:48px;background:rgba(255,255,255,.95);border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 20px rgba(0,0,0,.25);transition:all .3s;z-index:2}
.vplay::after{content:'';width:0;height:0;border-left:16px solid #667eea;border-top:10px solid transparent;border-bottom:10px solid transparent;margin-left:4px}
.vitem:hover .vplay{transform:translate(-50%,-50%) scale(1.1);box-shadow:0 8px 25px rgba(0,0,0,.3)}
.vthumb .vicon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:44px;z-index:1;filter:drop-shadow(0 4px 8px rgba(0,0,0,.2))}
.vdur-tag{position:absolute;bottom:8px;right:8px;padding:4px 8px;background:rgba(0,0,0,.75);color:#fff;border-radius:6px;font-size:10px;font-weight:700;backdrop-filter:blur(4px);z-index:2}
.vnew{position:absolute;top:8px;left:8px;padding:4px 8px;background:linear-gradient(135deg,#ff6b6b,#feca57);color:#fff;border-radius:8px;font-size:9px;font-weight:700;z-index:2;animation:pulse2 2s infinite}
@keyframes pulse2{0%,100%{opacity:1}50%{opacity:.7}}
.vmeta{padding:12px 14px}
.vtitle{font-size:13px;font-weight:700;margin-bottom:3px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.vdesc{font-size:10px;color:var(--muted);line-height:1.4;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.vtags{display:flex;gap:4px;margin-top:8px;flex-wrap:wrap}
.vtag{padding:3px 7px;border-radius:6px;font-size:9px;font-weight:600}
.vtag.edu{background:#dbeafe;color:#1d4ed8}
.vtag.fun{background:#fef3c7;color:#b45309}
.vtag.art{background:#fce7f3;color:#be185d}

/* ==================== Video Player (Fullscreen) ==================== */
.vplayer{position:fixed;inset:0;background:#000;z-index:300;display:none;flex-direction:column;overflow:hidden}
.vplayer.active{display:flex}
.vslider{position:relative;width:100%;height:100%;overflow:hidden}
.vslide{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;will-change:transform;backface-visibility:hidden;-webkit-backface-visibility:hidden;transform:translateY(0)}
.vslide video{width:100%;height:100%;object-fit:contain;background:#000}
.vslide video::-webkit-media-controls{display:none!important}
.vslide video::-webkit-media-controls-enclosure{display:none!important}
@keyframes fadeInV{from{opacity:0}}
.vplayer-header{position:absolute;top:0;left:0;right:0;padding:16px 20px;background:linear-gradient(to bottom,rgba(0,0,0,.7),transparent);display:flex;align-items:center;justify-content:space-between;z-index:10}
.vplayer-title{color:#fff;font-size:16px;font-weight:700;display:flex;align-items:center;gap:10px}
.vplayer-title span{font-size:20px}
.vclose{width:40px;height:40px;border-radius:50%;border:none;background:rgba(255,255,255,.15);color:#fff;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(10px);transition:all .3s}
.vclose:hover{background:rgba(255,255,255,.3);transform:scale(1.1)}
.vplayer-content{flex:1;display:flex;align-items:center;justify-content:center;padding:60px 0}
.vplayer video{width:100%;max-height:100%;background:#000}
@media(min-width:768px){.vplayer video{max-width:90%;max-height:80vh;border-radius:12px}}
.vplayer-footer{position:absolute;bottom:70px;left:0;right:80px;padding:10px 14px;background:transparent;pointer-events:none;z-index:30}
.vplayer-footer .vinfo{pointer-events:none}
.vinfo{color:#fff;max-width:500px;text-shadow:0 1px 4px rgba(0,0,0,.8)}
.vinfo h3{font-size:14px;font-weight:600;margin-bottom:2px;display:flex;align-items:center;gap:5px}
.vinfo h3::before{content:'🎬';font-size:12px}
.vinfo p{font-size:11px;opacity:.7;line-height:1.3;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.vplayer-actions{position:absolute;right:16px;bottom:150px;display:flex;flex-direction:column;align-items:center;gap:20px;z-index:25}
.vaction{width:48px;height:48px;border-radius:50%;border:none;font-size:24px;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;transition:all .2s;background:rgba(255,255,255,.15);color:#fff;backdrop-filter:blur(8px)}
.vaction:hover{transform:scale(1.1);background:rgba(255,255,255,.25)}
.vaction:active{transform:scale(0.95)}
.vaction.liked{color:#ff4757}
.vaction.collected{color:#feca57}
.vaction-item{display:flex;flex-direction:column;align-items:center}
.vaction-label{font-size:11px;font-weight:600;margin-top:4px;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.5)}
.vswipe-hint{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);padding:14px 24px;background:rgba(0,0,0,.75);color:#fff;border-radius:14px;font-size:14px;font-weight:700;opacity:0;transition:opacity .15s;pointer-events:none;z-index:20;backdrop-filter:blur(8px)}
.vswipe-hint.show{opacity:1}
.vpause-hint{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:70px;height:70px;background:rgba(0,0,0,.6);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:32px;opacity:0;transition:opacity .2s;pointer-events:none;z-index:15}
.vpause-hint.show{opacity:1}
.vempty{text-align:center;padding:40px 20px;color:var(--muted)}
.vempty-icon{font-size:48px;margin-bottom:12px}
.vempty p{font-size:13px}

/* ==================== Story Tabs ==================== */
.stabs{display:flex;gap:8px;margin-bottom:20px;padding:5px;background:#f1f3f8;border-radius:16px;flex-shrink:0}
.stab{flex:1;padding:12px 14px;border-radius:12px;font-size:13px;font-weight:700;text-align:center;cursor:pointer;transition:all .25s ease;color:#666;background:transparent}
.stab:hover{color:#667eea;background:rgba(102,126,234,.08)}
.stab.active{color:#fff;background:linear-gradient(135deg,#667eea,#764ba2);box-shadow:0 4px 12px rgba(102,126,234,.35)}
.stab-icon{display:block;font-size:18px;margin-bottom:3px}
.story-content{display:none;flex:1;overflow-y:auto;min-height:0}
.story-content.active{display:flex;flex-direction:column;animation:fadeIn .3s ease-out}

/* ==================== Video Grid (in story modal) ==================== */
.video-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;flex:1}
.vcard{background:var(--card);border-radius:16px;overflow:hidden;cursor:pointer;box-shadow:0 3px 12px rgba(0,0,0,.06);transition:all .3s}
.vcard:hover{transform:translateY(-3px);box-shadow:0 8px 24px rgba(102,126,234,.15)}
.vcover{position:relative;padding-top:56.25%;background:linear-gradient(135deg,#667eea,#764ba2);overflow:hidden}
.vcover.has-img{background:none}
.vcover img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.vcover .vicon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:36px}
.vcover .playbtn{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:42px;height:42px;background:rgba(255,255,255,.9);border-radius:50%;display:flex;align-items:center;justify-content:center;opacity:0;transition:all .3s}
.vcard:hover .playbtn{opacity:1}
.playbtn::after{content:'';border-left:12px solid #667eea;border-top:7px solid transparent;border-bottom:7px solid transparent;margin-left:3px}
.vcover .vdur{position:absolute;bottom:6px;right:6px;padding:3px 6px;background:rgba(0,0,0,.7);color:#fff;border-radius:4px;font-size:9px;font-weight:700}
.vcover .vnew{position:absolute;top:6px;left:6px;padding:3px 6px;background:linear-gradient(135deg,#ff6b6b,#feca57);color:#fff;border-radius:6px;font-size:8px;font-weight:700}
.vname{font-size:12px;font-weight:700;line-height:1.3;margin-bottom:2px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* ==================== Enhanced UX ==================== */
.loading-pulse{animation:pulse 1.5s ease-in-out infinite}
.btn-loading{pointer-events:none;opacity:.7}
.btn-loading::after{content:'';display:inline-block;width:14px;height:14px;margin-left:8px;border:2px solid transparent;border-top-color:currentColor;border-radius:50%;animation:spin .6s linear infinite}
.smooth-appear{animation:smoothAppear .3s ease}
@keyframes smoothAppear{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
.tap-highlight{position:relative;overflow:hidden}
.tap-highlight::after{content:'';position:absolute;inset:0;background:rgba(255,255,255,.2);opacity:0;transition:opacity .2s}
.tap-highlight:active::after{opacity:1}

/* ==================== Auth & Toast ==================== */
.auth-input{width:100%;padding:14px 16px;border-radius:14px;border:2px solid rgba(0,0,0,.08);background:var(--bg);font-size:14px;margin-bottom:12px;outline:none;font-family:inherit}
.auth-input:focus{border-color:#667eea}
.toast{position:fixed;bottom:100px;left:50%;transform:translateX(-50%) translateY(20px);background:rgba(0,0,0,.85);color:#fff;padding:12px 24px;border-radius:24px;font-size:13px;font-weight:600;opacity:0;transition:all .3s;z-index:1000;pointer-events:none;white-space:nowrap}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ==================== Achievement Popup ==================== */
.achievement-popup{position:fixed;top:20%;left:50%;transform:translateX(-50%) scale(.8);background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:20px 30px;border-radius:20px;box-shadow:0 10px 40px rgba(102,126,234,.5);opacity:0;transition:all .4s cubic-bezier(.175,.885,.32,1.275);z-index:1000}
.achievement-popup.show{opacity:1;transform:translateX(-50%) scale(1)}
.achievement-content{display:flex;align-items:center;gap:16px}
.achievement-icon{font-size:50px;animation:bounce 1s ease-in-out infinite}
.achievement-title{font-size:12px;opacity:.9}
.achievement-name{font-size:18px;font-weight:800;margin:4px 0}
.achievement-stars{font-size:14px;opacity:.9}
.nav-badge{position:absolute;top:2px;right:10px;background:#ef4444;color:#fff;font-size:10px;font-weight:700;padding:2px 6px;border-radius:10px;min-width:16px;text-align:center}

/* ==================== Comment Panel (Douyin-style) ==================== */
.comment-panel{position:absolute;bottom:0;left:0;right:0;height:60%;background:var(--card);border-radius:16px 16px 0 0;z-index:20;transform:translateY(100%);transition:transform .3s cubic-bezier(.25,.1,.25,1);display:flex;flex-direction:column;box-shadow:0 -4px 20px rgba(0,0,0,.15)}
.comment-panel.active{transform:translateY(0)}
.cp-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid rgba(0,0,0,.06);flex-shrink:0}
.cp-title{font-size:14px;font-weight:800}
.cp-close{background:none;border:none;font-size:18px;color:var(--muted);cursor:pointer;padding:4px 8px}
.cp-list{flex:1;overflow-y:auto;padding:0 16px;-webkit-overflow-scrolling:touch}
.cp-input{display:flex;gap:8px;padding:10px 16px;border-top:1px solid rgba(0,0,0,.06);flex-shrink:0;background:var(--card)}
.cp-input input{flex:1;border:1px solid rgba(0,0,0,.1);border-radius:20px;padding:8px 16px;font-size:13px;outline:none;font-family:inherit}
.cp-input input:focus{border-color:#667eea}
.cp-send{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:20px;padding:8px 16px;font-size:13px;font-weight:700;cursor:pointer}
.cp-send:active{opacity:.8}

/* Video card mini stats */
.vmini-stats span{display:inline-flex;align-items:center;gap:2px}

/* Liked/collected button states */
.vaction.liked{animation:likeBounce .3s ease}
@keyframes likeBounce{0%{transform:scale(1)}50%{transform:scale(1.3)}100%{transform:scale(1)}}

/* ==================== Video Progress Bar ==================== */
.vprogress{position:absolute;bottom:60px;left:0;right:0;height:32px;z-index:30;cursor:pointer;display:flex;align-items:flex-end;padding:0;-webkit-tap-highlight-color:transparent;touch-action:none}
.vprogress::before{content:'';position:absolute;bottom:10px;left:0;right:0;height:3px;background:rgba(255,255,255,.25);border-radius:0;transition:height .15s}
.vprogress.dragging::before,.vprogress:hover::before{height:5px;bottom:9px}
.vprogress-played{position:absolute;bottom:10px;left:0;height:3px;background:linear-gradient(90deg,#667eea,#a78bfa);border-radius:0;width:0%;z-index:1;transition:height .15s}
.vprogress.dragging .vprogress-played,.vprogress:hover .vprogress-played{height:5px;bottom:9px}
.vprogress-handle{position:absolute;bottom:4px;left:0;width:14px;height:14px;border-radius:50%;background:#fff;box-shadow:0 0 6px rgba(0,0,0,.4);opacity:1;z-index:2;transition:transform .15s;transform:scale(.7);pointer-events:none}
.vprogress.dragging .vprogress-handle,.vprogress:hover .vprogress-handle{transform:scale(1)}
/* Hide progress bar & actions when comment panel is open */
.vplayer.comment-open .vprogress,.vplayer.comment-open .vplayer-footer,.vplayer.comment-open .vplayer-actions{opacity:0;pointer-events:none;transition:opacity .2s}
.vtime{font-size:10px;color:rgba(255,255,255,.6);margin-top:4px;display:block}
.vview-count{font-size:10px;color:rgba(255,255,255,.5);margin-top:2px;display:block}

/* ==================== Enhanced Habit Styles ==================== */
.habit[data-habit-id]{transition:all .2s ease}
.habit[data-habit-id]:active{transform:scale(.98)}

/* ==================== Parent Dashboard Modal ==================== */
#parentModal .mbox{background:var(--bg)}
#parentModal .mbody{padding:16px}

/* ==================== Quiz Round Mode ==================== */
.quiz-round-bar{display:flex;gap:6px;margin:0 0 14px;justify-content:center}
.quiz-dot{width:24px;height:24px;border-radius:50%;background:#e5e7eb;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:#999;transition:all .3s}
.quiz-dot.current{background:var(--primary);color:#fff;transform:scale(1.15)}
.quiz-dot.correct{background:#22c55e;color:#fff}
.quiz-dot.wrong{background:#ef4444;color:#fff}
.quiz-summary{text-align:center;padding:20px;animation:smoothAppear .5s ease}
.quiz-summary .score-ring{width:100px;height:100px;border-radius:50%;background:conic-gradient(#667eea var(--pct),#e5e7eb var(--pct));display:flex;align-items:center;justify-content:center;margin:0 auto 16px}
.quiz-summary .score-inner{width:80px;height:80px;border-radius:50%;background:var(--bg);display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:800;color:#667eea}

/* ==================== Notification Panel ==================== */
.notif-panel{max-height:400px;overflow-y:auto}
.notif-item{display:flex;gap:12px;padding:14px;border-bottom:1px solid rgba(0,0,0,.06);align-items:flex-start}
.notif-icon{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}
.notif-content{flex:1}
.notif-title{font-size:13px;font-weight:700}
.notif-desc{font-size:11px;color:var(--muted);margin-top:2px}
.notif-time{font-size:10px;color:var(--muted);margin-top:4px}

/* ==================== Help & Feedback ==================== */
.faq-item{background:var(--card);border-radius:14px;padding:16px;margin-bottom:10px;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.04)}
.faq-item:hover{background:#f5f3ff}
.faq-q{font-size:13px;font-weight:700;display:flex;align-items:center;gap:8px}
.faq-a{font-size:12px;color:#666;line-height:1.6;margin-top:8px;display:none}
.faq-item.open .faq-a{display:block}

/* ==================== Scrollbar ==================== */
.mbody::-webkit-scrollbar{width:4px}
.mbody::-webkit-scrollbar-track{background:transparent}
.mbody::-webkit-scrollbar-thumb{background:rgba(0,0,0,.1);border-radius:2px}
.mbody::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.2)}
