:root{color:#433a2c;--ink:#433a2c;--ink-soft:#706654;--paper:#f3f0e7;--paper-deep:#ebe3d5;--card:#fffdf8;--line:#ded3c2;--terracotta:#b45a3d;--terracotta-dark:#91452f;--terracotta-pale:#f2ddd1;--sage:#7c805b;--sage-pale:#e8e7d7;background:#f3f0e7;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,sans-serif}*{box-sizing:border-box}body{background:var(--paper);margin:0}button,input,select{font:inherit}.page,.form{max-width:620px;margin:auto;padding:16px}.page{min-height:100vh}header{height:48px;color:var(--ink);align-items:center;font-family:Songti SC,STSong,serif;font-size:18px;font-weight:700;display:flex}header>button{background:0 0;border:0;padding:0 12px 0 0;font-size:30px}.login{background:var(--paper);min-height:100dvh}.login section{background:var(--sage-pale);padding:max(28px, env(safe-area-inset-top)) 24px 25px;text-align:center;min-height:0}.login-logo{mix-blend-mode:multiply;width:min(210px,58vw);height:auto;margin:0 auto 14px;display:block}.login h1{letter-spacing:.03em;color:var(--ink);margin:0;font-family:Songti SC,STSong,serif;font-size:23px}.login section p{color:var(--ink-soft);margin:8px 0 0;font-size:13px}.login form{width:min(100%,440px);padding:28px 24px max(28px, env(safe-area-inset-bottom));margin:0 auto}.login form label{color:var(--ink);margin-bottom:18px;font-size:14px;font-weight:600;display:block}.login form input{border:1px solid var(--line);background:#faf6ed;border-radius:8px;outline:none;width:100%;height:48px;margin-top:8px;padding:0 13px;display:block}.login form input:focus{border-color:var(--terracotta);background:var(--card);box-shadow:0 0 0 3px #b45a3d1f}.login form input::placeholder{color:#a69b8a}.login form label.remember-me{cursor:pointer;align-items:center;gap:10px;display:flex}.login form .remember-me input{width:18px;height:18px;accent-color:var(--terracotta);flex-shrink:0;margin:0;padding:0}.field{margin-bottom:19px}.field label{color:var(--ink);margin-bottom:8px;font-size:14px;font-weight:600;display:block}.field-note{color:var(--ink-soft);margin-top:7px;font-size:12px;line-height:1.5;display:block}.field input,.field select{border:1px solid var(--line);background:var(--card);border-radius:5px;width:100%;height:44px;padding:0 12px}.form>button,.login form>button{background:var(--terracotta);color:#fff;border:0;border-radius:5px;width:100%;height:48px;font-weight:600}@media (height<=680px){.login section{padding-top:max(16px, env(safe-area-inset-top));padding-bottom:16px}.login-logo{width:min(150px,42vw);margin-bottom:7px}.login h1{font-size:20px}.login section p{margin-top:4px}.login form{padding-top:18px}.login .field{margin-bottom:13px}}.avatars,.choices{flex-wrap:wrap;gap:8px;display:flex}.avatars button,.choices button,.twos button{border:1px solid var(--line);background:var(--card);color:var(--ink-soft);border-radius:5px;padding:9px 12px}.avatars button{border-radius:50%;width:42px;height:42px;padding:0;font-size:20px}.selected{font-weight:600;border-color:var(--terracotta)!important;background:var(--terracotta-pale)!important;color:var(--terracotta-dark)!important}.twos{grid-template-columns:1fr 1fr;gap:8px;display:grid}.switch{width:44px!important;height:24px!important}.panel{background:var(--card);border:1px solid var(--line);border-radius:5px}.section{margin-top:22px}.heading{justify-content:space-between;align-items:center;margin-bottom:11px;display:flex}h2{color:var(--ink);margin:0;font-family:Songti SC,STSong,serif;font-size:16px}.outline{background:var(--card);border:1px solid var(--terracotta);color:var(--terracotta-dark);border-radius:5px;padding:7px 10px;font-size:13px}.row{border-bottom:1px solid #eee6da;padding:14px}.row:last-child{border:0}.course-row-title{justify-content:space-between;align-items:center;gap:10px;display:flex}.course-row-actions,.course-list-actions{gap:7px;display:flex}.course-row-title b{min-width:0}.compact-edit{flex:none;min-height:32px;padding:4px 10px}.row>.outline,.course-list-actions{margin-top:10px}.course-list-actions .outline{margin-top:0}.outline.danger{color:#994132;border-color:#b45a4b}.row b{font-size:15px}.row p,.row small,.empty{color:var(--ink-soft);margin:5px 0;font-size:13px;display:block}.row p.course-cancelled,.row small.course-cancelled{color:#994132;font-weight:600}.student-actions{flex-wrap:wrap;gap:8px;margin-top:11px;display:flex}.student-actions .outline{margin:0}.student-profile{padding:17px}.student-profile h2{margin:0;font-size:20px}.student-profile>p{color:var(--ink-soft);margin:5px 0 16px;font-size:14px}.student-profile>small{color:var(--ink-soft);margin-top:16px;font-size:12px;line-height:1.6;display:block}.student-stats{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.student-stats span{text-align:center;color:var(--ink-soft);background:#f7f0e5;border-radius:8px;padding:10px 5px;font-size:12px}.student-stats b{color:var(--terracotta-dark);margin-bottom:4px;font-size:20px;display:block}.account-alert{color:#805918;background:#fff3dc;border:1px solid #e7c99c;border-radius:11px;gap:11px;margin-top:15px;padding:14px;display:flex}.account-alert>span{color:#fff;background:#bd8130;border-radius:50%;flex:none;place-items:center;width:23px;height:23px;font-weight:800;display:grid}.account-alert b{font-size:14px}.account-alert p{margin:4px 0 0;font-size:13px;line-height:1.55}.account-alert.reminder{background:var(--sage-pale);color:#59603e;border-color:#ced0ad}.account-alert.reminder>span{background:var(--sage)}.empty{padding:14px}.summary{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.summary article{border:1px solid var(--line);background:var(--card);text-align:center;border-radius:5px;padding:14px}.summary article:first-child{background:#f4e2d7;border-color:#e5c6b7}.summary article:nth-child(2){background:#e9e9d8;border-color:#d3d4b8}.summary article:nth-child(3){background:#f3e7ce;border-color:#e5d1a9}.summary b{color:var(--terracotta-dark);font-size:23px;display:block}.summary article:nth-child(2) b{color:#657044}.summary article:nth-child(3) b{color:#9a6c20}.summary span{color:var(--ink-soft);font-size:12px}nav{border-bottom:1px solid var(--line);grid-template-columns:repeat(4,1fr);margin:0 -16px 18px;display:grid}nav button{color:var(--ink-soft);background:0 0;border:0;padding:12px 0}nav .active{border-bottom:3px solid var(--terracotta);color:var(--terracotta-dark);font-weight:700}.account-actions{z-index:2;gap:7px;display:flex;position:fixed;top:12px;right:12px}.logout,.account{border:1px solid var(--line);background:var(--card);color:var(--terracotta-dark);border-radius:5px;padding:6px 9px}.account{font-size:12px}.password-form{padding:16px}.password-hint{color:var(--ink-soft);margin:0 0 18px;font-size:13px;line-height:1.6}.password-form .password-hint:last-child{margin:15px 0 0}.credential{padding:20px;overflow:hidden}.credential-success{align-items:center;gap:12px;display:flex}.credential-success>span{background:var(--sage-pale);width:38px;height:38px;color:var(--sage);border-radius:50%;place-items:center;font-size:22px;font-weight:700;display:grid}.credential-success h2{color:var(--ink);margin:0;font-size:19px}.credential-success p{color:var(--ink-soft);margin:3px 0 0;font-size:13px}.credential-warning{color:#805918;background:#fff3dc;border-radius:8px;margin:18px 0;padding:11px 12px;font-size:13px;line-height:1.55}.credential-values{gap:9px;display:grid}.credential-values>div{background:#faf6ed;border:1px solid #e1d7c8;border-radius:9px;padding:13px 14px}.credential-values small,.credential-values strong{display:block}.credential-values small{color:var(--ink-soft);margin-bottom:5px;font-size:12px}.credential-values strong{color:var(--ink);letter-spacing:.03em;word-break:break-all;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:16px}.credential>button{width:100%;margin-top:14px}.credential>button.outline{margin-top:9px}.days{gap:8px;padding:12px 0 16px;display:flex;overflow-x:auto}.days button{border:1px solid var(--line);background:var(--card);min-height:58px;color:var(--ink-soft);border-radius:9px;flex:0 0 56px;font-size:12px;line-height:1.65}.days button.active{border-color:var(--terracotta);background:var(--terracotta);color:#fff;font-weight:700;box-shadow:0 4px 10px #b45a3d33}.date-picker{border:1px solid var(--line);background:var(--card);color:var(--ink-soft);border-radius:9px;justify-content:space-between;align-items:center;gap:12px;margin:0 0 13px;padding:10px 12px;font-size:13px;display:flex}.date-picker input{width:138px;min-height:32px;color:var(--terracotta-dark);font:inherit;text-align:right;background:0 0;border:0}.selected-day{color:var(--ink-soft);margin:0 0 10px;font-size:13px}.selected-day strong{color:var(--terracotta-dark);font-weight:700}.tabs{background:var(--sage-pale);border-radius:10px;grid-template-columns:1fr 1fr;gap:6px;padding:5px;display:grid}.tabs button{min-height:42px;color:var(--ink-soft);background:0 0;border:0;border-radius:7px;font-size:14px;font-weight:600}.tabs button.active{background:var(--card);color:var(--terracotta-dark);box-shadow:0 2px 7px #433a2c1f}.tabs+.days{margin-top:6px}.appointment-tabs{background:var(--sage-pale);border-radius:10px;grid-template-columns:repeat(3,1fr);gap:5px;padding:5px;display:grid}.appointment-tabs button{min-height:44px;color:var(--ink-soft);background:0 0;border:0;border-radius:7px;font-size:13px;font-weight:600}.appointment-tabs button.active{background:var(--card);color:var(--terracotta-dark);box-shadow:0 2px 7px #433a2c1f}.appointment-tabs small{min-width:17px;color:inherit;margin-left:3px;font-size:11px;display:inline-block}.student-tabs{grid-template-columns:repeat(3,1fr)}.student-appointment-tabs{grid-template-columns:repeat(2,1fr)}.student-appointments,.student-list{margin-top:14px}.row small.student-reminder{color:#95681f;font-weight:700}.appointment-date-group{margin-top:18px}.appointment-date-group h3{color:var(--ink-soft);margin:0 0 8px;font-size:14px}.appointment-row .appointment-student{color:var(--terracotta-dark);font-weight:600}.appointment-date-group .actions{flex-wrap:wrap;gap:8px;margin-top:11px;display:flex}.appointment-date-group .actions .outline{min-height:35px}.history-more{width:100%;color:var(--terracotta-dark);background:0 0;border:0;margin-top:14px;font-size:14px;display:block}.slots{gap:10px;display:grid}.slot{border-radius:9px;min-height:96px;overflow:hidden}.slot>div{padding:14px 14px 0}.slot b{color:var(--ink);margin-bottom:5px;display:block}.booked{text-align:center;color:#59603e;background:var(--sage-pale);border-radius:6px;margin:13px 14px 14px;padding:10px;font-size:13px;font-weight:700;display:block}.slot{display:block}.book-action{width:calc(100% - 28px);min-height:38px;margin:13px 14px 14px;font-size:14px}.cancel-action{margin-top:8px}.rule-note{color:var(--ink-soft);margin-top:7px;font-size:12px;display:block}@media (width<=640px){:root{background:var(--paper)}body,#root{min-height:100dvh}.page{max-width:none;min-height:100dvh;padding:max(14px, env(safe-area-inset-top)) 20px calc(28px + env(safe-area-inset-bottom));background:linear-gradient(145deg, #f6f2e9 0%, var(--paper) 52%, #eee7d9 100%)}header{letter-spacing:.01em;height:62px;font-size:21px}header>button{padding-right:13px;font-size:34px}.section{margin-top:28px}.heading{margin-bottom:13px}h2{font-size:18px}.panel{border:0;border-radius:17px;box-shadow:0 3px 14px #1530280e}.row{padding:17px 16px}.row b{font-size:16px}.row p,.row small,.empty{font-size:14px;line-height:1.55}.outline{border-radius:10px;min-height:42px;padding:8px 13px;font-size:14px}.compact-edit{min-height:36px;padding:5px 11px}.summary{gap:10px}.student-profile{border-radius:17px;padding:20px 17px}.credential{border-radius:17px;padding:23px 17px}.credential-success h2{font-size:21px}.credential-warning{padding:12px;font-size:14px}.credential-values>div{padding:15px}.account-alert{border-radius:13px;margin-top:18px;padding:15px}.account-alert b{font-size:15px}.account-alert p{font-size:14px}.student-stats span{padding:12px 5px;font-size:13px}.summary article{border:0;border-radius:15px;padding:17px 7px;box-shadow:0 3px 14px #1530280b}.summary b{font-size:25px}.summary span{font-size:13px}nav{z-index:1;background:#f3f0e7;margin:0 -20px 20px;padding:0 15px;position:sticky;top:0}nav button{min-height:50px;font-size:14px}.days{gap:9px;margin:0 -20px;padding:12px 20px 18px}.days button{border-radius:13px;flex-basis:62px;min-height:66px;font-size:13px}.date-picker{border-radius:13px;min-height:53px;margin-bottom:15px;padding:10px 14px;font-size:14px}.date-picker input{min-height:38px;font-size:15px}.tabs{border-radius:14px;padding:6px}.tabs button{border-radius:10px;min-height:48px;font-size:15px}.appointment-tabs{border-radius:14px;padding:6px}.appointment-tabs button{border-radius:10px;min-height:48px;font-size:14px}.slot{border-radius:17px}.slot>div{padding:18px 17px 1px}.slot b{font-size:17px}.booked,.book-action{border-radius:11px;width:calc(100% - 34px);min-height:45px;margin:15px 17px 17px;padding:12px}.booked{display:block}.account-actions{top:max(12px, env(safe-area-inset-top));right:14px}.logout,.account{border-radius:9px;min-height:36px}.login{background:var(--sage-pale);flex-direction:column;min-height:100dvh;display:flex}.login section{min-height:320px;padding:max(28px, env(safe-area-inset-top)) 28px 42px;background:var(--sage-pale);flex-direction:column;flex:1 0 43dvh;justify-content:center;align-items:center;display:flex}.login-logo{width:min(270px,70vw);margin-bottom:21px}.login h1{font-size:27px}.login section p{margin-top:10px;font-size:14px}.login form{width:100%;padding:29px 24px max(32px, env(safe-area-inset-bottom));background:var(--card);border-radius:24px 24px 0 0;margin:0;box-shadow:0 -4px 22px #433a2c14}.login form label{margin-bottom:21px;font-size:15px}.login form input{border-radius:12px;height:54px;margin-top:9px;font-size:16px}.login form>button{letter-spacing:.04em;border-radius:13px;height:54px;font-size:16px}}@media (width<=640px) and (height<=680px){.login section{flex-basis:37dvh;min-height:238px;padding-bottom:28px}.login-logo{width:min(190px,52vw);margin-bottom:10px}.login h1{font-size:23px}.login form{padding-top:22px}.login form label{margin-bottom:14px}.login form input,.login form>button{height:48px}}
