:root{--bg-deep:#07080f;--bg-panel:#0d0f1a;--bg-surface:#141726;--bg-input:#1a1e30;--border:rgba(80,110,160,.15);--border-focus:rgba(80,140,220,.4);--text-primary:rgba(220,230,245,.95);--text-secondary:rgba(170,185,210,.75);--text-muted:rgba(130,150,180,.5);--accent:#4a8cd8;--accent-glow:rgba(74,140,216,.25);--danger:#d84a4a;--radius:14px;--font-body:'DM Sans',sans-serif;--font-display:'Syne',sans-serif}
*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;padding:0;width:100%;height:100%;overflow:hidden;background:var(--bg-deep);color:var(--text-primary);font-family:var(--font-body);-webkit-font-smoothing:antialiased}

/* ══ Landing Page ═════════════════════════════════ */
.landing-wrapper{min-height:100vh;overflow-y:auto;padding:40px 32px;background:radial-gradient(ellipse at 20% 0%,rgba(30,50,90,.3) 0%,transparent 50%),var(--bg-deep)}
.landing-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:40px}
.landing-logo{font-family:var(--font-display);font-size:1.3rem;font-weight:700}
.admin-link{color:var(--text-muted);font-size:1.1rem;text-decoration:none;transition:.2s}
.admin-link:hover{color:var(--accent)}
.landing-title{font-family:var(--font-display);font-size:2rem;font-weight:700;margin:0 0 8px;text-align:center}
.landing-sub{text-align:center;color:var(--text-secondary);margin:0 0 36px;font-size:1.05rem}
.presentation-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:20px;max-width:1000px;margin:0 auto}
.presentation-card{text-decoration:none;color:inherit;background:var(--bg-panel);border:1px solid var(--border);border-radius:16px;overflow:hidden;transition:.25s;display:flex;flex-direction:column}
.presentation-card:hover{border-color:var(--accent);transform:translateY(-4px);box-shadow:0 12px 40px rgba(0,0,0,.4)}
.card-thumbnail{position:relative;aspect-ratio:16/10;overflow:hidden;background:#0a0c16}
.card-thumbnail img{width:100%;height:100%;object-fit:contain;background:#111}
.card-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.4);opacity:0;transition:.25s;font-size:2.5rem;color:white}
.presentation-card:hover .card-overlay{opacity:1}
.card-info{padding:14px 16px}
.card-title{font-weight:600;font-size:1rem;margin-bottom:4px}
.card-meta{font-size:.82rem;color:var(--text-muted)}
.empty-state{text-align:center;padding:60px 20px;color:var(--text-secondary)}
.empty-icon{font-size:3rem;margin-bottom:14px}
.empty-state h2{font-family:var(--font-display);color:var(--text-primary);margin:0 0 8px}

/* ══ Classroom Layout ═════════════════════════════ */
.app-wrapper{position:fixed;inset:0;display:flex;flex-direction:row;padding:16px 24px;gap:24px;background:radial-gradient(ellipse at 20% 0%,rgba(30,50,90,.3) 0%,transparent 50%),var(--bg-deep);overflow:hidden}
.panel-left{flex:1 1 60%;display:flex;flex-direction:column;min-width:0;background:var(--bg-panel);border-radius:16px;border:1px solid var(--border);overflow:hidden;box-shadow:0 16px 50px rgba(0,0,0,.4)}
.panel-right{flex:0 0 320px;display:flex;flex-direction:column;align-items:center;justify-content:space-between;gap:8px}

