*{box-sizing:border-box}body{font-family:'Malgun Gothic',sans-serif;color:#222;margin:0;background:#edf0ed}.controls{max-width:210mm;margin:16px auto;display:flex;flex-wrap:wrap;align-items:center;gap:10px}.controls a,.controls button,.controls select{padding:10px 14px;border:1px solid #ccd8cf;border-radius:8px;background:#fff;color:#284d37;text-decoration:none;font-size:13px;cursor:pointer}.controls .go{background:#2e684a;color:#fff}.controls label{font-size:13px}.sheet{width:210mm;min-height:297mm;margin:16px auto;padding:10mm;background:#fff;box-shadow:0 3px 20px #18332415}.ws-head{display:flex;align-items:center;gap:5mm;border-bottom:1.5px solid #333;padding-bottom:3mm}.brand{width:39mm;height:19mm;object-fit:contain}.ws-title{flex:1;min-width:0}.ws-title h1{font-size:17px;line-height:1.4;margin:5px 0}.meta{font-size:11px;font-weight:bold}.ws-title small{font-size:9px;color:#666}.qrbox{flex:none;text-align:center;font-size:8px}.qrbox img{display:block;width:19mm;height:19mm}.ws-info{display:flex;gap:8mm;font-size:11px;margin:4mm 0}.ws-info span{display:flex;gap:6px;align-items:center;flex:1}.ws-info i{flex:1;border-bottom:1px solid #888;height:16px}.instruction{font-size:12px;font-weight:bold;margin:3mm 0}.example{display:flex;align-items:center;gap:4mm;border:1px solid #777;padding:3mm;min-height:18mm;margin-bottom:4mm}.example>b{font-size:10px;flex:none}.example .q{flex:1}.example-answer{font-size:15px;font-weight:bold;color:#aa3434}.example-answer small{font-size:10px;display:block}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:3mm 5mm}.pr{position:relative;border:1px solid #777;min-height:22mm;padding:4mm 3mm 8mm 9mm;break-inside:avoid;page-break-inside:avoid}.no{position:absolute;left:2mm;top:2mm;font-size:9px;color:#444}.q{font-size:16px;font-weight:600;line-height:1.7;overflow-wrap:anywhere;min-width:0}.answer{position:absolute;bottom:3mm;right:3mm;display:flex;gap:2mm;align-items:center;font-size:9px;color:#555}.answer i{width:24mm;border-bottom:1px solid #555;height:4mm}.roomy .pr{min-height:43mm}.roomy .q{font-size:15px}.ws-foot{display:flex;justify-content:space-between;gap:10px;border-top:1px solid #bbb;margin-top:5mm;padding-top:3mm;font-size:9px;color:#555}.frac{display:inline-flex;flex-direction:column;text-align:center;vertical-align:middle;line-height:1.1;margin:0 2px}.frac .fn{border-bottom:1px solid currentColor;padding:0 4px 2px}.frac .fd{padding:2px 4px 0}.rad{display:inline-flex;align-items:flex-start}.rad .radc{border-top:1px solid;margin-top:2px;padding:0 3px}.sys{display:inline-flex;flex-direction:column;border-left:1px solid;padding-left:8px}.q sup{font-size:.65em;line-height:1;vertical-align:super}@page{size:A4 portrait;margin:0}@media print{body{background:#fff}.controls{display:none}.sheet{margin:0;box-shadow:none;break-after:page;page-break-after:always}.sheet:last-of-type{break-after:auto;page-break-after:auto}.ws-head,.example,.ws-info{break-inside:avoid}.example-answer{color:#333}}@media screen and (max-width:800px){body{overflow-x:auto}.controls{padding:0 12px}.sheet{margin:12px 0}}

.sheet:not(.roomy) .pr{padding-top:3mm;padding-bottom:7mm}.sheet:not(.roomy) .pr .q{font-size:15px;line-height:1.4}

.answer-slot{display:inline-flex;align-items:center;gap:2mm}.answer.multi{left:9mm;flex-wrap:wrap;justify-content:flex-end}.answer.multi i{width:12mm}.answer.multi .answer-slot{font-size:8px}
/* Keep the written answer directly under the vertical calculation. */
.vertical-answer{display:block;min-height:8mm;text-align:right;line-height:1.5;padding-top:1mm}
[data-operation-layout=vertical] .sheet .pr.vertical-stack{padding:4mm 8mm 3mm;min-height:29mm;text-align:center}
[data-operation-layout=vertical] .sheet .pr.vertical-stack>.answer{display:none}
[data-operation-layout=vertical] .sheet .vertical-stack .calc-stack{min-width:7ch;line-height:1.4;font-size:18px}
[data-operation-layout=vertical] .sheet .example.vertical-stack{position:relative;justify-content:center;min-height:30mm}
[data-operation-layout=vertical] .sheet .example.vertical-stack>b{position:absolute;left:3mm;top:3mm}
[data-operation-layout=vertical] .sheet .example.vertical-stack .q{flex:0 1 auto;text-align:center}
[data-operation-layout=vertical] .sheet .example.vertical-stack>.example-answer{display:none}
[data-operation-layout=vertical] .sheet .example .vertical-answer{color:#a32e2e}
@media print{[data-operation-layout=vertical] .sheet .example .vertical-answer{color:#222}}
/* Use the full A4 writing area instead of leaving unused space below short sets. */
.sheet{display:flex;flex-direction:column;min-height:297mm}
.sheet>.ws-head,.sheet>.ws-info,.sheet>.instruction,.sheet>.example,.sheet>.ws-foot{flex-shrink:0}
.sheet>.grid{flex:1 0 auto;grid-auto-rows:1fr;align-content:stretch}
.sheet>.grid .pr{min-width:0}
.sheet>.ws-foot{margin-top:5mm}
@media print{.sheet{min-height:296mm}}
/* Eight horizontal rows still fit within A4, including header and footer. */
.sheet:not(.roomy) .pr{min-height:21mm}
/* Compact worksheet: do not stretch a short question set to fill the paper. */
.sheet>.grid{flex:0 0 auto;grid-auto-rows:auto;align-content:start;gap:2.5mm 4mm}
.sheet:not(.roomy) .pr{min-height:21mm;padding-top:3mm;padding-bottom:7mm}
.sheet>.ws-foot{margin-top:4mm}
.sheet{min-height:0}
@media print{.sheet{min-height:0}}
/* A4 composition: larger mathematics balances the available writing area. */
.sheet{min-height:296mm}
.sheet>.grid{flex:1 0 auto;grid-template-rows:repeat(var(--question-rows),minmax(21mm,1fr));gap:3mm 5mm}
.sheet .pr{border-color:#b4bdb5;border-radius:2mm}
.sheet.generous:not(.roomy) .pr{padding:7mm 5mm 11mm 7mm}
.sheet.generous:not(.roomy) .pr .q{font-size:23px;line-height:1.55;font-weight:600;letter-spacing:.15px}
.sheet.generous .no{font-size:10px;top:2.5mm;left:2.5mm;font-weight:700;color:#5f6a60}
.sheet.generous .answer{bottom:5mm;right:5mm;font-size:10px;gap:3mm}
.sheet.generous .answer i{width:30mm;height:6mm;border-color:#7c877e}
.sheet.generous .example{min-height:21mm;border-color:#9da99e;border-radius:2mm;background:#fafcf9}
.sheet.generous .example .q{font-size:20px}
.sheet.generous .example-answer{font-size:20px}
.sheet.generous .example-answer small{font-size:10px}
[data-operation-layout=vertical] .sheet.generous .vertical-stack .calc-stack{font-size:21px}
.sheet.roomy.generous .pr .q{font-size:17px}
@media print{.sheet{min-height:296mm}.sheet .example{background:#fff}}
/* Reserve answer space in normal flow, including multi-part answers. */
.sheet .pr{display:flex;flex-direction:column;gap:4mm}
.sheet .pr>.answer{position:static;align-self:flex-end;margin-top:auto;padding-top:2mm;flex-wrap:wrap;max-width:100%;justify-content:flex-end}
.sheet .pr>.answer.multi .answer-slot{font-size:9px}
.sheet .pr>.answer.multi i{width:14mm}
.sheet.generous.roomy .pr{padding:6mm 4mm 4mm 7mm}
[data-operation-layout=vertical] .sheet.generous .pr.vertical-stack{padding:3mm 6mm 2mm;gap:0;min-height:29mm}
[data-operation-layout=vertical] .sheet.generous .vertical-stack .calc-stack{font-size:18px}
[data-operation-layout=vertical] .sheet .pr .calc-fractions{font-size:17px!important}
.sheet.generous:not(.roomy) .pr{padding:5mm 5mm 4mm 7mm;gap:2mm}
.sheet .pr>.answer{padding-top:0}
.sheet.generous:not(.roomy) .pr .q{font-size:21px;line-height:1.4}
[data-operation-layout=vertical] .sheet .pr:has(.calc-stack)>.q{text-align:center}
