*{box-sizing:border-box}html,body{margin:0;padding:0}button,input,select,textarea{font-family:inherit}:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline-offset:3px;outline:3px solid #3949ab}body{color:#111;background:#f2f2f2;font-family:Malgun Gothic,Apple SD Gothic Neo,-apple-system,sans-serif;line-height:1.5}:root{--wrap-max-width:640px;--wrap-gutter:16px;--help-button-size:28px;--help-button-font:.95rem;--site-footer-height:48px}.wrap{max-width:var(--wrap-max-width);padding:var(--wrap-gutter);min-height:calc(100vh - var(--site-footer-height));margin:0 auto}.page-title{align-items:flex-start;gap:12px;margin:0 0 4px;display:flex}.page-title h1{flex:1;min-width:0;margin:0}.help-button{width:var(--help-button-size);height:var(--help-button-size);color:#111;font-size:var(--help-button-font);cursor:pointer;background:#fff;border:2px solid #222;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-family:inherit;font-weight:700;line-height:1;text-decoration:none;display:inline-flex}.help-button:hover{background:#eee}.help-button[aria-current=page]{color:#fff;background:#222}h1{margin:0 0 4px;font-size:1.3rem}.sub{color:#555;margin-bottom:24px;font-size:.9rem}.panel{background:#fff;border:1px solid #999;margin-bottom:16px;padding:20px}.btn{color:#111;cursor:pointer;text-align:center;box-sizing:border-box;background:#fff;border:1px solid #333;width:100%;margin-top:8px;padding:12px;font-size:1rem;text-decoration:none;display:inline-block}.navlinks{flex-wrap:wrap;justify-content:center;gap:12px;margin-bottom:12px;font-size:.85rem;display:flex}.navlinks a,.navlinks .link-button,.contact-email .link-button{color:#555;text-decoration:underline}.navlinks .link-button,.contact-email .link-button{font:inherit;cursor:pointer;background:0 0;border:0;padding:0}.contact-email{align-items:baseline;gap:8px;display:inline-flex}.contact-address{-webkit-user-select:all;user-select:all;text-decoration:none}.site-footer{max-width:var(--wrap-max-width);padding:0 var(--wrap-gutter) 24px;min-height:var(--site-footer-height);margin:0 auto}.btn:hover{background:#eee}.btn-primary{color:#fff;background:#222;border-color:#222}.btn-primary:hover{background:#000}.btn-danger{color:#fff;background:#b00020;border-color:#b00020}.btn-danger:hover{background:#8a0019}.btn:disabled{opacity:.5;cursor:default}input[type=text]{text-transform:uppercase;border:1px solid #999;width:100%;padding:10px;font-size:1rem}input[type=date],select{background:#fff;border:1px solid #999;width:100%;padding:10px;font-size:1rem}input[type=date]{display:block}.code-display{letter-spacing:.2em;text-align:center;background:#fafafa;border:2px solid #222;margin:12px 0;padding:16px;font-size:2rem;font-weight:700}.error{color:#b00020;margin-top:8px;font-size:.9rem}.statbar{background:#fff;border:1px solid #999;flex-wrap:wrap;justify-content:space-between;gap:4px 12px;margin-bottom:12px;padding:8px 12px;font-size:.85rem;display:flex}.qmeta{color:#666;margin-bottom:4px;font-size:.8rem}label.qmeta{margin-bottom:6px;display:block}.qtext{white-space:pre-wrap;margin-bottom:16px;font-size:1.1rem}.choice{text-align:left;cursor:pointer;background:#fff;border:1px solid #999;width:100%;margin-bottom:8px;padding:12px;font-size:1rem;display:block}.choice:hover:not(:disabled){background:#eee}.choice.correct{background:#d5efd5;border-color:#2e7d32}.choice.wrong{background:#f8d7da;border-color:#b00020}.choice:disabled{cursor:default}.explanation{background:#fafafa;border:1px dashed #999;margin-top:16px;padding:12px;font-size:.95rem}.actions{gap:8px;margin-top:16px;display:flex}.actions .btn{margin-top:0}.overlay{padding:var(--wrap-gutter);background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.popup{background:#fff;border:1px solid #333;width:100%;max-width:480px;max-height:80vh;padding:20px;overflow-y:auto}.popup>h2,.doc-popup-head h2{margin-top:0;font-size:1.05rem}.timer{font-variant-numeric:tabular-nums;font-weight:700}.timer.low{color:#b00020}.exam-nav{justify-content:space-between;gap:8px;margin-top:16px;display:flex}.exam-nav .btn{margin-top:0}.exam-grid{grid-template-columns:repeat(10,1fr);gap:4px;margin:12px 0;display:grid}.exam-grid button{aspect-ratio:1;cursor:pointer;background:#fff;border:1px solid #999;padding:0;font-size:.7rem}.exam-grid button.answered{background:#e3e9ff;border-color:#3949ab}.exam-grid button.current{border:2px solid #222;font-weight:700}.score-row{align-items:center;gap:8px;margin-bottom:8px;display:flex}.score-row .label{color:#555;width:88px;font-size:.85rem}.score-bar-track{background:#eee;border:1px solid #ccc;flex:1;height:10px}.score-bar-fill{background:#3949ab;height:100%}.score-bar-fill.failed{background:#b00020}.score-row .value{text-align:right;width:56px;font-size:.85rem}.result-banner{text-align:center;margin-bottom:16px;padding:20px;font-size:1.3rem;font-weight:700}.result-banner.pass{color:#1b5e20;background:#d5efd5;border:1px solid #2e7d32}.result-banner.fail{color:#7a0016;background:#f8d7da;border:1px solid #b00020}.review-item{border:1px solid #999;margin-bottom:8px;padding:12px}.review-item .qmeta{justify-content:space-between;display:flex}.guide-h2{margin:0 0 10px;font-size:1.05rem}.guide-p{margin:0 0 10px;line-height:1.75}.guide-list{margin:0;padding-left:20px;line-height:1.7}.guide-example{border-top:1px solid #eee;margin-top:10px;padding-top:10px}.guide-topic-nav{grid-template-columns:1fr 1fr;gap:8px;margin:16px 0;display:grid}.guide-topic-nav-link{color:#111;box-sizing:border-box;background:#fff;border:1px solid #333;flex-direction:column;gap:2px;min-width:0;min-height:44px;padding:8px 12px;text-decoration:none;display:flex}.guide-topic-nav-link:hover{background:#eee}.guide-topic-nav-next{text-align:right;grid-column:2}.guide-topic-nav-dir,.guide-topic-nav-subject{color:#555;font-size:.8rem}.guide-topic-nav-name{overflow-wrap:anywhere;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;font-size:.9rem;line-height:1.4;display:-webkit-box;overflow:hidden}.diagram{background:#fafafa;border:1px solid #999;margin:0 0 14px;padding:12px;overflow-x:auto}.diagram-caption{margin-bottom:6px;font-size:.9rem;font-weight:700}.diagram-scale+.diagram-scale{margin-top:14px}.diagram-row{flex-wrap:wrap;gap:4px;display:flex}.diagram-step{align-items:center;gap:4px;display:inline-flex}.diagram-sign{font-size:1rem;font-weight:700}.diagram-cell{background:#fff;border:1px solid #333;padding:4px 8px;font-size:.85rem}.diagram-axis{color:#555;justify-content:space-between;gap:8px;margin-top:6px;font-size:.75rem;display:flex}.diagram-table{border-collapse:collapse;font-size:.9rem}.diagram-table th,.diagram-table td{text-align:center;white-space:nowrap;background:#fff;border:1px solid #999;padding:4px 8px}.diagram-table th{background:#eee;font-weight:400}.diagram-table-left th,.diagram-table-left td{text-align:left;white-space:normal;vertical-align:top;word-break:keep-all}.diagram-note{color:#555;font-size:.72rem;display:block}.diagram-table td.diagram-hit{background:#fff3c4;font-weight:700}.practical-question{white-space:pre-wrap}.practical-code pre{white-space:pre;background:#fafafa;border:1px solid #999;margin:4px 0 12px;padding:10px;font-family:Consolas,D2Coding,monospace;font-size:.85rem;overflow-x:auto}.practical-blank{margin-top:10px}.practical-blank label{margin-bottom:4px;font-size:.85rem;display:block}input[type=text].answer-input{text-transform:none}.practical-mark{margin-top:4px;font-size:.9rem;font-weight:700}.practical-mark.correct{color:#1b5e20}.practical-mark.wrong{color:#b00020}.practical-alt{color:#555;font-weight:400}.code-memo{background:#fff3f3;border:1px solid #b00020;margin:10px 0 0;padding:10px 12px;font-size:.9rem}.panel-alert{border-color:#b00020}.link-confirm{background:#fff3f3;border:1px solid #b00020;margin-top:12px;padding:12px;font-size:.9rem}.linked-code-notice{max-width:var(--wrap-max-width);padding:var(--wrap-gutter) var(--wrap-gutter) 0;margin:0 auto}.linked-code-notice .panel{margin-bottom:0}.linked-code-notice-text{margin:8px 0 0;font-size:.9rem}.help-section{margin-top:16px}.help-h3{margin:0 0 8px;font-size:1rem}.help-steps{margin:0;padding-left:0;list-style:none}.help-steps li{margin-bottom:14px}.help-steps p{margin:0 0 6px}.help-step-text{align-items:flex-start;gap:6px;display:flex}.help-step-text .help-badge{margin-top:2px}.help-shot-box{width:260px;max-width:80%;position:relative}.help-shot{border:1px solid #999;width:100%;height:auto;display:block}.help-mark{box-sizing:border-box;pointer-events:none;border:3px solid #d00000;border-radius:6px;position:absolute;box-shadow:0 0 0 2px #fff}.help-badge{color:#fff;text-align:center;background:#d00000;border-radius:50%;flex-shrink:0;width:20px;height:20px;font-size:.75rem;font-weight:700;line-height:20px;display:inline-block}.help-mark-badge{position:absolute;top:-12px;left:-12px}.study-stages{flex-wrap:wrap;gap:4px;margin-bottom:12px;display:flex}.study-stage{cursor:pointer;background:#fff;border:1px solid #999;flex:45%;padding:8px;font-size:.85rem}.study-stage.active{color:#fff;background:#222;border-color:#222}.study-stage.done:after{content:" ✓"}.study-stage:disabled{opacity:.5;cursor:default}.study-sentence{margin:8px 0 12px;font-size:1.05rem;line-height:1.8}.study-hidden{color:#888}.study-diff mark{background:#ffd54f;padding:0 2px}textarea.study-input{border:1px solid #999;width:100%;min-height:90px;margin-top:8px;padding:10px;font-family:inherit;font-size:1rem}input[type=text].cloze-input{text-transform:none;width:9em;margin:0 2px;padding:4px 6px;font-size:1rem;display:inline-block}input[type=text].cloze-input.correct{border-color:#1b5e20}input[type=text].cloze-input.wrong{border-color:#b00020}.exam-toggle{gap:8px;display:flex}.exam-toggle .btn{margin-top:0}.doc-title{margin-bottom:16px}.doc-h2{border-bottom:2px solid #222;margin:0 0 12px;padding-bottom:6px;font-size:1.2rem}.doc-h3{margin:0 0 4px;font-size:1rem}.doc-h2-standalone{margin-top:24px}.howto p,.howto li{word-break:keep-all}.howto-intro{color:#555;margin:0 0 12px}.howto-item+.howto-item{border-top:1px solid #ddd;margin-top:12px;padding-top:12px}.howto-item .guide-p{margin:0 0 4px}.howto-steps{margin:0;padding-left:22px;line-height:1.75}.howto-steps li+li{margin-top:6px}.howto-steps a{color:#111;text-decoration:underline}.howto-link{color:#111;font-size:.9rem;text-decoration:underline}.plan-table-wrap{overflow-x:auto}.plan-table{border-collapse:collapse;width:100%;font-size:.9rem}.plan-table th,.plan-table td{text-align:left;vertical-align:top;word-break:keep-all;background:#fff;border:1px solid #333;padding:6px 8px}.plan-table thead th{background:#eee}.plan-table tbody th{white-space:nowrap}.plan-date-note{margin:8px 0 0}.plan-day-title{margin-bottom:8px}.plan-day-grid{grid-template-columns:max-content 1fr;gap:4px 12px;margin:0;display:grid}.plan-day-grid dt{color:#555;font-size:.85rem}.plan-day-grid dd{word-break:keep-all;margin:0}.plan-links{border-top:1px solid #eee;margin-top:10px;padding-top:10px}@media (max-width:480px){.plan-table{font-size:.8rem}.plan-table th,.plan-table td{padding:4px 5px}}.howto [id]{scroll-margin-top:16px}.howto [id]:target,.howto .howto-active{outline-offset:6px;background:#f3f3f3;outline:3px solid #111}.doc-popup{max-width:var(--wrap-max-width);max-height:calc(100vh - 2 * var(--wrap-gutter));max-height:calc(100dvh - 2 * var(--wrap-gutter));flex-direction:column;padding:0;display:flex;overflow:hidden}.doc-popup-head{padding:12px var(--wrap-gutter);border-bottom:1px solid #999;align-items:center;gap:12px;display:flex}.doc-popup-head h2{white-space:nowrap;flex:1 0 auto;margin-bottom:0}.doc-popup-head a{color:#111;word-break:keep-all;text-align:right;flex:0 auto;font-size:.85rem;text-decoration:underline}.doc-popup-head .btn{white-space:nowrap;flex:none;width:auto;margin-top:0;padding:6px 12px;font-size:.9rem}.doc-popup-body{min-height:0;padding:var(--wrap-gutter);background:#f2f2f2;flex:1;overflow-y:auto}