/* Slide viewer */
.slide-viewer{flex:1 1 60%;display:flex;flex-direction:column;min-height:0;border-bottom:1px solid var(--border)}
.slide-header{display:flex;align-items:center;padding:10px 16px;gap:12px;background:linear-gradient(135deg,rgba(30,40,70,.6),rgba(20,28,50,.4));border-bottom:1px solid var(--border)}
.back-link{color:var(--text-secondary);text-decoration:none;font-size:1rem;transition:.2s}
.back-link:hover{color:var(--accent)}
.slide-title{flex:1;font-family:var(--font-display);font-weight:600;font-size:.95rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.slide-counter{font-size:.82rem;color:var(--text-muted);white-space:nowrap}
.slide-image-wrap{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:10px;background:#080a14;overflow:hidden}
.slide-image-wrap img{max-width:100%;max-height:100%;object-fit:contain;border-radius:6px}
.slide-nav{display:flex;gap:8px;padding:8px 16px;justify-content:center;flex-shrink:0}
.slide-nav-btn{padding:8px 16px;border-radius:8px;border:1px solid var(--border);background:var(--bg-surface);color:var(--text-secondary);font-family:var(--font-body);font-size:.82rem;cursor:pointer;transition:.2s;display:flex;align-items:center;gap:6px}
.slide-nav-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}
.slide-nav-btn:disabled{opacity:.3;cursor:not-allowed}
.slide-nav-btn.replay{border-color:rgba(74,180,130,.3);color:rgba(74,180,130,.8)}
.slide-nav-btn.replay:hover{border-color:rgba(74,180,130,.6)}

/* Chat section */
.chat-section{flex:0 1 40%;display:flex;flex-direction:column;min-height:120px}
.chat-messages{flex:1;overflow-y:auto;padding:10px 14px;display:flex;flex-direction:column;gap:8px;scrollbar-width:thin;scrollbar-color:rgba(80,110,160,.3) transparent;font-size:.9rem}
.chat-messages::-webkit-scrollbar{width:5px}
.chat-messages::-webkit-scrollbar-thumb{background:rgba(80,110,160,.3);border-radius:3px}
.welcome-message{text-align:center;padding:16px;color:var(--text-muted);font-size:.88rem}
.welcome-message p{margin:0}
.message{display:flex;flex-direction:column;max-width:90%;animation:slideUp .3s ease-out}
.message.user{align-self:flex-end}
.message.assistant{align-self:flex-start}
.message-bubble{padding:10px 14px;border-radius:10px;font-size:.88rem;line-height:1.55;word-wrap:break-word;white-space:pre-wrap}
.message.user .message-bubble{background:rgba(74,140,216,.12);border:1px solid rgba(74,140,216,.2);border-bottom-right-radius:3px}
.message.assistant .message-bubble{background:rgba(40,50,75,.5);border:1px solid rgba(80,100,140,.15);border-bottom-left-radius:3px}
.message-label{font-size:.65rem;font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:2px;padding:0 3px}
.message.user .message-label{text-align:right}

/* Chat input */
.chat-input-area{padding:10px 14px;border-top:1px solid var(--border);flex-shrink:0;position:relative}
.loading-bar{position:absolute;top:0;left:0;right:0;height:3px;background:rgba(74,140,216,.1);overflow:hidden}
.loading-bar.hidden{display:none}
.loading-bar-inner{width:100%;height:100%;background:linear-gradient(90deg,transparent,var(--accent),rgba(100,180,255,.8),transparent);animation:loadSlide 1.4s linear infinite}
@keyframes loadSlide{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}
.input-row{display:flex;gap:8px;align-items:center}
.input-row input{flex:1;padding:10px 14px;border-radius:10px;border:1px solid var(--border);background:var(--bg-input);color:var(--text-primary);font-family:var(--font-body);font-size:.88rem;outline:none;transition:.2s}
.input-row input::placeholder{color:var(--text-muted)}
.input-row input:focus{border-color:var(--border-focus);box-shadow:0 0 0 3px var(--accent-glow)}
.input-row button{width:40px;height:40px;border-radius:10px;border:none;background:var(--accent);color:white;font-size:.88rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.2s;flex-shrink:0}
.input-row button:hover{filter:brightness(1.15)}
.input-row button:disabled{opacity:.4;cursor:not-allowed}

/* ══ Avatar ═══════════════════════════════════════ */
.avatar-container{flex:1;width:100%;display:flex;align-items:flex-start;justify-content:center}
.iframe-wrap{width:100%;max-width:300px;aspect-ratio:9/16;max-height:50vh;border-radius:130px;overflow:hidden;background:#0a0c16;box-shadow:0 20px 50px rgba(0,0,0,.6);position:relative}
.iframe-wrap iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none;border-radius:130px}

/* ══ Toggles ══════════════════════════════════════ */
.mode-toggles{display:flex;gap:14px;align-items:center;justify-content:center;flex-wrap:wrap}
.toggle-item{display:flex;align-items:center;gap:6px}
.toggle-switch{position:relative;width:38px;height:22px;display:inline-block}
.toggle-switch input{opacity:0;width:0;height:0}
.toggle-slider{position:absolute;inset:0;cursor:pointer;background:rgba(60,70,100,.5);border-radius:22px;transition:.3s;border:1px solid var(--border)}
.toggle-slider::before{content:'';position:absolute;height:16px;width:16px;left:2px;bottom:2px;background:rgba(180,200,230,.85);border-radius:50%;transition:.3s}
.toggle-switch input:checked+.toggle-slider{background:rgba(74,140,216,.4);border-color:rgba(74,140,216,.5)}
.toggle-switch input:checked+.toggle-slider::before{transform:translateX(16px);background:var(--accent)}
.toggle-label{font-size:.72rem;color:var(--text-secondary);display:flex;align-items:center;gap:4px;user-select:none}

/* ══ Wake / Mic ═══════════════════════════════════ */
.wake-indicator{text-align:center;font-size:.72rem;min-height:18px;color:var(--text-muted)}
.wake-indicator .wake-listening,.wake-indicator .wake-active{display:none}
.wake-indicator.listening .wake-listening{display:inline;color:rgba(74,180,130,.8)}
.wake-indicator.active .wake-listening{display:none}
.wake-indicator.active .wake-active{display:inline;color:var(--danger)}
.controls-area{flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:4px;padding-bottom:4px}
.mic-container{display:flex;align-items:center;gap:8px}
.eq-bar{width:4px;height:10px;min-height:10px;background:linear-gradient(to top,var(--accent),rgba(100,180,255,.8));border-radius:3px;transition:height .1s}
.mic-btn{width:56px;height:56px;border-radius:50%;border:2px solid var(--border);background:var(--bg-surface);color:var(--text-secondary);font-size:1.2rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.25s}
.mic-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent);box-shadow:0 0 20px var(--accent-glow)}
.mic-btn:disabled{opacity:.4;cursor:not-allowed}
.mic-btn.recording{border-color:var(--danger);color:white;background:var(--danger);animation:micPulse 1s ease-in-out infinite;box-shadow:0 0 24px rgba(216,74,74,.35)}
@keyframes micPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
.mic-label{font-size:.6rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em}

