:root{font-family:"Yu Gothic UI","Meiryo",sans-serif;color:#172b38;background:#f3f6f5;font-size:15px;--teal:#17645e;--border:#d5dfdc}*{box-sizing:border-box}body{margin:0}header{height:68px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 32px}.brand{font-weight:750;letter-spacing:.06em}a{color:var(--teal);text-underline-offset:4px}main{max-width:1500px;margin:0 auto;padding:28px}h1{font-size:28px;line-height:1.45;margin:4px 0 12px}h2{font-size:21px}h3{font-size:17px}.narrow{max-width:760px;margin:70px auto}.narrow h1{font-size:42px;line-height:1.5}.narrow p{line-height:1.9}.eyebrow{font-size:12px;letter-spacing:.1em;font-weight:bold;color:var(--teal)}button,input,select,textarea{font:inherit}button{border:1px solid #bdcfca;border-radius:7px;background:#fff;color:#174c47;padding:9px 14px;cursor:pointer;min-height:40px}button:hover:not(:disabled){background:#e7f1ed}button:disabled{opacity:.5;cursor:default}.primary{background:var(--teal);color:#fff;border-color:var(--teal)}button.primary:hover:not(:disabled){background:#114e49}input,select,textarea{border:1px solid #bccdc6;border-radius:6px;padding:10px;background:#fff;color:#172b38}input:focus,textarea:focus,button:focus-visible{outline:3px solid #8fc6b8;outline-offset:2px}input:not([type=checkbox]),textarea{width:100%}input[type=checkbox]{width:18px;height:18px}textarea{min-height:95px}label{display:block;font-size:14px;margin:12px 0}label input,label textarea{margin-top:6px}.test-heading{display:flex;align-items:center;justify-content:space-between;gap:15px}.notice{padding:15px 18px;background:#e4eeea;border-radius:8px;line-height:1.7}.muted{color:#62746f;font-size:13px;line-height:1.7}nav{display:flex;gap:8px;flex-wrap:wrap;margin:20px 0}nav button[aria-current=true]{background:var(--teal);color:#fff}.workspace{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;align-items:start}.pdf-panel,.card,.question{background:white;border:1px solid var(--border);border-radius:10px;padding:20px;margin-bottom:16px}.pdf-panel{position:sticky;top:16px;padding:12px}.panel-title{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px;font-size:13px}.pdf-panel iframe{width:100%;height:calc(100vh - 190px);min-height:500px;border:0;background:#e9efec}.question h3{margin:4px 0 18px;line-height:1.7}.question .points{float:right;color:#64786f;font-size:12px}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}.submit-box{background:#e4eeea;padding:20px;border-radius:10px;margin:24px 0}#save-state{margin-right:10px;font-size:13px}#message,#entry-error,.error{color:#a73d2b;white-space:pre-wrap;line-height:1.7}table{width:100%;border-collapse:collapse;background:white;font-size:13px}td,th{border-bottom:1px solid var(--border);text-align:left;padding:12px 9px;white-space:nowrap}th{background:#e8efeb}.scroll{overflow-x:auto}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.row>*{flex:1}.row button,.row select{flex:0 auto}.stack{display:grid;grid-template-columns:1fr 1fr;gap:20px}.circuit-tools{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}.circuit-tools button{font-size:12px;padding:6px 9px}.circuit-tools button.active{background:#d8ebe2;border-color:var(--teal)}.circuit svg{display:block;width:100%;aspect-ratio:5/3;background:#fbfdfb;border:1px solid #b9cec3;border-radius:6px;touch-action:none;user-select:none}.circuit.fullscreen{position:fixed;inset:12px;z-index:50;background:white;overflow:auto;padding:20px;box-shadow:0 0 0 20px #20372dc0}.circuit.fullscreen svg{max-height:75vh}.stats{display:flex;gap:14px;margin:18px 0}.stat{background:#fff;border:1px solid var(--border);border-radius:8px;padding:15px;flex:1}.stat strong{display:block;font-size:26px;margin-top:5px}dialog{border:1px solid var(--border);border-radius:12px;width:min(1000px,95vw);max-height:92vh;padding:24px}dialog::backdrop{background:#163d3580}.answer-list{line-height:1.8;columns:2}pre{white-space:pre-wrap;word-break:break-word;background:#f0f4f1;padding:15px;border-radius:6px}details{margin:16px 0}summary{cursor:pointer}#review-modal .circuit svg{max-height:450px}[hidden]{display:none!important}@media(max-width:900px){.workspace,.stack{grid-template-columns:1fr}.pdf-panel{position:static}.pdf-panel iframe{height:460px;min-height:0}main{padding:18px}.field-grid{grid-template-columns:1fr}.test-heading{align-items:start;flex-direction:column}.narrow{margin:30px auto}.narrow h1{font-size:32px}.answer-list{columns:1}header{padding:0 18px}.stats{flex-wrap:wrap}}

.sketch-canvas{width:100%;height:auto;display:block;border:1px solid #9cb0aa;touch-action:none;background:white}.library-item{padding:16px 0;border-bottom:1px solid #dce5e0}.answer-list p{white-space:pre-wrap}.field-grid textarea{width:100%;min-height:150px}
.system-original{line-height:2.4;overflow-x:auto}.system-original sub{font-size:.7em;vertical-align:sub;line-height:0}.inline-blank{display:inline-flex;align-items:baseline;white-space:nowrap;margin:3px 2px}.system-original .inline-blank input{width:11ch;min-width:7ch;display:inline-block;padding:5px 7px;margin:0}.original-line{margin:6px 0}.written-calculation{width:max-content;max-width:100%;font-variant-numeric:tabular-nums}.calculation-row{display:grid;grid-template-columns:2.5em 16em 13em;align-items:center;min-width:490px}.calculation-rule{border-bottom:2px solid #364d47}.mask-calculation{width:max-content;text-align:right;font-variant-numeric:tabular-nums}.unit-footer{display:block;padding:18px;background:white;border:1px solid var(--border);border-radius:10px}.unit-footer p{line-height:1.8}.unit-actions{display:flex;gap:10px;flex-wrap:wrap}.unit-actions button{flex:1;min-width:150px}#sections{scroll-margin-top:16px}#missing{background:#fff7df;color:#5d4500;overflow-wrap:anywhere}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

.text-mode .pdf-panel{display:none}.text-mode .workspace{display:block;max-width:1080px;margin:auto}.text-mode #text-results{max-width:1080px;margin:20px auto}.question-image{display:block;max-width:100%;max-height:420px;margin:18px auto}.image-choices{display:grid;grid-template-columns:1fr 1fr;gap:16px}.image-choices label{padding:10px;border:1px solid #b8cfc5;border-radius:8px}.image-choices input[type=radio]{width:auto}.image-choices img{display:block;width:100%}.image-choices label:has(:checked){outline:3px solid #17645e;background:#edf8f3}.table-scroll{overflow:auto}.table-scroll table{min-width:640px}.table-scroll td{min-width:125px;white-space:normal}.table-scroll th{white-space:normal}.table-scroll input{min-width:100px}.question-result{background:#edf6f1;border-left:4px solid #17645e;padding:16px;margin-top:20px;white-space:pre-wrap}.context-text{white-space:pre-wrap;line-height:1.9}.score-list{display:flex;gap:16px;flex-wrap:wrap}.text-mode select{width:100%}.text-mode .question h3{white-space:pre-wrap}@media(max-width:650px){.image-choices{grid-template-columns:1fr}}
.c-lists{display:grid;grid-template-columns:1fr 1fr;gap:30px}.c-original h4{font-size:18px;font-weight:500;margin:14px 0 8px}.c-list-code{border:1px solid #60716b;padding:20px;font-family:Consolas,monospace;font-size:18px;height:100%}.c-line{white-space:pre;min-height:32px;line-height:1.8}.c-original input.c-code-blank{width:10ch;border:1px solid #60716b;border-radius:0;padding:2px 5px;font-family:Consolas,monospace;font-size:18px;height:30px}.c-break-layout{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(200px,1fr);gap:24px;align-items:center}.c-break-code{border:1px solid #60716b;padding:16px 12px;font-size:18px;overflow-x:auto}.c-break-row{display:grid;grid-template-columns:140px 1fr;align-items:center;min-height:30px}.c-break-row code{white-space:pre;font-family:Consolas,monospace}.break-marker{white-space:pre-line;color:#b42318;font-size:13px;line-height:1.3}.breakpoint-line code{background:#fff0e9}.c-variable-answers label{display:flex;align-items:center;white-space:pre;font-family:Consolas,monospace;font-size:18px}.c-variable-answers input{width:9ch!important;margin:0 4px}.c-variable-answers{padding-top:180px}@media(max-width:740px){.c-lists,.c-break-layout{grid-template-columns:1fr}.c-list-code{height:auto}.c-variable-answers{padding-top:0}.c-break-row{grid-template-columns:108px 1fr}.c-break-code{font-size:15px}.break-marker{font-size:11px}}
.c-lists>section{display:flex;flex-direction:column}.c-list-code{height:auto;flex:1}

.grading-wait[hidden]{display:none}
.grading-wait{position:fixed;inset:0;z-index:1000;background:rgba(18,39,49,.68);display:grid;place-items:center;padding:24px;overflow:auto;backdrop-filter:blur(3px)}
.grading-wait-card{box-sizing:border-box;width:min(100%,560px);padding:40px 32px;background:#fff;border:1px solid #d9e8e5;border-radius:20px;box-shadow:0 24px 90px #142f3c55;text-align:center;line-height:1.85;color:#193d40}
.grading-wait-card h2{font-size:30px;margin:12px 0}.grading-received{font-weight:700;color:#287269}
.grading-spinner{display:inline-block;width:48px;height:48px;border:5px solid #d8e9e5;border-top-color:#287269;border-radius:50%;animation:grading-spin 1s linear infinite}
@keyframes grading-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.grading-spinner{animation:none}}
@media(max-width:600px){.grading-wait-card{padding:28px 20px}.grading-wait-card h2{font-size:26px}}

.result-accordion>summary{cursor:pointer;font-size:18px;font-weight:700;padding:4px 0;line-height:1.6}.result-accordion>summary:focus-visible{outline:3px solid #17645e;outline-offset:6px;border-radius:4px}.result-accordion-body{padding-top:12px}

#review-modal{width:min(1120px,96vw);padding:0 24px 24px;scrollbar-gutter:stable}
#review-modal .review-header{position:sticky;top:0;z-index:2;background:white;padding:20px 0 16px;border-bottom:1px solid var(--border);gap:16px}
#review-modal .review-header h2{margin:0;font-size:20px;overflow-wrap:anywhere}
#review-modal .review-header button{flex-shrink:0}
#review-answers{columns:auto;line-height:1.65}
.review-answer-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:14px 0}.review-answer-tools p{flex:1;margin:0;min-width:200px}.review-answer-tools button{font-size:13px}
.review-answer-section{border:1px solid var(--border);border-radius:9px;overflow:hidden;margin:0 0 14px}
.review-answer-section>summary{padding:15px 18px;background:#e8f1ed;font-weight:700;line-height:1.7}
.review-answer-count{display:inline-block;margin-left:16px;font-size:12px;font-weight:400;color:#47635b}
.review-answer-table{table-layout:fixed;font-size:14px}.review-answer-table th,.review-answer-table td{white-space:pre-wrap;overflow-wrap:anywhere;vertical-align:top;padding:12px 16px;line-height:1.8}
.review-answer-table th:first-child{width:70px}.review-answer-table th:nth-child(2){width:45%}.review-answer-table thead th{background:#f5f8f6;color:#52665f;font-size:12px}.review-answer-table tbody th{background:#fafcfb;font-weight:600}
.review-answer-table tbody tr:nth-child(even){background:#f8faf9}.review-answer-table .review-question-start>*{border-top:2px solid #d5dfdc}.review-answer-value{font-weight:600;color:#174c47;font-variant-numeric:tabular-nums}.review-unanswered{display:inline-block;border-radius:4px;padding:1px 8px;background:#eef0ef;color:#6a7470;font-size:12px}.review-sketch{padding:16px}
@media(max-width:650px){#review-modal{padding:0 12px 16px}.review-answer-table th,.review-answer-table td{padding:10px 8px;font-size:13px}.review-answer-table th:first-child{width:48px}.review-answer-table th:nth-child(2){width:42%}.review-answer-count{display:block;margin-left:18px}#review-modal .review-header h2{font-size:17px}}

#number-modal{width:min(580px,95vw)}#number-identity{overflow-wrap:anywhere;line-height:1.8}

#entry #begin{display:block;width:100%;min-height:64px;padding:16px 24px;font-size:21px;font-weight:700;margin:18px 0 10px;border-radius:9px}
#entry #resume{font-size:14px;padding:8px 12px}
#entry .result-accordion{background:transparent;border:0;border-top:1px solid var(--border);border-radius:0;padding:14px 0 0;margin-top:26px}
#entry .result-accordion>summary{font-size:14px;font-weight:400;color:#526b63;padding:6px 0}
#entry .result-accordion-body{margin-top:12px;padding:18px;background:white;border:1px solid var(--border);border-radius:8px}

#start-modal,#recovery-modal{width:min(620px,95vw)}#save-state{display:inline-block;white-space:normal;line-height:1.7}

button.danger{color:#a12c29;border-color:#d8a8a5}button.danger:hover:not(:disabled){background:#fff0ef}button.danger:disabled{opacity:.45}
