@import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Noto+Sans+SC:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,500;0,600;1,500;1,600&display=swap');
:root { --ink:#27362f; --muted:#718078; --paper:#f8f4ee; --white:#fffdfa; --sage:#dce8dd; --mint:#5b9272; --peach:#f6c9aa; --lav:#dcd6ef; --yellow:#f4dc8a; --line:#e6dfd5; --danger:#d47968; --mono:'DM Mono',monospace; --sans:'Noto Sans SC',sans-serif; --serif:'Playfair Display','Noto Serif SC',serif; }
.tabbar{padding-left:7px!important;padding-right:7px!important}.nav-item{min-width:43px!important;position:relative}.nav-notice{position:absolute;width:6px;height:6px;border-radius:50%;background:#d17a65;top:1px;right:5px;border:1px solid #fffdfa}.feedback-peek{display:flex;width:100%;align-items:center;gap:8px;background:#fff0e7;color:#855d42;border-radius:13px;padding:11px 13px;margin:-5px 0 16px;text-align:left;font-size:11px}.feedback-peek span{font-size:16px}.feedback-peek b{flex:1}.feedback-peek i{font-style:normal;font-size:10px}.feedback-card{background:#fffdfa;border:1px solid var(--line);border-radius:19px;padding:16px;margin-bottom:12px}.feedback-card-head{display:flex;align-items:center;gap:9px}.teacher-mini{background:#f6d6bf;color:#8b5b42}.feedback-card-head div{flex:1}.feedback-card-head b{display:block;font-size:12px}.feedback-card-head small{display:block;font-size:10px;color:var(--muted);margin-top:2px}.feedback-seal{font:9px var(--mono);color:#b17550}.teacher-voice{display:flex;align-items:center;gap:9px;width:100%;padding:10px 11px;background:#e7f0e7;color:#426b50;border-radius:11px;margin:13px 0 11px;text-align:left}.teacher-voice span{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:#5b9272;color:#fff;font-size:9px}.teacher-voice i{letter-spacing:2px;font:15px/1 var(--mono);font-style:normal}.teacher-voice b{font:10px var(--mono);margin-left:auto}.feedback-card>p{font-size:12px;line-height:1.7;margin:0;color:#526058}.feedback-foot{margin-top:12px;padding-top:10px;border-top:1px solid #f0ece6;color:#728277;font-size:10px}.empty-feedback{text-align:center;background:#fffdfa;border:1px solid var(--line);border-radius:20px;padding:39px 24px}.empty-feedback>span{font:44px var(--serif);color:#8dac96}.empty-feedback h3{font-size:15px;margin:8px 0}.empty-feedback p{font-size:11px;line-height:1.65;color:var(--muted)}.profile-hero{position:relative}.edit-profile-button{margin-left:auto;background:#eef3ed;color:#507660;border-radius:9px;padding:7px 9px;font-size:10px}.profile-editor{background:#f0f5ef;border-radius:18px;padding:15px;margin-top:13px}.edit-title{display:flex;justify-content:space-between;margin-bottom:12px}.edit-title span{font-size:12px;font-weight:700}.edit-title small{font-size:9px;color:var(--muted)}.profile-editor label{display:block;font-size:10px;color:var(--muted);margin-bottom:9px}.profile-editor input{display:block;width:100%;margin-top:5px;border:1px solid #dbe4da;background:#fffdfa;border-radius:8px;padding:8px 9px;color:var(--ink);font-size:12px;outline-color:#7aa187}.save-profile{width:100%;margin-top:3px;border-radius:9px;padding:9px;background:#5b9272;color:#fff;font-size:11px;font-weight:700}.voice-review-note{font-size:11px;color:var(--muted);margin:-4px 2px 10px}.teacher-record-line{display:flex;align-items:center;gap:9px;margin-top:9px}.teacher-record-button{border-radius:9px;padding:8px 9px;background:#f7e6d9;color:#96613e;font-size:10px;font-weight:700}.teacher-record-status{font-size:9px;color:var(--muted)}.teacher-audio-preview{width:100%;height:27px;margin-top:8px}
.access-rule{display:flex;gap:9px;background:#edf4ed;border-radius:14px;padding:10px 11px;margin:0 0 17px;color:#52705b}.access-rule>span{font:20px var(--serif)}.access-rule p{margin:0;font-size:10px;line-height:1.55}.access-rule b{font-size:11px}.avatar-photo{width:100%;height:100%;display:block;border-radius:inherit;object-fit:cover}.photo-picker{display:flex;gap:12px;align-items:center;background:rgba(255,255,255,.45);border-radius:11px;padding:9px;margin-bottom:12px}.photo-preview{width:48px;height:48px;border-radius:50%;overflow:hidden;flex:0 0 auto}.photo-preview .avatar{width:100%;height:100%;display:grid;place-items:center}.photo-picker b{font-size:11px}.photo-picker p{margin:2px 0 6px;font-size:9px;color:var(--muted)}.upload-photo{display:inline-block!important;background:#e2ecdf;color:#42684f!important;border-radius:7px;padding:5px 8px;font-size:9px!important;margin:0!important}.upload-photo input{display:none!important}.classroom-card{background:#fffdfa;border:1px solid var(--line);border-radius:18px;padding:15px;margin-top:13px}.classroom-card>div:first-child{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px}.classroom-card>div:first-child b{font-size:13px}.classroom-card>div:first-child span{font-size:9px;color:var(--muted)}.classroom-card>p{font-size:11px;color:var(--muted);line-height:1.55;margin:5px 0}.class-member{display:flex;align-items:center;gap:9px;padding:9px 0;border-top:1px solid #f0ece6}.class-member>span:nth-child(2){flex:1}.class-member b{display:block;font-size:11px}.class-member small{display:block;font:9px var(--mono);color:var(--muted);margin-top:2px}.class-member i{font-size:9px;color:#598468;font-style:normal}
.profile-card .profile-hero>.avatar{width:50px;height:50px;flex:0 0 50px;overflow:hidden;display:grid;place-items:center}.profile-card .profile-hero>.avatar-photo{width:50px;height:50px;flex:0 0 50px;border-radius:50%;object-fit:cover}.reminder-banner{background:#c95f57;color:#fff8f4;border-radius:16px;padding:13px 14px;margin-bottom:14px;box-shadow:0 8px 18px rgba(178,67,58,.2);animation:rise .35s ease}.reminder-banner div{display:flex;align-items:center;gap:8px}.reminder-banner div span{width:19px;height:19px;display:grid;place-items:center;border-radius:50%;background:#fff4ee;color:#c95f57;font-weight:700}.reminder-banner b{font-size:13px}.reminder-banner p{font-size:10px;line-height:1.55;margin:7px 0}.reminder-banner button{background:#fff8f4;color:#a44843;border-radius:8px;padding:6px 9px;font-size:10px;font-weight:700}.rank-empty{padding:24px;text-align:center;color:var(--muted);font-size:11px}
.sheet-open{overflow:hidden}.sheet-backdrop{position:fixed;z-index:20;inset:0;background:rgba(30,39,33,.44);display:flex;align-items:flex-end;justify-content:center;animation:fade-in .22s ease}.expression-sheet{width:min(100%,470px);max-height:80vh;overflow:auto;position:relative;background:#fffdfa;border-radius:27px 27px 0 0;padding:11px 21px 30px;box-shadow:0 -12px 38px rgba(23,38,29,.17);animation:sheet-up .3s cubic-bezier(.22,.8,.3,1)}.sheet-handle{width:39px;height:4px;border-radius:9px;background:#d9d5cf;margin:0 auto 16px}.sheet-close{position:absolute;right:16px;top:15px;width:26px;height:26px;border-radius:50%;background:#eff2ed;color:#607267;font-size:20px;line-height:22px}.sheet-label{font:10px var(--mono);letter-spacing:1px;color:#728578;margin:0}.expression-sheet h2{font:500 25px/1.25 var(--serif);letter-spacing:-.4px;margin:7px 35px 15px;color:var(--ink)}.meaning-block{background:#eff5ed;border-radius:14px;padding:12px 13px;margin-bottom:18px}.meaning-block span{font:9px var(--mono);letter-spacing:.7px;color:#668371}.meaning-block p{font:12px/1.65 var(--sans);margin:5px 0 0;color:#476050}.examples-heading{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:7px}.examples-heading h3{margin:0;font-size:14px}.examples-heading span{font:9px var(--mono);color:var(--muted)}.scene-example{position:relative;border-top:1px solid #ede8e1;padding:11px 33px 11px 0}.scene-example>div{display:flex;align-items:center;gap:7px}.scene-example>div span{font:10px var(--mono);color:#bd8663}.scene-example small{font-size:10px;color:#7a877e}.scene-example p{font:12px/1.6 var(--sans);margin:5px 0 0;color:#37443c}.scene-example button{position:absolute;right:0;top:18px;width:25px;height:25px;border-radius:50%;background:#f8eee5;color:#a46743;font-size:11px}.hidden{display:none!important}@keyframes fade-in{from{opacity:0}to{opacity:1}}@keyframes sheet-up{from{transform:translateY(100%)}to{transform:translateY(0)}}
* { box-sizing:border-box; }
.privacy-consent{display:flex;align-items:center;flex-wrap:wrap;gap:5px;margin:13px 1px 0;color:var(--muted);font-size:10px;line-height:1.5}.privacy-consent input{width:15px;height:15px;margin:0;accent-color:#5b9272}.privacy-consent button{padding:0;background:transparent;color:#507660;text-decoration:underline;font-size:10px}.privacy-sheet{padding-bottom:35px}.privacy-copy{font-size:12px;line-height:1.75;color:#476050}.privacy-copy p{margin:10px 0}.privacy-copy ul{margin:8px 0;padding-left:20px}.privacy-copy li{margin:7px 0}.privacy-copy b{color:#2f4a3b}
body { margin:0; min-height:100vh; background:#eae6df; color:var(--ink); font-family:var(--sans); }
button,input,textarea { font:inherit; } button { cursor:pointer; border:0; } .hidden { display:none!important; }
.app-shell { width:min(100%,470px); min-height:100vh; margin:auto; background:var(--paper); position:relative; overflow:hidden; box-shadow:0 0 35px rgba(45,54,44,.11); }
.login-view { min-height:100vh; padding:42px 29px 30px; display:flex; flex-direction:column; justify-content:space-between; }
.login-art { height:245px; background:linear-gradient(135deg,#dbe9dd,#efd6c1); border-radius:32px 32px 90px 32px; overflow:hidden; position:relative; isolation:isolate; }
.sun { position:absolute; width:144px; height:144px; border-radius:50%; background:#f7bc77; right:-24px; top:-26px; opacity:.94; }
.leaf { position:absolute; z-index:1; border-radius:90% 10% 90% 10%; background:#76a58a; transform:rotate(29deg); }.leaf-one{width:70px;height:142px;bottom:-28px;left:34px}.leaf-two{width:46px;height:94px;bottom:18px;left:98px;transform:rotate(66deg);background:#4e7b64}
.art-card { position:absolute; z-index:2; right:38px; top:63px; width:160px; height:138px; background:#fffdf8; border-radius:7px 28px 7px 28px; padding:23px 18px; box-shadow:8px 8px 0 rgba(70,96,76,.12); transform:rotate(-5deg); }.art-card i { display:block; height:3px; width:38px; background:#d4b59a; margin:0 0 10px; }.art-card i:nth-child(2){width:66px}.art-card i:nth-child(3){width:26px}.art-card b{font:500 17px/1.15 var(--mono);display:block;margin-top:6px}
.login-copy { padding-top:18px; }.eyebrow { margin:0; font:500 10px/1.4 var(--mono); letter-spacing:1.2px; color:var(--muted); }.login-copy h1 { margin:10px 0 12px; font-size:28px; line-height:1.35; letter-spacing:-1px; }.login-copy h1 em { font-family:var(--serif); font-weight:500; color:#5a806a; }.login-intro { font-size:13px; color:var(--muted); line-height:1.75; margin:0 0 20px; }.role-picker{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:20px}.role-choice{background:transparent;border:1px solid var(--line);padding:12px 8px;border-radius:14px;color:var(--muted);font-size:13px}.role-choice.active{background:#e4eee5;border-color:#a2bba8;color:#315840;font-weight:700}.role-choice span{margin-right:5px}.phone-label{font-size:12px;font-weight:600}.phone-field{display:flex;gap:10px;align-items:center;border-bottom:1px solid #abb6ad;padding:9px 0 10px;margin-top:4px}.phone-field span{font:12px var(--mono);color:var(--muted);padding-right:10px;border-right:1px solid var(--line)}.phone-field input{border:0;background:transparent;outline:0;width:100%;font:15px var(--mono);color:var(--ink)}.sms-code-row{display:flex;gap:9px;align-items:center;margin-top:12px}.sms-code-row input{min-width:0;flex:1;border:1px solid #dce2da;background:#fffdfa;border-radius:10px;padding:11px 12px;color:var(--ink);font:13px var(--mono);letter-spacing:.7px;outline-color:#7aa187}.sms-code-row button{flex:0 0 auto;background:#e6efe5;color:#41684e;border-radius:10px;padding:11px 10px;font-size:11px;font-weight:700;white-space:nowrap}.sms-code-row button:disabled{opacity:.55}.primary-button{margin-top:14px;background:var(--ink);color:#fffdf8;width:100%;border-radius:14px;padding:14px 18px;text-align:left;font-size:14px;font-weight:600;box-shadow:0 7px 14px rgba(39,54,47,.17)}.primary-button:disabled{opacity:.6}.primary-button span{float:right;font:20px/16px var(--mono)}.small-note{text-align:center;font-size:10px;color:#9aa49d;margin:14px 0 0}
.dashboard{padding:27px 20px 88px;min-height:100vh}.topbar{display:flex;justify-content:space-between;align-items:center;margin:0 2px 22px}.topbar h2{font-size:21px;margin:5px 0 0;letter-spacing:-.5px}.wave{color:var(--mint)}.avatar{width:38px;height:38px;border-radius:50%;background:var(--lav);color:#5b5576;font:500 14px var(--mono)}.teacher-avatar{background:#f6d6bf;color:#8b5b42}.page-content{animation:rise .35s ease}.tabbar{position:absolute;z-index:5;bottom:0;left:0;right:0;padding:11px 16px 14px;display:flex;justify-content:space-around;background:rgba(255,253,250,.91);backdrop-filter:blur(12px);border-top:1px solid rgba(230,223,213,.75)}.nav-item{background:transparent;color:#9aa49d;font-size:10px;display:flex;flex-direction:column;align-items:center;gap:3px;min-width:53px}.nav-item span{font:20px/20px var(--mono)}.nav-item.active{color:#3f7358;font-weight:700}.streak-banner{border-radius:18px;background:linear-gradient(110deg,#446e59,#6c9b7c);color:white;padding:15px 17px;position:relative;overflow:hidden;margin-bottom:19px}.streak-banner:after{content:'⌁';position:absolute;font:120px var(--serif);right:-15px;top:-39px;color:rgba(255,255,255,.11)}.streak-banner small{font:10px var(--mono);letter-spacing:.8px;color:#d4e7d7}.streak-banner strong{display:block;font:500 28px/1.1 var(--serif);margin-top:3px}.streak-banner p{font-size:11px;margin:5px 0 0;color:#e1eee2}.section-heading{display:flex;align-items:end;justify-content:space-between;margin:2px 2px 11px}.section-heading h3{font-size:16px;margin:0;letter-spacing:-.5px}.section-heading span{font:10px var(--mono);color:var(--muted)}.expression-card{border-radius:20px;padding:17px 17px 15px;margin-bottom:12px;position:relative;overflow:hidden}.expression-card.daily{background:#f5ddc9}.expression-card.business{background:#ded9ed}.expression-card:after{content:'';position:absolute;border:1px solid rgba(255,255,255,.68);border-radius:50%;height:110px;width:110px;right:-45px;top:-55px}.expression-type{font:10px var(--mono);letter-spacing:.9px;text-transform:uppercase;opacity:.65}.expression-card h4{font:500 21px/1.31 var(--serif);margin:12px 31px 7px 0;letter-spacing:-.3px}.expression-card .translation{font-size:13px;margin:0;color:rgba(39,54,47,.75)}.expression-footer{display:flex;justify-content:space-between;align-items:center;margin-top:18px}.listen-button,.details-button{background:rgba(255,255,255,.5);color:var(--ink);border-radius:50px;padding:7px 10px;font-size:11px}.details-button{background:transparent;padding-right:0;color:#56745f}.listen-button span{margin-right:3px}.record-panel{margin-top:21px;background:var(--white);border:1px solid var(--line);border-radius:20px;padding:17px}.record-top{display:flex;justify-content:space-between;align-items:center}.record-title{font-size:14px;font-weight:700}.record-hint{font-size:11px;color:var(--muted);margin:3px 0 12px}.record-area{background:#f5f1eb;border-radius:13px;min-height:64px;display:flex;align-items:center;justify-content:center;gap:5px;transition:.2s}.sound-bar{display:block;width:3px;height:9px;background:#84a68f;border-radius:3px;animation:pulse 1s ease-in-out infinite}.sound-bar:nth-child(2){height:18px;animation-delay:.14s}.sound-bar:nth-child(3){height:28px;animation-delay:.27s}.sound-bar:nth-child(4){height:15px;animation-delay:.4s}.sound-bar:nth-child(5){height:22px;animation-delay:.52s}.sound-bar:nth-child(6){height:10px;animation-delay:.65s}.record-area.is-recording .sound-bar{background:#d27669;animation-duration:.52s}.record-control{width:42px;height:42px;background:#5a9273;border-radius:50%;color:#fff;font-size:18px}.record-actions{display:flex;align-items:center;justify-content:space-between;margin-top:13px}.record-status{font:11px var(--mono);color:var(--muted)}.submit-button{background:#e4eee5;color:#315840;border-radius:10px;padding:9px 13px;font-size:12px;font-weight:700}.submit-button:disabled{opacity:.5}.audio-preview{width:100%;height:30px;margin-top:10px}.complete-line{display:flex;gap:8px;align-items:center;margin:17px 4px 0;color:#597d65;font-size:12px;font-weight:600}.check-bubble{background:#deebdf;border-radius:50%;width:21px;height:21px;display:grid;place-items:center}.calendar-card{background:var(--white);border:1px solid var(--line);border-radius:20px;padding:17px}.calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.calendar-header h3{font:500 19px var(--serif);margin:0}.month-switch{background:transparent;color:var(--muted);font-size:18px}.calendar-week,.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;gap:8px}.calendar-week{font:9px var(--mono);color:#9aa49d;margin-bottom:7px}.date-cell{height:31px;display:grid;place-items:center;border-radius:50%;font:12px var(--mono);color:#a8b0aa;background:transparent;position:relative}.date-cell.completed{background:#609374;color:#fff;font-weight:600}.date-cell.completed.repaired{background:#d7a278;color:#fff}.date-cell.today{box-shadow:inset 0 0 0 1px #61776a}.date-cell.future{color:#d8d8d4}.date-cell.empty{visibility:hidden}.calendar-legend{display:flex;gap:12px;align-items:center;color:var(--muted);font-size:10px;margin-top:16px}.dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:4px}.dot.checked{background:#609374}.dot.repaired{background:#d7a278}.makeup-note{margin-top:15px;border-radius:12px;background:#faf0e6;padding:11px 12px;color:#875f42;font-size:11px;line-height:1.55}.makeup-note button{color:#875f42;background:transparent;text-decoration:underline;padding:0;font-size:11px}.rank-card{background:var(--white);border:1px solid var(--line);border-radius:19px;overflow:hidden}.rank-person{display:grid;grid-template-columns:34px 38px 1fr auto;align-items:center;gap:8px;padding:13px 15px;border-bottom:1px solid #f0ece6;font-size:12px}.rank-person:last-child{border:0}.rank-num{font:12px var(--mono);color:#a2aaa4}.rank-person:nth-child(1) .rank-num{color:#c5902e;font-size:17px}.rank-avatar{width:32px;height:32px;display:grid;place-items:center;border-radius:50%;background:#e6e0f0;color:#696080;font:11px var(--mono)}.rank-person.me{background:#edf5ed}.rank-meta strong{display:block;font-size:12px}.rank-meta small{font-size:10px;color:var(--muted)}.rank-days{color:#d07652;font:12px var(--mono)}.profile-card{background:var(--white);border:1px solid var(--line);border-radius:20px;padding:19px}.profile-hero{display:flex;align-items:center;gap:12px;margin-bottom:16px}.profile-hero .avatar{width:49px;height:49px}.profile-hero h3{font-size:16px;margin:0}.profile-hero p{font:10px var(--mono);color:var(--muted);margin:3px 0}.profile-stat{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);padding-top:14px;text-align:center}.profile-stat b{display:block;font:22px var(--serif);color:#537a61}.profile-stat span{font-size:10px;color:var(--muted)}.settings-list{margin-top:15px}.setting-row{display:flex;justify-content:space-between;padding:13px 1px;border-bottom:1px solid #f0ece6;font-size:12px}.setting-row button{background:transparent;color:var(--muted);font-size:12px;padding:0}.logout{color:#c36f61!important}
.teacher-summary{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:19px}.summary-tile{padding:15px;border-radius:17px;background:#e1ece2}.summary-tile:nth-child(2){background:#f4dfcf}.summary-tile span{display:block;font-size:10px;color:var(--muted)}.summary-tile strong{font:500 25px var(--serif);display:block;margin-top:3px}.progress-track{height:5px;background:rgba(255,255,255,.65);border-radius:9px;margin-top:10px;overflow:hidden}.progress-track i{display:block;background:#5a9273;height:100%;border-radius:9px}.teacher-callout{background:#4a725d;color:#fff;border-radius:19px;padding:18px;margin-bottom:20px;position:relative;overflow:hidden}.teacher-callout:after{content:'◌';font:150px var(--serif);position:absolute;right:-20px;top:-50px;color:rgba(255,255,255,.1)}.teacher-callout h3{font-size:16px;margin:0 0 4px}.teacher-callout p{font-size:11px;color:#dae8da;margin:0 0 13px}.teacher-callout button{background:#fff;color:#41644f;padding:9px 13px;border-radius:9px;font-size:11px;font-weight:700}.student-row{display:flex;align-items:center;gap:10px;padding:12px 3px;border-bottom:1px solid var(--line)}.student-row:last-child{border:0}.status-ring{width:9px;height:9px;border-radius:50%;background:#d7d8d5}.status-ring.done{background:#70a17e}.status-ring.waiting{background:#dfa16c}.student-row .rank-avatar{flex:0 0 33px}.student-details{flex:1}.student-details b{display:block;font-size:12px}.student-details small{font-size:10px;color:var(--muted)}.status-label{font-size:10px;color:#a2aaa4}.status-label.done{color:#5d8c6a}.status-label.waiting{color:#b57342}.review-card{background:var(--white);border:1px solid var(--line);border-radius:18px;padding:15px;margin-bottom:11px}.review-head{display:flex;align-items:center;gap:9px}.review-head .student-details{line-height:1.2}.review-head button{background:#e4eee5;color:#315840;padding:7px 9px;border-radius:8px;font-size:10px;font-weight:700}.review-audio{width:100%;height:28px;margin:9px 0}.feedback-box{width:100%;resize:none;background:#f7f3ed;border:0;border-radius:10px;padding:9px;font-size:11px;outline:0}.feedback-save{background:transparent;color:#557960;padding:7px 0 0;font-size:11px;font-weight:700}.roster-calendar{background:var(--white);border:1px solid var(--line);border-radius:18px;padding:14px;overflow:auto}.roster-table{width:100%;border-collapse:collapse;text-align:center;font-size:10px}.roster-table th{font-weight:500;color:var(--muted);padding:4px}.roster-table td{padding:10px 4px;border-top:1px solid #f0ece6}.roster-name{text-align:left!important;font-weight:600}.mini-check{color:#5b9272}.mini-miss{color:#c4c7c3}.toast{position:fixed;left:50%;bottom:88px;transform:translate(-50%,18px);background:#27362f;color:white;border-radius:20px;padding:9px 14px;font-size:11px;opacity:0;transition:.25s;pointer-events:none;z-index:9;white-space:nowrap}.toast.show{opacity:1;transform:translate(-50%,0)}@keyframes pulse{50%{transform:scaleY(.45);opacity:.55}}@keyframes rise{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}@media(min-width:600px){.app-shell{min-height:850px;margin:25px auto;border-radius:32px}.login-view{min-height:850px}.tabbar{border-radius:0 0 32px 32px}}
.daily-phrase-manager{padding:16px;margin-top:14px}.phrase-manager-note{margin:0 0 12px;color:var(--muted);font-size:10px;line-height:1.55}.daily-phrase-manager .phrase-field{display:block;margin:0 0 12px}.daily-phrase-manager .phrase-field>span{display:block;margin-bottom:5px;color:#516159;font-size:11px;font-weight:700}.daily-phrase-manager .phrase-field input,.daily-phrase-manager .phrase-field textarea{display:block;width:100%;border:1px solid #dbe4da;background:#fffdfa;border-radius:9px;padding:9px 10px;color:var(--ink);font-size:12px;line-height:1.45;outline-color:#7aa187}.daily-phrase-manager .phrase-field textarea{min-height:58px;resize:vertical}.phrase-publish-row{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #eee9e1;padding-top:12px;margin:2px 0 8px;font-size:11px;color:#516159}.phrase-publish-row input{width:17px;height:17px;accent-color:#5b9272}
.checkin-stats-card{margin:0 0 20px;border:1px solid var(--line);border-radius:20px;background:var(--white);overflow:hidden}.checkin-stat-grid{display:grid;grid-template-columns:1fr 1fr}.checkin-stat{min-height:126px;padding:16px 14px 14px;position:relative}.checkin-stat+ .checkin-stat{border-left:1px solid var(--line)}.checkin-stat span{display:block;font:10px var(--mono);letter-spacing:.7px;color:var(--muted)}.checkin-stat strong{display:block;margin:9px 0 6px;font:500 27px/1 var(--serif);color:#355d46;letter-spacing:-.4px}.checkin-stat strong em{font:11px/1 var(--sans);font-style:normal;color:#6f8075}.checkin-stat small{display:block;font-size:10px;line-height:1.55;color:#718177}.streak-stat{background:linear-gradient(145deg,#e4efe4,#f8fbf6)}.total-stat{background:linear-gradient(145deg,#fff8ef,#f8eee3)}.total-stat strong{color:#9d6441}.stats-reassurance{display:flex;gap:9px;align-items:flex-start;margin:0;padding:12px 14px;background:#f1f5ef;border-top:1px solid rgba(83,122,97,.12);color:#52675a;font-size:10px;line-height:1.6}.stats-reassurance b{flex:0 0 auto;color:#4f8061;font-size:10px}.calendar-section-heading{margin-top:1px}
.my-progress-card{margin:0 0 14px;border-radius:20px;overflow:hidden;color:#fffdf8;background:linear-gradient(135deg,#3f6b55,#5f9274)}.my-progress-copy{padding:14px 16px 12px}.my-progress-copy span{display:block;font:10px var(--mono);letter-spacing:1px;color:#d9ebda}.my-progress-copy b{display:block;margin-top:4px;font:500 18px/1.15 var(--serif)}.my-progress-grid{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid rgba(255,255,255,.18)}.my-progress-grid>div{min-height:105px;padding:14px 16px}.my-progress-grid>div+div{border-left:1px solid rgba(255,255,255,.18)}.my-progress-grid span{display:block;font-size:10px;color:#d9ebda}.my-progress-grid strong{display:block;margin:7px 0 5px;font:500 28px/1 var(--serif);letter-spacing:-.3px}.my-progress-grid strong em{font:11px var(--sans);font-style:normal;color:#dfede0}.my-progress-grid small{display:block;font-size:9px;line-height:1.45;color:#dcecdf}.my-progress-total{background:rgba(28,66,47,.18)}.my-progress-streak{background:rgba(255,255,255,.06)}.profile-month-note{margin:0;padding-top:12px;border-top:1px solid var(--line);font-size:11px;color:var(--muted)}.profile-month-note b{color:#547c62}.ranking-switch{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:0 0 11px;padding:4px;border-radius:12px;background:#ecefe9}.ranking-switch button{border-radius:9px;padding:8px 7px;background:transparent;color:#748076;font-size:11px;font-weight:700}.ranking-switch button.active{background:#fffdf8;color:#426a51;box-shadow:0 2px 7px rgba(55,77,63,.1)}.ranking-mode-title{margin:0 2px 8px;color:#586a60;font:11px var(--mono);letter-spacing:.35px}.rank-days.rank-total{color:#99704a}
.my-progress-card{color:#294737;background:#fffdf8;border:1px solid #dbe5d9;box-shadow:0 8px 20px rgba(53,79,62,.055)}.my-progress-copy{padding:15px 16px 13px;background:#f4f7f1;border-bottom:1px solid #dbe5d9}.my-progress-copy span{color:#62806d}.my-progress-copy b{color:#284b3a;letter-spacing:-.2px}.my-progress-grid{border-top:0}.my-progress-grid>div{min-height:109px;padding:15px 16px 14px}.my-progress-grid>div+div{border-left:1px solid #dbe5d9}.my-progress-grid span{color:#667c6d;font:10px var(--mono);letter-spacing:.45px}.my-progress-grid strong{margin:8px 0 6px;font-size:29px}.my-progress-grid strong em{color:inherit;opacity:.72}.my-progress-grid small{color:#65796a;font-size:9px}.my-progress-total{background:#edf4ee}.my-progress-total strong{color:#3e6c51}.my-progress-streak{background:#fbf0e5}.my-progress-streak strong{color:#aa6544}.my-progress-streak small{color:#8c705d}
.expression-sheet{max-height:88vh;padding:12px 20px 34px}.expression-sheet h2{font-size:27px;line-height:1.2;margin:9px 38px 17px}.usage-summary{position:relative;padding:15px 16px 14px 20px;border-radius:16px;background:linear-gradient(135deg,#edf5ec,#e2efe4);border:1px solid rgba(99,139,108,.13)}.usage-summary:before{content:'';position:absolute;left:0;top:16px;bottom:16px;width:4px;border-radius:0 4px 4px 0;background:#639476}.usage-summary span,.usage-context>span,.usage-practice>span{display:block;font:10px var(--mono);letter-spacing:1.15px;color:#62826a}.usage-summary p{margin:7px 0 0;font-size:13px;line-height:1.72;color:#304a3a}.usage-context{margin:14px 0 18px;padding:0 3px}.usage-context p{margin:6px 0 0;color:#3d5145;font-size:13px;line-height:1.7}.usage-context small{display:block;margin-top:7px;color:#94664a;font-size:11px;line-height:1.55}.examples-block{margin-top:3px}.examples-heading{margin:0 2px 9px}.examples-heading h3{font-size:16px;letter-spacing:-.2px}.examples-heading span{color:#a56f4d}.scene-example{border:0;border-radius:15px;padding:13px 43px 13px 14px;margin:0 0 9px;background:#fffdf9;box-shadow:inset 0 0 0 1px #ede7de}.scene-example:nth-child(3n+2){background:#fbf0e6}.scene-example:nth-child(3n+3){background:#f0f4ee}.scene-example>div{gap:8px}.scene-example>div span{color:#ad7250;font-size:10px;min-width:18px}.scene-example small{font-size:10px;font-weight:700;color:#6d7c72}.scene-example p{font-size:13px;line-height:1.65;margin:7px 0 0;color:#304139;white-space:pre-line}.scene-example button{right:11px;top:50%;transform:translateY(-50%);width:30px;height:30px;background:rgba(255,255,255,.8);box-shadow:0 2px 7px rgba(106,80,59,.08);color:#9d6848}.usage-empty{margin:0;padding:14px;border-radius:13px;background:#f5f1eb;color:#778279;font-size:12px;line-height:1.65}.usage-practice{position:relative;margin-top:17px;padding:14px 15px 15px 19px;border:1px dashed #9eb7a1;border-radius:16px;background:#edf4ea;overflow:hidden}.usage-practice:before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:#639476}.usage-practice article{padding:9px 0 0}.usage-practice article+article{margin-top:10px;border-top:1px solid rgba(83,122,97,.18)}.usage-practice b{font-size:11px;color:#41674f}.usage-practice p{margin:5px 0 0;font-size:12px;line-height:1.7;color:#405247}.usage-practice small{display:block;margin-top:8px;color:#718177;font-size:9px;line-height:1.55}.phrase-voice-editor{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:-1px 0 13px;padding:11px 12px;border:1px dashed #b9cfba;border-radius:12px;background:#f0f6ef}.phrase-voice-editor b{display:block;font-size:11px;color:#41674f}.phrase-voice-editor small{display:block;max-width:205px;margin-top:3px;color:#738178;font-size:9px;line-height:1.45}.phrase-audio-upload{flex:0 0 auto;display:inline-flex!important;align-items:center;color:#426b50!important;background:#dbeadb;border-radius:8px;padding:7px 8px!important;margin:0!important;font-size:10px!important;font-weight:700}.phrase-audio-upload input{display:none!important}@media (max-width:360px){.expression-sheet{padding-left:16px;padding-right:16px}.expression-sheet h2{font-size:24px}.scene-example{padding-right:40px}.usage-practice{padding-left:17px}.phrase-voice-editor{align-items:flex-start;flex-direction:column}.phrase-voice-editor small{max-width:none}}
.site-compliance{width:min(100%,470px);margin:0 auto;padding:14px 20px 18px;background:#f8f4ee;border-top:1px solid rgba(230,223,213,.9);text-align:center}.public-security-filing{display:inline-flex;align-items:center;justify-content:center;gap:5px;color:#778279;text-decoration:none;font:10px/1.5 var(--mono);letter-spacing:.05px;transition:color .18s ease}.public-security-filing:hover,.public-security-filing:focus-visible{color:#426b50;text-decoration:underline;outline:0}.public-security-filing:focus-visible{box-shadow:0 0 0 3px rgba(91,146,114,.22);border-radius:5px}.public-security-filing img{width:18px;height:18px;object-fit:contain;flex:0 0 auto}