@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes slideUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}

/* ══ Phone Portrait ═══════════════════════════════ */
@media(max-width:768px),(orientation:portrait) and (max-width:900px){
    body{overflow:auto}
    .landing-wrapper{padding:20px 16px}
    .landing-title{font-size:1.4rem}
    .presentation-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px}

    .app-wrapper{flex-direction:column;padding:6px;gap:4px;position:relative;height:100vh;overflow:hidden}
    .panel-right{flex:0 0 auto;flex-direction:row;width:100%;align-items:center;justify-content:center;gap:8px;padding:4px 10px;flex-wrap:wrap;order:-1}
    .panel-left{flex:1;min-height:0;border-radius:12px}
    .avatar-container{flex:0 0 auto}
    .iframe-wrap{max-width:100px;max-height:170px;border-radius:50px;aspect-ratio:auto}
    .iframe-wrap iframe{border-radius:50px}
    .tgl-text{font-size:.65rem}
    .mic-btn{width:44px;height:44px;font-size:1rem}
    .mic-label{display:none}
    .controls-area{padding-bottom:0}
    .slide-header{padding:6px 10px}
    .slide-title{font-size:.82rem}
    .slide-nav{padding:6px 10px}
    .slide-nav-btn{padding:6px 12px;font-size:.75rem}
    .chat-messages{padding:8px 10px}
    .chat-input-area{padding:6px 10px}
    .input-row input{padding:8px 10px;font-size:.85rem}
    .input-row button{width:36px;height:36px}
}

@media(max-width:480px){
    .iframe-wrap{max-width:80px;max-height:140px;border-radius:40px}
    .iframe-wrap iframe{border-radius:40px}
    .mic-btn{width:40px;height:40px;font-size:.9rem}
    .toggle-switch{width:34px;height:20px}
    .toggle-slider::before{height:14px;width:14px}
    .toggle-switch input:checked+.toggle-slider::before{transform:translateX(14px)}
    .tgl-text{display:none}
}
