:root{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#25252b;background:#f5f5f8;--pink:#e94587;--purple:#793cc6;--line:#e7e7ec;--muted:#74747e;--green:#369b50}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;border:0;background:none;color:inherit}button:disabled{opacity:.48;cursor:wait}button:focus-visible,a:focus-visible{outline:3px solid #793cc6;outline-offset:3px}a{color:var(--pink);text-decoration:none}img{max-width:100%}h1,h2,h3,p{margin:0}h1{font-size:23px;letter-spacing:-.6px}h2{font-size:20px;letter-spacing:-.35px}h3{font-size:17px}p{line-height:1.5}svg.icon{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.shell{max-width:760px;min-height:100dvh;margin:auto;background:#fff;padding-bottom:calc(80px + env(safe-area-inset-bottom))}.top{height:calc(72px + env(safe-area-inset-top));padding:env(safe-area-inset-top) 18px 0;display:flex;align-items:center;justify-content:space-between;background:#fff;position:sticky;top:0;z-index:5;border-bottom:1px solid var(--line)}.top img{width:120px;height:54px;object-fit:contain}.actions{display:flex;gap:7px}.icon-button{display:inline-flex;justify-content:center;align-items:center;min-width:44px;min-height:44px;color:var(--pink);border-radius:50%}.icon-button:hover{background:#fdf0f5}.bottom{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:760px;background:rgba(255,255,255,.97);border-top:1px solid var(--line);display:flex;justify-content:space-evenly;padding:9px 20px calc(9px + env(safe-area-inset-bottom));z-index:5}.bottom button{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:110px;min-height:45px;font-size:11px;color:var(--muted)}.bottom .active{color:var(--pink);font-weight:650}.page{padding:20px 18px}.page-title{display:flex;align-items:center;gap:8px;margin-bottom:20px}.page-title .icon-button{margin-left:-12px;color:#333}.subtle{color:var(--muted);font-size:13px}.row{display:flex;align-items:center;gap:9px}.spread{justify-content:space-between}.stack{display:flex;flex-direction:column;gap:10px}.section{margin-top:25px}.section-title{font-size:14px;font-weight:600;color:var(--muted);margin-bottom:12px}.week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin-bottom:24px}.day{padding:10px 1px;border-radius:9px;display:flex;flex-direction:column;gap:5px;align-items:center;font-size:12px}.day .count{font-size:19px;font-weight:700;color:var(--pink)}.day.today{box-shadow:inset 0 0 0 1px #e9458766}.day.selected{background:var(--pink);color:white}.day.selected .count{color:white}.course{padding:16px 0;border-bottom:1px solid var(--line);display:block;width:100%;text-align:left}.course:first-child{padding-top:5px}.course-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.course h3{font-size:18px;line-height:1.3;letter-spacing:-.3px}.course .customer{font-weight:550;font-size:14px;margin:5px 0}.course .venue{color:var(--muted);font-size:13px;margin-bottom:10px}.course-date{font-size:13px;display:flex;align-items:center;gap:7px;margin-top:6px}.course-date time{min-width:88px;font-weight:500}.avatar{width:27px;height:27px;border-radius:50%;object-fit:cover;background:#f5eef9}.initials{display:inline-flex;justify-content:center;align-items:center;font-size:10px;color:var(--purple);font-weight:600}.capacity{font-weight:650;font-size:15px;white-space:nowrap;color:#dc871d}.capacity.full{color:var(--green)}.capacity.empty{color:#d33d50}.tag{font-size:11px;display:inline-flex;align-items:center;border-radius:5px;padding:4px 7px;background:#fce6ec;color:#bc3153;margin:6px 0}.tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.tile{background:#fbf3f8;border:1px solid #f8dce8;border-radius:12px;padding:17px;text-align:left}.tile strong{display:block;font-size:27px;margin:8px 0;color:var(--pink)}.tile .icon{color:var(--pink)}.tile span{font-size:13px}.tile.purple{background:#f5f0fb;border-color:#e6daf6}.tile.purple strong{color:var(--purple)}.full-width{grid-column:1/-1}.money-row{display:flex;justify-content:space-between;padding-top:11px;border-top:1px solid #eedbe5;font-size:12px}.segmented{display:flex;background:#f0f0f3;padding:3px;border-radius:9px;gap:3px;margin-bottom:14px}.segmented button{flex:1;padding:9px 5px;border-radius:7px;font-size:14px;font-weight:550}.segmented .selected{background:var(--pink);color:#fff}.filters{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0}.field{display:flex;flex-direction:column;gap:7px;text-align:left;font-size:13px;font-weight:550;min-width:0}input,select{min-width:0;width:100%;height:46px;border:1px solid #dedee5;border-radius:8px;background:#fff;color:#28282f;padding:10px 11px;font-size:16px}input:focus,select:focus{outline:2px solid #e9458755;border-color:var(--pink)}.button{display:flex;align-items:center;justify-content:center;gap:9px;min-height:46px;padding:11px 17px;border-radius:9px;background:var(--pink);color:white;font-weight:600;font-size:15px;width:100%}.button.purple{background:var(--purple)}.button.secondary{background:#f2f2f5;color:#494952}.button.outline{background:white;color:var(--pink);border:1px solid #e9458766}.button.danger{background:#bc344c}.empty-state{padding:35px 20px;border-radius:10px;background:#f8f8fa;text-align:center;color:var(--muted);font-size:14px}.empty-state .icon{width:34px;height:34px;margin-bottom:10px;color:#b5b5bf}.empty-state strong{display:block;color:#4c4c58;margin-bottom:6px}.loading{padding:45px;display:flex;justify-content:center}.spinner{width:22px;height:22px;display:inline-block;border:2px solid #f2cfdf;border-top-color:var(--pink);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.notice{padding:13px 15px;border-radius:8px;background:#fff4df;color:#84561f;font-size:13px;line-height:1.45;margin:14px 0}.error{color:#a72440;background:#fff0f3;padding:12px;border-radius:8px;font-size:14px;line-height:1.4}.login{min-height:100dvh;max-width:470px;background:#fff;margin:auto;display:flex;align-items:center;padding:35px 26px}.login-inner{width:100%}.login-logo{display:block;width:200px;margin:0 auto 44px}.login h1{margin-bottom:22px;font-size:24px}.login form{display:flex;flex-direction:column;gap:15px}.login .subtle{margin:22px 0;text-align:center}.startup{height:100dvh;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:22px}.startup img{width:180px}.detail-head{margin-bottom:22px}.detail-head h1{font-size:26px;line-height:1.2}.detail-head p{margin-top:9px}.detail-date{padding:12px 0;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:10px;align-items:center}.detail-date .subtle{margin-top:5px}.code{margin:28px 0 24px;text-align:center}.code strong{font-size:27px;letter-spacing:3px;display:block;margin-top:8px}.qr-grid{display:grid;grid-template-columns:1fr;gap:22px}.qr-card{border:1px solid var(--line);padding:22px 18px;border-radius:12px;text-align:center}.qr-card h3{font-size:18px;margin-bottom:14px}.qr-card svg{width:100%;height:auto;max-width:300px}.qr-card a{font-size:13px;display:block;margin-top:12px}.group-title{background:var(--pink);color:white;padding:12px 13px;border-radius:6px;font-size:17px;margin-top:20px}.learner{padding:17px 0;border-bottom:1px solid #dcdce3}.learner-title{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}.learner-name{font-size:17px;font-weight:650;text-align:left;padding:0;line-height:1.4}.status-icons{display:flex;gap:6px;font-size:20px;white-space:nowrap}.good{color:var(--green)}.neutral{color:#9b9ba4}.warning{color:#df941e}.learner-email{display:block;color:var(--muted);font-size:14px;margin:7px 0;overflow-wrap:anywhere}.learner-bottom{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px}.small-button{font-size:13px;font-weight:600;border-radius:7px;border:1px solid #e9458780;padding:8px 11px;color:var(--pink);min-height:36px;white-space:nowrap}.small-button.confirmed{color:var(--green);border-color:#369b5066}.checkins{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:5px;flex-wrap:wrap}.checkin{display:inline-flex;width:22px;height:22px;border-radius:50%;align-items:center;justify-content:center;background:#ededf1;color:#92929a;font-weight:600}.checkin.checked{color:white;background:var(--green)}.checkin.optional{background:transparent;border:1px dashed #b9b9c0}.learner-details{background:#f8f8fa;border-radius:8px;padding:13px;margin-top:12px;font-size:13px}.learner-details p{margin-bottom:8px}.feedback{padding-top:10px;border-top:1px solid var(--line);margin-top:10px}.feedback p{margin:8px 0}.rating{color:var(--green);font-weight:650}.dialog-actions{display:flex;gap:10px;margin-top:22px}.dialog-actions .button{flex:1}dialog{border:0;border-radius:16px;padding:24px;width:calc(100% - 28px);max-width:460px;max-height:88dvh;overflow:auto;box-shadow:0 20px 90px #0003;color:#292932}dialog::backdrop{background:#18122166}dialog h2{margin-bottom:18px}dialog p{font-size:14px;margin:12px 0}dialog form{display:flex;flex-direction:column;gap:14px}.dialog-top{display:flex;align-items:center;justify-content:space-between}.dialog-top h2{margin:0}.dialog-top{margin-bottom:20px}.dialog-top .icon-button{color:#777;margin:-10px -10px -10px 0}.destination{display:flex;align-items:flex-start;gap:10px;padding:14px 8px;border:1px solid var(--line);border-radius:9px;font-size:13px;margin-bottom:9px}.destination input{width:18px;height:18px;flex-shrink:0;accent-color:var(--pink);margin:2px}.destination strong{display:block;margin-bottom:4px}.destination p{font-size:12px;margin:5px 0}.request{padding:17px;border:1px solid var(--line);border-radius:11px;margin:12px 0}.request p{font-size:14px;margin:7px 0}.request .dialog-actions{margin-top:15px}.invoice{padding:15px 0;border-bottom:1px solid var(--line)}.invoice strong{font-size:16px}.invoice p{font-size:13px;color:var(--muted);margin-top:5px}.invoice .amount{font-size:20px;font-weight:650;color:var(--pink)}.summary-money{font-size:32px;font-weight:700;letter-spacing:-1px;margin:10px 0 20px}#message{position:fixed;bottom:95px;left:50%;transform:translateX(-50%);background:#292831;color:#fff;padding:13px 18px;border-radius:10px;max-width:90%;width:max-content;font-size:14px;z-index:20;box-shadow:0 4px 18px #0002;display:none}#message.visible{display:block}.search{margin-bottom:16px}.name-line{font-size:13px;color:var(--muted);margin-bottom:15px}.loading-bar{height:2px;background:var(--pink);position:fixed;top:0;left:0;right:0;z-index:30;animation:pulse 1s infinite}@keyframes pulse{50%{opacity:.25}}@media(min-width:800px){.shell{box-shadow:0 0 50px #2221}.page{padding:25px 30px}.top{padding-left:30px;padding-right:30px}.login{margin-top:8vh;min-height:75vh;border-radius:18px;box-shadow:0 12px 55px #2221}.course{padding:20px 0}}@media(max-width:350px){.page{padding:16px 12px}.week{gap:1px}.day{font-size:11px}.qr-grid{grid-template-columns:1fr}.status-icons{gap:3px;font-size:17px}.learner-name{font-size:16px}.filters{gap:6px}}

.status-icons>span{display:inline-flex}.status-icons .icon{width:21px;height:21px;stroke-width:2}.poor{color:#d33d50}

.learner-actions{display:flex;align-items:center;gap:7px;flex-shrink:0}.learner-bottom .checkins{flex:1}
