/* PBJ Flash - Stylesheet v1.4 */

/* === THEME === */
:root {
    --p: #1a365d; --pl: #2b6cb0; --plr: #ebf4ff;
    --acc: #ed8936; --accl: #fbd38d;
    --ok: #38a169; --err: #e53e3e; --warn: #d69e2e;
    --g50:#f7fafc; --g100:#edf2f7; --g200:#e2e8f0; --g300:#cbd5e0;
    --g400:#a0aec0; --g500:#718096; --g600:#4a5568; --g700:#2d3748; --g800:#1a202c;
    --card:#fff; --bg:#f7fafc; --txt:#1a202c; --muted:#718096; --brd:#e2e8f0;
    --r:8px; --rl:12px;
    --sh:0 1px 3px rgba(0,0,0,.1); --shm:0 4px 6px rgba(0,0,0,.07); --shl:0 10px 15px rgba(0,0,0,.1);
}

/* DARK MODE on <html> */
html.dark-mode {
    --pl:#63b3ed; --plr:#1e3a5f;
    --ok:#68d391; --err:#fc8181; --warn:#f6e05e;
    --g50:#0d1117; --g100:#161b22; --g200:#21262d; --g300:#30363d;
    --g400:#8b949e; --g500:#c9d1d9; --g600:#e6edf3; --g700:#f0f6fc; --g800:#f8f8f8;
    --card:#161b22; --bg:#0d1117; --txt:#e6edf3; --muted:#8b949e; --brd:#30363d;
    --sh:0 1px 3px rgba(0,0,0,.4); --shm:0 4px 6px rgba(0,0,0,.4); --shl:0 10px 15px rgba(0,0,0,.4);
}

* { margin:0; padding:0; box-sizing:border-box; }
body { font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; background:var(--bg); color:var(--txt); line-height:1.6; min-height:100vh; }
a { color:var(--pl); }

/* === LAYOUT === */
.container { max-width:1100px; margin:0 auto; padding:0 20px; }
.page { padding:24px 0 60px; }

