:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#17201c;background:#f3f0e8;font-synthesis:none;--ink: #13231d;--paper: #f3f0e8;--cream: #fffdf6;--line: #d8d5ca;--muted: #6c746f;--acid: #e8ff71;--orange: #ed6a44;--green: #287555;--yellow: #c28d13;--red: #b84e41}*{box-sizing:border-box}html{min-width:320px;background:var(--paper)}body{margin:0;min-width:320px;min-height:100vh}button,input,textarea,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit}button{cursor:pointer}.app-shell{min-height:100vh;display:flex;flex-direction:column}.topbar{height:76px;padding:0 clamp(20px,5vw,72px);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:#f3f0e8eb;position:sticky;top:0;z-index:20;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.brand{display:inline-flex;align-items:center;gap:11px;text-decoration:none;font-size:19px;font-weight:700;letter-spacing:-.03em}.brand-mark{width:36px;height:36px;border-radius:9px;display:grid;place-items:center;background:var(--ink);color:var(--acid);font-size:21px}.topnav{display:flex;gap:32px}.topnav a{color:var(--muted);text-decoration:none;font-size:14px;font-weight:600}.topnav a.router-link-exact-active{color:var(--ink)}.page-wrap{width:min(1180px,calc(100% - 40px));margin:0 auto;flex:1;padding:54px 0 90px}.footer{border-top:1px solid var(--line);color:var(--muted);font-size:12px;text-align:center;padding:20px}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(42px,7vw,82px);line-height:.96;letter-spacing:-.065em;margin-bottom:22px}h1 em{font-family:Georgia,Times New Roman,serif;color:var(--orange);font-weight:600}h2{font-size:clamp(25px,3vw,36px);letter-spacing:-.045em;margin-bottom:0}h3{font-size:21px;letter-spacing:-.03em}.eyebrow{margin:0 0 10px;color:var(--green);font-size:11px;font-weight:700;letter-spacing:.15em;text-transform:uppercase}.back-link{display:inline-block;color:var(--muted);font-size:13px;font-weight:600;text-decoration:none;margin-bottom:27px}.back-link:hover{color:var(--ink)}.hero{min-height:390px;display:grid;grid-template-columns:1fr 220px;gap:70px;align-items:center;padding:25px 5% 64px;border-bottom:1px solid var(--line)}.hero-copy{max-width:550px;color:var(--muted);font-size:17px;line-height:1.7}.hero-stat{aspect-ratio:1;border-radius:50%;background:var(--ink);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;transform:rotate(4deg);box-shadow:14px 16px 0 var(--acid)}.hero-stat strong{font-size:48px;letter-spacing:-.07em;line-height:.95}.hero-stat span{color:#b9c2bd;font-size:11px;text-transform:uppercase;letter-spacing:.08em}.hero-stat-line{width:65px;border-top:1px solid #52615a;margin:15px 0}.section-block{padding-top:60px}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:26px}.section-heading.tight{justify-content:flex-start;align-items:center}.button{min-height:44px;padding:11px 18px;border:1px solid var(--ink);border-radius:6px;background:var(--ink);color:#fff;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;font-size:13px;font-weight:700;transition:transform .15s,box-shadow .15s}.button:hover{transform:translateY(-1px)}.button:disabled{opacity:.55;cursor:wait}.button-accent{background:var(--acid);border-color:var(--ink);color:var(--ink);box-shadow:3px 3px 0 var(--ink)}.button-ghost{background:transparent;color:var(--ink);border-color:var(--line)}.button-danger{background:transparent;border-color:var(--red);color:var(--red)}.button-small{min-height:34px;padding:6px 11px;font-size:11px}.icon-button{border:1px solid var(--line);background:transparent;color:var(--ink);width:34px;height:34px;border-radius:50%;display:inline-grid;place-items:center;text-decoration:none;font-size:17px}.icon-button.danger,.text-button.danger{color:var(--red)}.text-button{border:0;padding:5px;background:transparent;color:var(--green);font-size:11px;font-weight:700}.panel{background:var(--cream);border:1px solid var(--line);border-radius:9px;padding:25px;box-shadow:0 12px 35px #13231d0a}.inline-form{display:grid;grid-template-columns:1fr 2fr auto;gap:15px;align-items:end;margin-bottom:23px}.field{display:flex;flex-direction:column;gap:7px}.field>span{color:var(--muted);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.field input,.field textarea,.field select,.person-edit input{width:100%;border:1px solid var(--line);border-radius:5px;padding:12px 13px;background:#fff;color:var(--ink);outline:none}.field input:focus,.field textarea:focus,.field select:focus,.person-edit input:focus{border-color:var(--green);box-shadow:0 0 0 3px #2875551f}.field textarea{resize:vertical;line-height:1.5}.team-grid{display:grid;grid-template-columns:repeat(2,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}.team-card{min-height:220px;padding:24px;display:grid;grid-template-rows:auto 1fr auto;color:inherit;text-decoration:none;border-right:1px solid var(--line);border-bottom:1px solid var(--line);transition:background .2s}.team-card:hover{background:var(--cream)}.team-index{color:var(--orange);font-size:11px;font-weight:700}.team-card h3{margin:24px 0 5px;font-size:29px}.team-card p,.team-card small{color:var(--muted)}.team-meta{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:12px}.round-arrow{width:38px;height:38px;display:grid;place-items:center;border-radius:50%;border:1px solid var(--line);color:var(--ink);font-size:18px}.training-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.upcoming-card{background:var(--ink);color:#fff;border-radius:7px;min-height:115px;padding:18px;display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;text-decoration:none}.upcoming-card small{display:block;color:#adb8b2;font-size:11px;line-height:1.5;margin-top:5px}.date-chip{width:43px;height:43px;display:grid;place-items:center;border:1px solid #5a6962;border-radius:50%;color:var(--acid);font-weight:700}.arrow{color:var(--acid)}.empty-state{text-align:center;border:1px dashed #bcbab1;border-radius:10px;padding:70px 20px}.empty-state.compact{padding:45px 20px}.empty-state h3,.empty-state h2{margin-bottom:8px}.empty-state p{color:var(--muted);margin:0 auto 22px;max-width:460px}.empty-number{display:block;color:var(--orange);margin-bottom:16px;font-size:12px;font-weight:700}.team-hero,.attendance-header{padding:20px 0 45px;display:flex;justify-content:space-between;gap:30px;align-items:flex-end}.team-hero h1,.attendance-header h1,.form-header h1,.page-header h1{font-size:clamp(40px,6vw,66px);margin-bottom:12px}.team-hero p,.attendance-header p,.form-header>p,.page-header>p{color:var(--muted);margin-bottom:0}.team-actions{display:flex;gap:10px;flex-shrink:0}.tabs{display:flex;border-bottom:1px solid var(--line);gap:30px}.tabs button{border:0;border-bottom:3px solid transparent;background:transparent;padding:17px 2px;color:var(--muted);font-weight:600}.tabs button.active{border-color:var(--orange);color:var(--ink)}.tabs span{display:inline-block;margin-left:5px;background:#dfddd4;border-radius:20px;padding:1px 7px;font-size:10px}.tab-content{padding:38px 0 65px}.list-section+.list-section{margin-top:45px}.training-list{border-top:1px solid var(--line)}.training-row{display:grid;grid-template-columns:1fr auto;align-items:center;border-bottom:1px solid var(--line)}.training-main{display:flex;align-items:center;gap:19px;min-height:86px;color:inherit;text-decoration:none}.training-main>span:last-child small{display:block;color:var(--muted);margin-top:4px}.training-date{width:56px;text-align:center;border-right:1px solid var(--line)}.training-date strong{display:block;font-size:22px}.training-date small{color:var(--orange);text-transform:uppercase;font-size:9px;font-weight:700}.row-actions{display:flex;align-items:center;gap:8px}.muted-list{opacity:.72}.split-layout{display:grid;grid-template-columns:320px 1fr;gap:55px;align-items:start}.participant-form{position:sticky;top:100px;display:flex;flex-direction:column;gap:17px}.participant-form h2{margin-bottom:6px}.count-badge{border:1px solid var(--line);border-radius:50px;padding:5px 10px;color:var(--muted);font-size:11px}.people-list{border-top:1px solid var(--line)}.person-row{min-height:68px;border-bottom:1px solid var(--line);display:grid;grid-template-columns:auto 1fr auto;gap:15px;align-items:center}.avatar{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:#dfe7d3;color:var(--green);font-size:11px;font-weight:700}.person-edit{grid-column:1 / -1;display:grid;grid-template-columns:1fr 1fr auto auto;gap:8px}.person-edit.expanded{grid-template-columns:1fr 1fr 1fr auto auto auto;align-items:center}.person-edit select{border:1px solid var(--line);border-radius:5px;padding:11px;background:#fff}.check-row{display:flex;align-items:center;gap:9px;font-size:12px;font-weight:600}.check-row input{width:17px;height:17px;accent-color:var(--green)}.participant-group+.participant-group{margin-top:28px}.group-heading{margin:0;padding:10px 12px;background:#e5e2d9;color:var(--ink);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;display:flex;justify-content:space-between}.role-badge{display:inline-block;margin-left:6px;padding:2px 6px;border-radius:20px;background:var(--acid);color:var(--ink);font-size:8px;text-transform:uppercase;vertical-align:middle}.archive-toggle{border:0;background:none;color:var(--muted);padding:22px 0 12px;font-size:11px;font-weight:700}.archived-list{opacity:.58}.empty-inline{color:var(--muted);border:1px dashed var(--line);padding:30px;text-align:center}.danger-zone{margin-top:30px;padding:24px 0;border-top:1px solid #dbb7b1;display:flex;justify-content:space-between;align-items:center;gap:20px}.danger-zone p{color:var(--muted);margin:5px 0 0;font-size:12px}.stats-table{border-top:1px solid var(--line)}.stats-row{min-height:70px;display:grid;grid-template-columns:2fr 1.4fr repeat(3,.75fr);align-items:center;gap:18px;border-bottom:1px solid var(--line)}.stats-row.stats-hours{grid-template-columns:2fr 1.1fr 1fr repeat(3,.75fr)}.hours-value{color:var(--green);font-size:18px!important;font-weight:700}.week-field{min-width:180px}.stats-head{min-height:42px;color:var(--muted);font-size:10px;font-weight:700;text-transform:uppercase}.stats-row strong small{display:block;color:var(--muted);font-weight:400;font-size:10px}.stats-row>span{font-size:13px}.stats-row>span>i{display:block;width:90px;height:4px;background:#deddd5;margin-top:7px}.stats-row>span>i>i{display:block;height:100%;background:var(--green)}.narrow-page{width:min(670px,100%);margin:0 auto}.form-header,.page-header{margin-bottom:35px}.form-stack{display:flex;flex-direction:column;gap:22px;padding:34px}.switch-row{padding:18px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:20px}.switch-row span{display:flex;flex-direction:column;gap:3px}.switch-row small{color:var(--muted)}.switch-row input{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:46px;height:25px;border-radius:20px;background:#c9c8c0;position:relative;transition:.2s}.switch-row input:after{content:"";position:absolute;top:3px;left:3px;width:19px;height:19px;background:#fff;border-radius:50%;transition:.2s}.switch-row input:checked{background:var(--green)}.switch-row input:checked:after{left:24px}.form-actions{display:flex;justify-content:flex-end;gap:10px;padding-top:5px}.form-error,.import-message.error{color:var(--red);font-size:13px}.attendance-header h1{font-size:clamp(38px,5vw,60px)}.progress-panel{padding:25px 28px;background:var(--ink);color:#fff;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:28px;border-radius:8px}.progress-copy strong{display:block;font-size:25px;color:var(--acid)}.progress-copy span{color:#abb7b1;font-size:10px;text-transform:uppercase}.progress-track{height:7px;background:#425149;border-radius:10px;overflow:hidden}.progress-track span{display:block;height:100%;background:var(--acid);transition:width .25s}.status-totals{display:flex;gap:12px;font-size:10px}.status-totals span:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:5px}.status-totals .present:before{background:#66c296}.status-totals .excused:before{background:#f4c451}.status-totals .absent:before{background:#ed7667}.attendance-tools{display:flex;justify-content:space-between;align-items:center;margin:20px 0 12px}.attendance-list{border-top:1px solid var(--line)}.attendance-row{display:grid;grid-template-columns:minmax(180px,1fr) auto 180px;gap:20px;align-items:center;min-height:92px;border-bottom:1px solid var(--line);position:relative;padding:12px 0}.attendance-row:before{content:"";position:absolute;left:-12px;width:3px;height:45px;background:transparent;border-radius:5px}.attendance-row.present:before{background:var(--green)}.attendance-row.excused:before{background:var(--yellow)}.attendance-row.absent:before{background:var(--red)}.attendance-person{display:flex;align-items:center;gap:13px}.row-number{color:#a6aaa6;font-size:10px;font-weight:700}.open-label{border:1px solid var(--line);border-radius:20px;color:var(--muted);padding:2px 7px;font-size:8px;text-transform:uppercase}.status-control{display:flex;gap:5px}.status-control button{min-width:88px;border:1px solid var(--line);background:transparent;color:var(--muted);border-radius:5px;padding:8px 7px;font-size:9px;font-weight:700}.status-control button span{font-size:12px;margin-right:4px}.status-control button.selected.present{background:#d8eee2;border-color:var(--green);color:var(--green)}.status-control button.selected.excused{background:#f7eac7;border-color:var(--yellow);color:#856008}.status-control button.selected.absent{background:#f5dcd7;border-color:var(--red);color:var(--red)}.note-field span{display:none}.note-field input{width:100%;padding:9px;border:0;border-bottom:1px solid var(--line);background:transparent;font-size:11px;outline:none}.note-field input:focus{border-color:var(--green)}.training-note{margin-top:35px}.training-note>small{display:block;color:var(--muted);margin-top:8px}.page-header{max-width:680px}.data-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:15px}.data-card{min-height:370px;display:flex;flex-direction:column;align-items:stretch;gap:25px}.data-card>div{flex:1}.data-card p{color:var(--muted);line-height:1.6}.data-number{color:var(--orange);font-size:11px;font-weight:700}.restore-card{background:var(--ink);color:#fff;border-color:var(--ink)}.restore-card p{color:#aeb9b3}.file-button{min-height:44px;border:1px solid var(--acid);color:var(--acid);display:grid;place-items:center;border-radius:5px;font-size:12px;font-weight:700;cursor:pointer}.file-button input{display:none}.import-message{color:var(--acid);font-size:12px}.date-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px}.local-warning{margin-top:24px;border-left:3px solid var(--orange);padding:10px 18px;display:flex;align-items:baseline;gap:15px}.local-warning p{margin:0;color:var(--muted);font-size:12px}.toast{position:fixed;right:20px;bottom:20px;z-index:30;display:flex;align-items:center;gap:12px;padding:13px 15px;background:var(--ink);color:#fff;border:1px solid #4b5c53;border-radius:7px;box-shadow:0 10px 40px #00000040;font-size:12px}.toast .icon-button{color:#fff;border-color:#65736c}@media(max-width:900px){.training-strip,.data-grid{grid-template-columns:1fr}.data-card{min-height:auto}.split-layout{grid-template-columns:1fr}.participant-form{position:static}.attendance-row{grid-template-columns:1fr;gap:10px;padding:18px 0}.note-field input{max-width:350px}.progress-panel{grid-template-columns:auto 1fr}.status-totals{grid-column:1 / -1}}@media(max-width:640px){.topbar{height:65px;padding:0 18px}.topnav{gap:18px}.topnav a{font-size:12px}.page-wrap{width:min(100% - 28px,1180px);padding-top:31px}.hero{grid-template-columns:1fr;gap:30px;padding:20px 0 45px}.hero-stat{width:155px;justify-self:end}.hero-stat strong{font-size:34px}.hero-stat-line{margin:8px}.team-grid{grid-template-columns:1fr}.team-card{min-height:185px}.inline-form{grid-template-columns:1fr}.section-heading{align-items:center}.section-heading h2{font-size:25px}.team-hero,.attendance-header{display:block;padding-bottom:30px}.team-actions,.attendance-header .button{margin-top:24px}.team-actions .button{flex:1}.tabs{gap:14px;overflow-x:auto}.tabs button{font-size:12px;white-space:nowrap}.training-row{grid-template-columns:1fr auto}.row-actions{gap:3px}.person-row{grid-template-columns:auto 1fr;padding:9px 0}.person-row .row-actions{grid-column:2}.person-edit,.person-edit.expanded{grid-template-columns:1fr 1fr}.stats-table{overflow-x:auto}.stats-row{min-width:650px}.form-stack{padding:22px 18px}.form-actions{flex-direction:column-reverse}.form-actions .button{width:100%}.progress-panel{padding:20px}.status-totals{flex-wrap:wrap}.status-control{width:100%}.status-control button{flex:1;min-width:0;padding:10px 3px}.local-warning{display:block}.local-warning p{margin-top:6px}.danger-zone{align-items:flex-start;flex-direction:column}.toast{left:14px;right:14px;bottom:14px}}
