*,:before,:after{box-sizing:border-box}html,body,#root{background:var(--bg-app);height:100%;min-height:100vh;font-family:var(--font-sans);color:var(--fg-default);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;overscroll-behavior-y:none;margin:0;padding:0}button{font-family:inherit}a{color:var(--color-rose);cursor:pointer;text-decoration:none}@keyframes spin{to{transform:rotate(360deg)}}.pwa-root{background:var(--bg-app);flex-direction:column;max-width:460px;height:100dvh;margin:0 auto;display:flex;position:relative;overflow:hidden;box-shadow:0 0 60px -10px #5b0d222e}.tutor-app{background:var(--bg-app);width:100%;min-height:0;font-family:var(--font-sans);color:var(--fg-default);flex-direction:column;flex:1;display:flex;position:relative;overflow:hidden}.tutor-screen{-webkit-overflow-scrolling:touch;flex:1;min-height:0;padding:0 16px 90px;overflow-y:auto}.tab-appbar{padding:calc(14px + env(safe-area-inset-top,0)) 16px 14px;border-bottom:1px solid var(--border-default);box-sizing:border-box;background:#fff;align-items:center;gap:12px;display:flex;position:relative}.tab-appbar h1{letter-spacing:-.01em;color:var(--color-garnet);margin:0;font:600 18px Poppins}.tab-appbar .subtitle{color:var(--fg-muted);margin-top:2px;font:400 12px Poppins}.tab-appbar .spacer{flex:1}.icon-btn{background:var(--color-gray-50);border:1px solid var(--border-default);width:38px;height:38px;color:var(--color-garnet);cursor:pointer;transition:background .15s var(--ease-out), border-color .15s var(--ease-out);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;font-size:18px;display:inline-flex;position:relative}.icon-btn:hover{background:var(--color-rose-50);border-color:var(--color-rose-light)}.icon-btn .ping{background:var(--color-rose);border:2px solid #fff;border-radius:50%;width:8px;height:8px;position:absolute;top:8px;right:8px}.staff-home-install{margin:16px 16px 0}.greeting{background:var(--color-garnet);color:#fff;padding:calc(18px + env(safe-area-inset-top,0)) 22px 28px;border-bottom-right-radius:24px;border-bottom-left-radius:24px;position:relative;overflow:hidden}.greeting .top-row{z-index:2;align-items:center;gap:10px;margin-bottom:22px;display:flex;position:relative}.greeting .top-row .spacer{flex:1}.greeting .top-row .icon-btn{color:#fff;background:#ffffff14;border:1px solid #ffffff26}.greeting .top-row .icon-btn:hover{background:#ffffff29}.greeting .top-row .icon-btn .ping{border-color:var(--color-garnet)}.greeting .hello{color:#ffffffa6;z-index:2;font:400 14px Poppins;position:relative}.greeting .name{letter-spacing:-.02em;z-index:2;margin:4px 0 0;font:600 30px/1.1 Poppins;position:relative}.mbtn{cursor:pointer;white-space:nowrap;height:44px;transition:all .15s var(--ease-out);border:1px solid #0000;border-radius:12px;flex:1;justify-content:center;align-items:center;gap:8px;padding:0 18px;font:600 14px Poppins;display:inline-flex}.mbtn:disabled{opacity:.6;cursor:default}.mbtn.primary{background:var(--color-rose);color:#fff;box-shadow:var(--shadow-rose)}.mbtn.primary:active{background:var(--color-rose-700)}.mbtn.secondary{color:var(--color-garnet);border-color:var(--border-strong);background:#fff}.tabbar{border-top:1px solid var(--border-default);padding:8px 12px calc(8px + env(safe-area-inset-bottom,0));z-index:5;background:#fff;flex-shrink:0;display:flex;position:relative}.tabbar .tab-btn{cursor:pointer;color:var(--fg-muted);background:0 0;border:0;flex-direction:column;flex:1;align-items:center;gap:3px;padding:6px 0;font:500 11px Poppins;text-decoration:none;display:flex}.tabbar .tab-btn i{font-size:22px}.tabbar .tab-btn.active{color:var(--color-rose)}.tabbar .tab-btn .pip{display:none}.tabbar .tab-btn.active .pip{background:var(--color-rose);border-radius:2px;width:28px;height:3px;margin-top:4px;display:block}.pwa-section-h{color:var(--fg-muted);text-transform:uppercase;letter-spacing:.08em;align-items:center;gap:8px;margin:18px 4px 8px;font:600 11px Poppins;display:flex}.pwa-section-h i{color:var(--color-rose)}.pwa-prof-row{cursor:pointer;background:#fff;grid-template-columns:38px 1fr auto;align-items:center;gap:12px;padding:14px;display:grid}.pwa-prof-row .ic{color:#fff;border-radius:9px;justify-content:center;align-items:center;width:32px;height:32px;font-size:16px;display:inline-flex}.pwa-prof-row .nm{color:var(--fg-strong);font:500 14px Poppins}.pwa-prof-row .sub{color:var(--fg-muted);font:400 11px Poppins}.pwa-prof-row .chev{color:var(--fg-subtle);font-size:18px}.pwa-login-hero{text-align:center;padding:60px 24px 30px}.pwa-login-hero .lg{background:var(--color-rose);color:#fff;width:76px;height:76px;box-shadow:var(--shadow-rose);border-radius:22px;justify-content:center;align-items:center;margin-bottom:18px;font:700 32px Poppins;display:inline-flex}.pwa-login-hero .lg img{width:52%;height:52%;display:block}.pwa-login-hero h1{color:var(--color-garnet);margin:0 0 6px;font:600 24px Poppins}.pwa-login-hero p{color:var(--fg-muted);margin:0;font:400 14px Poppins}.pwa-login-input{border:1px solid var(--border-strong);width:100%;height:50px;color:var(--fg-strong);background:#fff;border-radius:14px;outline:none;padding:0 16px;font:500 15px Poppins}.pwa-login-input:focus{border-color:var(--color-rose);box-shadow:var(--shadow-focus)}.pwa-club-pick{border:1px solid var(--border-default);cursor:pointer;text-align:left;background:#fff;border-radius:14px;align-items:center;gap:12px;width:100%;margin-bottom:10px;padding:14px;display:flex}.pwa-club-pick.active{border-color:var(--color-rose);background:var(--color-rose-50)}.pwa-club-pick .lg{background:var(--color-garnet);color:#fff;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;font:700 16px Poppins;display:inline-flex}.pwa-club-pick .nm{color:var(--color-garnet);font:600 14px Poppins}.pwa-club-pick .sub{color:var(--fg-muted);font:400 11px Poppins}.pwa-club-pick .chev{color:var(--color-rose);margin-left:auto}.pwa-offline-banner{background:var(--color-gray-900);color:#fff;flex-shrink:0;align-items:center;gap:10px;padding:10px 14px;font:500 13px Poppins;display:flex}.pwa-offline-banner .dot{background:var(--color-warning);border-radius:50%;width:8px;height:8px}.list-row{border-bottom:1px solid var(--border-default);cursor:pointer;align-items:center;gap:12px;padding:12px 4px;display:flex}.list-row:last-child{border-bottom:0}.list-row .pic{background:var(--color-rose-light);width:44px;height:44px;color:var(--color-garnet);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font:600 14px Poppins;display:flex}.list-row .body{flex:1;min-width:0}.list-row .title{color:var(--fg-strong);justify-content:space-between;margin:0;font:600 14px Poppins;display:flex}.list-row .title .time{color:var(--fg-muted);font-size:12px;font-weight:400}.list-row .preview{color:var(--fg-muted);text-overflow:ellipsis;white-space:nowrap;margin:2px 0 0;font:400 13px Poppins;overflow:hidden}.list-row.unread .title{color:var(--color-garnet)}.list-row.unread .preview{color:var(--fg-default);font-weight:500}.chat-thread{flex-direction:column;flex:1;padding:16px 16px 120px;display:flex;overflow-y:auto}.chat-day{text-align:center;color:var(--fg-subtle);margin:12px 0;font:500 11px Poppins}.bubble{border-radius:16px;max-width:76%;margin-bottom:4px;padding:10px 14px;font:400 14px/1.35 Poppins}.bubble.me{background:var(--color-rose);color:#fff;border-bottom-right-radius:4px;align-self:flex-end}.bubble.them{background:var(--color-gray-100);color:var(--fg-strong);border-bottom-left-radius:4px;align-self:flex-start}.bubble-meta{color:var(--fg-subtle);margin-bottom:8px;font:400 11px Poppins}.bubble.me+.bubble-meta{text-align:right}.composer{border-top:1px solid var(--border-default);padding:10px 12px calc(10px + env(safe-area-inset-bottom,0));background:#fff;align-items:center;gap:8px;display:flex;position:absolute;bottom:0;left:0;right:0}.composer input{border:1px solid var(--border-strong);background:var(--color-gray-50);border-radius:999px;outline:none;flex:1;height:40px;padding:0 14px;font:400 14px Poppins}.composer input:focus{border-color:var(--color-rose);box-shadow:var(--shadow-focus)}.composer .send{background:var(--color-rose);color:#fff;cursor:pointer;border:0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;display:flex}
