:root{--bg:#f5f4ee;--paper:#fffefa;--ink:#1e302b;--muted:#727a70;--line:#e3e6dc;--green:#173e36;--lime:#d9ec9c;--soft:#e8efdf;--orange:#b36731;--red:#a14f4a;--shadow:0 10px 40px #263e2710}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--bg);font:15px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:disabled{cursor:wait;opacity:.55}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #9ebd60;outline-offset:3px}button{border:0;background:none}a{color:var(--green);text-underline-offset:3px}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(27px,4vw,38px);letter-spacing:-1.3px;line-height:1.15;margin-bottom:12px;font-weight:730}h2{font-size:21px;letter-spacing:-.5px}h3{font-size:17px;margin-bottom:8px}.muted{color:var(--muted)}.small{font-size:12px}.eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:1.8px;font-weight:750;color:var(--muted);margin-bottom:10px}.shell{display:grid;grid-template-columns:214px 1fr;min-height:100dvh}.sidebar{position:fixed;inset:0 auto 0 0;width:214px;padding:32px 20px;border-right:1px solid var(--line);display:flex;flex-direction:column;background:#efefe7}.brand{display:flex;gap:12px;align-items:center;padding:0 8px 37px}.brandmark{display:inline-flex;align-items:center;background:var(--green);color:#f1f3dd;border-radius:15px;width:57px;height:57px;justify-content:center;font-size:25px;font-weight:800;letter-spacing:-2px;position:relative}.brandmark>span{position:absolute;right:7px;top:0;font-size:17px;color:var(--lime)}.brand strong{font-size:14px;letter-spacing:-.3px}.brand .small{font-size:11px}.nav{display:flex;flex-direction:column;gap:7px}.nav button{display:flex;align-items:center;gap:12px;text-align:left;min-height:48px;padding:12px 15px;border-radius:13px;font-size:14px;color:#687267}.nav button.active{background:var(--green);color:#fff;font-weight:600}.nav svg,.icon svg{width:20px;height:20px;flex:none}.sidebar-bottom{margin-top:auto;padding:20px 8px 0}.private{display:flex;gap:7px;align-items:center;font-size:11px;color:#778374}.main{grid-column:2;padding:26px 42px 70px;max-width:1570px;width:100%;margin:auto}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:43px;gap:12px;font-size:12px;color:var(--muted)}.topbar-right{display:flex;align-items:center;gap:17px}.saved{display:flex;align-items:center;gap:6px}.saved:before{content:'';width:6px;height:6px;border-radius:50%;background:#85a263}.avatar{display:inline-grid;place-items:center;width:36px;height:36px;border:1px solid var(--line);border-radius:50%;background:var(--paper);font-weight:700;color:var(--green)}.pagehead{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:28px}.pagehead p{color:var(--muted);margin:0}.hero{position:relative;overflow:hidden;background:var(--green);color:#fff;border-radius:22px;padding:30px 34px;margin-bottom:27px;display:flex;justify-content:space-between;align-items:center;gap:28px}.hero:after{content:'';position:absolute;width:230px;height:230px;right:-70px;top:-100px;border:35px double #ffffff09;border-radius:50%;pointer-events:none}.hero .eyebrow{color:#bbcba8}.hero h2{font-size:28px;letter-spacing:-.9px;margin-bottom:8px}.hero p{color:#d0dbcc;max-width:560px;margin:0}.hero .btn{background:var(--lime);color:#263d25;white-space:nowrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:43px;background:var(--green);color:white;padding:10px 18px;border-radius:11px;font-weight:600;font-size:13px;text-decoration:none}.btn.secondary{background:var(--paper);color:var(--ink);border:1px solid var(--line)}.btn.soft{background:var(--soft);color:var(--green)}.btn.danger{background:#f4e6e2;color:var(--red)}.btn.tiny{min-height:33px;padding:6px 11px;font-size:12px}.icon{display:inline-flex;align-items:center;justify-content:center;min-height:40px;min-width:40px;border-radius:10px}.icon:hover{background:var(--soft)}.row{display:flex;align-items:center;gap:10px}.row.wrap{flex-wrap:wrap}.between{justify-content:space-between}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin:0 0 30px}.metric{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:20px 22px}.metric .value{display:block;font-size:30px;letter-spacing:-1px;font-weight:700;margin:6px 0}.metric .label{font-size:12px;color:var(--muted)}.sectiontitle{display:flex;align-items:center;justify-content:space-between;margin:26px 0 13px;gap:12px}.sectiontitle h2{margin:0}.panel{border:1px solid var(--line);border-radius:17px;background:var(--paper);overflow:hidden;box-shadow:var(--shadow)}.panel.pad{padding:22px}.tablewrap{overflow:auto;max-height:70dvh}table{border-collapse:separate;border-spacing:0;width:100%;font-size:13px;white-space:nowrap}th{font-size:11px;color:var(--muted);font-weight:600;background:#f5f6ef;text-align:left;height:61px;padding:12px 17px;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:3}td{padding:14px 17px;border-bottom:1px solid #edf0e7;height:67px}tr:last-child td{border-bottom:0}th:first-child,td:first-child{position:sticky;left:0;background:var(--paper);z-index:2;min-width:180px;box-shadow:1px 0 var(--line)}th:first-child{z-index:4;background:#f5f6ef}th.current{background:#edf2de;color:var(--green)}td.current{background:#f7faef}.childbutton{display:flex;align-items:center;gap:12px;text-align:left;padding:0}.initials{display:inline-grid;place-items:center;min-width:33px;width:33px;height:33px;border-radius:10px;background:#e9eddf;color:#506344;font-size:11px;font-weight:700}.childname{font-weight:600;display:block}.surname{display:block;font-size:11px;color:var(--muted)}.pct{font-weight:700;font-size:14px}.pctbar{display:block;margin-top:5px;width:56px;height:3px;border-radius:5px;background:#e7ebdf;overflow:hidden}.pctbar span{display:block;height:100%;background:#84a66c}.status{font-size:11px;display:inline-flex;align-items:center;gap:6px;border-radius:7px;padding:5px 8px;white-space:nowrap}.status:before{content:'';width:5px;height:5px;border-radius:50%;background:currentColor}.status.present{color:#427351;background:#e9f2e4}.status.excused{color:#aa7747;background:#f7efdf}.status.unexcused{color:#a55046;background:#f7e9e4}.status.regular{color:#7d789b;background:#eeedf4}.status.open{color:#a0a59a;background:#f2f3ed}.legend{display:flex;gap:18px;padding:13px 18px;border-top:1px solid var(--line);font-size:11px;flex-wrap:wrap;color:var(--muted)}.empty{text-align:center;padding:40px 24px;color:var(--muted)}.empty strong{display:block;color:var(--ink);font-size:17px;margin-bottom:8px}.empty p{max-width:430px;margin:0 auto 20px;font-size:13px}.chip{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;background:#eceee4;color:#66715b;border-radius:30px;font-size:11px;white-space:nowrap}.chip.lime{background:var(--lime);color:var(--green)}.toolbar{display:flex;align-items:center;gap:10px;margin-bottom:20px;flex-wrap:wrap}.toolbar input[type=search]{max-width:240px;margin-left:auto}.segmented{display:flex;background:#e8eadf;padding:4px;border-radius:12px;gap:3px}.segmented button{border-radius:9px;padding:10px 15px;font-size:12px;color:var(--muted);white-space:nowrap;min-height:39px}.segmented button.active{background:var(--paper);color:var(--green);box-shadow:0 2px 6px #00000008;font-weight:650}.training-list{display:grid;gap:10px}.training-card{display:flex;align-items:center;justify-content:space-between;gap:14px;background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:17px 20px}.dateblock{width:49px;min-width:49px;height:54px;border-radius:10px;background:#f0f2e9;text-align:center;line-height:1.25;padding:6px}.dateblock strong{display:block;font-size:22px;letter-spacing:-1px}.dateblock span{font-size:10px;color:var(--muted)}.training-card.cancelled{opacity:.55;background:#efefe9}.training-card.cancelled .training-title{text-decoration:line-through}.training-title{display:block;font-weight:650;font-size:14px}.training-meta{font-size:12px;color:var(--muted)}.training-info{min-width:0}.training-card .row:first-child{flex:1}.roster{display:grid;gap:9px;margin-top:15px}.roster-row{background:var(--paper);border:1px solid var(--line);border-radius:13px;padding:13px 15px;display:flex;align-items:center;gap:10px;min-height:70px}.roster-row .childbutton{flex:1;min-width:0}.presence{width:63px;min-height:43px;border:1px solid var(--line);border-radius:10px;font-size:13px;color:var(--muted);background:#fafbf6}.presence.selected{background:var(--green);color:white;border-color:var(--green)}.finishbar{position:sticky;bottom:15px;z-index:5;display:flex;justify-content:space-between;gap:15px;align-items:center;background:#ffffffee;backdrop-filter:blur(10px);border:1px solid var(--line);padding:13px 18px;border-radius:15px;box-shadow:0 4px 30px #1b3c1a15;margin-top:20px}.finishbar p{margin:0;font-size:12px;color:var(--muted)}.activity-grid{display:flex;flex-wrap:wrap;gap:8px;margin:15px 0}.activity-toggle{border:1px solid var(--line);background:var(--paper);padding:10px 13px;border-radius:12px;font-size:12px;min-height:43px}.activity-toggle.active{border-color:#799363;background:var(--soft);color:var(--green)}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}.competition-card{padding:23px;background:var(--paper);border:1px solid var(--line);border-radius:17px}.competition-card h3{font-size:21px;letter-spacing:-.5px}.deadline{display:flex;gap:20px;margin:20px 0;font-size:12px}.deadline span{display:block;font-size:10px;color:var(--muted);margin-bottom:3px}.progress{height:5px;background:#e9ecdf;border-radius:4px;overflow:hidden;margin:10px 0}.progress>span{display:block;height:100%;background:#90a966}.notice{border:1px solid #dbe5bd;background:#edf3dd;color:#536941;padding:12px 16px;border-radius:11px;font-size:12px;margin:15px 0}.notice.warning{background:#fbf2e3;color:#8e6933;border-color:#ebd7b2}.statfilters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:22px;align-items:end}.statfilters label{font-size:11px;color:var(--muted);min-width:120px}.statfilters input,.statfilters select{margin-top:5px}.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}.rank-row{display:flex;align-items:center;gap:12px;margin:14px 0;font-size:13px}.rank-row .rank{font-size:11px;width:15px;color:var(--muted)}.rank-row .rankname{flex:1}.rank-row strong{font-size:14px}.rank-row .progress{margin:5px 0;width:100%}.chartrow{display:grid;grid-template-columns:110px 1fr 32px;gap:10px;align-items:center;font-size:12px;margin:14px 0}.chartbar{height:9px;background:#e8ecdf;border-radius:6px;overflow:hidden}.chartbar span{height:100%;display:block;background:#93aa79;border-radius:6px}.plan-row{padding:13px 0;border-bottom:1px solid var(--line)}.plan-row:last-child{border:0}.profile-header{display:flex;align-items:center;gap:15px;margin-bottom:22px}.profile-header .initials{width:57px;height:57px;font-size:18px}.profile-header h2{margin-bottom:2px}.timeline{margin:10px 0}.timeline-row{border-left:2px solid var(--line);padding:0 0 20px 17px;font-size:13px}.timeline-row strong{display:block}.timeline-row p{margin:5px 0;font-size:12px;color:var(--muted)}input,textarea,select{width:100%;border:1px solid #dce1d3;background:#fffefa;border-radius:9px;padding:11px 12px;color:var(--ink);min-height:44px}input[type=checkbox]{width:19px;height:19px;min-height:0;accent-color:var(--green);margin:0}textarea{min-height:90px;resize:vertical}label.field{display:block;font-size:12px;font-weight:550;margin-bottom:15px}label.field>input,label.field>select,label.field>textarea{margin-top:6px}.check{display:flex;align-items:center;gap:10px;margin:15px 0;font-size:13px;font-weight:400}.formrow{display:grid;grid-template-columns:1fr 1fr;gap:12px}.formactions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}.fieldhelp{font-size:11px;color:var(--muted);margin-top:6px}.errorbox{padding:12px;background:#f8e7e1;color:#99483d;border-radius:9px;margin:12px 0;font-size:13px}.errorbox:empty{display:none}dialog{border:1px solid var(--line);border-radius:21px;padding:27px;width:min(580px,calc(100% - 28px));max-height:90dvh;background:var(--paper);color:var(--ink);box-shadow:0 25px 100px #132e3440}dialog.wide{width:min(820px,calc(100% - 28px))}dialog::backdrop{background:#172b2466;backdrop-filter:blur(3px)}.dialoghead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:20px}.dialoghead h2{margin:0}dialog h3{margin-top:22px}.auth{min-height:100dvh;display:grid;place-items:center;padding:25px;background:radial-gradient(ellipse at top,#e6ecd6,var(--bg) 70%)}.authcard{width:min(420px,100%);padding:37px;border:1px solid var(--line);background:var(--paper);border-radius:24px;box-shadow:var(--shadow)}.authcard .brandmark{margin-bottom:30px}.authcard h1{font-size:31px}.authcard>.btn{width:100%;margin:20px 0 12px}.authcard details{margin-top:20px;font-size:12px;color:var(--muted)}.authcard details form{padding-top:20px}.authcard .private{justify-content:center;margin-top:28px}.loading{display:grid;place-content:center;justify-items:center;min-height:90dvh;gap:20px;color:var(--muted)}#toasts{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);z-index:50;max-width:min(90vw,540px)}.toast{background:var(--green);color:white;padding:13px 20px;border-radius:12px;box-shadow:var(--shadow);font-size:13px;margin-top:8px}.toast.error{background:#934b43}#network{position:fixed;top:0;left:0;right:0;background:#974d3d;color:white;text-align:center;padding:10px 18px;font-size:13px;z-index:100}.assessed{display:inline-flex;min-width:37px;min-height:37px;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:9px}.assessed.active{background:var(--green);color:white}.inline-note{margin-top:5px;font-size:11px;color:var(--muted)}.linkbutton{text-decoration:underline;text-underline-offset:3px;color:var(--green);font-size:12px;padding:4px}.divider{height:1px;background:var(--line);margin:22px 0}.scrollhint{display:none}.checklist{max-height:300px;overflow:auto}.checklist .check{justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--line)}.auditrow{padding:13px 0;border-bottom:1px solid var(--line);font-size:12px}.auditrow .row{align-items:start}.auditrow p{margin:5px 0}.userrow{padding:12px 0;border-bottom:1px solid var(--line)}.sticky-note{font-size:11px;color:var(--muted)}
@media(min-width:1500px){.main{padding-left:65px;padding-right:65px}}@media(max-width:1050px){.main{padding:24px 25px 60px}.sidebar{width:180px;padding:27px 13px}.shell{grid-template-columns:180px 1fr}.brand{gap:8px}.brand strong{font-size:12px}.brandmark{width:48px;height:48px;font-size:22px}.hero{padding:25px}.grid2,.stat-grid{grid-template-columns:1fr}}
@media(max-width:700px){body{font-size:14px}.shell{display:block}.sidebar{position:fixed;top:auto;bottom:0;left:0;right:0;width:auto;z-index:20;border-right:0;border-top:1px solid var(--line);background:#fffefaf5;backdrop-filter:blur(12px);padding:8px 10px max(9px,env(safe-area-inset-bottom));height:auto}.brand,.sidebar-bottom{display:none}.nav{flex-direction:row;justify-content:space-around;gap:0}.nav button{flex-direction:column;justify-content:center;gap:3px;font-size:10px;padding:6px 7px;min-height:50px;min-width:62px;border-radius:10px}.nav button.active{background:var(--soft);color:var(--green)}.nav svg{width:21px;height:21px}.main{padding:20px 17px 110px}.topbar{margin-bottom:28px;font-size:11px}.topbar-right{gap:10px}.saved{font-size:10px}.pagehead{align-items:flex-start;margin-bottom:20px}.pagehead .btn{padding:10px 12px;min-width:42px}.pagehead p{font-size:12px}.eyebrow{font-size:10px}.hero{border-radius:17px;padding:24px;display:block;margin-bottom:20px}.hero h2{font-size:25px}.hero p{font-size:12px}.hero .btn{margin-top:18px;min-height:43px}.metrics{gap:8px;margin-bottom:25px}.metric{padding:14px 12px;border-radius:12px}.metric .value{font-size:25px;margin:4px 0}.metric .label{font-size:10px}.metric .small{font-size:10px}.sectiontitle h2{font-size:18px}td,th{padding:12px 11px}th:first-child,td:first-child{min-width:133px;max-width:145px}.initials{width:28px;min-width:28px;height:28px;font-size:9px;border-radius:8px}.childbutton{gap:8px}.childname{font-size:12px}.surname{font-size:10px}.tablewrap{max-height:66dvh}.scrollhint{display:block;margin:9px 0;color:var(--muted);font-size:10px}.legend{gap:10px;font-size:10px}.toolbar input[type=search]{max-width:none;order:3}.toolbar .segmented{width:100%}.segmented button{flex:1;padding:9px 10px;font-size:11px}.training-card{padding:14px 12px;gap:8px}.training-card .row{gap:10px}.training-title{font-size:12px}.training-meta{font-size:11px}.dateblock{width:43px;min-width:43px;height:49px}.roster-row{padding:11px 10px;gap:5px}.roster-row .status{font-size:10px;padding:5px}.presence{width:53px;min-height:43px}.finishbar{bottom:86px;padding:11px 13px}.finishbar p{font-size:10px}.grid2,.stat-grid{gap:13px}.statfilters{gap:8px}.statfilters label{min-width:0;flex:1}.statfilters label:last-child{flex-basis:100%}.statfilters select{font-size:13px}.statfilters input{padding:9px;font-size:12px}.panel.pad{padding:17px}.formrow{gap:10px}dialog{padding:21px 18px;border-radius:17px}.competition-card{padding:19px}.deadline{gap:15px}#toasts{bottom:95px;width:max-content}.authcard{padding:29px}.authcard .brandmark{width:57px;height:57px}.chartrow{grid-template-columns:94px 1fr 30px;font-size:11px}.roster-row .btn.tiny{font-size:11px;padding:8px}.mobile-hide{display:none}}
@media(prefers-reduced-motion:no-preference){button,a{transition:background .15s,opacity .15s}.hero,.panel,.training-card{animation:appear .2s ease-out}@keyframes appear{from{opacity:.6;transform:translateY(3px)}to{opacity:1;transform:none}}}

svg{width:20px;height:20px;flex-shrink:0}
