:root{--color-bg:#fbf6ec;--color-surface:#fffdf8;--color-header:#3b5e52;--color-header-text:#f6efdf;--color-accent:#c1653a;--color-accent-dark:#a34f2a;--color-text:#2e2a24;--color-text-muted:#7a7266;--color-border:#e8dfce;--color-correct:#2e2a24;--color-incorrect:#a8342a;--color-incorrect-bg:#fbe6e0;--font-display:"Playfair Display", Georgia, "Times New Roman", serif;--font-body:"Nunito", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace;--radius-sm:.5rem;--radius-md:.85rem;--radius-lg:1.25rem;--shadow-sm:0 1px 2px #3b5e520f, 0 1px 3px #3b5e520d;--shadow-md:0 10px 28px #3b5e521a}*,:before,:after{box-sizing:border-box}body{font-family:var(--font-body);color:var(--color-text);background:var(--color-bg);margin:0;line-height:1.6}h1,h2,h3{font-family:var(--font-display);color:var(--color-text);font-weight:700;line-height:1.25}h1{margin:0 0 .6rem;font-size:2.5rem}h2{margin:2rem 0 .85rem;font-size:1.4rem}a{color:var(--color-accent-dark)}a:hover{color:var(--color-accent)}.container{max-width:60rem;margin:0 auto;padding:0 1.25rem}main.container{min-height:60vh;padding-top:2.25rem;padding-bottom:3.5rem}.site-header{background:var(--color-header);color:var(--color-header-text);z-index:10;box-shadow:var(--shadow-md);padding:1.25rem 0;position:sticky;top:0}.site-header .container{align-items:baseline;display:flex}.site-logo{font-family:var(--font-display);color:var(--color-header-text);font-size:1.5rem;font-style:italic;font-weight:700;text-decoration:none}.site-logo:hover{color:var(--color-header-text);opacity:.85}.site-footer{border-top:1px solid var(--color-border);color:var(--color-text-muted);margin-top:4rem;padding:1.5rem 0;font-size:.85rem}.site-footer .container{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.4rem 1rem;display:flex}.site-footer a{color:var(--color-text-muted);white-space:nowrap}.site-nav{gap:1.25rem;margin-left:1.75rem;display:inline-flex}.site-nav a{color:var(--color-header-text);opacity:.9;font-weight:600;text-decoration:none}.site-nav a:hover{opacity:1;text-decoration:underline}.attribution{font-family:var(--font-display);color:var(--color-text-muted);font-style:italic}.text-meta{color:var(--color-text-muted);text-transform:capitalize;font-size:.85rem}.best-for{color:var(--color-text-muted);font-style:italic}.starting-point{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);margin:1.25rem 0;padding:.85rem 1.1rem}.hero{text-align:center;border-bottom:1px solid var(--color-border);margin-bottom:2.5rem;padding:2.5rem 0 2rem}.hero h1{font-size:3rem}.hero .tagline{font-family:var(--font-display);color:var(--color-accent-dark);margin:0 0 1.25rem;font-size:1.35rem;font-style:italic}.lede{color:var(--color-text-muted);max-width:34rem;font-size:1.05rem}.hero .lede{margin:0 auto 1.5rem}.card-meta.guide-card-description{text-transform:none}.guide-body{max-width:42rem}.guide-body p{line-height:1.7}.guide-body ul{padding-left:1.25rem;line-height:1.7}.guide-body li{margin-bottom:.5rem}.next-suggestion{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);max-width:26rem;box-shadow:var(--shadow-sm);text-align:center;margin:1.75rem auto 0;padding:1rem 1.25rem}.next-suggestion-label{color:var(--color-text-muted);margin:0 0 .35rem;font-size:.85rem;font-weight:700}.next-suggestion-link{font-family:var(--font-display);font-size:1.15rem;font-weight:700}.next-suggestion-meta{color:var(--color-text-muted);text-transform:capitalize;margin:.35rem 0 0;font-size:.85rem}.choose-form{flex-direction:column;gap:1.5rem;max-width:30rem;margin:1.75rem 0;display:flex}.choose-form fieldset{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);padding:1rem 1.25rem}.choose-form legend{font-family:var(--font-display);padding:0 .4rem;font-weight:700}.choose-form label{margin:.4rem 0;font-size:.95rem;display:block}.choose-form input[type=radio]{margin-right:.5rem}.choose-results{margin-top:1.5rem}.hero-actions{flex-wrap:wrap;justify-content:center;gap:.75rem;display:flex}.btn{font-family:var(--font-body);border-radius:var(--radius-sm);border:2px solid var(--color-accent);background:var(--color-accent);color:#fff;cursor:pointer;box-shadow:var(--shadow-sm);padding:.65rem 1.35rem;font-size:.95rem;font-weight:700;text-decoration:none;transition:background-color .15s,border-color .15s,box-shadow .15s,transform .15s;display:inline-block}.btn:hover{background:var(--color-accent-dark);border-color:var(--color-accent-dark);box-shadow:var(--shadow-md);text-decoration:none;transform:translateY(-1px)}.btn-secondary{background:var(--color-surface);color:var(--color-accent-dark);box-shadow:none}.btn-secondary:hover{background:var(--color-bg);box-shadow:none;transform:none}.filter-bar{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);flex-wrap:wrap;align-items:center;gap:1.25rem;margin:1.5rem 0;padding:1rem 1.25rem;display:flex}.filter-bar label{color:var(--color-text-muted);flex-direction:column;gap:.3rem;font-size:.85rem;font-weight:700;display:flex}.filter-bar select{font-family:var(--font-body);border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text);padding:.4rem .6rem;font-size:.95rem}.filter-reset{font-family:var(--font-body);border-radius:var(--radius-sm);border:2px solid var(--color-accent);background:var(--color-surface);color:var(--color-accent-dark);cursor:pointer;align-self:flex-end;padding:.5rem 1rem;font-size:.85rem;font-weight:700}.filter-reset:hover{background:var(--color-bg)}.filter-count{color:var(--color-text-muted);align-self:flex-end;margin:0;font-size:.85rem}.card-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem;margin:1.25rem 0 0;padding:0;list-style:none;display:grid}.card{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-sm);padding:1.1rem 1.25rem;text-decoration:none;transition:box-shadow .2s,transform .2s,border-color .2s;display:block}.card:hover{border-color:var(--color-accent);box-shadow:var(--shadow-md);text-decoration:none;transform:translateY(-2px)}.card-title{font-family:var(--font-display);color:var(--color-text);margin:0;font-weight:700}.card-meta{color:var(--color-text-muted);text-transform:capitalize;margin:.35rem 0 0;font-size:.85rem}.category-section h2{color:var(--color-header)}.category-section h2 a{color:inherit;text-decoration:none}.category-section h2 a:hover{text-decoration:underline}.category-teaser{color:var(--color-text-muted);max-width:42rem}.copywork-text{font-family:var(--font-mono);max-width:40rem;line-height:1.8}.copywork-line{margin:0 0 .5rem}.copywork-line.stanza-break{margin-bottom:1.5rem}.line-label{min-width:1.5rem;color:var(--color-text-muted);vertical-align:super;font-size:.8rem;display:inline-block}.full-text-reference{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text-muted);margin-top:2rem;padding:1rem 1.25rem}.full-text-reference summary{cursor:pointer;font-weight:700;font-family:var(--font-display);color:var(--color-text)}.full-text-reference .copywork-text{margin-top:1rem}.related-texts{border-top:1px solid var(--color-border);margin-top:2.5rem;padding-top:1.5rem}.related-texts ul{flex-wrap:wrap;gap:.5rem 1.25rem;padding:0;list-style:none;display:flex}.related-texts a{color:var(--color-accent-dark)}.copywork-widget{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);max-width:40rem;box-shadow:var(--shadow-md);margin:1.75rem 0;padding:1.5rem}.widget-controls{color:var(--color-text-muted);justify-content:space-between;align-items:center;margin-bottom:.75rem;font-size:.85rem;display:flex}.copywork-target-line{font-family:var(--font-mono);min-height:2.5rem;font-size:1.25rem;line-height:1.6;transition:opacity .3s}.copywork-target-line.fade-out{opacity:0}.copywork-target-line .char.pending{color:var(--color-text-muted)}.copywork-target-line .char.correct{color:var(--color-correct)}.copywork-target-line .char.incorrect{color:var(--color-incorrect);background:var(--color-incorrect-bg);border-radius:2px}.copywork-input{width:100%;font-family:var(--font-mono);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text);margin-top:.75rem;padding:.65rem .85rem;font-size:1rem}.copywork-input:focus{outline:2px solid var(--color-accent);outline-offset:1px}.copywork-stats-row{color:var(--color-text-muted);gap:1.5rem;margin-top:.75rem;font-size:.9rem;display:flex}.copywork-stats-row strong{color:var(--color-accent-dark)}.report{border-top:1px solid var(--color-border);margin-top:1rem;padding-top:1rem}.report h2{color:var(--color-accent-dark)}.home-section{margin:2.5rem 0}.home-steps{padding-left:1.25rem}.home-steps li{margin:.6rem 0}.card-desc{color:var(--color-text-muted);margin:.4rem 0 0;font-size:.9rem}.card-count{font-family:var(--font-body);color:var(--color-text-muted);font-size:.9rem;font-weight:600}.seal-book{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);margin:2.5rem 0;padding:1.5rem}.seal-book h2{margin-top:0}.seal-book-intro{color:var(--color-text-muted)}.seal-book-summary{font-weight:700}.seal-shelves{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem;display:grid}.seal-shelf-label{font-family:var(--font-display);margin:0 0 .4rem;font-weight:700}.seal-shelf-count{font-family:var(--font-body);color:var(--color-text-muted);font-size:.85rem;font-weight:600}.seal-row{border:1px dashed var(--color-border);border-radius:var(--radius-md);flex-wrap:wrap;gap:.35rem;min-height:60px;padding:.4rem;display:flex}.seal-link{line-height:0;transition:transform .2s}.seal-link:hover{transform:rotate(-8deg)scale(1.08)}.watch-for{background:var(--color-surface);border-left:4px solid var(--color-accent);border-radius:var(--radius-sm);margin:1.5rem 0;padding:1rem 1.25rem}.watch-for h2{margin-top:0}.watch-for li{margin:.4rem 0}.clean-line-toast{min-height:1.5em;color:var(--color-header);opacity:0;margin:.5rem 0 0;font-weight:700}.clean-line-toast.show{animation:1.8s ease-out clean-line}@keyframes clean-line{0%{opacity:0;transform:translateY(4px)}15%{opacity:1;transform:translateY(0)}75%{opacity:1}to{opacity:0}}.report-seal{line-height:0}.report-seal.stamped .seal{animation:.55s cubic-bezier(.2,1.4,.4,1) seal-stamp}@keyframes seal-stamp{0%{opacity:0;transform:scale(1.8)rotate(-20deg)}60%{opacity:1;transform:scale(.92)rotate(4deg)}to{transform:scale(1)rotate(0)}}.certificate-actions{margin-top:1rem}.certificate-actions label{margin-bottom:.35rem;font-weight:600;display:block}.certificate-row{flex-wrap:wrap;gap:.5rem;display:flex}.certificate-row input{border:1px solid var(--color-border);border-radius:var(--radius-sm);font:inherit;flex:200px;padding:.55rem .75rem}.certificate{display:none}@media (prefers-reduced-motion:reduce){.clean-line-toast.show{opacity:1;animation:none}.report-seal.stamped .seal,.seal-link{transition:none;animation:none}}@media print{body.print-certificate *,body.print-attendance *{visibility:hidden}body.print-certificate .certificate,body.print-certificate .certificate *{visibility:visible}body.print-certificate .certificate{text-align:center;font-family:var(--font-body);color:#2e2a24;border:6px double #3b5e52;flex-direction:column;justify-content:center;align-items:center;margin:.5in;padding:.75in;display:flex;position:fixed;inset:0}.cert-brand{font-family:var(--font-display);color:#3b5e52;margin:0;font-size:20pt}.cert-heading{font-family:var(--font-display);margin:.2in 0;font-size:32pt}.cert-student,.cert-text{font-family:var(--font-display);margin:.1in 0;font-size:26pt;font-style:italic}.cert-details{color:#7a7266}.cert-seal{margin-top:.2in}}@media (width<=640px){.site-header .container{flex-wrap:wrap;row-gap:.35rem}.site-nav{flex-wrap:wrap;gap:.35rem 1rem;margin-left:0}}@media (hover:none) and (pointer:coarse){.copywork-widget:before{content:"⌨ Copywork typing works best with a physical keyboard: a computer, or a tablet with a keyboard attached.";border:1px solid var(--color-border);border-left:4px solid var(--color-accent);border-radius:var(--radius-sm);background:var(--color-bg);margin-bottom:1rem;padding:.75rem 1rem;font-size:.9rem;font-weight:600;display:block}}.profile-switcher{color:var(--color-header-text);flex-wrap:wrap;align-items:center;gap:.4rem;margin-left:auto;font-size:.85rem;display:flex}.profile-switcher[hidden],.profile-add[hidden]{display:none}.profile-label{font-weight:700}.profile-switcher select,.profile-add input{font:inherit;border-radius:var(--radius-sm);border:1px solid var(--color-border);max-width:11rem;padding:.25rem .45rem}.profile-add{align-items:center;gap:.35rem;display:flex}.btn-small{padding:.25rem .7rem;font-size:.85rem}.profile-cancel{color:var(--color-header-text);cursor:pointer;font:inherit;background:0 0;border:none;text-decoration:underline}@media (width<=640px){.profile-switcher{width:100%;margin-left:0}}.worksheet-link{flex-wrap:wrap;align-items:center;gap:.5rem .9rem;margin:1.25rem 0;display:flex}.worksheet-link span{color:var(--color-text-muted);font-size:.9rem}.worksheet-list{margin:.75rem 0 0;padding:0;list-style:none}.worksheet-list li{border-bottom:1px solid var(--color-border);flex-wrap:wrap;align-items:baseline;gap:.25rem .75rem;padding:.6rem 0;display:flex}.worksheet-title{font-weight:700}.worksheet-meta{color:var(--color-text-muted);text-transform:capitalize;flex:12rem;font-size:.85rem}.worksheet-type{font-size:.9rem}.attendance-student{color:var(--color-text-muted)}.attendance-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);margin:1.25rem 0;padding:1.25rem 1.5rem}.attendance-card h2{margin-top:0}.att-summary{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem;display:grid}.att-big{font-family:var(--font-display);color:var(--color-header);margin:0;font-size:2.2rem;font-weight:700}.att-label{color:var(--color-text-muted);margin:0 0 .4rem}.att-bar{background:var(--color-border);border-radius:999px;height:8px;overflow:hidden}.att-bar[hidden]{display:none}.att-bar span{background:var(--color-accent);width:0;height:100%;transition:width .3s;display:block}.att-settings{margin-top:1rem}.att-settings summary{cursor:pointer;font-weight:700}.att-form{flex-wrap:wrap;align-items:flex-end;gap:.75rem 1rem;margin-top:.75rem;display:flex}.att-form label{flex-direction:column;gap:.25rem;font-size:.9rem;font-weight:600;display:flex}.att-form input[type=date],.att-form input[type=number],.att-form input[type=text],.att-month-bar input{font:inherit;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);padding:.45rem .6rem}.att-form input[type=number]{width:6rem}.att-subjects{border:1px solid var(--color-border);border-radius:var(--radius-sm);flex-wrap:wrap;flex:100%;gap:.4rem 1rem;padding:.6rem .9rem;display:flex}.att-subjects label{flex-direction:row;align-items:center;font-weight:400}.att-note{flex:100%}.att-hint,.att-copywork{color:var(--color-text-muted);flex:100%;margin:0;font-size:.9rem}.att-actions{flex-wrap:wrap;align-items:center;gap:.6rem;margin-top:.75rem;display:flex}.att-saved{color:var(--color-header);font-size:.9rem;font-weight:600}.att-month-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}.att-month-bar h2{margin:0}.table-scroll{overflow-x:auto}.att-table{border-collapse:collapse;width:100%;margin-top:.75rem;font-size:.92rem}.att-table th,.att-table td{text-align:left;border-bottom:1px solid var(--color-border);vertical-align:top;padding:.45rem .5rem}.att-table th{text-transform:uppercase;letter-spacing:.03em;color:var(--color-text-muted);font-size:.8rem}.att-month-total{font-weight:700}.att-link{color:var(--color-accent-dark);cursor:pointer;font:inherit;background:0 0;border:none;padding:0 .4rem 0 0;font-size:.85rem;text-decoration:underline}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.attendance-print{display:none}@media print{body.print-attendance .attendance-print,body.print-attendance .attendance-print *{visibility:visible}body.print-attendance .attendance-print{font-family:var(--font-body);color:#2e2a24;padding:.5in;display:block;position:absolute;inset:0}.attendance-print .print-brand{font-family:var(--font-display);color:#3b5e52;margin:0;font-size:16pt}.attendance-print h2{font-family:var(--font-display);margin:.1in 0}.attendance-print .print-total{font-weight:700}.attendance-print table{border-collapse:collapse;width:100%;margin-top:.15in;font-size:10pt}.attendance-print th,.attendance-print td{text-align:left;border:1px solid #ccc;padding:4px 6px}.attendance-print .print-signature{margin-top:.4in}}
