@layer reset,tokens,base,layout;@layer components{.reader__controls{align-items:center;gap:var(--space-2) var(--space-3);margin-block:var(--space-4) var(--space-3);flex-wrap:wrap;display:flex}.reader__print{margin-inline-start:auto}.reader__print--copy+.reader__print{margin-inline-start:0}.reader__add-all--done,.reader__add-all--done:where(:hover,:focus-visible){border-color:var(--color-jade);background:var(--color-jade-soft);color:var(--color-jade);cursor:default}.reader__bulk,.reader__bulk-confirm{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.reader__bulk{margin-block-end:var(--space-3)}.reader__bulk-message{color:var(--color-jade);font-size:var(--text-sm);margin:0;font-weight:500}.reader__bulk-confirm .reader__bulk-message{color:var(--color-text)}.reader__sheet{padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.reader__line{align-items:flex-end;gap:var(--space-2) .35em;flex-wrap:wrap;max-inline-size:none;margin-block-end:var(--space-3);display:flex}.reader__line:last-child{margin-block-end:0}.reader__token{flex-direction:column;align-items:center;gap:1px;display:inline-flex}.reader__group{align-items:flex-end;gap:0 .35em;display:inline-flex}.reader__hanzi{font-size:1.5rem;line-height:1.25;font-family:var(--font-display-hans)}:lang(zh-Hant) .reader__hanzi{font-family:var(--font-display-hant)}.reader__reading{color:var(--color-accent);min-block-size:.9em;font-size:.72rem;line-height:1.2;font-family:var(--font-latin)}.reader__reading--zhuyin{color:var(--color-muted);letter-spacing:.05em}.poem-list{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(19rem,1fr));margin:0;padding:0;list-style:none;display:grid}.poem-card{gap:var(--space-1);block-size:100%;padding:var(--space-3) var(--space-4);align-content:start;display:grid}.poem-card__title{font-size:var(--text-xl);margin:0}.poem-card__meta{color:var(--color-faint);font-size:var(--text-sm)}.poem-card__intro{color:var(--color-muted);font-size:var(--text-sm);margin:0}.poem-page{max-inline-size:46rem}.poem-page__title{font-size:clamp(2rem,7vw,3rem);font-weight:500}.poem-page__meta{color:var(--color-muted)}.poem-page__notes{max-inline-size:70ch}.poem-page__notes p{color:var(--color-muted)}.poem-translation{gap:var(--space-2);margin:0;padding:0;list-style:none;display:grid}.poem-translation__row{gap:2px;display:grid}.poem-translation__zh{font-family:var(--font-display-hans);font-size:1.1rem}:lang(zh-Hant) .poem-translation__zh{font-family:var(--font-display-hant)}.poem-translation__en{color:var(--color-muted);font-size:var(--text-sm)}.reader-page__label{margin-block-end:var(--space-2);font-weight:600;display:block}.reader-page__input{inline-size:100%;max-inline-size:46rem;padding:var(--space-2) var(--space-3);font:inherit;font-size:var(--text-lg);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);resize:vertical}.reader-page__input:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft);outline:none}.reader-page__actions{align-items:center;gap:var(--space-3);margin-block:var(--space-2) var(--space-3);flex-wrap:wrap;display:flex}.hwpad{align-items:flex-start;gap:var(--space-3);flex-wrap:wrap;margin-block-end:var(--space-3);display:flex}.hwpad__canvas{border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);touch-action:none;cursor:crosshair;block-size:240px;inline-size:240px}.hwpad__controls{gap:var(--space-2);flex-direction:column;display:flex}.hwpad__btn{padding:var(--space-1) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font-size:var(--text-sm)}.hwpad__btn:disabled{opacity:.45;cursor:not-allowed}.hwpad__candidates{align-items:center;gap:var(--space-2);flex-wrap:wrap;flex:12rem;min-block-size:44px;display:flex}.hwpad__hint{color:var(--color-muted);font-size:var(--text-sm);max-inline-size:22rem}.hwpad__candidate{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);block-size:44px;inline-size:44px;color:var(--color-text);font-family:var(--font-display-hans);font-size:var(--text-xl);transition:border-color var(--duration-fast) var(--ease-out), background var(--duration-fast) var(--ease-out);line-height:1}.hwpad__candidate:hover,.hwpad__candidate:focus-visible{border-color:var(--color-accent);background:var(--color-accent-soft)}.reader-page__status,.reader-page__hint{color:var(--color-muted);font-size:var(--text-sm)}.reader__line-audio{align-self:center;margin-inline-end:var(--space-1)}.reader__token--word{position:relative}.reader__token-button{border-radius:var(--radius-sm);font:inherit;color:inherit;transition:background var(--duration-fast) var(--ease-out);background:0 0;border:none;flex-direction:column;align-items:center;gap:1px;padding:2px 3px;display:inline-flex}.reader__token-button:hover,.reader__token-button:focus-visible,.reader__token-button[aria-expanded=true]{background:var(--color-accent-soft)}.reader__popover{z-index:var(--z-popover);gap:var(--space-1);min-inline-size:13rem;max-inline-size:18rem;padding:var(--space-2) var(--space-3);background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);text-align:start;font-family:var(--font-latin);display:grid;position:absolute;inset-block-start:calc(100% + 4px);inset-inline-start:50%;transform:translate(-50%)}.reader__popover-reading{color:var(--color-accent);font-weight:600;font-size:var(--text-sm)}.reader__popover-gloss{color:var(--color-muted);font-size:var(--text-sm);line-height:1.4}.reader__popover-actions{justify-content:space-between;align-items:center;gap:var(--space-2);font-size:var(--text-sm);display:flex}.polycheck{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);max-inline-size:46rem}.polycheck__title{padding:var(--space-2) var(--space-3) 0;font-size:var(--text-base);margin:0;font-weight:600}.polycheck__intro{margin:var(--space-1) var(--space-3) 0;color:var(--color-muted);font-size:var(--text-sm)}.polycheck__toggle{margin:var(--space-2) var(--space-3) var(--space-1)}.polycheck__line{padding:var(--space-2) var(--space-3) var(--space-3)}.polycheck__line+.polycheck__line{border-block-start:1px dashed var(--color-border)}.polycheck__line-head{align-items:baseline;gap:var(--space-2);margin:0 0 var(--space-2);font-size:var(--text-sm);font-weight:400;display:flex}.polycheck__line-no{text-transform:uppercase;letter-spacing:.04em;color:var(--color-faint);flex:none;font-size:.75rem;font-weight:600}.polycheck__line-text{text-overflow:ellipsis;white-space:nowrap;color:var(--color-muted);overflow:hidden}.polycheck__rows{gap:var(--space-2);margin:0;padding:0;list-style:none;display:grid}.polycheck__row{align-items:center;gap:var(--space-3);grid-template-columns:3.5rem 1fr minmax(10rem,16rem);display:grid}.polycheck__hanzi{text-align:center;font-size:1.75rem;line-height:1.1}.polycheck__options{gap:var(--space-1);flex-wrap:wrap;display:flex}.polycheck__option{padding:.1rem var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-full);color:var(--color-muted);font-size:var(--text-sm);align-items:baseline;gap:.35em;display:inline-flex}.polycheck__option--on{border-color:var(--color-accent);background:var(--color-accent-soft);color:var(--color-accent);font-weight:600}.polycheck__zhuyin{font-size:.8em}.polycheck__select,.audio-dl__select,.reader-upload__select{min-block-size:40px;inline-size:100%;padding:var(--space-1) var(--space-2);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font-size:var(--text-sm)}.polycheck__select:focus-visible,.audio-dl__select:focus-visible,.reader-upload__select:focus-visible{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft);outline:none}@media (width<=640px){.polycheck__row{grid-template-columns:3rem 1fr}.polycheck__select{grid-column:1/-1}}.audio-dl{max-inline-size:46rem;padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface)}.audio-dl__heading{align-items:center;gap:var(--space-2);margin:0 0 var(--space-2);font-size:var(--text-base);flex-wrap:wrap;display:flex}.audio-dl__badge{padding:.1rem var(--space-2);border-radius:var(--radius-full);background:var(--color-accent-soft);color:var(--color-accent);font-size:var(--text-sm);font-weight:700}.audio-dl__warn{margin:0 0 var(--space-2);font-size:var(--text-sm);color:var(--color-accent);font-weight:600}.audio-dl__controls{align-items:center;gap:var(--space-2) var(--space-3);flex-wrap:wrap;display:flex}.audio-dl__voice{align-items:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:600;display:inline-flex}.audio-dl__voice .audio-dl__select{inline-size:auto;min-inline-size:8rem}.audio-dl__button svg{block-size:18px;inline-size:18px}.audio-dl__speed{color:var(--color-muted);font-size:var(--text-sm)}.audio-dl__progress{block-size:6px;inline-size:100%;accent-color:var(--color-accent);margin-block-start:var(--space-3);display:block}.audio-dl__status{min-block-size:1.4em;margin:var(--space-2) 0 0;font-size:var(--text-sm)}.audio-dl__note{margin:var(--space-1) 0 0;color:var(--color-faint);font-size:.75rem;line-height:1.5}.reader-source{align-items:center;gap:var(--space-2) var(--space-3);flex-wrap:wrap;margin-block-end:var(--space-2);display:flex}.reader-source__title{font-size:var(--text-lg);flex:auto;margin:0;font-weight:600}.reader-source__title:focus{outline:none}.reader-source__title:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.reader-source__actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.reader-source .reader-page__status{flex-basis:100%;margin:0}.reader-confirm{align-items:center;gap:var(--space-2);margin-block:var(--space-2);flex-wrap:wrap;flex-basis:100%;display:flex}.reader-confirm__question{font-size:var(--text-sm);margin:0;font-weight:500}.reader-tools__chevron{block-size:1rem;inline-size:1rem;transition:transform var(--duration-fast) var(--ease-out)}.reader-tools__toggle[aria-expanded=true],.reader-page__draw-toggle[aria-expanded=true]{border-color:var(--color-accent);background:var(--color-accent-soft);color:var(--color-accent)}.reader-tools__toggle[aria-expanded=true] .reader-tools__chevron{transform:rotate(180deg)}.reader-panel{margin-block-end:var(--space-3)}.reader-panel__note{color:var(--color-muted);font-size:var(--text-sm);margin:0}@media (width<=480px){.reader__controls{column-gap:var(--space-1)}.reader__controls .btn{gap:var(--space-1);padding-inline:var(--space-2);font-size:var(--text-xs)}.reader__controls .segmented__option{padding-inline:var(--space-2);font-size:var(--text-xs)}.reader__print .icon-btn__label{clip-path:inset(50%);white-space:nowrap;block-size:1px;inline-size:1px;position:absolute;overflow:hidden}.reader__add-all{text-align:center;flex:6rem}}.reader-page__upload{cursor:pointer;position:relative}.reader-page__upload:has(:focus-visible){outline:2px solid var(--color-accent);outline-offset:2px}.reader-page__file{clip-path:inset(50%);white-space:nowrap;block-size:1px;inline-size:1px;position:absolute;overflow:hidden}.reader-page__input--drop{border-style:dashed;border-color:var(--color-accent);background:var(--color-accent-soft)}.reader-upload__line{margin:0 0 var(--space-2);color:var(--color-muted);font-size:var(--text-sm)}.reader-upload__line--error{color:var(--color-accent);font-weight:600}.reader-upload__read-as{align-items:center;gap:var(--space-2);font-size:var(--text-sm);margin-block-end:var(--space-2);font-weight:600;display:inline-flex}.reader-upload__read-as .reader-upload__select{inline-size:auto;min-inline-size:8rem}.reader-draft{gap:var(--space-1);max-inline-size:46rem;margin-block:var(--space-1) var(--space-3);display:grid}.reader-draft__line{color:var(--color-muted);font-size:var(--text-sm);margin:0}.reader-draft__text--failed{color:var(--color-accent);font-weight:600}.reader-draft__action{color:var(--color-accent);font:inherit;text-underline-offset:2px;cursor:pointer;background:0 0;border:none;padding:0;font-weight:600;text-decoration:underline}.reader-draft__action:hover{color:var(--color-accent-strong)}@media (pointer:coarse){.reader-draft__action{min-block-size:44px}}.reader-draft__undo{align-items:center;gap:var(--space-2);flex-wrap:wrap;margin-block-end:var(--space-3);display:flex}.reader-samples{max-inline-size:46rem;margin-block:var(--space-3)}.reader-samples__lead{margin:0 0 var(--space-2);font-weight:600}.reader-samples__list{gap:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(10.5rem,1fr));margin:0;padding:0;list-style:none;display:grid}.reader-samples__list>li{display:flex}.reader-samples__pick{min-block-size:44px;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font:inherit;text-align:start;cursor:pointer;transition:border-color var(--duration-fast) var(--ease-out), background var(--duration-fast) var(--ease-out);flex:1;align-content:start;gap:2px;display:grid}.reader-samples__pick:where(:hover,:focus-visible):not(:disabled){border-color:var(--color-accent);background:var(--color-surface-hover)}.reader-samples__pick:disabled{cursor:progress}.reader-samples__title{font-family:var(--font-display-hans);font-size:var(--text-lg);line-height:1.3}.reader-samples__title :lang(zh-Hant),.reader-samples__title:lang(zh-Hant){font-family:var(--font-display-hant)}.reader-samples__band{color:var(--color-muted);font-size:var(--text-sm);font-weight:600}.reader-samples__draft{color:var(--color-muted);font-size:var(--text-xs)}}@layer utilities;@media print{@page{margin:14mm 12mm 18mm}.site-header,.site-footer,.reader__controls,.reader__bulk,.reader__line-audio,.reader-source,.reader-panel,.polycheck,.audio-dl,.reader-page__hint,.poem-page__notes,astro-dev-toolbar{display:none!important}.site-main{max-inline-size:none;padding:0}.reader__sheet{box-shadow:none;border:none;padding:0}.reader__hanzi{color:#000}.reader__reading{color:#444}.poem-page__title,.poem-page__title *,.poem-page__meta{color:#000!important}}
