:root{--bg: #f4f6f9;--card: #ffffff;--ink: #1c2530;--muted: #6b7684;--line: #e3e8ef;--brand: #0b5cab;--brand-dark: #084a8c;--good: #2e9e5b;--bad: #c0392b;--shadow: 0 1px 3px rgba(16, 30, 54, .08), 0 4px 16px rgba(16, 30, 54, .06);--radius: 14px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--bg);line-height:1.5}.app{max-width:900px;margin:0 auto;padding:0 16px 40px}.topbar{display:flex;align-items:center;justify-content:space-between;padding:16px 4px}.brand{display:flex;align-items:center;gap:12px}.brand-mark{background:var(--brand);color:#fff;font-weight:800;letter-spacing:.5px;border-radius:8px;padding:6px 10px;font-size:14px}.brand-mark.big{font-size:22px;padding:10px 16px;border-radius:12px}.brand-title{font-weight:700}.brand-sub{font-size:13px;color:var(--muted)}.link-btn{background:none;border:none;color:var(--brand);cursor:pointer;font-size:14px}.link-btn:hover{text-decoration:underline}.btn{border:1px solid var(--line);background:#fff;color:var(--ink);padding:11px 18px;border-radius:10px;font-size:15px;cursor:pointer;transition:transform .05s,background .15s,border-color .15s}.btn:hover:not(:disabled){border-color:#c7cfda}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--brand);color:#fff;border-color:var(--brand)}.btn.primary:hover:not(:disabled){background:var(--brand-dark)}.btn.ghost{background:transparent}.btn.lg{padding:14px 26px;font-size:16px;font-weight:600}.start{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:30px 16px}.start-foot{max-width:560px;width:100%}.start-card{background:var(--card);border-radius:20px;box-shadow:var(--shadow);padding:32px;max-width:560px;width:100%}.start-hero{text-align:center;margin-bottom:22px}.start-hero h1{margin:16px 0 8px;font-size:26px}.lede{color:var(--muted);margin:0}.field{display:block;margin:18px 0}.field>span{display:block;font-weight:600;margin-bottom:8px}.field input[type=text]{width:100%;padding:12px 14px;font-size:16px;border:1px solid var(--line);border-radius:10px;background:#fff}.field input:focus{outline:2px solid var(--brand);border-color:var(--brand)}.muted{color:var(--muted)}small.muted{font-size:12px;margin-top:6px;display:block}.size-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.size-opt{display:flex;flex-direction:column;gap:3px;text-align:left;padding:12px;border:1.5px solid var(--line);border-radius:12px;background:#fff;cursor:pointer}.size-opt.selected{border-color:var(--brand);background:#eef5fd}.size-opt strong{font-size:15px}.size-opt em{font-style:normal;font-size:12px;color:var(--muted)}.size-count{font-size:11px;color:var(--brand);font-weight:600;margin-top:4px}.len-value{color:var(--brand);font-weight:700}.length-slider{width:100%;margin:4px 0 2px;accent-color:var(--brand);height:26px;cursor:pointer}.slider-scale{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);padding:0 2px}.rules{margin:20px 0;padding-left:20px;color:#38424f;font-size:14px}.rules li{margin:6px 0}.road-wrap{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 16px;margin-bottom:20px}.road-stats{display:flex;gap:22px;flex-wrap:wrap;margin-bottom:8px}.stat{display:flex;flex-direction:column}.stat-num{font-size:22px;font-weight:800;line-height:1.1}.stat-lbl{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}.road-svg{width:100%;height:120px;display:block;border-radius:10px}.block-meta{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:12px;font-size:14px}.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px;margin-bottom:16px}.q-area{display:inline-block;font-size:12px;font-weight:700;color:var(--brand);text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px}.q-text{font-size:20px;margin:0 0 16px;line-height:1.35}.q-figure{margin:0 0 18px;text-align:center}.q-figure img{max-width:100%;max-height:280px;border:1px solid var(--line);border-radius:10px;background:#fff}.q-figcaption{font-size:13px;color:var(--muted);font-style:italic;padding:10px;border:1px dashed var(--line);border-radius:10px}.options{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.option{width:100%;display:flex;align-items:center;gap:12px;text-align:left;padding:13px 15px;border:1.5px solid var(--line);border-radius:12px;background:#fff;font-size:15px;cursor:pointer;transition:border-color .12s,background .12s}.option:hover:not(:disabled){border-color:#b9c3d0}.option.selected{border-color:var(--brand);background:#eef5fd}.option.correct{border-color:var(--good);background:#e9f7ee}.option.wrong{border-color:var(--bad);background:#fbeceb}.option:disabled{cursor:default}.opt-letter{flex:none;width:26px;height:26px;border-radius:50%;background:#eef1f5;color:#55606d;display:grid;place-items:center;font-weight:700;font-size:13px}.option.selected .opt-letter{background:var(--brand);color:#fff}.option.correct .opt-letter{background:var(--good);color:#fff}.option.wrong .opt-letter{background:var(--bad);color:#fff}.opt-text{flex:1}.opt-tag{flex:none;font-size:11px;font-weight:700;text-transform:uppercase;color:var(--muted)}.option.correct .opt-tag{color:var(--good)}.explanation{margin:16px 0 0;padding:12px 14px;background:#f6f8fb;border-radius:10px;font-size:14px}.nav-row{display:flex;justify-content:space-between;gap:12px;margin-top:4px}.nav-row.center{justify-content:center}.dots{display:flex;flex-wrap:wrap;gap:7px;justify-content:center;margin-top:18px}.dot{width:12px;height:12px;border-radius:50%;border:none;background:#d3dae3;cursor:pointer;padding:0}.dot.done{background:#9db4cd}.dot.active{background:var(--brand);transform:scale(1.25)}.review-head{display:flex;align-items:center;gap:18px;background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 22px;margin-bottom:18px}.score-badge{flex:none;text-align:center;border-radius:12px;padding:10px 16px;color:#fff}.score-badge.good{background:var(--good)}.score-badge.ok{background:#c9a227}.score-badge.bad{background:var(--bad)}.score-num{display:block;font-size:24px;font-weight:800}.score-pct{font-size:12px}.review-msg p{margin:0}.correct-details{margin:8px 0 16px}.correct-details summary{cursor:pointer;color:var(--brand);font-weight:600;margin-bottom:10px}.summary-hero{text-align:center;background:var(--card);border-radius:20px;box-shadow:var(--shadow);padding:30px;margin-bottom:18px}.summary-hero.pass{border-top:5px solid var(--good)}.summary-hero.work{border-top:5px solid #c9a227}.summary-emoji{font-size:48px}.summary-hero h1{margin:6px 0 10px}.summary-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:24px}.sstat{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;text-align:center}.sstat-num{display:block;font-size:26px;font-weight:800}.sstat-lbl{font-size:12px;color:var(--muted)}.section-title{font-size:18px;margin:10px 0 14px}.area-bars{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 20px;margin-bottom:22px}.area-row{display:grid;grid-template-columns:190px 1fr 52px;align-items:center;gap:12px;margin:9px 0}.area-name{font-size:13px}.area-bar{background:#eef1f5;border-radius:6px;height:12px;overflow:hidden}.area-fill{height:100%;border-radius:6px;transition:width .5s}.area-val{font-size:13px;text-align:right;color:var(--muted)}.center{text-align:center}.donate{margin-top:44px;padding-top:24px;border-top:1px solid var(--line);text-align:center}.donate-text{margin:0 auto 16px;font-size:14px;color:#38424f;max-width:520px}.donate-embed{position:relative;width:100%}.donate-embed iframe{width:100%;min-height:640px;border:0;border-radius:12px;background:#fff;box-shadow:var(--shadow)}.foot{margin-top:30px;text-align:center}.attribution{font-size:12px;color:var(--muted);line-height:1.5;margin:0 auto;max-width:640px}.attribution a{color:var(--muted);text-decoration:underline}.attribution a:hover{color:var(--brand)}@media (max-width: 620px){.size-grid{grid-template-columns:1fr}.summary-stats{grid-template-columns:repeat(2,1fr)}.area-row{grid-template-columns:120px 1fr 46px}.q-text{font-size:18px}}
