.page{grid-template-columns:1.15fr 1fr;min-height:100vh;display:grid}.brand{background:radial-gradient(circle at 12% 18%,#37ae6a2e,#0000 36%),radial-gradient(circle at 88% 86%,#f29a4029,#0000 34%),#f4fbf6;align-items:center;padding:56px 64px;display:grid;position:relative;overflow:hidden}.blobs{pointer-events:none;position:absolute;inset:0}.blob{filter:blur(8px);border-radius:50%;position:absolute}.blob-green{background:radial-gradient(circle,#37ae6a61,#0000 68%);width:360px;height:360px;animation:14s ease-in-out infinite drift;top:-90px;left:-70px}.blob-orange{background:radial-gradient(circle,#f29a4057,#0000 68%);width:320px;height:320px;animation:18s ease-in-out infinite reverse drift;bottom:-70px;right:-40px}.brand-inner{z-index:1;max-width:520px;animation:.8s both rise-left;position:relative}.login-logo{width:min(280px,100%);height:auto;margin-bottom:22px;animation:.7s cubic-bezier(.2,.9,.3,1.2) .15s both pop}.login-logo-small{width:min(380px,100%);height:auto;margin-bottom:18px}.eyebrow{letter-spacing:.24em;text-transform:uppercase;color:var(--green);margin-bottom:12px;font-size:.74rem;font-weight:700}.brand h1{font-family:Sora,sans-serif;font-size:clamp(2.5rem,5vw,4rem);font-weight:700;line-height:1.05}.name-green{color:var(--green);display:block}.name-orange{color:var(--orange);display:block}.tagline{color:var(--ink);max-width:28ch;margin-top:18px;font-size:1.2rem;font-weight:700;animation:.8s .2s both fade}.intro{color:var(--muted);max-width:42ch;margin-top:14px;font-size:1.02rem;line-height:1.6}.points{gap:12px;margin-top:28px;list-style:none;display:grid}.points li{color:var(--ink);padding-left:28px;font-weight:600;position:relative}.points li:before{content:"";background:var(--orange);border-radius:50%;width:10px;height:10px;position:absolute;top:.45em;left:0;box-shadow:0 0 0 5px #f29a4029}.card{background:#fff;place-items:center;min-height:100vh;padding:40px 48px;animation:.85s both rise-right;display:grid;box-shadow:-18px 0 40px #1630270f}.card-inner{width:100%;max-width:380px}.card h2{margin-bottom:8px;font-family:Sora,sans-serif;font-size:1.85rem}.card-copy{color:var(--muted);margin-bottom:28px}.card form{gap:18px;display:grid}.field{position:relative}.field input{width:100%;height:56px;font:inherit;color:var(--ink);background:#fbfffc;border:1.5px solid #d7e8dc;border-radius:14px;padding:18px 16px 0;transition:border-color .2s,box-shadow .2s}.field label{color:#7a9086;pointer-events:none;transition:all .18s;position:absolute;top:50%;left:16px;transform:translateY(-50%)}.field input:focus,.field input:not(:placeholder-shown){border-color:var(--green);outline:none;box-shadow:0 0 0 4px #37ae6a24}.field input:focus+label,.field input:not(:placeholder-shown)+label{letter-spacing:.04em;text-transform:uppercase;color:var(--green);font-size:.72rem;font-weight:700;top:12px}.error{color:#b42318;background:#feecec;border-radius:10px;padding:10px 12px;font-size:.9rem;animation:.45s shake}.card button[type=submit]{background:linear-gradient(90deg, var(--green), #2f9b5f);color:#fff;height:52px;font:inherit;cursor:pointer;border:0;border-radius:14px;margin-top:4px;font-weight:700;transition:transform .18s,box-shadow .18s;position:relative;overflow:hidden}.card button[type=submit]:after{content:"";background:linear-gradient(120deg,#0000 30%,#ffffff47,#0000 70%);animation:3.4s ease-in-out infinite shine;position:absolute;inset:0;transform:translate(-120%)}.card button[type=submit]:hover{background:linear-gradient(90deg, var(--green), var(--orange));transform:translateY(-2px);box-shadow:0 12px 24px #37ae6a47}.card button[type=submit]:disabled{cursor:wait;transform:none}.btn-loader{border:2px solid #ffffff59;border-top-color:#fff;border-radius:50%;width:18px;height:18px;animation:.7s linear infinite spin;display:none}.card button.loading .btn-text{display:none}.card button.loading .btn-loader{display:inline-block}.success{color:var(--green);text-align:center;background:#37ae6a1f;border-radius:14px;margin-top:8px;padding:16px;font-weight:700;animation:.45s cubic-bezier(.2,.9,.3,1.2) pop}.card.shake .card-inner{animation:.45s shake}@keyframes drift{0%,to{transform:translate(0)scale(1)}50%{transform:translate(28px,18px)scale(1.08)}}@keyframes rise-left{0%{opacity:0;transform:translate(-28px)}to{opacity:1;transform:translate(0)}}@keyframes rise-right{0%{opacity:0;transform:translate(28px)}to{opacity:1;transform:translate(0)}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}@keyframes shine{0%,55%{transform:translate(-120%)}80%,to{transform:translate(120%)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-8px)}75%{transform:translate(8px)}}@media (width<=900px){.page{grid-template-columns:1fr}.brand{min-height:auto;padding:40px 24px 28px}.card{min-height:auto;box-shadow:none;padding:28px 24px 48px}.brand-inner,.card-inner{text-align:left;margin-inline:auto}}html.phone-chrome .page{grid-template-columns:1fr;min-height:100dvh}html.phone-chrome .brand{display:none}html.phone-chrome .card{min-height:100dvh;padding:calc(28px + env(safe-area-inset-top,0px)) 20px calc(36px + env(safe-area-inset-bottom,0px));box-shadow:none;align-items:center;display:grid}html.phone-chrome .card-inner{text-align:left;width:min(420px,100%);margin:auto}:root{--green:#37ae6a;--orange:#f29a40;--ink:#163027;--muted:#5d7268}*{box-sizing:border-box;margin:0;padding:0}[hidden]{display:none!important}body{min-height:100vh;color:var(--ink);background:#f4fbf6;font-family:Manrope,Segoe UI,sans-serif}.app-header{background:#fff;border-bottom:1px solid #e4efe8;justify-content:space-between;align-items:center;gap:16px;padding:18px 28px;display:flex}.brand-mark{font-family:Sora,sans-serif;font-size:1.05rem;font-weight:700}.brand-mark span:first-child{color:var(--green)}.brand-mark span:last-child{color:var(--orange)}.header-meta{align-items:center;gap:14px;display:flex}.header-meta span{color:var(--muted);font-weight:600}.ghost{color:var(--ink);height:38px;font:inherit;cursor:pointer;background:#fff;border:1px solid #d7e8dc;border-radius:10px;padding:0 14px;font-weight:700}.page-wrap{max-width:960px;margin:0 auto;padding:28px 20px 48px}.toolbar{justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px;display:flex}.toolbar-actions{flex-shrink:0;align-items:center;gap:10px;display:flex}.notify-open-btn{border:1px solid var(--line);height:44px;color:var(--ink);font:inherit;cursor:pointer;background:#fff;border-radius:12px;padding:0 16px;font-weight:700}.notify-open-btn:hover{border-color:var(--green);color:var(--green)}.notify-modal{z-index:50;background:#16302775;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.notify-modal[hidden]{display:none}.notify-modal-card{text-align:left;background:#fff;border-radius:18px;width:min(520px,100%);max-height:calc(100vh - 48px);padding:28px 24px 24px;position:relative;overflow:auto;box-shadow:0 20px 50px #1630272e}.notify-modal-logo{max-width:180px;margin:0 auto 14px;display:block}.notify-modal-close{width:36px;height:36px;color:var(--muted);cursor:pointer;background:#f4f6f5;border:0;border-radius:10px;font-size:1.4rem;line-height:1;position:absolute;top:14px;right:14px}.notify-modal-close:hover{color:var(--green);background:#eef7f1}.notify-modal-card h2{text-align:center;margin-bottom:6px;font-family:Sora,sans-serif;font-size:1.35rem}.notify-modal-copy{color:var(--muted);text-align:center;margin-bottom:16px;font-size:.92rem}.notify-modal-card label{color:var(--muted);margin-top:12px;margin-bottom:6px;font-size:.88rem;font-weight:700;display:block}.notify-modal-card input,.notify-modal-card textarea,.notify-modal-card select{border:1px solid var(--line);width:100%;font:inherit;color:var(--ink);background:#fff;border-radius:10px;padding:10px 12px}.notify-modal-card textarea{resize:vertical;min-height:120px}.student-modal-card{text-align:left;width:min(640px,100%)}.student-modal-card h2{margin-bottom:4px}.student-modal-card .grid-form{margin-top:4px}.student-modal-card .hint{margin:12px 0 4px}.student-modal-card textarea{min-height:72px}.student-modal-actions{justify-content:flex-end;gap:10px;margin-top:16px;display:flex}.timing-modal-card{text-align:left;width:min(440px,100%)}.timing-modal-card .hint{margin-top:8px;margin-bottom:0}.timing-day-badge{color:var(--green);background:#eef7f1;border-radius:999px;margin-right:8px;padding:2px 10px;font-size:.8rem;font-weight:700;display:inline-block}.timing-topic-chip{color:#c56a1a;background:#fff6ec;border-radius:8px;margin-left:6px;padding:2px 8px;font-size:.78rem;font-weight:700;display:inline-block}#timing-date-hint.is-error{color:#b42318}#timing-date-hint.is-ok{color:var(--green)}.notify-add-row{grid-template-columns:1fr auto;gap:10px;display:grid}.notify-add-row .primary{white-space:nowrap;height:44px}.notify-selected-list{flex-wrap:wrap;gap:8px;min-height:28px;margin-top:10px;display:flex}.notify-chip{color:var(--green);background:#eef7f1;border-radius:999px;align-items:center;gap:8px;padding:6px 10px;font-size:.88rem;font-weight:700;display:inline-flex}.notify-chip button{color:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-size:1.1rem;line-height:1}.notify-submit-btn{width:100%;margin-top:18px}.trainer-sent-note{cursor:default}.trainer-sent-meta{color:var(--muted);margin:8px 0 0;font-size:.86rem;font-weight:600}.toolbar h1{font-family:Sora,sans-serif;font-size:1.7rem}.toolbar p{color:var(--muted);margin-top:4px}.primary{background:linear-gradient(90deg, var(--green), #2f9b5f);color:#fff;height:44px;font:inherit;cursor:pointer;border:0;border-radius:12px;padding:0 18px;font-weight:700}.primary:hover{background:linear-gradient(90deg, var(--green), var(--orange))}.panel{background:#fff;border:1px solid #e4efe8;border-radius:16px;margin-bottom:18px;padding:20px}.panel h2{margin-bottom:12px;font-size:1rem}.row{grid-template-columns:1fr auto;gap:12px;display:grid}label{margin-bottom:6px;font-size:.82rem;font-weight:700;display:block}input,select{width:100%;height:48px;font:inherit;background:#fbfffc;border:1.5px solid #d7e8dc;border-radius:12px;padding:0 14px}input:focus,select:focus{border-color:var(--green);outline:none;box-shadow:0 0 0 4px #37ae6a24}.grid-form{grid-template-columns:1fr 1fr;gap:14px;display:grid}.hint{color:var(--muted);margin:12px 0 16px}.hw-preview,#day-homework,#day-description{white-space:pre-wrap;word-break:break-word}.notice,.empty,.error{border-radius:12px;margin-bottom:14px;padding:12px 14px}.notice{color:var(--green);background:#37ae6a1f;font-weight:700}.error{color:#b42318;background:#feecec}.empty{color:var(--muted);text-align:center;background:#fff;border:1px dashed #d7e8dc}.list{gap:12px;display:grid}.item{background:#fff;border:1px solid #e4efe8;border-radius:14px;justify-content:space-between;align-items:center;gap:16px;padding:16px 18px;display:flex}.item h3{font-family:Sora,sans-serif;font-size:1.05rem}.item p{color:var(--muted);margin-top:4px;font-size:.9rem}.item-actions{flex-wrap:wrap;gap:8px;display:flex}.edit-btn,.delete-btn{height:40px;font:inherit;cursor:pointer;border:0;border-radius:10px;padding:0 14px;font-weight:700}.copy-btn{height:40px;color:var(--orange);font:inherit;cursor:pointer;background:#fff4e8;border:0;border-radius:10px;padding:0 14px;font-weight:700}.edit-btn{color:var(--green);background:#e8f7ee}.mail-id{color:var(--ink);word-break:break-all;font-family:Sora,sans-serif;font-size:1.02rem}.delete-btn{color:#b42318;background:#feecec}.attendance-wrap{margin-top:0}.tabs{background:#fff;border:1px solid #e4efe8;border-radius:14px;gap:8px;margin-bottom:16px;padding:6px;display:flex}.tab{height:44px;color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:10px;flex:1;font-weight:700}.tab.active{background:var(--green);color:#fff}.chip-list{flex-wrap:wrap;gap:10px;margin-bottom:18px;display:flex}.chip{height:40px;color:var(--ink);font:inherit;cursor:pointer;background:#fff;border:1px solid #d7e8dc;border-radius:999px;padding:0 16px;font-weight:700}.chip.active{background:var(--orange);border-color:var(--orange);color:#fff}.mark-row{align-items:flex-start}.marks{flex-wrap:wrap;gap:8px;display:flex}.mark{height:36px;color:var(--ink);font:inherit;cursor:pointer;background:#fff;border:1px solid #d7e8dc;border-radius:9px;padding:0 12px;font-weight:700}.mark.active.present{background:var(--green);border-color:var(--green);color:#fff}.mark.active.leave{color:#fff;background:#b42318;border-color:#b42318}.mark.active.late{background:var(--orange);border-color:var(--orange);color:#fff}.mark.active.hw{color:#fff;background:#1d6f8a;border-color:#1d6f8a}.inf-row{flex-wrap:wrap;align-items:center;gap:8px;margin-top:6px;display:flex}.inf-badge{border-radius:999px;padding:3px 10px;font-size:.75rem;font-weight:700;display:inline-block}.inf-badge.informed{color:var(--green);background:#37ae6a26}.inf-badge.uninformed{color:#b42318;background:#feecec}.inf-edit-btn{color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-size:.78rem;font-weight:700;text-decoration:underline}.att-modal{z-index:50;background:#16302775;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.att-modal[hidden]{display:none}.att-modal-card{text-align:center;background:#fff;border-radius:18px;width:min(360px,100%);padding:26px 24px;box-shadow:0 20px 50px #1630272e}.att-modal-label{color:var(--ink);margin-bottom:18px;font-family:Sora,sans-serif;font-size:1.1rem;font-weight:700}.att-modal-btns{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.att-choice{height:44px;font:inherit;cursor:pointer;border:0;border-radius:12px;padding:0 18px;font-weight:700}.informed-btn{background:var(--green);color:#fff}.uninformed-btn{color:#b42318;background:#feecec}.skip-btn{color:var(--muted);background:#f4f6f5}.details-panel{margin-top:18px}.details-grid{grid-template-columns:repeat(3,1fr);gap:14px;display:grid}.details-grid h3{color:var(--orange);margin-bottom:8px;font-size:.9rem}.details-grid p{color:var(--ink);line-height:1.5}textarea{width:100%;min-height:96px;font:inherit;resize:vertical;background:#fbfffc;border:1.5px solid #d7e8dc;border-radius:12px;padding:12px 14px}textarea:focus{border-color:var(--green);outline:none;box-shadow:0 0 0 4px #37ae6a24}.grid-form .full{grid-column:1/-1}.cert-toggle{justify-content:space-between;align-items:center;gap:12px;margin:8px 0 16px;display:flex}.cert-toggle p{font-weight:700}.enable-btn,.disable-btn{height:40px;color:var(--muted);font:inherit;cursor:pointer;background:#fff;border:1px solid #d7e8dc;border-radius:10px;padding:0 14px;font-weight:700}.enable-btn.active{background:var(--green);border-color:var(--green);color:#fff}.disable-btn.active{color:#fff;background:#b42318;border-color:#b42318}#certificate-box{border-top:1px dashed #d7e8dc;margin:8px 0 18px;padding-top:8px}#certificate-box h3,#certificate-box .primary{margin:10px 0 14px}.cert-thumb{object-fit:cover;background:#e8f7ee;border-radius:8px;width:72px;height:52px}.badge{color:var(--green);background:#e8f7ee;border-radius:999px;margin-top:6px;padding:3px 8px;font-size:.75rem;font-weight:700;display:inline-block}.cert-frame{text-align:center;background:#fff;border:1px solid #e4efe8;border-radius:18px;padding:28px;box-shadow:0 16px 40px #16302714}.cert-frame img{object-fit:contain;background:#f4fbf6;border-radius:12px;width:100%;max-height:420px;margin:18px 0}.cert-frame h1{color:var(--green);font-family:Sora,sans-serif;font-size:1.8rem}.cert-frame .muted{color:var(--muted);margin-top:8px}.fee-line{color:var(--ink);font-weight:700}.pay-time{color:var(--ink);margin:4px 0 2px}.pay-item{align-items:flex-start}.due-badge{vertical-align:middle;color:var(--green);background:#eef7f1;border-radius:999px;margin-left:8px;padding:3px 10px;font-size:.78rem;font-weight:700;display:inline-block}.due-badge.due-overdue{color:#c44545;background:#fde8e8}.due-badge.due-today,.due-badge.due-d1,.due-badge.due-d2{color:#c56a16;background:#fff3e4}.due-badge.due-d5,.due-badge.due-d10{color:#1d6f8a;background:#e8f3fb}.due-badge.due-none{color:var(--muted);background:#f4f6f5}.due-badge.due-paid{color:var(--green);background:#eef7f1}.pay-batch-panel{margin-bottom:16px}.pay-batch-panel .section-head .hint{margin:0}.pay-stats{margin-bottom:16px}.next-pay-form{gap:6px;min-width:180px;display:grid}.next-pay-form label{margin:0}.next-pay-form .primary{height:40px}.view-btn{background:var(--orange);color:#fff;height:40px;font:inherit;cursor:pointer;border:0;border-radius:10px;place-items:center;padding:0 16px;font-weight:700;text-decoration:none;display:inline-grid}.profile-card{align-items:center;gap:22px;display:flex}.profile-logout-btn{color:#fff;width:100%;max-width:none;min-height:46px;font:inherit;cursor:pointer;background:#c44545;border:0;border-radius:12px;margin-top:8px;font-weight:700;display:block}.profile-icon{border-radius:50%;flex-shrink:0;place-items:center;width:92px;height:92px;display:grid}.profile-icon svg{width:48px;height:48px}.profile-icon.male{color:var(--green);background:#37ae6a24}.profile-icon.female{color:var(--orange);background:#f29a4029}.profile-rows{flex:1;gap:10px;display:grid}.profile-row{grid-template-columns:140px 1fr;align-items:baseline;gap:10px;display:grid}.profile-row dt{color:var(--muted);font-size:.88rem;font-weight:700}.profile-row dd{color:var(--ink);font-size:1rem;font-weight:700}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:18px;display:grid}.stat-card{background:#fff;border:1px solid #e4efe8;border-radius:16px;padding:18px}.stat-card h3{color:var(--muted);margin-bottom:8px;font-size:.82rem}.stat-card p{color:var(--green);font-family:Sora,sans-serif;font-size:1.35rem}#day-details-form .primary{margin-top:14px}@media (width<=900px){.stats-grid{grid-template-columns:1fr 1fr}}@media (width<=700px){.row,.grid-form,.details-grid,.stats-grid{grid-template-columns:1fr}.toolbar,.item,.app-header,.profile-card{flex-direction:column;align-items:stretch}.profile-row{grid-template-columns:1fr;gap:2px}}.app-body{background:#eef8f1}.app-shell{grid-template-columns:248px 1fr;min-height:100vh;display:grid}.sidebar{background:#fff;border-right:1px solid #e4efe8;flex-direction:column;height:100vh;padding:18px 14px;display:flex;position:sticky;top:0}.sidebar-head{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.sidebar-brand{min-width:0;padding:6px 8px 18px;display:block}.sidebar-close{width:42px;height:42px;color:var(--ink);cursor:pointer;background:#fff;border:1px solid #d7e8dc;border-radius:12px;flex:0 0 42px;place-items:center;margin-top:2px;padding:0;display:none}.sidebar-close svg{width:20px;height:20px}.sidebar-brand img,.auth-modal-card img{width:100%;max-width:200px;height:auto;display:block}.sidebar-nav{flex:1;align-content:start;gap:6px;display:grid;overflow:auto}.sidebar-link{min-height:44px;color:var(--muted);border-radius:12px;grid-template-columns:22px 1fr auto;align-items:center;gap:10px;padding:8px 12px;font-size:.94rem;font-weight:700;text-decoration:none;display:grid}.sidebar-link:hover{color:var(--ink);background:#f4fbf6}.sidebar-link.active{background:var(--green);color:#fff}.sidebar-icon{place-items:center;display:grid}.sidebar-icon svg{width:18px;height:18px}.nav-badge{background:var(--orange);color:#fff;border-radius:999px;place-items:center;min-width:22px;height:22px;padding:0 6px;font-size:.72rem;display:inline-grid}.sidebar-link.active .nav-badge{color:var(--green);background:#fff}.notification-list{gap:12px;display:grid}.notification-item{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:14px;justify-content:space-between;align-items:flex-start;gap:16px;padding:16px 18px;transition:border-color .15s,box-shadow .15s;display:flex}.notification-item.unread{background:#f8fdf9;border-color:#c8e8d4;box-shadow:0 0 0 1px #37ae6a14}.notification-main{flex:1;min-width:0}.notification-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:6px;display:flex}.notification-type{color:var(--green);text-transform:uppercase;letter-spacing:.04em;background:#eef7f1;border-radius:999px;padding:3px 10px;font-size:.72rem;font-weight:700;display:inline-block}.notification-item.unread .notification-type{background:var(--green);color:#fff}.notification-head time{color:var(--muted);white-space:nowrap;font-size:.82rem}.notification-item h3{margin:0 0 6px;font-size:1rem}.notification-item p{color:var(--muted);margin:0;font-size:.92rem;line-height:1.45}.toolbar .notification-read-btn{border:1px solid var(--line);height:40px;color:var(--text);font:inherit;cursor:pointer;background:#fff;border-radius:10px;padding:0 16px;font-weight:600}.toolbar .notification-read-btn:hover{border-color:var(--green);color:var(--green)}.list-controls{flex-shrink:0;align-items:center;gap:12px;display:flex}.page-size-label{color:var(--muted);align-items:center;gap:8px;font-size:.88rem;font-weight:600;display:flex}.page-size-select{border:1px solid var(--line);min-width:72px;height:40px;color:var(--ink);font:inherit;cursor:pointer;background:#fff;border-radius:10px;padding:0 10px;font-weight:600}.pagination-meta{color:var(--muted);margin:-6px 0 12px;font-size:.88rem;font-weight:600}.pagination-bar{justify-content:center;align-items:center;gap:14px;margin-top:16px;display:flex}.page-btn{border:1px solid var(--line);height:40px;color:var(--ink);font:inherit;cursor:pointer;background:#fff;border-radius:10px;padding:0 16px;font-weight:600}.page-btn:hover:not(:disabled){border-color:var(--green);color:var(--green)}.page-btn:disabled{opacity:.45;cursor:not-allowed}.page-label{color:var(--muted);font-size:.92rem;font-weight:600}.profile-overview,.profile-last-note{margin-bottom:16px}.profile-last-note .section-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.profile-link-btn{height:36px;padding:0 14px;font-size:.88rem}.profile-note-item{border-top:1px solid var(--line);padding:14px 0 0}.profile-note-item:first-child{border-top:0;padding-top:0}.profile-note-item h3{margin:0 0 6px;font-size:1rem}.profile-note-item p{color:var(--muted);margin:0;font-size:.92rem;line-height:1.45}.profile-note-item time{color:var(--muted);margin-top:8px;font-size:.82rem;display:block}.sidebar-logout{color:#b42318;height:44px;font:inherit;cursor:pointer;background:#feecec;border:0;border-radius:12px;margin-top:12px;font-weight:700}.app-main{min-width:0}.app-main .page-wrap{max-width:1120px}.mobile-bar{background:#fff;border-bottom:1px solid #e4efe8;justify-content:space-between;align-items:center;gap:12px;min-height:58px;padding:8px 12px;display:none}.mobile-bar-brand{align-items:center;min-width:0;display:flex}.mobile-bar-brand img,.mobile-bar img{width:auto;max-width:168px;height:34px;display:block}.menu-toggle{width:42px;height:42px;color:var(--ink);cursor:pointer;background:#fff;border:1px solid #d7e8dc;border-radius:12px;flex:0 0 42px;place-items:center;padding:0;display:grid}.menu-toggle svg{width:22px;height:22px}.auth-pending .app-shell{display:none}.auth-modal{z-index:40;background:#1630276b;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.auth-modal-card{text-align:center;background:#fff;border-radius:20px;width:min(420px,100%);padding:28px 24px;box-shadow:0 20px 50px #1630272e}.auth-modal-card img{margin:0 auto 16px}.auth-modal-card h2{margin-bottom:8px;font-family:Sora,sans-serif}.auth-modal-card p{color:var(--muted);margin-bottom:18px}.auth-modal-card .primary{place-items:center;text-decoration:none;display:inline-grid}.welcome-row{grid-template-columns:1.4fr .8fr;gap:16px;margin-bottom:18px;display:grid}.welcome-card{color:#fff;background:linear-gradient(135deg,#37ae6a,#2f9b5f 55%,#f29a40);border-radius:20px;padding:28px}.welcome-card .eyebrow{letter-spacing:.16em;text-transform:uppercase;opacity:.9;margin-bottom:10px;font-size:.72rem;font-weight:700}.welcome-card h1{margin-bottom:10px;font-family:Sora,sans-serif;font-size:clamp(1.5rem,3vw,2.1rem)}.welcome-card p{color:#ffffffeb;max-width:52ch;line-height:1.6}.mini-profile{background:#fff;border:1px solid #e4efe8;border-radius:20px;align-items:center;gap:16px;padding:22px;display:flex}.mini-profile h3{font-family:Sora,sans-serif;font-size:1.05rem}.mini-profile p{color:var(--muted);margin-top:4px;font-size:.9rem}.charts-grid{grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:18px;display:grid}.chart-card{text-align:center;background:#fff;border:1px solid #e4efe8;border-radius:16px;padding:18px}.donut{border-radius:50%;place-items:center;width:120px;height:120px;margin:0 auto 12px;display:grid}.donut-hole{background:#fff;border-radius:50%;place-items:center;width:82px;height:82px;font-family:Sora,sans-serif;font-size:1.2rem;display:grid}.chart-card p{color:var(--muted);font-weight:700}.split-lists{grid-template-columns:1fr 1fr;gap:16px;display:grid}.bar-chart{gap:12px;display:grid}.bar-row{grid-template-columns:90px 1fr 36px;align-items:center;gap:10px;display:grid}.bar-label,.bar-value{color:var(--ink);font-size:.88rem;font-weight:700}.bar-track{background:#e8f0ea;border-radius:999px;height:12px;overflow:hidden}.bar-fill{background:linear-gradient(90deg, var(--green), var(--orange));border-radius:999px;height:100%}.section-head{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.section-head h2{margin:0}.item.incomplete{border-color:#f5c19a}.item.absent{border-color:#f0b4b0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.student-day-card{color:inherit;cursor:pointer;text-decoration:none}.student-day-card:hover{border-color:var(--green);box-shadow:0 0 0 3px #37ae6a1f}.day-open-icon{background:#eef7f1;border-radius:50%;flex:0 0 28px;width:28px;height:28px;position:relative}.day-open-icon:after{content:"";border-right:2px solid var(--green);border-top:2px solid var(--green);width:7px;height:7px;position:absolute;top:50%;left:46%;transform:translate(-50%,-50%)rotate(45deg)}.item-clickable{cursor:pointer}.item-clickable:hover{border-color:var(--green);box-shadow:0 0 0 3px #37ae6a1f}.item-clickable>div{flex:1;min-width:0}.page-tabs{background:#e8f3ec;border-radius:12px;gap:6px;width:fit-content;max-width:100%;margin:0 0 16px;padding:4px;display:flex}.page-tab{min-height:38px;color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:10px;padding:0 16px;font-weight:700}.page-tab.active{color:var(--ink);background:#fff;box-shadow:0 1px 4px #16302714}.call-btn{background:var(--green);color:#fff;height:36px;font:inherit;cursor:pointer;white-space:nowrap;border:0;border-radius:10px;padding:0 14px;font-weight:700}.sidebar-scrim{display:none}.bar-row.is-clickable{cursor:pointer;border-radius:12px;margin:0 -8px;padding:8px}.bar-row.is-clickable:hover{background:#f4fbf6}.chat-shell{background:#fff;border:1px solid #e4efe8;border-radius:16px;flex-direction:column;height:calc(100vh - 168px);min-height:min(70vh,680px);display:flex;overflow:hidden}.chat-messages{background:linear-gradient(#f7fbf8,#fff);flex:1;align-content:start;gap:12px;padding:18px;display:grid;overflow:auto}.chat-messages-admin{background:linear-gradient(#f7fbf8,#fff);border:1px solid #e4efe8;border-radius:14px;min-height:420px;max-height:calc(100vh - 280px)}.chat-empty{text-align:center;max-width:36ch;margin:auto;padding:48px 16px}.chat-empty h3{margin-bottom:8px;font-family:Sora,sans-serif}.chat-empty p{color:var(--muted);line-height:1.55}.chat-bubble{background:#fff;border:1px solid #e4efe8;border-radius:16px;max-width:min(78%,640px);padding:12px 14px}.chat-bubble.user{background:#eef7f1;border-color:#cde8d6;justify-self:end}.chat-bubble.assistant{justify-self:start}.chat-bubble.pending{opacity:.75}.chat-bubble-meta{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:6px;display:flex}.chat-bubble-meta strong{color:var(--green);font-size:.78rem;font-weight:800}.chat-bubble.user .chat-bubble-meta strong{color:#c56a1a}.chat-bubble-meta time{color:var(--muted);white-space:nowrap;font-size:.75rem}.chat-bubble p{white-space:pre-wrap;word-break:break-word;margin:0;font-size:.95rem;line-height:1.5}.chat-invite{color:var(--muted);border-top:1px dashed #d7e8dc;padding-top:10px;font-weight:600;white-space:normal!important;margin-top:10px!important;font-size:.86rem!important}.doubt-toggle.is-on,.call-toggle.is-on{border-color:var(--orange);color:var(--orange);background:#fff4e8}.voice-incoming{z-index:240;background:#16302775;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.voice-incoming[hidden]{display:none!important}.voice-incoming-card{text-align:center;background:#fff;border-radius:18px;width:min(420px,100%);padding:24px;box-shadow:0 20px 50px #1630272e}.voice-incoming-card h2{margin:8px 0 6px;font-family:Sora,sans-serif}.voice-incoming-card p{color:var(--muted);margin-bottom:16px}.voice-incoming-card .toolbar-actions{justify-content:center}.voice-bar{z-index:70;color:#fff;background:#163027;border-radius:16px;justify-content:space-between;align-items:center;gap:16px;min-width:min(420px,100vw - 40px);padding:14px 16px;display:flex;position:fixed;bottom:20px;right:20px;box-shadow:0 16px 40px #16302747}.voice-bar[hidden]{display:none!important}.voice-busy-note{z-index:71;width:min(420px,100vw - 40px);color:var(--ink);background:#fff;border:1px solid #e4efe8;border-radius:14px;align-items:center;gap:12px;padding:12px 14px;display:flex;position:fixed;bottom:96px;right:20px;box-shadow:0 12px 32px #16302724}.voice-busy-note[hidden]{display:none!important}.voice-busy-note p{flex:1;margin:0;font-size:.9rem;font-weight:600;line-height:1.4}.voice-busy-note .ghost{flex:none;height:34px;padding:0 12px}.voice-bar p{color:#ffffffc7;margin:4px 0 0;font-size:.88rem}.voice-timer{font-variant-numeric:tabular-nums;font-weight:800}.voice-hangup{color:#b42318!important;background:#feecec!important}#voice-remote-audio{display:none}.doubt-history-title{margin:18px 0 10px;font-size:.95rem}.chat-form{background:#fff;border-top:1px solid #e4efe8;grid-template-columns:1fr auto;gap:10px;padding:12px;display:grid}.chat-form textarea{resize:none;width:100%;min-height:48px;max-height:140px;font:inherit;background:#fbfffc;border:1.5px solid #d7e8dc;border-radius:12px;padding:12px 14px;line-height:1.4}.chat-form textarea:focus{border-color:var(--green);outline:none;box-shadow:0 0 0 4px #37ae6a24}.chat-form .primary:disabled{opacity:.6;cursor:wait}.chat-shell .error,.chat-shell .notice{margin:0 12px 8px}.chat-history-panel .hint{margin-top:0}@media (width<=980px){.app-shell{grid-template-columns:1fr}.sidebar{z-index:32;border-left:1px solid #e4efe8;border-right:0;width:min(280px,86vw);transition:transform .2s;position:fixed;top:0;left:auto;right:0;transform:translate(105%);box-shadow:-12px 0 30px #1630271f}.sidebar-open .sidebar{transform:translate(0)}.sidebar-close{display:grid}.sidebar-scrim{z-index:31;cursor:pointer;background:#16302759;border:0;padding:0;display:block;position:fixed;inset:0}body.menu-open{overflow:hidden}.mobile-bar{z-index:25;display:flex;position:sticky;top:0}.welcome-row,.charts-grid,.split-lists{grid-template-columns:1fr}.chat-shell{height:calc(100vh - 210px);min-height:480px}.chat-bubble{max-width:92%}.chat-form{grid-template-columns:1fr}.chat-form .primary{width:100%}.voice-busy-note{width:auto;bottom:88px;left:12px;right:12px}}.student-topbar,.student-bottom-nav,.staff-bottom-nav{display:none}html.phone-chrome .student-app,html.phone-chrome .phone-app:not(.student-app){background:#eef8f1}html.phone-chrome .student-app .app-shell{grid-template-columns:1fr;min-height:100dvh}html.phone-chrome .student-app .sidebar,html.phone-chrome .student-app .mobile-bar{display:none!important}html.phone-chrome .student-app .app-main{min-width:0;padding-top:calc(58px + env(safe-area-inset-top,0px));padding-bottom:calc(72px + env(safe-area-inset-bottom,0px))}html.phone-chrome .student-app .app-main .page-wrap{width:100%;max-width:none;margin:0;padding:16px 12px 28px}html.phone-chrome .phone-app:not(.student-app) .app-shell{grid-template-columns:1fr;min-height:100dvh}html.phone-chrome .phone-app:not(.student-app) .sidebar{z-index:42;border-left:1px solid #e4efe8;border-right:0;width:min(280px,86vw);height:100dvh;transition:transform .2s;position:fixed;top:0;left:auto;right:0;transform:translate(105%);box-shadow:-12px 0 30px #1630271f}html.phone-chrome .app-body.sidebar-open .sidebar{transform:translate(0)}html.phone-chrome .phone-app:not(.student-app) .sidebar-close{display:grid}html.phone-chrome .phone-app:not(.student-app) .app-main{min-width:0;padding-top:calc(58px + env(safe-area-inset-top,0px));padding-bottom:calc(72px + env(safe-area-inset-bottom,0px))}html.phone-chrome .phone-app:not(.student-app) .app-main .page-wrap{width:100%;max-width:none;margin:0;padding:16px 12px 28px}html.phone-chrome .phone-app:not(.student-app) .mobile-bar{z-index:40;min-height:58px;padding:calc(8px + env(safe-area-inset-top,0px)) 12px 8px;background:#fff;border-bottom:1px solid #e4efe8;display:flex;position:fixed;top:0;left:0;right:0;box-shadow:0 8px 24px #1630270f}html.phone-chrome .phone-app:not(.student-app) .welcome-row,html.phone-chrome .phone-app:not(.student-app) .charts-grid,html.phone-chrome .phone-app:not(.student-app) .split-lists{grid-template-columns:1fr}html.phone-chrome .phone-app:not(.student-app) .stats-grid{grid-template-columns:1fr 1fr}html.phone-chrome .phone-app:not(.student-app) .toolbar{flex-direction:column;align-items:stretch;gap:10px}html.phone-chrome .staff-bottom-nav{display:flex}html.phone-chrome .student-topbar{z-index:40;min-height:58px;padding:calc(8px + env(safe-area-inset-top,0px)) 12px 8px;background:#fff;border-bottom:1px solid #e4efe8;justify-content:space-between;align-items:center;gap:12px;display:flex;position:fixed;top:0;left:0;right:0;box-shadow:0 8px 24px #1630270f}html.phone-chrome .student-top-brand{align-items:center;min-width:0;display:flex}html.phone-chrome .student-top-brand img{width:auto;max-width:168px;height:34px;display:block}html.phone-chrome .student-top-actions{align-items:center;gap:8px;display:flex}html.phone-chrome .student-top-btn{width:42px;height:42px;color:var(--ink);background:#f4fbf6;border:none;border-radius:12px;place-items:center;text-decoration:none;display:grid;position:relative}html.phone-chrome .student-top-btn.active{background:var(--green);color:#fff}html.phone-chrome .student-top-icon svg{width:20px;height:20px;display:block}html.phone-chrome .student-top-btn .nav-badge{min-width:16px;height:16px;padding:0 4px;font-size:.62rem;position:absolute;top:4px;right:4px}html.phone-chrome .student-bottom-nav{z-index:40;width:100%;padding:0 0 env(safe-area-inset-bottom,0px);box-shadow:none;background:#fff;border:0;align-items:stretch;display:flex;position:fixed;bottom:0;left:0;right:0}html.phone-chrome .student-bottom-link{appearance:none;min-width:0;height:auto;min-height:62px;color:var(--muted);font:inherit;text-align:center;cursor:pointer;box-shadow:none;background:0 0;border:0;border-radius:0;flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;gap:4px;margin:0;padding:8px 2px;font-size:.64rem;font-weight:700;line-height:1;text-decoration:none;display:flex;position:relative;overflow:visible;transform:none}html.phone-chrome .student-bottom-link:after{content:none;display:none}html.phone-chrome .student-bottom-link:hover,html.phone-chrome .student-bottom-link:disabled{box-shadow:none;background:0 0;transform:none}html.phone-chrome .student-bottom-link.active{color:var(--green);background:0 0}html.phone-chrome .student-bottom-icon{place-items:center;display:grid}html.phone-chrome .student-bottom-icon svg{width:20px;height:20px;display:block}html.phone-chrome .student-bottom-link .nav-badge{min-width:16px;height:16px;padding:0 4px;font-size:.62rem;position:absolute;top:4px;right:50%;transform:translate(14px)}html.phone-chrome .student-app .profile-logout-btn{width:100%;max-width:none;min-height:48px;display:block}html.phone-chrome .student-app .welcome-row,html.phone-chrome .student-app .charts-grid,html.phone-chrome .student-app .split-lists,html.phone-chrome .student-app .stats-grid{grid-template-columns:1fr 1fr}html.phone-chrome .student-app .welcome-row,html.phone-chrome .student-app .split-lists{grid-template-columns:1fr}html.phone-chrome .student-app .welcome-card p:last-child{display:none}html.phone-chrome .student-app .toolbar{flex-direction:column;align-items:stretch;gap:10px}html.phone-chrome .student-app .toolbar-actions{flex-wrap:wrap;gap:8px;display:flex}html.phone-chrome .student-app .toolbar h1{font-size:1.35rem}html.phone-chrome .student-app .list-controls{width:100%}html.phone-chrome .student-app .chat-shell{height:calc(100dvh - 210px);min-height:360px}html.phone-chrome .student-app .chat-form{grid-template-columns:1fr auto}html.phone-chrome .student-app .chat-form .primary{width:auto;min-width:84px}html.phone-chrome .student-app .voice-bar{left:12px;right:12px;bottom:calc(80px + env(safe-area-inset-bottom,0px));min-width:0}html.phone-chrome .voice-busy-note{left:12px;right:12px;bottom:calc(148px + env(safe-area-inset-bottom,0px));width:auto}html.phone-chrome .student-app .item{flex-direction:row;align-items:center;gap:12px}html.phone-chrome .student-app .item>div{flex:1;min-width:0}html.phone-chrome .student-app .item-actions,html.phone-chrome .student-app .item .view-btn{flex:none;width:auto}html.phone-chrome .student-app .student-day-card{color:inherit;text-decoration:none}html.phone-chrome .student-app .day-open-icon{background:#eef7f1;border-radius:50%;flex:0 0 28px;width:28px;height:28px;position:relative}html.phone-chrome .student-app .day-open-icon:after{content:"";border-right:2px solid var(--green);border-top:2px solid var(--green);width:7px;height:7px;position:absolute;top:50%;left:46%;transform:translate(-50%,-50%)rotate(45deg)}html.phone-chrome .student-app .pagination-bar{justify-content:space-between;gap:8px}html.phone-chrome .student-app .page-btn{flex:1;max-width:120px}html.phone-chrome .push-enable{background:#fff7ec;border:1px solid #f3d7b0;border-radius:14px;justify-content:space-between;align-items:center;gap:12px;margin:0 0 14px;padding:12px 14px;display:flex}html.phone-chrome .push-enable p{color:var(--ink);margin:0;font-size:.86rem;font-weight:600;line-height:1.35}html.phone-chrome .push-enable button{background:var(--green);color:#fff;min-height:38px;font:inherit;cursor:pointer;border:0;border-radius:10px;flex:none;padding:8px 12px;font-weight:700}html.phone-chrome .push-enable-denied{background:#fff;border-color:#e4efe8}@media (width<=520px){.student-app .stats-grid,.student-app .charts-grid{grid-template-columns:1fr 1fr}.student-app .stat-card{padding:14px 12px}.student-app .stat-card p{font-size:1.15rem}.student-app .mini-profile{padding:14px}}html,body,#root{min-height:100%;margin:0}#root{min-height:100svh}.app-splash{background:#f4fbf6;place-items:center;min-height:100dvh;padding:24px;display:grid}.app-splash img{width:min(280px,72vw);height:auto}.push-enable{background:#fff7ec;border:1px solid #f3d7b0;border-radius:14px;justify-content:space-between;align-items:center;gap:12px;margin:0 0 16px;padding:12px 14px;display:flex}.push-enable p{color:#163027;margin:0;font-size:.9rem;font-weight:600;line-height:1.35}.push-enable button{color:#fff;min-height:38px;font:inherit;cursor:pointer;background:#37ae6a;border:0;border-radius:10px;flex:none;padding:8px 12px;font-weight:700}.push-enable-denied{background:#fff;border-color:#e4efe8}
