*,:after,:before{box-sizing:border-box}:root{--bg:#111827;--surface:#1a2235;--surface2:#202b3d;--surface3:#263045;--border:hsla(0,0%,100%,.07);--border-med:hsla(0,0%,100%,.11);--accent:#6366f1;--accent-light:#818cf8;--accent-faint:rgba(99,102,241,.1);--accent-border:rgba(99,102,241,.2);--green:#22c55e;--green-faint:rgba(34,197,94,.1);--green-border:rgba(34,197,94,.2);--red:#ef4444;--red-faint:rgba(239,68,68,.08);--red-border:rgba(239,68,68,.18);--amber:#f59e0b;--amber-faint:rgba(245,158,11,.1);--amber-border:rgba(245,158,11,.2);--text:#e2e8f0;--text-sub:#8b9db5;--text-muted:#4b5563;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:18px;--radius-pill:999px;--ease-out:cubic-bezier(0.22,1,0.36,1);--ease-spring:cubic-bezier(0.34,1.56,0.64,1);--dur-fast:100ms;--dur-base:180ms;--dur-slow:300ms}html{text-size-adjust:100%}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior:none}.app-root,body{background:var(--bg);color:var(--text)}.app-root{min-height:100vh;min-height:100dvh}.phone-island-cover{display:none}@media (min-width:500px){html{min-height:100vh;background:#0d0d14;display:flex;align-items:center;justify-content:center}body{margin:0;background:transparent}.app-root{position:relative;width:390px!important;height:844px!important;min-height:unset!important;border-radius:44px;overflow:hidden;background:var(--bg);flex-shrink:0;transform:translateZ(0);box-shadow:0 0 0 1px hsla(0,0%,100%,.1),0 0 0 10px #18181f,0 0 0 11px hsla(0,0%,100%,.05),0 40px 100px rgba(0,0,0,.8),0 0 140px rgba(99,102,241,.07)}.app-root:before{content:"";position:absolute;top:12px;left:50%;transform:translateX(-50%);width:122px;height:36px;background:#000;border-radius:20px;z-index:10000;pointer-events:none;box-shadow:0 0 0 1px hsla(0,0%,100%,.06)}.phone-island-cover{display:block;position:fixed;top:0;left:0;right:0;height:60px;background:var(--bg);z-index:9998;pointer-events:none}.phone-scroll{width:100%;height:100%;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;padding-top:60px;padding-bottom:76px;box-sizing:border-box}.phone-scroll::-webkit-scrollbar{display:none}.phone-scroll>*,.phone-scroll>*>div:first-child,.phone-scroll>*>main{width:100%!important;max-width:100%!important;min-width:0!important;min-height:unset!important;margin-left:0!important;margin-right:0!important;box-sizing:border-box}}::-webkit-scrollbar{width:3px;height:3px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.12);border-radius:4px}:focus{outline:none}:focus-visible{outline:2px solid var(--accent-border);outline-offset:2px;border-radius:6px}@keyframes spin{to{transform:rotate(1turn)}}@keyframes shimmer{0%{background-position:-600px 0}to{background-position:600px 0}}@keyframes tabFadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes cardSlideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes backdropIn{0%{opacity:0}to{opacity:1}}@keyframes modalSlideUp{0%{opacity:0;transform:translateY(20px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes overlaySlideIn{0%{opacity:0;transform:translateX(24px)}to{opacity:1;transform:translateX(0)}}@keyframes toastIn{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes toastProgress{0%{width:100%}to{width:0}}@keyframes badgePulse{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}@keyframes numberIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.tab-content{animation:tabFadeIn var(--dur-base) var(--ease-out) both}.card-enter{animation:cardSlideUp var(--dur-base) var(--ease-out) both}.overlay-slide{animation:overlaySlideIn var(--dur-slow) var(--ease-out) both}.fade-in{animation:fadeIn var(--dur-base) ease both}.badge-pulse{animation:badgePulse 2.4s ease-in-out infinite}.number-in{animation:numberIn var(--dur-base) var(--ease-out) both}.stagger-children>:first-child{animation-delay:0ms}.stagger-children>:nth-child(2){animation-delay:40ms}.stagger-children>:nth-child(3){animation-delay:80ms}.stagger-children>:nth-child(4){animation-delay:.12s}.stagger-children>:nth-child(5){animation-delay:.16s}.stagger-children>:nth-child(n+6){animation-delay:.2s}.nav-tabs{display:flex;background:var(--surface);border-bottom:1px solid var(--border);position:-webkit-sticky;position:sticky;top:0;z-index:30}.nav-tab{flex:1 1;padding:10px 4px 9px;text-align:center;font-size:10px;font-weight:600;color:var(--text-muted);background:none;border:none;border-bottom:2px solid transparent;letter-spacing:.3px;cursor:pointer;position:relative;transition:color var(--dur-base) var(--ease-out),border-color var(--dur-base) var(--ease-out);-webkit-tap-highlight-color:transparent}.nav-tab:active{opacity:.7}.nav-tab.active{color:var(--accent-light);border-bottom-color:var(--accent);font-weight:700}.bottom-nav{position:fixed;bottom:0;left:0;right:0;max-width:100%;margin:0;display:flex;gap:5px;padding:8px 10px calc(8px + env(safe-area-inset-bottom));background:var(--surface);border-top:1px solid var(--border);z-index:50}.bottom-nav-tab{flex:1 1;padding:6px 2px;border:1px solid transparent;border-radius:var(--radius-md);background:transparent;color:var(--text-muted);font-weight:600;font-size:9px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;line-height:1.2;min-width:0;overflow:hidden;transition:background var(--dur-fast) ease,color var(--dur-fast) ease;-webkit-tap-highlight-color:transparent}.bottom-nav-tab .nav-icon{font-size:18px;line-height:1;display:block}.bottom-nav-tab .nav-label{display:block;width:100%;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bottom-nav-tab:active{opacity:.7}.bottom-nav-tab.active{background:var(--accent-faint);border-color:var(--accent-border);color:var(--accent-light);font-weight:700}.section-title{display:flex;align-items:center;gap:8px;font-size:10px;font-weight:700;color:var(--text-muted);letter-spacing:1px;text-transform:uppercase;margin-bottom:10px}.section-title:before{content:"";display:block;width:2px;height:12px;border-radius:2px;background:var(--accent);flex-shrink:0}.spinner{width:32px;height:32px;border-radius:50%;border:2px solid hsla(0,0%,100%,.08);border-top:2px solid var(--accent);animation:spin .8s linear infinite}.skeleton{border-radius:var(--radius-md);background:linear-gradient(90deg,hsla(0,0%,100%,.04) 25%,hsla(0,0%,100%,.07) 50%,hsla(0,0%,100%,.04) 75%);background-size:800px 100%;animation:shimmer 1.6s ease-in-out infinite}.page-loading{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--bg);gap:14px;z-index:100}.page-loading__spinner{width:40px;height:40px;border-radius:50%;border:2px solid hsla(0,0%,100%,.08);border-top:2px solid var(--accent);animation:spin .8s linear infinite}.page-loading__text{font-size:13px;color:var(--text-muted);font-weight:500}.page-error{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:var(--bg);padding:24px}.page-error__card{background:var(--surface);border:1px solid var(--red-border);border-radius:var(--radius-xl);padding:28px 24px;text-align:center;max-width:320px;width:100%}.page-error__icon{font-size:32px;margin-bottom:12px}.page-error__message{color:#f87171;font-weight:600;font-size:14px;line-height:1.5;margin-bottom:16px}.page-error__retry{display:inline-flex;align-items:center;gap:6px;padding:9px 18px;border-radius:var(--radius-md);border:1px solid var(--red-border);background:var(--red-faint);color:#fca5a5;font-size:13px;font-weight:600;cursor:pointer;transition:opacity var(--dur-fast) ease}.page-error__retry:hover{opacity:.8}.page-error__retry:active{opacity:.6}button{cursor:pointer;transition:opacity var(--dur-fast) ease,transform var(--dur-fast) ease;-webkit-tap-highlight-color:transparent}button:active:not(:disabled){transform:scale(.97)}button:disabled{cursor:not-allowed;opacity:.45}.primary-button{width:100%;padding:12px 16px;border-radius:var(--radius-md);border:none;background:var(--accent);color:#fff;font-weight:700;font-size:14px;letter-spacing:.1px;transition:opacity var(--dur-fast) ease,transform var(--dur-fast) ease}.primary-button:hover:not(:disabled){opacity:.88}.primary-button:active:not(:disabled){opacity:.78;transform:scale(.98)}.secondary-button{width:100%;padding:12px 16px;border-radius:var(--radius-md);border:none;background:var(--surface2);color:var(--text);font-weight:600;font-size:14px;transition:opacity var(--dur-fast) ease}.secondary-button:hover:not(:disabled){opacity:.82}.ghost-chip{padding:7px 13px;border-radius:var(--radius-md);border:1px solid var(--border-med);background:transparent;color:var(--text-sub);font-weight:600;font-size:12px;transition:border-color var(--dur-fast) ease,color var(--dur-fast) ease,background var(--dur-fast) ease}.ghost-chip:hover:not(:disabled){border-color:var(--accent-border);color:var(--accent-light);background:var(--accent-faint)}.card{background:var(--surface);border-radius:var(--radius-lg);border:1px solid var(--border);padding:16px}.card-hover{transition:background var(--dur-fast) ease;cursor:pointer}.card-hover:hover{background:var(--surface2)}.card-hover:active{opacity:.85}.tab-header{display:flex;gap:6px;margin-bottom:16px}.tab-button{flex:1 1;padding:9px 12px;border-radius:var(--radius-pill);border:1px solid var(--border);background:transparent;color:var(--text-muted);font-weight:600;font-size:13px;transition:all var(--dur-base) ease}.tab-button--active{background:var(--accent);border-color:transparent;color:#fff}.input{width:100%;padding:9px 12px;border-radius:var(--radius-md);border:1px solid var(--border-med);background:var(--surface2);color:var(--text);font-size:13px;outline:none;transition:border-color var(--dur-fast) ease;-webkit-appearance:none}.input:focus{border-color:var(--accent-border)}.input::placeholder{color:var(--text-muted)}.input-error{border-color:var(--red-border)!important}select.input option{background:var(--surface2);color:var(--text)}.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.6);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;z-index:100;padding:16px;animation:backdropIn var(--dur-base) ease both}.modal{width:100%;max-width:440px;background:var(--surface);border-radius:var(--radius-xl);border:1px solid var(--border-med);padding:22px;animation:modalSlideUp var(--dur-slow) var(--ease-out) both;max-height:80vh;overflow-y:auto}@media (min-width:500px){.modal{max-height:700px}}.modal-title{margin:0 0 16px;font-size:16px;font-weight:700;color:var(--text);letter-spacing:-.2px}.modal-actions{display:flex;gap:8px;margin-top:16px}.status-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:var(--radius-pill);font-size:10px;font-weight:600;letter-spacing:.2px}.status-paid{background:var(--green-faint);color:#4ade80;border:1px solid var(--green-border)}.status-unpaid{background:var(--red-faint);color:#f87171;border:1px solid var(--red-border)}.status-planned{background:var(--accent-faint);color:var(--accent-light);border:1px solid var(--accent-border)}.status-cancelled{background:rgba(75,85,99,.12);color:#6b7280;border:1px solid rgba(75,85,99,.2)}.lesson-card{background:var(--surface);border-radius:var(--radius-lg);border:1px solid var(--border);border-left:3px solid var(--accent);padding:14px 16px;margin-bottom:8px;transition:background var(--dur-fast) ease}.lesson-card.is-paid{border-left-color:var(--green)}.lesson-card.is-cancelled{border-left-color:#4b5563;opacity:.6}.lesson-card.is-guest{border-left-color:#8b5cf6}.muted{font-size:13px;color:var(--text-muted)}.divider{height:1px;background:var(--border);margin:12px 0}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}