/* === TOP NAV === */
.topnav { background:#1a365d; position:sticky; top:0; z-index:100; box-shadow:var(--shm); }
html.dark-mode .topnav { background:#0d1117; }
.topnav-inner { display:flex; align-items:center; height:52px; gap:4px; }
.topnav-brand { font-size:1.1rem; font-weight:700; color:#fff; text-decoration:none; margin-right:12px; white-space:nowrap; }
.topnav-brand span { color:var(--acc); }

.topnav-menu { display:flex; align-items:center; gap:2px; flex:1; }
.topnav-menu a {
    color:rgba(255,255,255,.75); text-decoration:none;
    padding:6px 14px; border-radius:var(--r); font-size:.84rem; font-weight:500;
    transition:background .15s,color .15s; white-space:nowrap;
}
.topnav-menu a:hover { background:rgba(255,255,255,.12); color:#fff; }
.topnav-menu a.on { background:rgba(255,255,255,.18); color:#fff; }

.topnav-right { display:flex; align-items:center; gap:10px; margin-left:auto; }
.topnav-dm { background:rgba(255,255,255,.1); border:none; border-radius:50%; width:30px; height:30px; display:flex; align-items:center; justify-content:center; cursor:pointer; color:#fff; font-size:.95rem; }
.topnav-dm:hover { background:rgba(255,255,255,.2); }
.topnav-info { color:rgba(255,255,255,.8); font-size:.78rem; font-weight:600; }
.topnav-out { color:rgba(255,255,255,.65); background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.15); padding:4px 12px; border-radius:var(--r); font-size:.78rem; cursor:pointer; font-family:inherit; }
.topnav-out:hover { background:rgba(255,255,255,.15); color:#fff; }
.topnav-burger { display:none; background:none; border:none; color:#fff; font-size:1.4rem; cursor:pointer; margin-left:auto; padding:4px 8px; }

@media(max-width:860px){
    .topnav-menu { display:none; position:absolute; top:52px; left:0; right:0; background:#1a365d; flex-direction:column; padding:8px 16px; gap:2px; border-bottom:1px solid rgba(255,255,255,.1); }
    html.dark-mode .topnav-menu { background:#0d1117; }
    .topnav-menu.open { display:flex; }
    .topnav-menu a { width:100%; }
    .topnav-burger { display:block; }
    .topnav-right .topnav-info { display:none; }
}

/* === CARDS === */
.card { background:var(--card); border:1px solid var(--brd); border-radius:var(--rl); padding:24px; box-shadow:var(--sh); }
.card-title { font-size:1rem; font-weight:700; color:var(--txt); }

/* === BUTTONS === */
.btn { display:inline-flex; align-items:center; justify-content:center; gap:6px; padding:8px 18px; border-radius:var(--r); border:none; font-weight:600; cursor:pointer; font-family:inherit; font-size:.875rem; text-decoration:none; transition:all .15s; line-height:1.5; }
.btn-primary { background:var(--pl); color:#fff; }
.btn-primary:hover { opacity:.9; }
.btn-accent { background:var(--acc); color:#fff; }
.btn-accent:hover { opacity:.9; }
.btn-success { background:var(--ok); color:#fff; }
.btn-outline { background:transparent; border:1px solid var(--brd); color:var(--txt); }
.btn-outline:hover { background:var(--g100); }
.btn-sm { padding:5px 12px; font-size:.8rem; }
.btn-lg { padding:12px 24px; font-size:1rem; }

/* === FORMS === */
.form-group { margin-bottom:16px; }
.form-label { display:block; font-size:.85rem; font-weight:600; margin-bottom:4px; color:var(--txt); }
.form-input,.form-select,.form-textarea { width:100%; padding:10px 14px; border:1px solid var(--brd); border-radius:var(--r); font-size:.9rem; font-family:inherit; background:var(--card); color:var(--txt); transition:border-color .15s; }
.form-input:focus,.form-select:focus,.form-textarea:focus { outline:none; border-color:var(--pl); box-shadow:0 0 0 3px rgba(43,108,176,.15); }
.form-textarea { resize:vertical; }

/* === ALERTS === */
.alert { padding:12px 16px; border-radius:var(--r); margin-bottom:16px; font-size:.9rem; border:1px solid var(--brd); }
.alert-success { background:#f0fff4; border-color:#c6f6d5; color:#276749; }
.alert-error { background:#fff5f5; border-color:#fed7d7; color:#9b2c2c; }
.alert-warning { background:#fffff0; border-color:#fefcbf; color:#975a16; }
.alert-info { background:#ebf8ff; border-color:#bee3f8; color:#2a4365; }
html.dark-mode .alert-success { background:#1a332a; border-color:#276749; color:#68d391; }
html.dark-mode .alert-error { background:#331a1a; border-color:#9b2c2c; color:#fc8181; }
html.dark-mode .alert-warning { background:#332e1a; border-color:#975a16; color:#f6e05e; }
html.dark-mode .alert-info { background:#1a2a33; border-color:#2a4365; color:#63b3ed; }

/* === TABLES === */
.data-table { width:100%; border-collapse:collapse; font-size:.875rem; }
.data-table th { text-align:left; padding:10px 12px; font-weight:600; font-size:.8rem; text-transform:uppercase; letter-spacing:.5px; color:var(--muted); background:var(--g100); border-bottom:2px solid var(--brd); }
.data-table td { padding:10px 12px; border-bottom:1px solid var(--brd); vertical-align:middle; }
.data-table tr:hover { background:var(--g100); }

/* === GRID === */
.grid-2 { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.grid-3 { display:grid; grid-template-columns:1fr 1fr 1fr; gap:16px; }
.grid-4 { display:grid; grid-template-columns:repeat(4,1fr); gap:16px; }
@media(max-width:768px){ .grid-2,.grid-3,.grid-4{grid-template-columns:1fr;} }

/* === UTILS === */
.flex { display:flex; }
.flex-between { display:flex; justify-content:space-between; align-items:center; }
.gap-2 { gap:8px; } .gap-4 { gap:16px; }
.mb-2{margin-bottom:8px;} .mb-3{margin-bottom:12px;} .mb-4{margin-bottom:16px;} .mb-6{margin-bottom:24px;}
.mt-2{margin-top:8px;} .mt-4{margin-top:16px;}
.text-center{text-align:center;} .text-sm{font-size:.85rem;} .text-muted{color:var(--muted);}
.text-success{color:var(--ok);} .text-danger{color:var(--err);}
.hidden{display:none!important;}

.badge { display:inline-block; padding:2px 10px; border-radius:50px; font-size:.75rem; font-weight:600; white-space:nowrap; }
.badge-jenjang { background:var(--plr); color:var(--pl); }

/* === STAT CARDS === */
.stat-cards { display:grid; grid-template-columns:repeat(4,1fr); gap:16px; margin-bottom:24px; }
.stat-card { background:var(--card); border:1px solid var(--brd); border-radius:var(--rl); padding:20px; text-align:center; box-shadow:var(--sh); }
.stat-value { font-size:1.75rem; font-weight:800; color:var(--pl); }
.stat-label { font-size:.8rem; color:var(--muted); margin-top:4px; }
@media(max-width:768px){ .stat-cards{grid-template-columns:repeat(2,1fr);} }

/* === QUICK ACTIONS === */
.quick-actions { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:24px; }
.quick-action { display:flex; flex-direction:column; align-items:center; gap:8px; padding:20px 12px; background:var(--card); border:1px solid var(--brd); border-radius:var(--rl); text-decoration:none; color:var(--txt); font-size:.85rem; font-weight:600; transition:all .15s; box-shadow:var(--sh); }
.quick-action:hover { transform:translateY(-2px); box-shadow:var(--shm); border-color:var(--pl); }
.quick-action .qa-icon { font-size:1.5rem; }
@media(max-width:768px){ .quick-actions{grid-template-columns:repeat(2,1fr);} }

/* === QUIZ === */
.quiz-container { max-width:700px; margin:0 auto; }
.quiz-header { display:flex; justify-content:space-between; margin-bottom:12px; font-weight:600; font-size:.9rem; color:var(--muted); }
.quiz-progress { height:6px; background:var(--g200); border-radius:3px; margin-bottom:16px; overflow:hidden; }
.quiz-progress-bar { height:100%; background:var(--pl); border-radius:3px; transition:width .3s; }
.quiz-body { margin-bottom:20px; }
.quiz-body p { font-size:1.05rem; font-weight:500; line-height:1.7; }
.quiz-options { display:flex; flex-direction:column; gap:8px; margin-bottom:16px; }
.quiz-option { display:flex; align-items:flex-start; gap:12px; padding:14px 16px; border:2px solid var(--brd); border-radius:var(--r); cursor:pointer; transition:all .15s; background:var(--card); }
.quiz-option:hover:not(.disabled) { border-color:var(--pl); background:var(--plr); }
.quiz-option.correct { border-color:var(--ok); background:#f0fff4; }
.quiz-option.wrong { border-color:var(--err); background:#fff5f5; }
.quiz-option.disabled { pointer-events:none; opacity:.8; }
.quiz-option-key { width:32px; height:32px; border-radius:50%; background:var(--g100); display:flex; align-items:center; justify-content:center; font-weight:700; font-size:.85rem; flex-shrink:0; color:var(--txt); }
.quiz-option-text { padding-top:5px; font-size:.95rem; }
.quiz-feedback { display:none; padding:16px; border-radius:var(--r); margin-bottom:16px; }
.quiz-feedback.show { display:block; }
.quiz-feedback.correct { background:#f0fff4; border:1px solid #c6f6d5; }
.quiz-feedback.wrong { background:#fff5f5; border:1px solid #fed7d7; }
.quiz-feedback h4 { font-size:1rem; margin-bottom:4px; }
.quiz-actions { display:flex; gap:8px; align-items:center; }
.regulopedia { margin-top:10px; padding:10px 14px; background:var(--g100); border-left:3px solid var(--pl); border-radius:0 var(--r) var(--r) 0; font-size:.85rem; color:var(--muted); }

.results-hero { text-align:center; padding:40px 20px; }
.results-score { font-size:3rem; font-weight:800; color:var(--pl); }
.results-label { font-size:1.1rem; color:var(--muted); margin-top:4px; }
.results-xp { font-size:1.2rem; font-weight:700; color:var(--acc); margin-top:8px; }

/* === AUTH === */
.auth-container { max-width:440px; margin:40px auto; }
.auth-card { background:var(--card); border:1px solid var(--brd); border-radius:var(--rl); padding:32px; box-shadow:var(--shm); }
.auth-title { font-size:1.4rem; font-weight:800; text-align:center; margin-bottom:24px; color:var(--txt); }
.auth-divider { display:flex; align-items:center; gap:12px; margin:20px 0; color:var(--muted); font-size:.85rem; }
.auth-divider::before,.auth-divider::after { content:''; flex:1; height:1px; background:var(--brd); }
.btn-google { width:100%; padding:12px; background:var(--card); border:1px solid var(--brd); border-radius:var(--r); font-size:.9rem; font-weight:600; cursor:pointer; color:var(--g700); font-family:inherit; transition:all .15s; }
.btn-google:hover { background:var(--g100); box-shadow:var(--sh); }

/* === HEATMAP === */
.heatmap { display:flex; flex-wrap:wrap; gap:3px; }
.heatmap-day { width:14px; height:14px; border-radius:2px; background:var(--g200); }
.heatmap-1{background:#c6f6d5;} .heatmap-2{background:#68d391;} .heatmap-3{background:#38a169;} .heatmap-4{background:#276749;}

/* === RESPONSIVE === */
@media(max-width:640px){
    .flex-between { flex-direction:column; align-items:flex-start; gap:12px; }
    .results-score { font-size:2rem; }
}
