body{font-family:var(--font-sans);font-size:var(--fs-base);line-height:var(--lh-normal);color:var(--color-text);background:var(--color-canvas);max-width:var(--layout-max-width);margin:0 auto;padding:var(--layout-page-padding);letter-spacing:var(--tracking-body)}section{margin-bottom:var(--gap-section)}.page-layout{display:grid;grid-template-columns:2fr 3fr;gap:var(--space-6);align-items:start}.col-preview{position:sticky;top:var(--space-5)}.site-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--space-3);padding-bottom:var(--space-6);border-bottom:var(--border-subtle);margin-bottom:var(--space-6)}.site-header h1{font-size:var(--fs-2xl);font-weight:var(--fw-bold);color:var(--color-text-strong);line-height:var(--lh-tight);margin:0 0 var(--space-2)}.site-header p{font-size:var(--fs-sm);color:var(--color-text-muted);margin:0}.site-header-actions{display:flex;align-items:center;gap:var(--space-3);flex-shrink:0}.support-link{font-size:var(--fs-sm);color:var(--color-text-muted);text-decoration:underline;white-space:nowrap;transition:color var(--duration-fast) var(--ease-out)}.support-link:hover{color:var(--color-text)}.support-link:focus-visible{border-radius:var(--radius-sm);box-shadow:var(--focus-ring)}section>h2{font-size:var(--fs-xl);font-weight:var(--fw-bold);color:var(--color-text-strong);line-height:var(--lh-tight);margin:0 0 var(--space-4);padding-bottom:var(--space-2);border-bottom:var(--border-default);display:flex;align-items:center;gap:var(--space-3)}.step-badge{display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;border-radius:var(--radius-full);background:var(--color-accent-soft);color:var(--color-accent);font-size:var(--fs-sm);font-weight:var(--fw-bold);flex:0 0 auto;font-variant-numeric:tabular-nums}.section-subtitle{font-size:var(--fs-sm);font-weight:var(--fw-regular);color:var(--color-text-muted);margin-left:auto;letter-spacing:0}.section-subtitle strong{color:var(--color-accent);font-weight:var(--fw-bold)}.preset-category>h3{font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--color-text-muted);letter-spacing:var(--tracking-wide);margin:0 0 var(--space-3)}.slot-list{display:flex;flex-direction:column;gap:var(--space-3);margin-bottom:var(--space-4)}.slot-item{background:var(--color-surface);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.slot-header{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--color-canvas);border-bottom:var(--border-subtle)}.slot-name-btn{flex:1;min-width:0;text-align:left;font:inherit;font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--color-accent);background:transparent;border:none;padding:0;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color var(--duration-fast) var(--ease-out)}.slot-name-btn:hover{color:var(--color-accent-hover);text-decoration:underline}.slot-name-btn:focus-visible{border-radius:var(--radius-sm);box-shadow:var(--focus-ring)}.slot-count{font:inherit;font-size:var(--fs-sm);color:var(--color-text);background:var(--color-surface);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-1) var(--space-2);width:4.5rem;flex-shrink:0;text-align:center;transition:border-color var(--duration-fast) var(--ease-out)}.slot-count:hover{border-color:var(--color-border-strong)}.slot-count:focus-visible{border-color:var(--color-accent);box-shadow:var(--focus-ring)}.slot-remove-btn{flex-shrink:0;font:inherit;font-size:var(--fs-sm);color:var(--color-text-muted);background:transparent;border:var(--border-width) solid transparent;border-radius:var(--radius-sm);padding:var(--space-1) var(--space-2);cursor:pointer;line-height:1;transition:color var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out)}.slot-remove-btn:hover{color:var(--color-danger);background:#fcf3f2}.slot-remove-btn:focus-visible{box-shadow:var(--focus-ring)}.slot-details{border-top:none}.slot-summary{font-size:var(--fs-sm);color:var(--color-text-muted);padding:var(--space-2) var(--space-4);cursor:pointer;-webkit-user-select:none;user-select:none;list-style:none;display:flex;align-items:center;gap:var(--space-2)}.slot-summary:before{content:"▶";font-size:.6em;transition:transform var(--duration-fast) var(--ease-out)}details[open]>.slot-summary:before{transform:rotate(90deg)}.slot-summary:hover{color:var(--color-text)}.slot-summary::-webkit-details-marker{display:none}.slot-params{padding:var(--space-3) var(--space-4) var(--space-4);border-top:var(--border-subtle);background:var(--color-canvas)}.slot-controls{display:flex;justify-content:flex-end;margin-bottom:var(--space-2)}.clear-all-btn{font:inherit;font-size:var(--fs-xs);color:var(--color-text-muted);background:transparent;border:none;padding:0;cursor:pointer;text-decoration:underline;transition:color var(--duration-fast) var(--ease-out)}.clear-all-btn:hover{color:var(--color-danger)}.clear-all-btn:focus-visible{border-radius:var(--radius-sm);box-shadow:var(--focus-ring)}.add-slot-btn{font:inherit;font-size:var(--fs-sm);color:var(--color-accent);background:transparent;border:var(--border-width) dashed var(--color-accent);border-radius:var(--radius-md);padding:var(--space-3) var(--space-5);cursor:pointer;width:100%;transition:background var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out)}.add-slot-btn:hover{background:var(--color-accent-soft);border-color:var(--color-accent-hover)}.add-slot-btn:focus-visible{box-shadow:var(--focus-ring)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-overlay);background:#00000073;display:flex;align-items:center;justify-content:center;padding:var(--space-4)}.modal-overlay[hidden]{display:none}.modal-container{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);width:100%;max-width:640px;max-height:80vh;display:flex;flex-direction:column;overflow:hidden}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:var(--border-default);flex-shrink:0}.modal-title{font-size:var(--fs-lg);font-weight:var(--fw-bold);color:var(--color-text-strong);margin:0}.modal-close-btn{font:inherit;font-size:var(--fs-md);color:var(--color-text-muted);background:transparent;border:var(--border-width) solid transparent;border-radius:var(--radius-sm);padding:var(--space-1) var(--space-2);cursor:pointer;line-height:1;flex-shrink:0;transition:color var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out)}.modal-close-btn:hover{color:var(--color-text);background:var(--color-surface-hover)}.modal-close-btn:focus-visible{box-shadow:var(--focus-ring)}.modal-body{overflow-y:auto;padding:var(--space-4) var(--space-5);display:flex;flex-direction:column;gap:var(--space-5)}.modal-section{display:flex;flex-direction:column;gap:var(--space-3);background:var(--color-canvas);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4)}.modal-section-title{font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--color-text-muted);letter-spacing:var(--tracking-wide);margin:0}.modal-section-title--template{color:var(--color-accent)}.modal-grade-tag{font-size:var(--fs-xs);font-weight:var(--fw-regular);color:var(--color-text-subtle);letter-spacing:0;margin-left:var(--space-1)}.preset-chip-grid{display:flex;flex-wrap:wrap;gap:var(--space-2)}.preset-chip{font:inherit;font-size:var(--fs-sm);color:var(--color-text);background:var(--color-surface);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-2) var(--space-4);cursor:pointer;white-space:nowrap;transition:background var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.preset-chip:hover{background:var(--color-surface-hover);border-color:var(--color-border-strong)}.preset-chip:focus-visible{box-shadow:var(--focus-ring)}.preset-chip--template{color:var(--color-accent);background:var(--color-accent-soft);border-color:#97b0d4}.preset-chip--template:hover{background:#e0ecff;background:oklch(.94 .03 258);border-color:var(--color-accent)}.preset-category+.preset-category{margin-top:var(--space-5)}.preset-grid{display:flex;flex-wrap:wrap;gap:var(--space-2)}.preset-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;font-size:var(--fs-sm);font-weight:var(--fw-regular);color:var(--color-text);background:var(--color-surface);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-2) var(--space-4);white-space:nowrap;cursor:pointer;transition:background var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.preset-btn:hover{background:var(--color-surface-hover);border-color:var(--color-border-strong)}.preset-btn:focus-visible{box-shadow:var(--focus-ring)}.preset-btn.selected{background:var(--color-accent);color:var(--color-text-on-accent);border-color:var(--color-accent)}.preset-btn.selected:hover{background:var(--color-accent-hover);border-color:var(--color-accent-hover)}.param-form{display:grid;grid-template-columns:max-content 1fr;column-gap:var(--gap-form-col);row-gap:var(--gap-form-row);max-width:var(--layout-form-max);align-items:center}.param-group{display:contents}.param-form label{font-size:var(--fs-sm);color:var(--color-text);line-height:var(--lh-snug);white-space:nowrap}.param-form input[type=number],.param-form select{font:inherit;font-size:var(--fs-sm);color:var(--color-text);background:var(--color-surface);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);min-width:0;width:100%;max-width:12rem;transition:border-color var(--duration-fast) var(--ease-out)}.param-form input[type=number]:hover,.param-form select:hover{border-color:var(--color-border-strong)}.param-form input[type=number]:focus-visible,.param-form select:focus-visible{border-color:var(--color-accent);box-shadow:var(--focus-ring)}.param-form input[type=checkbox]{width:1.125rem;height:1.125rem;accent-color:var(--color-accent);cursor:pointer;justify-self:start}.param-select-row{grid-column:1 / -1;display:flex;align-items:center;gap:var(--gap-form-col)}.param-select-row select{flex:1;min-width:0;max-width:none}.param-range{grid-column:1 / -1;display:flex;flex-direction:column;gap:var(--gap-form-row)}.param-range-row{display:flex;align-items:center;gap:var(--space-3)}.param-range-row input[type=number]{flex:1;max-width:10rem}.param-range-sep{color:var(--color-text-muted);font-size:var(--fs-sm);white-space:nowrap;flex-shrink:0}.param-count{display:flex;align-items:center;gap:var(--gap-form-col);grid-column:1 / -1;margin-top:var(--space-3);padding-top:var(--space-4);border-top:var(--border-subtle)}.param-count>label{white-space:nowrap}.param-count>input{max-width:8rem}.doc-links{display:flex;flex-direction:column;gap:var(--space-1);margin-top:var(--space-5);padding-top:var(--space-4);border-top:var(--border-subtle)}.doc-link{font-size:var(--fs-sm);color:var(--color-text-muted);text-decoration:none;transition:color var(--duration-fast) var(--ease-out)}.doc-link:hover{color:var(--color-text)}.doc-link:focus-visible{border-radius:var(--radius-sm);box-shadow:var(--focus-ring)}.generate-controls{display:flex;gap:var(--gap-button);margin-top:var(--space-5)}#generate-btn,#regen-btn,.print-btn{white-space:nowrap}#generate-btn{font:inherit;font-size:var(--fs-md);font-weight:var(--fw-bold);color:var(--color-text-on-accent);background:var(--color-accent);border:var(--border-width) solid var(--color-accent);border-radius:var(--radius-md);padding:var(--space-3) var(--space-6);cursor:pointer;transition:background var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out)}#generate-btn:hover{background:var(--color-accent-hover);border-color:var(--color-accent-hover)}#generate-btn:active{background:var(--color-accent-active)}#generate-btn:focus-visible{box-shadow:var(--focus-ring)}#generate-btn:disabled{background:var(--color-disabled-bg);color:var(--color-disabled-text);border-color:var(--color-border);cursor:not-allowed}#regen-btn{font:inherit;font-size:var(--fs-md);color:var(--color-text);background:var(--color-surface);border:var(--border-width) solid var(--color-border-strong);padding:var(--space-3) var(--space-5);border-radius:var(--radius-md);cursor:pointer;transition:background var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out)}#regen-btn:hover{background:var(--color-surface-hover);border-color:var(--color-border-strong)}#regen-btn:focus-visible{box-shadow:var(--focus-ring)}.section-preview .generate-controls{margin-top:0;margin-bottom:var(--space-4)}.print-header-wrapper{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4)}.print-header-wrapper label{font-size:var(--fs-sm);color:var(--color-text-muted);white-space:nowrap}.print-header-input{flex:1;font:inherit;font-size:var(--fs-sm);color:var(--color-text);background:var(--color-surface);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);max-width:28rem;transition:border-color var(--duration-fast) var(--ease-out)}.print-header-input:hover{border-color:var(--color-border-strong)}.print-header-input:focus-visible{border-color:var(--color-accent);box-shadow:var(--focus-ring)}.preview-controls{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3)}.view-btn{font:inherit;font-size:var(--fs-sm);color:var(--color-text);background:var(--color-surface);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-3) var(--space-4);min-width:4.5rem;white-space:nowrap;cursor:pointer;transition:background var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.view-btn:hover{background:var(--color-surface-hover);border-color:var(--color-border-strong)}.view-btn:focus-visible{box-shadow:var(--focus-ring)}.view-btn.active{background:var(--color-text-strong);color:var(--color-text-on-accent);border-color:var(--color-text-strong);font-weight:var(--fw-bold)}.print-btn{margin-left:auto;font:inherit;font-size:var(--fs-sm);color:var(--color-text);background:var(--color-surface);border:var(--border-width) solid var(--color-border-strong);border-radius:var(--radius-md);padding:var(--space-2) var(--space-4);cursor:pointer;transition:background var(--duration-fast) var(--ease-out)}.print-btn:hover{background:var(--color-surface-hover)}.print-btn:focus-visible{box-shadow:var(--focus-ring)}.print-btn:disabled{background:var(--color-disabled-bg);color:var(--color-disabled-text);border-color:var(--color-border);cursor:not-allowed}#preview-container{background:var(--color-surface);border:var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-paper);padding:var(--space-7) var(--space-6);max-width:var(--layout-preview-max);margin:0 auto;min-height:480px}.preview-mock-header{font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--color-text-muted);text-align:left;border-bottom:var(--border-default);padding-bottom:var(--space-3);margin-bottom:var(--space-5)}.placeholder{color:var(--color-text-muted);font-size:var(--fs-base);text-align:center;padding:var(--space-7) 0;margin:0}.placeholder strong{display:block;color:var(--color-text-strong);font-weight:var(--fw-bold);font-size:var(--fs-md);margin-bottom:var(--space-3)}.placeholder p{margin:0;font-size:var(--fs-sm);color:var(--color-text-muted);line-height:var(--lh-loose)}.placeholder-hint{margin-top:var(--space-2);font-size:var(--fs-xs);color:var(--color-text-subtle)}.page-divider{display:flex;align-items:center;gap:var(--space-3);margin:var(--space-8) 0 var(--space-6);color:var(--color-text-muted);font-size:var(--fs-sm);font-weight:var(--fw-bold);letter-spacing:var(--tracking-wide)}.page-divider:before,.page-divider:after{content:"";flex:1;height:1px;background:var(--color-border)}.instruction-groups{margin:0 0 var(--space-5);padding-bottom:var(--space-2);border-bottom:var(--border-default);display:flex;flex-direction:column;gap:var(--space-2)}.instruction-group-item{display:flex;align-items:baseline;gap:var(--space-3);font-size:var(--fs-base);font-weight:var(--fw-bold);color:var(--color-text-strong)}.instruction-group-label{font-size:var(--fs-sm);color:var(--color-text-muted);font-weight:var(--fw-regular);flex-shrink:0;min-width:2.5rem}.problem-instruction{font-size:var(--fs-base);font-weight:var(--fw-bold);color:var(--color-text-strong);margin:0 0 var(--space-5);padding-bottom:var(--space-2);border-bottom:var(--border-default)}.problem-list{display:flex;flex-direction:column;gap:var(--space-5)}.problem-item{display:grid;grid-template-columns:3.5rem 1fr;column-gap:var(--space-3);align-items:baseline;line-height:var(--lh-loose)}.problem-num{font-size:var(--fs-base);font-weight:var(--fw-bold);color:var(--color-text-strong);display:flex;align-items:baseline;justify-content:flex-end;gap:var(--space-1);white-space:nowrap}.problem-formula{font-size:var(--fs-formula);color:var(--color-text)}.problem-label{font-size:var(--fs-xs);color:var(--color-text-muted);font-weight:var(--fw-regular)}.preview-content .katex{font-size:var(--fs-formula)}.preview-content--small-font .problem-formula,.preview-content--small-font .katex{font-size:var(--fs-formula-small)}.katex{letter-spacing:normal}.print-only{display:none}@page{size:A4 portrait;margin:15mm 20mm}@media print{body{background:#fff;color:var(--print-text-color);max-width:none;padding:0;margin:0}.no-print,.site-header,.col-composition,.section-composition,.generate-controls,.preview-controls,.print-header-input,.print-header-wrapper label{display:none!important}.page-layout{display:block}.col-preview{position:static}.print-only{display:block!important}#preview-container{box-shadow:none;border:none;border-radius:0;padding:0;max-width:none;margin:0;min-height:0}.print-header-display{font-size:11pt;font-weight:var(--fw-bold);color:var(--print-text-color);text-align:left;border-bottom:1px solid var(--print-rule-color);padding-bottom:4mm;margin-bottom:6mm}.problem-instruction{font-size:11pt;border-bottom:1px solid var(--print-rule-color);padding-bottom:2mm;margin-bottom:5mm}.instruction-group-label,.problem-label{color:var(--print-text-color)}.answer-section{page-break-before:always;break-before:page}.problem-list{gap:6mm}.problem-item{page-break-inside:avoid;grid-template-columns:14mm 1fr;column-gap:3mm}.problem-num,.problem-formula,.preview-content .katex{font-size:var(--fs-formula-print)}}@media (max-width: 768px){body{padding:var(--layout-page-padding-sm)}.page-layout{grid-template-columns:1fr}.col-preview{order:1;position:static}.col-composition{order:2}.modal-container{max-width:none;max-height:85vh}.param-form input,.param-form select{max-width:100%}#preview-container{padding:var(--space-5) var(--space-4)}.preset-btn{padding:var(--space-2) var(--space-3)}.preview-controls{flex-wrap:wrap}.print-btn{margin-left:0}section>h2{flex-wrap:wrap}.section-subtitle{margin-left:0;flex-basis:100%}}@media (max-width: 480px){.param-form{grid-template-columns:1fr;row-gap:var(--space-2)}.param-count{padding-top:var(--space-3)}}
