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