:root{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,Arial,sans-serif;color:#18342f;background:#edf3ef;font-size:15px;color-scheme:light;--main:#13473f;--accent:#18876d;--mint:#e7f4ec;--pale:#f5f8f5;--line:#e0e9e2;--muted:#677e77;--red:#ab4b41;--amber:#a97215;--dark:#153d36}
*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.48}a{color:var(--accent)}.app-shell{width:min(100%,520px);min-height:100vh;min-height:100dvh;background:#f8fbf8;margin:auto;box-shadow:0 8px 50px #17362c16;position:relative}.app-header{display:flex;align-items:center;gap:11px;padding:18px 18px 12px;position:sticky;top:0;z-index:10;background:rgba(248,251,248,.96);backdrop-filter:blur(13px);border-bottom:1px solid #edf2ed}.logo-mark{width:40px;height:40px;border-radius:13px;background:var(--dark);color:#d7ffea;display:grid;place-items:center;font-weight:900;letter-spacing:-1px}.app-header-text{display:flex;flex-direction:column;gap:2px;line-height:1.1}.app-header-text strong{font-size:17px;letter-spacing:-.6px}.app-header-text small{font-size:9px;color:var(--muted);letter-spacing:2.2px;font-weight:700}.offline-pill{margin-left:auto;color:#54756a;font-size:11px;background:#edf6ee;border-radius:100px;padding:6px 9px}.page{padding:20px 18px 114px;animation:fade-in .18s ease}@keyframes fade-in{from{opacity:.6;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}h1,h2,h3,p{margin:0}h1{font-size:27px;letter-spacing:-.95px;line-height:1.16;color:#193b32}h2{font-size:18px;letter-spacing:-.35px}h3{font-size:15px}.eyebrow{font-weight:800;color:var(--accent);letter-spacing:1.3px;text-transform:uppercase;font-size:10px;margin-bottom:7px}.sub{color:var(--muted);font-size:13px;line-height:1.5;margin-top:6px}.row{display:flex;align-items:center;gap:10px}.between{justify-content:space-between}.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.gap8{gap:8px}.mt8{margin-top:8px}.mt12{margin-top:12px}.mt18{margin-top:18px}.mt24{margin-top:24px}.mb6{margin-bottom:6px}.muted{color:var(--muted)}.tiny{font-size:11px}.small{font-size:12px}.bold{font-weight:700}.nowrap{white-space:nowrap}.card{background:white;border:1px solid var(--line);border-radius:19px;padding:17px;box-shadow:0 2px 7px #142a1e07}.hero{background:linear-gradient(125deg,#133d35,#246451);border:0;color:#fff;border-radius:23px;padding:23px 21px;box-shadow:0 12px 25px #194b3b24;position:relative;overflow:hidden}.hero:after{content:'';position:absolute;width:200px;height:200px;border-radius:50%;background:#ffffff09;right:-110px;top:-125px}.hero-caption{font-size:12px;color:#cdebdc;font-weight:650}.hero-total{font-size:35px;font-weight:800;letter-spacing:-1.4px;margin:10px 0 4px;line-height:1.1}.hero-note{color:#cde8dc;font-size:11px;max-width:360px;line-height:1.5}.hero-children{border-top:1px solid #ffffff30;margin-top:17px;padding-top:14px;display:grid;grid-template-columns:1fr 1fr;gap:18px}.hero-children small{font-size:11px;color:#c2e0d1}.hero-children strong{display:block;font-size:17px;margin-top:3px;letter-spacing:-.3px}.stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px}.stat{min-height:129px}.stat-symbol{font-size:19px;color:var(--accent);line-height:1}.stat-value{font-size:25px;letter-spacing:-.8px;font-weight:800;margin:15px 0 5px}.stat-label{font-weight:800;font-size:12px}.stat-help{font-size:11px;color:var(--muted);line-height:1.35;margin-top:5px}.section-head{display:flex;justify-content:space-between;align-items:center;margin:24px 0 11px}.text-btn{border:none;background:transparent;color:var(--accent);font-weight:700;padding:5px;font-size:12px}.button{border:0;border-radius:13px;background:var(--dark);color:white;padding:13px 18px;font-weight:800;text-align:center}.button.secondary{background:#e8f4eb;color:var(--dark)}.button.outline{background:white;color:var(--main);border:1px solid #bfd5c8}.button.warn{background:#fff5eb;color:#8a5711}.button.light{background:#f4f7f4;color:var(--dark)}.button.full{width:100%}.button.small{padding:8px 11px;border-radius:9px;font-size:12px}.cta-row{display:grid;grid-template-columns:1fr auto;gap:9px;margin-top:14px}.alert{background:#fff7e7;border:1px solid #f0dcb0;border-radius:14px;padding:12px 14px;font-size:12px;color:#78591c;line-height:1.5}.alert strong{color:#674711}.alert.rose{background:#fff2f0;border-color:#f1d6d1;color:#91433b}.notice{font-size:11px;color:#72837b;line-height:1.5}.progress{height:9px;background:#e8efe7;border-radius:30px;overflow:hidden}.progress-bar{height:100%;background:linear-gradient(90deg,#22876f,#60b891);border-radius:30px}.metric-inline{display:flex;justify-content:space-between;font-size:12px;gap:8px}.divider{height:1px;background:var(--line);margin:14px 0}.control{width:100%;background:white;border:1px solid #d5e2d9;border-radius:11px;min-height:43px;padding:9px 11px;outline:0;color:#1b3e32}.control:focus{border-color:#3a967b;box-shadow:0 0 0 3px #1782671e}.field{display:flex;flex-direction:column;gap:7px;margin:12px 0}.field label,.label{font-size:12px;font-weight:750;color:#426054}.fieldset{background:#f4f8f4;border:1px solid #e4ede5;border-radius:15px;padding:12px;margin:12px 0}.radio-pills{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.radio-pills button{padding:10px 5px;background:#fff;border:1px solid #dfe9e1;color:#59756b;border-radius:10px;font-size:12px;font-weight:750}.radio-pills button.active{background:#e3f3e9;border-color:#7bb29a;color:#176951}.radio-pills button.negative.active{background:#fff0ea;border-color:#e8bcb0;color:#ab4b41}.student-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.avatar{background:#e2f4e8;border-radius:12px;color:#17785e;padding:9px 11px;font-weight:900}.student-name{font-weight:850;font-size:16px}.student-label{font-size:12px;color:#748c7e;margin-top:3px}.student-body{display:grid;grid-template-columns:1fr 1fr;gap:14px}.date-nav{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center}.date-nav button{border:1px solid var(--line);background:white;border-radius:10px;font-size:19px;min-width:43px;min-height:43px;color:var(--main)}.year-month-bar{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:12px 0}.month-select{width:100%;max-width:210px}.extra-item{display:flex;justify-content:space-between;gap:10px;border:1px solid #e8eee9;padding:10px;border-radius:12px;margin-top:7px}.extra-item small{color:var(--muted)}.remove-btn{border:0;background:#fbecea;color:#a34440;width:31px;height:31px;border-radius:10px;align-self:center;font-weight:800}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{font-size:11px;border-radius:50px;background:#eef4ef;border:1px solid #e1e8e0;padding:6px 9px;color:#466358}.pill{border-radius:100px;font-size:10px;padding:5px 8px;white-space:nowrap;background:#edf4ee;color:#397058;font-weight:750}.pill.amber{background:#fff2d9;color:#986019}.pill.rose{background:#ffebe8;color:#a84842}.pill.gray{background:#edf0ed;color:#607269}.item-row{display:flex;justify-content:space-between;align-items:center;padding:10px 0;gap:8px;border-bottom:1px solid #e8eee9}.item-row:last-child{border-bottom:0}.item-row strong{font-size:13px}.item-row small{font-size:11px;color:var(--muted)}.bar-track{height:9px;border-radius:20px;background:#eaf2eb;overflow:hidden}.bar-fill{height:100%;background:#5aad89;border-radius:20px}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;margin-top:12px}.cal-dayname{text-align:center;font-size:10px;color:var(--muted);font-weight:800}.cal-date{aspect-ratio:1;min-height:40px;border:1px solid #e3eae4;background:white;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:2px;font-weight:800;font-size:13px;color:#47675b}.cal-date .dot{height:5px;width:5px;border-radius:50%;background:transparent}.cal-date.done{background:#e5f6e9;color:#17785e;border-color:#a5d4b8}.cal-date.done .dot{background:#258f64}.cal-date.pending{background:#fff4e1;border-color:#f2d79b;color:#906017}.cal-date.pending .dot{background:#d69822}.cal-date.off{color:#a5b2a7;background:#f3f5f2}.cal-date.future{color:#839589}.cal-date.today{outline:2px solid #216f5b;outline-offset:1px}.cal-empty{aspect-ratio:1}.legend{display:flex;flex-wrap:wrap;gap:11px;font-size:11px;color:var(--muted);margin-top:13px}.legend span::before{content:' ';display:inline-block;width:8px;height:8px;background:#82caa0;border-radius:50%;margin-right:5px}.legend span:nth-child(2)::before{background:#dbad4e}.legend span:nth-child(3)::before{background:#ccd5cd}.footer-info{padding:14px 0 1px;color:#879a8e;font-size:11px;line-height:1.55}.tabbar{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,520px);display:grid;grid-template-columns:repeat(5,1fr);padding:8px 8px max(10px,env(safe-area-inset-bottom));background:#fffffff7;border-top:1px solid #e2ebe5;z-index:20;backdrop-filter:blur(15px)}.tabbar button{background:transparent;border:0;color:#819589;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 0;font-size:10px;font-weight:700}.tabbar .tab-ico{font-size:22px;line-height:1.1}.tabbar button.selected{color:#13735b}#toast{position:fixed;z-index:100;bottom:96px;left:50%;transform:translateX(-50%);width:max-content;max-width:min(92vw,480px);background:#153b33;color:white;border-radius:11px;padding:10px 15px;font-size:12px;box-shadow:0 8px 24px #183f3550;opacity:0;transition:opacity .2s;pointer-events:none}#toast.show{opacity:1}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:10px}.tag-on{color:#147d62;font-weight:800}.tag-off{color:#a54d45;font-weight:800}.empty-state{text-align:center;color:#718678;padding:18px;font-size:13px;line-height:1.55}.setting-table{border:1px solid var(--line);border-radius:13px;padding:0 11px;background:white}.mono{font-variant-numeric:tabular-nums}.weight800{font-weight:800}@media(max-width:350px){.page{padding-left:12px;padding-right:12px}.card{padding:12px}.student-body{gap:7px}.hero-total{font-size:30px}.cal-date{min-height:32px}}@media(min-width:700px){body{padding:24px 0}.app-shell{border-radius:22px;overflow:hidden;min-height:calc(100dvh - 48px)}.tabbar{width:520px;border-radius:0 0 22px 22px}}
