:root{--bg-body:#f8f9fa;--text-dark:#1e293b;--header-dark:#1f2937;--stats-bar-bg:#374151;--btn-practice:#22c55e;--btn-exam:#3b82f6;--btn-submit:#6366f1;--font-ui:'Inter',sans-serif;--font-mono:'Roboto Mono',monospace;--c-blue:#0284c7;--c-red:#dc2626;--c-purple:#9333ea;--c-green:#16a34a}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-ui);background:var(--bg-body);color:var(--text-dark)}.hidden{display:none!important}#lobby-view{overflow-y:auto;padding:40px;display:flex;flex-direction:column;align-items:center}.test-card{background:white;padding:20px 30px;border-radius:12px;margin-bottom:15px;width:100%;max-width:800px;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 4px rgba(0,0,0,.05)}.mode-selector{background:white;padding:20px;border-radius:12px;margin-bottom:20px;max-width:800px;width:100%;box-shadow:0 2px 4px rgba(0,0,0,.05)}.mode-selector label{display:block;margin:10px 0;cursor:pointer}.mode-selector input[type="radio"]{margin-right:8px}.btn{padding:8px 20px;border:none;border-radius:6px;color:white;cursor:pointer;font-weight:600;font-size:.9rem;transition:.2s}.btn:hover{opacity:.9;transform:translateY(-1px)}.btn-practice{background:var(--btn-practice)}.btn-exam{background:var(--btn-exam)}#test-view{min-height:100vh;display:flex;flex-direction:column;background:#fff;overflow:auto}#test-view.fullscreen-mode{position:fixed;inset:0;z-index:9999;background:#fff;overflow:auto}.test-header{background:var(--header-dark);color:white;padding:15px 30px;display:flex;justify-content:space-between;align-items:center;flex-shrink:0;box-shadow:0 2px 5px rgba(0,0,0,.2)}.timer-display{font-family:var(--font-mono);font-size:1.3rem;color:#fbbf24;font-weight:700}.header-controls{display:flex;align-items:center;gap:15px}.icon-btn{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.3);color:white;padding:8px 15px;border-radius:6px;cursor:pointer;font-size:.85rem;transition:.2s;font-weight:600}.icon-btn:hover{background:rgba(255,255,255,.2);transform:translateY(-1px)}#back-btn{background:none;border:none;color:#ef4444;cursor:pointer;font-weight:bold;font-size:.9rem;padding:8px 12px;transition:.2s}#back-btn:hover{color:#dc2626;transform:scale(1.05)}.stats-bar{background-color:var(--stats-bar-bg);color:white;padding:10px 30px;display:flex;justify-content:center;gap:40px;border-top:1px solid #4b5563;flex-shrink:0}.stat-box{text-align:center}.stat-label{font-size:.7rem;color:#9ca3af;text-transform:uppercase;display:block}.stat-value{font-size:1.1rem;font-weight:700;font-family:var(--font-mono);color:#fff}.workspace{flex:1;display:flex;flex-direction:column;padding:20px;gap:20px;max-width:1400px;margin:0 auto;width:100%;overflow:hidden}.passage-box{flex:1;border:2px solid #cbd5e1;padding:20px;font-family:'Times New Roman',serif;font-size:12pt;line-height:1.8;overflow-y:auto;background:#fdfdfd;user-select:none;border-radius:8px;white-space:pre-wrap;box-shadow:0 1px 3px rgba(0,0,0,.1)}.input-box{flex:1;border:2px solid #3b82f6;padding:10px;font-family:'Arial',sans-serif;font-size:12pt;line-height:1.8;resize:none;outline:none;border-radius:8px;white-space:pre-wrap;box-shadow:0 2px 5px rgba(59,130,246,.2)}.input-box:focus{border-color:#2563eb;box-shadow:0 0 0 3px rgba(59,130,246,.1)}.font-arial .passage-box,.font-arial .input-box{font-family:'Arial',sans-serif}.font-times .passage-box,.font-times .input-box{font-family:'Times New Roman',serif}.test-footer{padding:15px;border-top:2px solid #e5e7eb;text-align:center;background:#fff;box-shadow:0 -2px 5px rgba(0,0,0,.05)}.btn-submit{background:var(--btn-submit);width:100%;max-width:400px;padding:14px;font-size:1.1rem;box-shadow:0 2px 5px rgba(99,102,241,.3)}.btn-submit:hover{box-shadow:0 4px 8px rgba(99,102,241,.4)}#result-view{overflow-y:auto;background:#f3f4f6;padding:30px}.res-container{max-width:1200px;margin:0 auto;padding-bottom:50px}.res-header{display:flex;justify-content:space-between;margin-bottom:25px;align-items:center}.res-section{margin-bottom:30px}.res-title{font-weight:700;color:#374151;margin-bottom:15px;font-size:1.1rem}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}.grid-mix{display:grid;grid-template-columns:2fr 3fr;gap:20px}.stat-card{background:white;padding:20px;border-radius:12px;border:1px solid #e5e7eb;box-shadow:0 1px 3px rgba(0,0,0,.05)}.stat-card h4{font-size:.85rem;text-transform:uppercase;color:#64748b;margin-bottom:8px;font-weight:600}.stat-card .val{font-size:1.8rem;font-weight:800;font-family:var(--font-ui)}.stat-card .sub{font-size:.8rem;color:#94a3b8;margin-top:5px}.t-blue .val,.t-blue h4{color:var(--c-blue)}.t-red .val,.t-red h4{color:var(--c-red)}.t-purple .val,.t-purple h4{color:var(--c-purple)}.t-green .val,.t-green h4{color:var(--c-green)}.qual-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.qual-card{color:white;padding:15px;border-radius:8px;text-align:center;box-shadow:0 2px 5px rgba(0,0,0,.2)}.qual-card.pass{background:#22c55e}.qual-card.fail{background:#ef4444}.diff-box{background:white;padding:25px;border-radius:12px;border:1px solid #e5e7eb;box-shadow:0 1px 3px rgba(0,0,0,.05)}.diff-content{font-family:'Times New Roman',serif;font-size:1.25rem;line-height:1.9;padding:15px;border:1px solid #e2e8f0;background:#fdfdfd;margin-bottom:20px;white-space:pre-wrap;max-height:350px;overflow-y:auto}.hl-correct{color:#000}.hl-err-bg{background:#fee2e2;color:#dc2626;text-decoration:line-through}.hl-add-bg{background:#fef9c3;color:#b45309}.hl-sub-bg{background:#fee2e2;color:#dc2626;font-weight:bold}.hl-half{color:#d97706;border-bottom:2px dotted #d97706}.hl-repeat{background:#fecaca;color:#991b1b;font-weight:bold;text-decoration:underline}.fullscreen-badge{position:fixed;bottom:20px;right:20px;background:rgba(0,0,0,.75);color:white;padding:10px 18px;border-radius:25px;font-size:.75rem;z-index:10000;display:none;box-shadow:0 4px 10px rgba(0,0,0,.3);animation:fadeInUp .3s ease}@keyframes fadeInUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.fullscreen-mode .fullscreen-badge{display:block}@media (max-width:768px){.grid-4{grid-template-columns:repeat(2,1fr)}.grid-mix{grid-template-columns:1fr}.qual-grid{grid-template-columns:1fr}}