:root{--ink:#173d3b;--green:#18786c;--muted:#788780;--line:#e2e8e2;--bg:#f4f6f2}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:#263d36;font:15px/1.65 -apple-system,BlinkMacSystemFont,'PingFang SC',sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer;border:1px solid var(--line);background:white;color:var(--ink);border-radius:9px;padding:10px 17px;min-height:44px}button:hover{border-color:var(--green)}.primary{background:var(--green);color:white;border-color:var(--green)}.shell{display:grid;grid-template-columns:225px 1fr;min-height:100vh}aside{background:#123e39;color:#d9e6df;padding:30px 22px;position:sticky;top:0;height:100vh}aside h2{color:white;font-size:27px;margin:0}aside small{color:#9cbeb2}nav{margin-top:45px;display:grid;gap:12px}nav button{text-align:left;background:transparent;color:#c7d9d1;border:0}nav button.active{background:#2c5850;color:white}.aside-note{position:absolute;bottom:30px;font-size:12px;color:#adc5b9;max-width:175px}main{padding:30px 5%;max-width:1550px;width:100%}header{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:20px;margin-bottom:28px}h1{font-size:29px;font-weight:650;letter-spacing:1px;margin:0 0 8px}h2{font-size:19px}h3{font-size:16px}p{margin:7px 0}.muted{color:var(--muted)}.hero{background:#e6eee4;border:1px solid #dce6d8;padding:28px 32px;border-radius:16px;display:flex;justify-content:space-between;align-items:center;margin:25px 0}.eyebrow{font-size:11px;letter-spacing:3px;color:var(--green);font-weight:700}.hero h2{font-size:25px;margin:8px 0}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.card{background:white;border:1px solid var(--line);border-radius:13px;padding:24px;margin-bottom:20px}.stat strong{font-size:32px;color:var(--ink);display:block;margin:10px 0}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.between{justify-content:space-between}.badge{background:#eaf3ed;color:var(--green);font-size:12px;border-radius:5px;padding:4px 9px}.lesson{padding:22px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:15px}.lesson:last-child{border:0}.lesson h3{margin:0}.date{color:#9ba59b;font-size:12px}.form{display:grid;grid-template-columns:1fr 1fr;gap:18px}label{display:block;font-size:13px;color:#526b61}input,select,textarea{display:block;width:100%;margin-top:7px;border:1px solid #dbe3db;border-radius:8px;background:#fff;padding:11px;color:#263d36}textarea{min-height:85px;resize:vertical}.wide{grid-column:1/-1}.steps{display:flex;gap:12px;margin:20px 0;flex-wrap:wrap}.steps button{background:transparent}.steps button.active{background:var(--green);color:white}video{width:100%;max-height:430px;background:#17332e;border-radius:10px}.timeline{display:flex;min-height:36px;overflow:hidden;border-radius:6px;margin:14px 0}.timeline button{border:0;border-radius:0;background:#c7dfcf;padding:3px;font-size:11px;min-width:35px;overflow:hidden}.timeline button:nth-child(even){background:#86b8a2}.score{display:grid;grid-template-columns:1fr 88px;gap:8px;padding:15px 0;border-bottom:1px solid var(--line)}.score textarea{grid-column:1/-1}.score input{margin:0}.login{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}.login-brand{background:#123e39;color:#e2ede3;padding:12vh 10%;display:flex;flex-direction:column;justify-content:center}.login-brand h1{font-size:44px}.login-brand p{color:#aac5b6}.login-form{max-width:430px;width:90%;margin:auto;padding:35px}.login-form label{margin:20px 0}.login-form button{width:100%;margin-top:15px}.empty{padding:45px;text-align:center;color:var(--muted)}.photo{width:130px;height:110px;object-fit:cover;border-radius:8px}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:#153e35;color:white;padding:12px 22px;border-radius:10px;display:none;z-index:10}.report-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}@media(max-width:760px){.shell{grid-template-columns:1fr}aside{height:auto;position:static;padding:15px 20px}aside h2{font-size:22px}aside small,.aside-note{display:none}nav{margin:12px 0 0;display:flex;gap:4px}nav button{padding:8px 12px}main{padding:20px 5%}.grid{gap:8px}.stat{padding:13px}.stat strong{font-size:25px}.hero{padding:20px;gap:12px}.hero h2{font-size:20px}.form,.report-grid{grid-template-columns:1fr}.login{grid-template-columns:1fr}.login-brand{padding:35px 8%;min-height:220px}.login-brand h1{font-size:30px}.login-form{padding:25px}h1{font-size:24px}.lesson{align-items:flex-start}.wide{grid-column:auto}}@media print{aside,header,.steps,button,.no-print,video{display:none!important}.shell,main{display:block;padding:0}.card{break-inside:avoid}.report-grid{display:block}body{background:white}textarea,input{border:0} }
/* Cross-device controls: keyboard focus, readable inputs and safe-area spacing. */
[hidden]{display:none!important}main,.card,.lesson>div{min-width:0}button,a,input,select,textarea{touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #d39831;outline-offset:3px}button:disabled{opacity:.5;cursor:wait}input,select,textarea{font-size:16px;max-width:100%}h1,h2,h3,p{overflow-wrap:anywhere}.save-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:15px;color:#526b61;font-size:13px}.save-bar button{min-height:40px;padding:7px 14px}.upload-status{position:fixed;inset:auto 20px max(20px,env(safe-area-inset-bottom));max-width:500px;margin:auto;background:#123e39;color:white;padding:20px;border-radius:14px;z-index:100;box-shadow:0 8px 35px #0004}.upload-status progress{display:block;width:100%;height:12px;margin:12px 0;accent-color:#7bcba3}#toast{max-width:calc(100vw - 32px);width:max-content;bottom:max(24px,env(safe-area-inset-bottom));text-align:center}.steps{position:sticky;top:0;z-index:5;background:var(--bg);padding:10px 0;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:thin}.steps button{flex-shrink:0}.lesson>button{flex-shrink:0}.timeline{min-height:44px}.timeline button{min-height:44px}.score input{text-align:center}.photo{cursor:zoom-in}input[type=file]{padding:9px;background:#f5f8f4}input[type=file]::file-selector-button{border:0;padding:9px;border-radius:6px;background:#e2eee4;color:#173d3b;margin-right:10px}@media(min-width:1000px){.report-grid .card{padding:28px}.steps{gap:18px}.steps button{padding:12px 20px}}@media(max-width:760px){main{padding-bottom:calc(35px + env(safe-area-inset-bottom))}header{gap:10px;flex-wrap:wrap;font-size:13px;margin-bottom:20px}header .row{margin-left:auto}.card{padding:18px}.lesson{flex-wrap:wrap}.lesson>div{flex:1 1 210px}.lesson>button{margin-left:auto}.grid .stat{font-size:12px}.stat .muted{font-size:11px}.stat strong{margin:5px 0}.steps{margin:12px -5.5%;padding:10px 5.5%;width:111%;gap:7px}.steps button{font-size:14px;padding:9px 12px}.score{grid-template-columns:minmax(0,1fr) 85px}.score label{font-size:15px}.row>label:has(input[type=file]){width:100%}#panel>.row.no-print{display:grid;grid-template-columns:1fr 1fr}#panel>.row.no-print button{font-size:14px}.login-brand{min-height:auto;padding:28px 8%}.login-brand>div:last-child{display:none}.login-brand p{font-size:15px!important}.login-form{width:100%;max-width:460px}.hero>span{display:none}#search{width:100%!important}#record,#stop{min-width:110px}.save-bar{background:#eaf0e7;border-radius:8px;padding:8px 12px}}@media print{.save-bar,.upload-status,#toast{display:none!important}}
/* Web foundation for desktop, tablets and phones. */
.score select{grid-column:1/-1;margin:0}.timeline span{background:#e8ece7;color:#647067;overflow:hidden;text-align:center;font-size:11px;min-width:0}nav{gap:6px}nav button{padding:10px 12px}.card form button{align-self:end}#users-list{margin-bottom:22px}.upload-status{max-height:35vh;overflow:auto}@media(max-width:760px){nav{overflow-x:auto;margin-right:-20px;padding-right:20px}nav button{flex-shrink:0;font-size:14px;padding:8px 10px}.steps{scroll-padding:15px}.card form button{width:100%}#panel>.row.no-print{position:static}.save-bar{position:sticky;top:66px;z-index:4}.score textarea{min-height:100px}}@media(min-width:761px) and (max-width:1100px){.shell{grid-template-columns:180px minmax(0,1fr)}main{padding:25px 4%}.report-grid{grid-template-columns:1fr}aside{padding:25px 16px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
[aria-busy=true]{opacity:.65;cursor:progress}button[data-busy]{pointer-events:none}form[aria-busy=true] button{pointer-events:none}#audit-list{max-height:320px;overflow:auto}.timeline button{flex-basis:0;white-space:nowrap}.timeline span{flex-basis:0;white-space:nowrap}#recording-recovery button{margin:5px}.save-bar span{overflow-wrap:anywhere}nav button:last-child{margin-top:10px}@media(max-width:760px){nav button:last-child{margin-top:0}.timeline{overflow:visible}.timeline button{font-size:10px;padding:0}.save-bar span{font-size:12px}}
.history-dialog{width:min(1000px,94vw);max-height:90vh;border:1px solid var(--line);border-radius:15px;background:var(--bg);color:var(--ink);padding:24px}.history-dialog::backdrop{background:#123e3980}.history-list{display:flex;gap:8px;flex-wrap:wrap;margin:20px 0}.history-dialog .report-grid{grid-template-columns:1fr}.history-dialog .card{margin-bottom:15px}
