:root{color-scheme:light;--ink:#262139;--muted:#625c70;--purple:#38275f;--action:#5d3a9b;--hover:#472679;--ground:#f4f2f8;--line:#ded9e7;--soft:#ebe6f4;--white:#fff;--green:#326243;--error:#a32636;--focus:#7953b8;--control-line:#958ba2;--header-focus:#badeaa;--radius:14px;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:16px;line-height:1.5;color:var(--ink);background:var(--ground);font-synthesis:none}
*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,textarea{ -webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:not-allowed;color:#797283;background:#f1eff4;box-shadow:none}a{color:var(--action);text-underline-offset:3px}a:hover{color:var(--hover)}button,a,input,textarea,select{outline-offset:4px}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid var(--focus)}::selection{background:#d8c6f6;color:#26153e}input,textarea{caret-color:var(--action)}[hidden]{display:none!important}h1,h2,h3,p{margin:0}h1,h2,h3{line-height:1.25;text-wrap:balance}h1{font-size:1.875rem;letter-spacing:-.025em;font-weight:730}h2{font-size:1.2rem;font-weight:700}h3{font-size:1rem;font-weight:680}svg{flex:none}button svg{vertical-align:middle}label{font-weight:600;font-size:.875rem}input:not([type=radio]):not([type=checkbox]):not([type=file]),textarea,select{border:1px solid var(--control-line);border-radius:8px;background:var(--white);color:var(--ink);padding:.7rem .8rem;min-width:0;width:100%}input::placeholder,textarea::placeholder{color:#767080;opacity:1}textarea{resize:vertical;line-height:1.65;max-height:60vh}input[type=number]{font-variant-numeric:tabular-nums}input[type=checkbox],input[type=radio]{accent-color:var(--action)}
.skip-link{position:fixed;z-index:20;top:-100px;left:1rem;background:white;padding:.75rem 1rem;border:2px solid var(--action)}.skip-link:focus{top:.5rem}.site-header{background:var(--purple);color:white;min-height:76px;padding:0 max(28px,calc((100vw - 1320px)/2));display:flex;align-items:center;justify-content:space-between;gap:1rem}.brand{display:inline-flex;align-items:center;gap:.7rem;font-size:1.25rem;font-weight:730;letter-spacing:-.025em;text-decoration:none;color:inherit;white-space:nowrap}.brand svg{fill:currentColor}.brand svg rect:last-child{fill:#badeaa}.site-header nav{display:flex;gap:1.75rem}.site-header nav a{color:#f0eaf9;font-size:.875rem;text-decoration:none;padding:.6rem 0}.site-header nav a:hover{text-decoration:underline}.site-header .brand:hover{color:white}.site-header a:focus-visible{outline-color:var(--header-focus)}.app-shell{max-width:1320px;margin:0 auto;padding:34px 28px 0}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;margin-bottom:28px}.page-heading p{color:var(--muted);margin-top:8px;font-size:.975rem}.local-note{display:flex;align-items:center;gap:8px;white-space:nowrap;font-size:.8rem;color:#4c5b48}.status-dot{width:7px;height:7px;background:#467554;border-radius:50%}.workspace{display:grid;grid-template-columns:350px minmax(0,1fr);gap:28px;align-items:start}.roster-panel{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:23px}.section-heading,.label-line,.attendance-heading,.attendance-summary,.result-heading,.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.section-heading{margin-bottom:20px}.section-heading h2{white-space:nowrap}.button{border:1px solid transparent;border-radius:8px;font-size:.875rem;font-weight:650;padding:.6rem .85rem;min-height:42px;display:inline-flex;align-items:center;justify-content:center;gap:8px;line-height:1.25;text-decoration:none;color:var(--ink);background:transparent;transition:background .12s ease}.primary{background:var(--action);color:var(--white);padding:.85rem 1.4rem;min-height:50px}.primary:hover{background:var(--hover);color:white}.secondary{background:var(--soft);color:var(--purple)}.secondary:hover{background:#ded4ed}.quiet{color:var(--muted)}.quiet:hover{color:var(--purple);background:var(--soft)}.text-button{border:0;background:transparent;padding:4px 0;color:var(--action);font-size:.78rem;font-weight:600;text-decoration:underline;text-underline-offset:3px;min-height:34px}.text-button:hover{color:var(--hover)}.button-row{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.roster-panel>.section-heading .button{padding-inline:7px;font-size:.8rem}.roster-panel>input{margin-top:7px;margin-bottom:22px}.label-line{margin-bottom:7px}.label-line>span{font-size:.7rem;color:var(--muted);white-space:nowrap}.field-help{font-size:.78rem;color:var(--muted);line-height:1.5;margin-top:9px}.button-row{margin-top:16px}#name-editor textarea{font-size:.9rem}#name-editor .button{font-size:.8rem;padding-inline:10px}.save-area{border-top:1px solid var(--line);margin-top:24px;padding-top:4px}.save-status{font-size:.75rem;line-height:1.5;color:var(--muted);margin-top:11px;min-height:1.5em}.save-status.success{color:var(--green)}.save-status.failure{color:var(--error)}.backup-actions{display:flex;gap:18px;margin-top:8px}.attendance-heading{margin:2px 0 8px}.attendance-heading .button{font-size:.8rem;min-height:34px;padding:4px 7px}.attendance-summary{font-size:.8rem;color:var(--green);font-weight:600;gap:4px}.attendance-summary .text-button{font-size:.72rem}.attendance-list{max-height:326px;overflow:auto;margin-top:10px;scrollbar-width:thin;scrollbar-color:#b1a5c5 transparent;border-block:1px solid var(--line)}.person-row{display:flex;align-items:center;gap:10px;min-height:42px;padding:7px 3px;cursor:pointer;border-bottom:1px solid #eeebf2;font-size:.85rem;font-weight:450}.person-row:last-child{border:0}.person-row:hover{background:#f8f5fc}.person-row input{width:17px;height:17px;margin:0;flex:none}.person-name{overflow-wrap:anywhere}.person-row.absent{color:var(--muted)}.person-row.absent .person-name{text-decoration:line-through}.attendance-mark{margin-left:auto;color:var(--muted);font-size:.65rem;font-weight:500}.error-message{background:#fff0f2;color:var(--error);border:1px solid #e5b4bd;border-radius:8px;font-size:.83rem;line-height:1.5;margin-top:13px;padding:10px 12px}.group-settings{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:24px 26px}.group-settings .section-heading{margin-bottom:15px}.split-mode{border:0;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:8px 20px}.split-mode legend{font-size:.78rem;color:var(--muted);padding:0;margin-bottom:8px}.split-mode label{display:flex;align-items:center;gap:7px;min-height:34px;font-weight:550;font-size:.85rem;cursor:pointer}.split-mode input{width:16px;height:16px;margin:0}.generate-row{display:flex;align-items:flex-end;gap:16px;margin-top:14px}.number-field{width:160px}.number-field label{display:block;font-size:.75rem;margin-bottom:6px}.number-field input{height:50px}.generate-row>.primary{flex:1;max-width:260px}.group-settings>.field-help{margin-top:14px}.mobile-link{display:none}.results{margin-top:26px}.results:focus{outline:none}.empty-results{padding:50px 22px 48px;text-align:center;min-height:358px;display:flex;align-items:center;justify-content:center;flex-direction:column}.empty-numbers{display:flex;gap:12px;align-items:center;margin-bottom:24px}.empty-numbers span{display:flex;align-items:center;justify-content:center;width:57px;height:65px;background:#e4dbf0;color:#665080;font-size:1.75rem;font-weight:650;border-radius:10px}.empty-numbers span:nth-child(2){background:#dcebd6;color:#526847;transform:translateY(-8px)}.empty-numbers span:nth-child(3){background:#f2e5c9;color:#746142}.empty-results h3{font-size:1.2rem}.empty-results p{font-size:.85rem;color:var(--muted);margin:9px 0 20px;max-width:34ch}.result-heading{align-items:center;margin-bottom:13px}.result-heading h2{font-size:1.25rem;overflow-wrap:anywhere}.result-heading p{font-size:.8rem;color:var(--muted);margin-top:5px}.result-heading>.button{flex:none}.output-toolbar{display:flex;align-items:center;justify-content:space-between;gap:6px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:5px 0;margin-bottom:18px;flex-wrap:wrap}.output-toolbar>div{display:flex;gap:3px}.output-toolbar .button{font-size:.78rem;padding-inline:10px;min-height:36px}.output-toolbar .button[aria-pressed=true]{background:var(--action);color:white}.group-board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.group-sheet{min-width:0;background:var(--white);border:1px solid var(--line);border-radius:12px;overflow:hidden}.group-sheet header{background:#e8dff5;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 15px;color:#44305f}.group-sheet:nth-child(6n+2) header{background:#dfeeda;color:#355631}.group-sheet:nth-child(6n+3) header{background:#f3e9cb;color:#685328}.group-sheet:nth-child(6n+4) header{background:#dfeaf3;color:#35506a}.group-sheet:nth-child(6n+5) header{background:#f3dfe5;color:#6b3548}.group-sheet:nth-child(6n+6) header{background:#dcebe8;color:#335e55}.group-sheet h3{font-size:.9rem}.group-sheet header span{font-size:.7rem;white-space:nowrap;font-variant-numeric:tabular-nums}.group-sheet ol{margin:0;padding:9px 12px 12px;list-style:none}.group-sheet li{border-bottom:1px solid #f0edf4}.group-sheet li:last-child{border:0}.member{font-size:.85rem;padding:9px 4px;display:block;overflow-wrap:anywhere}.member-button{width:100%;text-align:left;min-height:40px;background:transparent;border:1px solid transparent;border-radius:6px;color:var(--ink);cursor:pointer}.member-button:hover{background:var(--soft)}.member-button[aria-pressed=true]{background:var(--action);color:white}.swap-instructions{font-size:.83rem;color:var(--purple);background:#e9e1f4;padding:12px 14px;border-radius:8px;margin-bottom:15px}.result-footnote,.sample-note{font-size:.75rem;line-height:1.5;color:var(--muted);margin-top:17px}.sample-note{color:var(--action);font-weight:600}.action-status{font-size:.85rem;color:var(--green);min-height:1.5em;margin-top:12px}.action-status.failure{color:var(--error)}.group-board.reveal{animation:settle .22s cubic-bezier(.16,1,.3,1)}@keyframes settle{from{opacity:.6;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}.help-strip{display:flex;align-items:center;justify-content:space-between;gap:40px;border-top:1px solid var(--line);padding:28px 0 34px;margin-top:34px}.help-strip h2{font-size:1rem}.help-strip p{font-size:.85rem;color:var(--muted);max-width:65ch;margin-top:8px}.help-strip>a{font-size:.8rem;font-weight:600;flex:none}.site-footer{max-width:1320px;padding:22px 28px 28px;margin:0 auto;display:flex;align-items:center;gap:20px;font-size:.75rem;border-top:1px solid var(--line);color:var(--muted)}.footer-brand{font-size:.9rem;font-weight:750;text-decoration:none;color:var(--purple)}.site-footer nav{margin-left:auto;display:flex;gap:20px}.site-footer nav a{color:var(--muted)}dialog{border:0;border-radius:16px;max-width:540px;width:calc(100% - 32px);padding:24px;color:var(--ink);background:white;box-shadow:0 18px 60px #22133533}dialog::backdrop{background:#21143166}dialog .dialog-heading{margin-bottom:15px}dialog p{font-size:.85rem;color:var(--muted);margin:12px 0}.saved-list{margin-top:20px;max-height:55vh;overflow:auto}.saved-row{display:flex;align-items:center;gap:10px;border-top:1px solid var(--line);padding:13px 0}.saved-load{flex:1;text-align:left;border:0;background:transparent;padding:5px;color:var(--ink);min-width:0}.saved-load:hover{background:var(--soft)}.saved-load strong{display:block;font-size:.95rem;overflow-wrap:anywhere}.saved-load small{display:block;font-size:.75rem;color:var(--muted);margin-top:4px}.saved-delete{color:var(--error);font-size:.75rem}.presentation{max-width:none;max-height:none;width:100%;height:100%;margin:0;border-radius:0;padding:28px 40px;overflow:auto;background:#f6f4f9}.presentation-toolbar{display:flex;align-items:center;justify-content:space-between;gap:15px;padding-bottom:20px;border-bottom:1px solid var(--line)}.presentation-toolbar>.brand{color:var(--purple)}.presentation-toolbar>div{display:flex;gap:10px}.presentation-heading{margin:26px 0}.presentation-heading h2{font-size:2.2rem;overflow-wrap:anywhere}.presentation-heading p{margin:10px 0;color:var(--muted)}.presentation .group-board{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:24px}.presentation .group-sheet h3{font-size:1.15rem}.presentation .group-sheet header span{font-size:.85rem}.presentation .group-sheet .member{font-size:1.35rem;padding:10px 4px}.presentation .group-sheet ol{padding:12px 18px}.presentation-hint{margin:25px 0 0;font-size:.8rem}.no-script{padding:20px;background:#fff0f2;color:var(--error);text-align:center}.content-page .article{max-width:780px;margin:48px auto;padding:0 26px 30px;line-height:1.75}.article h1{font-size:2rem;margin-bottom:20px}.article h2{font-size:1.25rem;margin:32px 0 12px}.article h3{margin:24px 0 10px}.article p{margin:14px 0;max-width:72ch}.article li{margin:10px 0}.article table{border-collapse:collapse;width:100%;font-size:.9rem}.article th,.article td{border-bottom:1px solid var(--line);text-align:left;padding:10px}.article .button{margin-top:16px}.article .callout{background:var(--soft);padding:16px 20px;border-radius:10px}
@media(min-width:1400px){.group-board{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:1100px){.workspace{grid-template-columns:320px minmax(0,1fr);gap:22px}.group-board{grid-template-columns:repeat(2,minmax(0,1fr))}.local-note{display:none}.group-settings{padding:22px}.help-strip{gap:20px}.help-strip>a{max-width:190px}}@media(max-width:780px){.site-header{min-height:66px;padding:0 20px}.site-header nav{gap:20px}.app-shell{padding:26px 20px 0}.page-heading{margin-bottom:24px}.page-heading p{font-size:.9rem;max-width:38ch}h1{font-size:1.625rem}.workspace{grid-template-columns:1fr;gap:22px}.roster-panel{padding:22px}.group-settings{padding:22px}.attendance-list{max-height:230px}.mobile-link{display:inline;font-size:.75rem}.empty-results{min-height:300px;padding-block:36px}.help-strip{align-items:flex-start;flex-direction:column;gap:16px;margin-top:22px}.help-strip>a{max-width:none}.site-footer{padding:20px;gap:15px;flex-wrap:wrap}.site-footer>span{display:none}.site-footer nav{gap:15px}.presentation{padding:18px}.presentation .group-board{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.presentation .group-sheet .member{font-size:1rem}.presentation .group-sheet ol{padding:8px 12px}.presentation-heading h2{font-size:1.7rem}.presentation-toolbar{align-items:flex-start}.presentation-toolbar>.brand{font-size:1rem}.presentation-toolbar>div{flex-direction:column;gap:6px}.presentation-toolbar .button{font-size:.75rem;min-height:36px}.content-page .article{margin-top:30px}.article h1{font-size:1.75rem}}
@media(max-width:540px){.site-header{flex-wrap:wrap;padding-block:12px;row-gap:4px}.site-header nav{margin-left:auto}.presentation-toolbar{flex-wrap:wrap}}
@media(max-width:380px){.site-header{padding-inline:16px}.site-header .brand{font-size:1.1rem;gap:7px}.site-header .brand svg{width:25px}.site-header nav{gap:12px}.site-header nav a{font-size:.75rem}.app-shell{padding-inline:12px}.roster-panel,.group-settings{padding:18px}.page-heading{padding-inline:5px}.split-mode{gap:6px}.generate-row{gap:10px}.number-field{width:120px}.primary{padding-inline:14px}.group-board{gap:10px}.group-sheet header{padding:10px}.group-sheet header span{font-size:.65rem}.group-sheet ol{padding-inline:8px}.group-sheet .member{font-size:.8rem}.output-toolbar .button{padding-inline:8px}.result-heading h2{font-size:1.1rem}.presentation .group-board{grid-template-columns:1fr}.site-footer{padding-inline:16px}.site-footer nav{gap:12px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media print{@page{size:auto;margin:14mm}body{background:white;color:black}.site-header,.page-heading,.roster-panel,.group-settings,.output-toolbar,.result-heading>.button,.result-footnote,.action-status,.help-strip,.site-footer,.skip-link,.swap-instructions,dialog,.no-script,.empty-results{display:none!important}.app-shell{max-width:none;padding:0;margin:0}.workspace{display:block}.results{margin:0}.result-heading{margin-bottom:18px}.result-heading h2{font-size:20pt}.result-heading p{font-size:10pt;color:#333}.group-board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5mm}.group-sheet{break-inside:avoid;border:1px solid #888;border-radius:0}.group-sheet header{background:white!important;color:black!important;border-bottom:1px solid #888;padding:8px}.group-sheet h3{font-size:11pt}.group-sheet ol{padding:6px 8px}.group-sheet .member{font-size:10pt;color:black!important;background:white!important;padding:5px 2px;border:0}.sample-note{font-size:9pt}.content-page .article{margin:0;max-width:none;padding:0}.content-page .article a{color:black}.content-page .article .button{display:none}}
