:root{--primary: #79d344;--primary-dark: #5fb830;--text: #111827;--text-muted: #4b5563;--bg: #f4f6f8;--surface: #ffffff;--border: #e5e7eb;--accent-yellow: #fff000;--success: #065f46;--danger: #b91c1c;font-family:system-ui,-apple-system,Segoe UI,Microsoft JhengHei,sans-serif;line-height:1.6;color:var(--text);background:var(--bg)}*,*:before,*:after{box-sizing:border-box}html{overflow-x:hidden}body{margin:0;min-width:320px;overflow-x:hidden;max-width:100%}img,svg{max-width:100%;height:auto}button,a{font:inherit}:focus-visible{outline:3px solid var(--primary);outline-offset:2px}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:.75rem 1.25rem;border-radius:10px;border:2px solid transparent;cursor:pointer;font-weight:600;text-decoration:none;transition:background .15s,border-color .15s}.btn-primary{background:var(--primary);color:var(--text);border-color:var(--primary-dark)}.btn-primary:hover{background:var(--primary-dark)}.btn-secondary{background:var(--surface);color:var(--text);border-color:var(--border)}.btn-secondary:hover{border-color:var(--text-muted)}.btn-danger{background:var(--surface);color:var(--danger);border-color:#fca5a5}.btn-block{width:100%}.option-btn{display:block;width:100%;min-height:56px;text-align:left;padding:.875rem 1rem;margin-bottom:.625rem;border-radius:10px;border:2px solid var(--border);background:var(--surface);cursor:pointer;line-height:1.5;font-size:clamp(1rem,2.2vw,1.125rem);overflow-wrap:anywhere}.option-btn.selected{border-color:var(--primary-dark);background:#eefae6;box-shadow:inset 0 0 0 1px var(--primary-dark)}.option-btn.correct{border-color:var(--success);background:#ecfdf5}.option-btn.incorrect{border-color:var(--danger);background:#fef2f2}.exam-header{display:flex;flex-wrap:wrap;gap:.5rem 1rem;align-items:center;justify-content:space-between;margin-bottom:1rem;font-size:.875rem;color:var(--text-muted)}.question-text{font-size:clamp(1.05rem,2.5vw,1.35rem);line-height:1.65;margin:0 0 1.25rem;overflow-wrap:anywhere}@media (min-width: 768px){.question-text{font-size:1.25rem}}.nav-panel{display:flex;flex-wrap:wrap;gap:.375rem;margin:1rem 0}.nav-panel.collapsed{max-height:0;overflow:hidden;margin:0}.nav-dot{width:2.5rem;height:2.5rem;min-width:40px;min-height:40px;border-radius:8px;border:2px solid var(--border);background:var(--surface);font-size:.75rem;cursor:pointer}.nav-dot.answered{border-color:var(--primary-dark);background:#eefae6}.nav-dot.marked{border-color:#ca8a04;background:#fefce8}.nav-dot.current{box-shadow:inset 0 0 0 2px var(--text)}.exam-toolbar{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.25rem;position:sticky;bottom:0;background:var(--bg);padding:.75rem 0;padding-bottom:calc(12px + env(safe-area-inset-bottom,0px));z-index:10}.layout-header{background:var(--surface);border-bottom:1px solid var(--border);padding:.875rem 1.25rem;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 1rem}.layout-title{color:var(--text);text-decoration:none;font-weight:700;font-size:.9375rem;line-height:1.4}@media (min-width: 640px){.layout-title{font-size:1rem}}.review-item{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1rem 1.25rem;margin-bottom:1rem}.status-pill{display:inline-flex;align-items:center;gap:.25rem;padding:.2rem .6rem;border-radius:999px;font-size:.8125rem;font-weight:600;border:1px solid var(--border);margin-right:.35rem}.status-pill.ok{background:#ecfdf5}.status-pill.bad{background:#fef2f2}.status-pill.neutral{background:#f3f4f6}.list-item{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;justify-content:space-between;padding:.875rem 0;border-bottom:1px solid var(--border)}.checkbox-row{display:flex;align-items:center;gap:.5rem;padding:.5rem 0;cursor:pointer}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#11182773;display:flex;align-items:center;justify-content:center;padding:1rem;z-index:100}.modal{background:var(--surface);border-radius:14px;padding:1.25rem;max-width:min(420px,calc(100vw - 24px));max-height:90dvh;overflow-y:auto;width:100%;line-height:1.6}.modal-actions{display:flex;flex-direction:column;gap:.5rem;margin-top:1rem}.save-indicator{font-size:.8125rem;color:var(--text-muted)}.save-indicator.saved{color:var(--success)}.field-error{color:var(--danger);font-size:.875rem;margin:.375rem 0 .75rem}.login-page{max-width:420px;margin:0 auto}.login-notice{font-size:.8125rem;color:var(--text-muted);background:#f9fafb;border:1px solid var(--border);border-radius:10px;padding:.75rem 1rem;margin-bottom:1.25rem;line-height:1.5}.login-form{margin-bottom:2rem}.login-label{display:block;font-weight:600;margin-bottom:.5rem}.login-input{display:block;width:100%;min-height:52px;padding:.75rem 1rem;font-size:16px;border:2px solid var(--border);border-radius:10px;margin-bottom:.25rem}.login-input:focus{outline:none;border-color:var(--primary-dark);box-shadow:0 0 0 3px #79d34440}.login-input.has-error{border-color:var(--danger)}.section-title{font-size:1.125rem;font-weight:700;margin:0 0 .75rem}.recent-users{border-top:1px solid var(--border);padding-top:1.25rem}.recent-user-row{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;justify-content:space-between;padding:.75rem 0;border-bottom:1px solid var(--border)}.recent-meta{font-size:.8125rem;color:var(--text-muted)}.recent-actions{display:flex;flex-wrap:wrap;gap:.5rem}.user-menu{position:relative}.user-menu-trigger{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:.375rem .75rem;cursor:pointer;font-weight:600;font-size:.875rem}.user-menu-desktop{display:none}.user-menu-mobile{display:inline}@media (min-width: 640px){.user-menu-desktop{display:inline}.user-menu-mobile{display:none}}.user-menu-dropdown{position:absolute;right:0;top:calc(100% + .35rem);min-width:200px;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 4px 16px #00000014;z-index:50;padding:.35rem}.user-menu-item{display:block;width:100%;text-align:left;padding:.625rem .75rem;border:none;background:transparent;cursor:pointer;border-radius:6px;font-size:.9375rem}.user-menu-item:hover{background:#f3f4f6}.user-menu-rename{padding:.5rem}.last-question-hint{background:#fffbeb;border:1px solid #fcd34d;color:#92400e;padding:.75rem 1rem;border-radius:10px;margin:.75rem 0;font-weight:600}.btn:disabled,.btn[aria-disabled=true]{opacity:.45;cursor:not-allowed}.app-shell{min-height:100vh;min-height:100dvh;background:var(--bg);color:var(--text);overflow-x:hidden}.container{width:min(100% - 24px,900px);max-width:100%;margin:0 auto;padding:1rem 0 2.5rem;overflow-wrap:anywhere}.page-title{font-size:1.5rem;font-weight:700;margin:0 0 1rem;line-height:1.4}.subtitle{color:var(--text-muted);margin:0 0 1.5rem;line-height:1.6}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.75rem;margin-bottom:1.5rem}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:.875rem 1rem}.stat-card .label{font-size:.8125rem;color:var(--text-muted);margin-bottom:.25rem}.stat-card .value{font-size:1.25rem;font-weight:700}.btn-row{display:flex;flex-direction:column;gap:.75rem}@media (min-width: 640px){.btn-row.two-col{flex-direction:row;flex-wrap:wrap}.btn-row.two-col>*{flex:1;min-width:200px}}.error-box{background:#fef2f2;border:1px solid #fecaca;color:#991b1b;padding:1rem;border-radius:12px;line-height:1.6}.success-box{background:#ecfdf5;border:1px solid #a7f3d0;color:#065f46;padding:1rem;border-radius:12px}.progress-bar{height:8px;background:var(--border);border-radius:999px;overflow:hidden}.progress-bar>span{display:block;height:100%;background:var(--primary);border-radius:999px}.unit-row{margin-bottom:1rem}.unit-row-header{display:flex;justify-content:space-between;gap:.5rem;font-size:.875rem;margin-bottom:.35rem;line-height:1.5}.tag{display:inline-block;padding:.125rem .5rem;border-radius:6px;font-size:.75rem;font-weight:600;border:1px solid var(--border)}.tag-good{background:#ecfdf5;border-color:#6ee7b7}.tag-warn{background:#fffbeb;border-color:#fcd34d}.tag-bad{background:#fef2f2;border-color:#fca5a5}.empty-state{text-align:center;padding:2rem 1rem;color:var(--text-muted);line-height:1.6}
