:root{--sky-blue:#7dd3e8;--sky-blue-deep:#2a89c4;--panel-yellow:#ffe96b;--panel-yellow-edge:#fbc02d;--panel-light-blue:#cdf1fa;--dark-blue:#0b1f4a;--starry-deep:#1e3a8a;--text-dark:#1f2937;--text-mid:#4b5563;--text-light:#6b7280;--border-light:#cbd5e1;--user-bubble:#1f8fe0;--user-bubble-text:#fff;--ai-bubble:#fff;--ai-bubble-border:#ced4da;--top-bar-yellow:#ffcf40;--top-bar-yellow-edge:#fbc02d;--brand-green:#4caf50;--danger:#dc2626;--grad-login:linear-gradient(180deg, #7dd3e8 0%, #2a89c4 100%);--grad-chat:linear-gradient(180deg, #d6f0fa 0%, #b0e0ef 100%);--grad-orange:linear-gradient(180deg, #ffb74d 0%, #f57c00 100%);--grad-green:linear-gradient(180deg, #a6e22e 0%, #6fb100 100%);--grad-blue:linear-gradient(180deg, #5dc0f4 0%, #1f7bc5 100%);--radius:16px;--radius-pill:999px;--shadow-card:0 3px 10px #0000001f}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{color:var(--text-dark);-webkit-font-smoothing:antialiased;overscroll-behavior:none;font-family:-apple-system,PingFang TC,Noto Sans TC,Microsoft JhengHei,system-ui,sans-serif;overflow:hidden}button{cursor:pointer;font-family:inherit}.screen{isolation:isolate;flex-direction:column;display:flex;position:fixed;inset:0}.bg-cover{object-fit:cover;z-index:-1;width:100%;height:100%;position:absolute;inset:0}.pill{border-radius:var(--radius-pill);box-shadow:var(--shadow-card);border:none;padding:12px 22px;font-size:16px;font-weight:800;transition:transform 60ms,filter .12s}.pill:active{transform:scale(.97)}.pill:disabled{opacity:.45;cursor:default}.pill-green{background:var(--grad-green);color:#fff}.pill-blue{background:var(--grad-blue);color:#fff}.pill-white{color:var(--text-dark);border:1px solid var(--border-light);background:#fff}.spin{border:3px solid #fff6;border-top-color:#fff;border-radius:50%;width:22px;height:22px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.login{justify-content:center;align-items:center}.login-inner{flex-direction:column;justify-content:center;align-items:center;width:100%;max-width:760px;height:100%;padding:24px;display:flex;overflow-y:auto}.login-hero{object-fit:contain;width:38%;max-width:200px;max-height:26vh;margin-bottom:6px}.login-brand{text-align:center;margin-bottom:22px}.login-brand-title{color:#fff;text-shadow:0 2px 6px #00000040;letter-spacing:1px;font-size:30px;font-weight:900}.login-brand-sub{color:#ffffffeb;margin-top:6px;font-size:15px;font-weight:700}.login-fields{gap:24px;width:100%;max-width:640px;display:flex}.login-fields .field{flex:1;min-width:0}@media (width<=640px){.login-fields{flex-direction:column;gap:12px;max-width:420px}.login-brand-sub{font-size:13px}}.field{border:1.5px solid var(--border-light);height:58px;box-shadow:var(--shadow-card);background:#fff;border-radius:12px;align-items:stretch;display:flex;overflow:hidden}.field-tag{color:#1565c0;background:linear-gradient(180deg, var(--panel-yellow) 0%, var(--panel-yellow-edge) 100%);align-items:center;padding:0 18px;font-size:20px;font-weight:800;display:flex}.field-input{color:var(--text-dark);border:none;outline:none;flex:1;min-width:0;padding:0 14px;font-size:20px;font-weight:700}.field-input::placeholder{color:#9ca3af;font-weight:500}.login-remember{color:#fff;align-self:flex-end;align-items:center;gap:8px;margin:12px 0 4px;font-size:16px;font-weight:700;display:flex}.login-remember input{width:20px;height:20px;accent-color:var(--brand-green)}.login-error{color:#ffeb3b;text-align:center;margin:8px 0;font-size:16px;font-weight:800}.login-start{background:50%/contain no-repeat;border:none;justify-content:center;align-items:center;width:320px;max-width:80%;height:88px;margin-top:20px;display:flex;position:relative}.login-start:disabled{opacity:.6}.login-start-label{font-size:0}.login-banner{object-fit:contain;width:90%;max-width:560px;margin-top:28px}.home-bar{background:var(--brand-green);color:#fff;align-items:center;gap:10px;height:56px;padding:0 16px;display:flex;box-shadow:0 2px 6px #0003}.home-logo{object-fit:cover;border-radius:8px;width:32px;height:32px}.home-title{font-size:20px;font-weight:900}.home-spacer{flex:1}.home-user{opacity:.9;font-weight:700}.home-logout{color:#fff;background:#ffffff38;border:none;border-radius:999px;padding:8px 16px;font-weight:800}.home-grid{flex:1;grid-template-columns:repeat(3,minmax(0,1fr));align-content:center;gap:20px;padding:28px;display:grid;overflow-y:auto}.app-card{box-shadow:var(--shadow-card);background:#fffffff0;border:none;border-radius:24px;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:28px 18px;transition:transform 80ms;display:flex;position:relative}.app-card:not(:disabled):active{transform:scale(.97)}.app-card-soon{filter:grayscale(.5);opacity:.85}.app-card-icon{object-fit:cover;border-radius:24px;width:120px;height:120px}.app-card-name{color:var(--text-dark);font-size:22px;font-weight:900}.app-card-tag{color:var(--text-light);font-size:14px;font-weight:600}.app-card-badge{background:var(--top-bar-yellow);color:#7a4f00;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:800;position:absolute;top:12px;right:12px}@media (width<=820px){.home-grid{grid-template-columns:1fr;gap:14px;padding:16px}.app-card{flex-direction:row;justify-content:flex-start}.app-card-icon{width:72px;height:72px}}.ts-back{top:max(10px, env(safe-area-inset-top));left:max(12px, env(safe-area-inset-left));cursor:pointer;z-index:5;height:52px;position:absolute}.ts-scroll{-webkit-overflow-scrolling:touch;padding:12px 18px calc(20px + env(safe-area-inset-bottom));flex-direction:column;flex:1;align-items:center;gap:12px;width:100%;max-width:1040px;margin:0 auto;display:flex;overflow-y:auto}.ts-logo{object-fit:contain;width:46%;max-width:300px;max-height:108px;margin:4px 0 2px}.ts-cols{gap:12px;width:100%;display:flex}.ts-panel-lang{flex:1.1}.ts-panel-level{flex:2.6}.ts-panel{box-shadow:var(--shadow-card);background:#cdf1fa;border:1.5px solid #b0cedb;border-radius:16px;width:100%;padding:12px 14px 14px}.ts-label{object-fit:contain;height:30px;margin-bottom:10px;display:block}.ts-lang-row{gap:8px;display:flex}.ts-lang{border:2px solid var(--border-light);height:46px;color:var(--text-dark);background:linear-gradient(#fff,#f1f5f9);border-radius:999px;flex:1;font-size:16px;font-weight:800}.ts-lang.on{background:var(--grad-blue);color:#fff;border-color:#1565c0}.ts-level-row{gap:6px;display:flex}.ts-level{border:2px solid var(--border-light);min-width:0;height:46px;color:var(--text-dark);background:linear-gradient(#fff,#f1f5f9);border-radius:999px;flex:1;align-items:center;gap:6px;padding:0 8px 0 4px;font-size:14px;font-weight:800;display:flex}.ts-level.on{background:var(--grad-blue);color:#fff;border-color:#1565c0}.ts-av{background:#e3f2fd;border:2px solid #fff;border-radius:50%;flex:none;place-items:center;width:38px;height:38px;display:grid;overflow:hidden}.ts-av img{object-fit:cover;width:100%;height:100%}.ts-topics{flex-wrap:wrap;gap:8px;display:flex}.ts-topic{border:2px solid var(--border-light);height:42px;color:var(--text-dark);background:linear-gradient(#fff,#f1f5f9);border-radius:999px;align-items:center;gap:7px;padding:0 16px 0 4px;font-size:14px;font-weight:800;display:flex}.ts-topic.on{background:var(--grad-blue);color:#fff;border-color:#1565c0}.ts-tav{background:#e3f2fd;border:2px solid #fff;border-radius:50%;flex:none;place-items:center;width:34px;height:34px;display:grid;overflow:hidden}.ts-tav img{object-fit:contain;width:82%;height:82%}.ts-custom{border:1.5px solid var(--border-light);border-radius:999px;outline:none;width:100%;height:46px;margin-top:12px;padding:0 18px;font-size:16px}.ts-start{color:#fff;letter-spacing:1px;text-shadow:0 2px 3px #00000040;cursor:pointer;background:linear-gradient(#ffc24d 0%,#f57c00 100%);border:3px solid #fff;border-radius:999px;width:min(92%,560px);margin-top:12px;padding:16px 30px;font-size:clamp(20px,5vw,28px);font-weight:900;box-shadow:0 5px 16px #00000038}.ts-start:active{transform:scale(.97)}@media (width<=760px){.ts-cols{flex-direction:column}}@media (width<=560px){.ts-level{flex-direction:column;gap:3px;height:auto;padding:7px 2px;font-size:13px}.ts-av{width:34px;height:34px}.ts-topic{height:46px;font-size:15px}.ts-tav{width:36px;height:36px}.ts-label{height:26px}}.t-bar{background:#ffffff29;align-items:center;gap:10px;height:60px;padding:0 14px;display:flex}.t-bar-chat{background:linear-gradient(#a0ddf0,#3da5d9)}.t-back{color:#fff;background:#00000047;border:none;border-radius:999px;padding:8px 14px;font-size:16px;font-weight:800}.t-bar-logo{object-fit:contain;height:44px}.t-topic{color:#fff;background:#0003;border-radius:999px;padding:6px 14px;font-weight:800}.setup-body{flex-direction:column;flex:1;gap:14px;width:100%;max-width:980px;margin:0 auto;padding:18px;display:flex;overflow-y:auto}.panel{border-radius:var(--radius);box-shadow:var(--shadow-card);background:#fffffff0;padding:14px}.panel-tag{background:linear-gradient(180deg, var(--panel-yellow), var(--panel-yellow-edge));color:#0b3d7b;border-radius:999px;margin-bottom:12px;padding:6px 16px;font-weight:900;display:inline-block}.pill-row,.pill-grid{flex-wrap:wrap;gap:10px;display:flex}.opt{border:1.5px solid var(--border-light);color:var(--text-dark);background:#fff;border-radius:999px;padding:10px 18px;font-size:15px;font-weight:800}.opt-on{background:var(--grad-blue);color:#fff;border-color:#1565c0}.topic-input{border:1.5px solid var(--border-light);border-radius:999px;outline:none;width:100%;height:46px;margin-top:12px;padding:0 18px;font-size:16px}.start-chat{align-self:center;width:min(420px,90%);height:56px;font-size:20px}.chat-list{flex-direction:column;flex:1;gap:14px;padding:16px;display:flex;overflow-y:auto}.row{gap:10px;width:100%;max-width:860px;margin:0 auto;display:flex}.row-user{flex-direction:row-reverse}.avatar{object-fit:cover;background:#fff;border-radius:50%;flex:none;width:44px;height:44px}.bubble{max-width:78%;box-shadow:var(--shadow-card);border-radius:16px;padding:12px 14px}.bubble-ai{border:1px solid var(--ai-bubble-border);background:#fff}.bubble-user{background:var(--user-bubble);color:#fff}.bubble-text{white-space:pre-wrap;font-size:18px;line-height:1.5}.speak-btn{color:#374151;background:#0000000a;border:1px solid #0000001f;border-radius:999px;margin-top:8px;padding:5px 12px;font-size:13px;font-weight:700}.typing{gap:5px;padding:4px 2px;display:flex}.typing span{background:#9aa;border-radius:50%;width:8px;height:8px;animation:1s infinite blink}.typing span:nth-child(2){animation-delay:.2s}.typing span:nth-child(3){animation-delay:.4s}@keyframes blink{0%,to{opacity:.3}50%{opacity:1}}.chat-input{align-items:center;gap:10px;width:100%;max-width:900px;margin:0 auto;padding:12px 16px;display:flex}.mic,.send{color:#fff;background:var(--grad-blue);width:56px;height:56px;box-shadow:var(--shadow-card);border:none;border-radius:50%;flex:none;font-size:22px}.mic-on{background:var(--danger);animation:1s infinite pulse}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}.send{background:var(--brand-green)}.send:disabled{opacity:.5}.chat-field{border:1.5px solid var(--border-light);background:#fff;border-radius:999px;outline:none;flex:1;height:56px;padding:0 20px;font-size:18px}.tc-bar{padding:max(6px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) 6px max(12px, env(safe-area-inset-left));background:linear-gradient(#a0ddf0,#3da5d9);align-items:center;gap:10px;display:flex;box-shadow:0 2px 6px #00000026}.tc-back{cursor:pointer;flex:none;height:46px}.tc-logo{object-fit:contain;flex:none;height:52px}.tc-report{color:#fff;white-space:nowrap;background:#ffffff47;border:none;border-radius:999px;padding:9px 14px;font-size:15px;font-weight:800}.tc-logo{max-width:42vw}.tc-share{object-fit:contain;cursor:pointer;flex:none;width:44px;height:44px}.avatar-user{background:#fff;border:2px solid #e0e0e0;place-items:center;font-size:22px;display:grid}.bubble-name{color:#1f8fe0;margin-bottom:4px;font-size:15px;font-weight:900}.name-user{color:#fff}.speak-btn{align-items:center;gap:4px;display:inline-flex}.speak-btn img{object-fit:contain;width:20px;height:20px}.send{object-fit:contain;cursor:pointer;width:56px;height:56px;box-shadow:none;background:0 0;border:none;border-radius:0;flex:none}.send-off{opacity:.5}.chat-input{padding-bottom:calc(12px + env(safe-area-inset-bottom))}.t-report{color:#fff;background:#ffffff40;border:none;border-radius:999px;padding:8px 14px;font-size:15px;font-weight:800}.report-body{flex-direction:column;flex:1;gap:14px;width:100%;max-width:980px;margin:0 auto;padding:18px;display:flex;overflow-y:auto}.stat-row{justify-content:space-around;gap:12px;display:flex}.stat-tile{flex-direction:column;flex:1;align-items:center;gap:4px;display:flex}.stat-emoji{font-size:30px}.stat-value{color:#0b3d7b;font-size:22px;font-weight:900}.stat-label{color:var(--text-light);font-size:13px;font-weight:600}.log{flex-direction:column;gap:10px;display:flex}.log-row{border-radius:12px;padding:10px 12px;font-size:16px;line-height:1.5}.log-user{background:#fff8e1;border:1px solid #fcd34d}.log-ai{background:#f1f5ff;border:1px solid #bfdbfe}.log-empty{color:#9ca3af;padding:8px}.report-actions{flex-wrap:wrap;justify-content:center;gap:12px;padding:8px 0 20px;display:flex}.e-back-img{top:max(10px, env(safe-area-inset-top));left:max(12px, env(safe-area-inset-left));cursor:pointer;z-index:5;height:54px;position:absolute}.e-setup-scroll{-webkit-overflow-scrolling:touch;min-height:0;padding:14px 20px calc(16px + env(safe-area-inset-bottom));flex-direction:column;flex:1;align-items:center;gap:12px;width:100%;max-width:860px;margin:0 auto;display:flex;overflow-y:auto}.e-setup-logo{object-fit:contain;align-self:center;width:46%;max-width:300px;margin:6px 0 2px}@media (width<=560px){.e-setup-scroll{padding-top:64px}.e-setup-logo{margin-top:0}}.e-pill-wrap{cursor:pointer;background:0 0;border:none;width:100%;padding:0;line-height:0;position:relative;container-type:inline-size}.e-pill-wrap:active{transform:scale(.99)}.e-pill-wrap img{width:100%;display:block}.e-pill-lvl,.e-pill-mid,.e-pill-hint{white-space:nowrap;pointer-events:none;align-items:center;height:100%;line-height:1;display:flex;position:absolute;top:0}.e-pill-lvl{color:#fff;justify-content:center;width:16%;font-size:2.8cqw;font-weight:800;left:12.5%}.e-pill-mid{color:#1f2937;width:50%;font-size:3.9cqw;font-weight:700;left:28%}.e-pill-hint{color:#fff;justify-content:center;width:20%;font-size:2.5cqw;font-weight:800;left:80%}.e-topbar{padding:max(6px, env(safe-area-inset-top)) max(10px, env(safe-area-inset-right)) 6px max(10px, env(safe-area-inset-left));background:#ffcf40;align-items:center;gap:8px;display:flex;box-shadow:0 2px 6px #00000026}.e-topbar-back{cursor:pointer;flex:none;height:46px}.e-topbar-logo{object-fit:contain;flex:0 auto;min-width:0;max-width:38vw;height:50px}.e-status{object-fit:contain;flex:none;height:38px}.e-topbar-share{object-fit:contain;cursor:pointer;flex:none;width:40px;height:40px}.e-end{cursor:pointer;background:0 0;border:none;flex:none;height:46px;padding:0;position:relative}.e-end img{height:100%;display:block}.e-end span{color:#fff;white-space:nowrap;pointer-events:none;justify-content:center;align-items:center;font-size:14px;font-weight:800;display:flex;position:absolute;inset:0 7% 0 33%}.e-chat-body{flex:1;grid-template-columns:2fr 1fr;gap:12px;width:100%;max-width:1200px;min-height:0;margin:0 auto;padding:12px;display:grid}.e-chat-main{flex-direction:column;min-height:0;display:flex}.e-chat-list{flex-direction:column;flex:1;gap:14px;min-height:0;padding:8px;display:flex;overflow-y:auto}.e-input{padding:10px 6px calc(6px + env(safe-area-inset-bottom));align-items:center;gap:10px;display:flex}.e-mic{color:#fff;background:var(--grad-blue);width:56px;height:56px;box-shadow:var(--shadow-card);cursor:pointer;border:none;border-radius:50%;flex:none;font-size:22px}.e-mic-on{background:var(--danger);animation:1s infinite e-pulse}.e-send{object-fit:contain;cursor:pointer;flex:none;width:56px;height:56px}.e-send-off{opacity:.5;cursor:default}.e-field{border:1.5px solid var(--border-light);background:#fff;border-radius:999px;outline:none;flex:1;min-width:0;height:56px;padding:0 18px;font-size:16px}.e-row{gap:10px;width:100%;display:flex}.e-row-user{flex-direction:row-reverse}.e-avatar{object-fit:cover;background:#fff;border-radius:50%;flex:none;width:40px;height:40px}.e-avatar-user{border:2px solid #e0e0e0;place-items:center;font-size:20px;display:grid}.e-bubble{max-width:80%;box-shadow:var(--shadow-card);border-radius:16px;padding:11px 14px}.e-bubble-ai{border:1px solid var(--ai-bubble-border);background:#fff}.e-bubble-user{background:var(--user-bubble);color:#fff}.e-bubble-name{color:#1f8fe0;margin-bottom:4px;font-size:15px;font-weight:900}.e-name-user{color:#fff}.e-bubble-text{white-space:pre-wrap;font-size:17px;line-height:1.5}.e-speak-btn{color:#374151;background:#0000000a;border:1px solid #0000001f;border-radius:999px;align-items:center;gap:4px;margin-top:8px;padding:5px 12px;font-size:13px;font-weight:700;display:inline-flex}.e-speak-btn img{object-fit:contain;width:18px;height:18px}.e-typing{gap:5px;padding:4px 2px;display:flex}.e-typing span{background:#9aa;border-radius:50%;width:8px;height:8px;animation:1s infinite e-blink}.e-typing span:nth-child(2){animation-delay:.2s}.e-typing span:nth-child(3){animation-delay:.4s}@keyframes e-blink{0%,to{opacity:.3}50%{opacity:1}}@keyframes e-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}.e-panel{flex-direction:column;min-height:0;display:flex}.e-panel-toggle{color:#0b3d7b;box-shadow:var(--shadow-card);background:#ffffffe6;border:none;border-radius:999px;margin-bottom:8px;padding:8px 14px;font-weight:800;display:none}.e-panel-body{flex-direction:column;flex:1;gap:12px;min-height:0;display:flex;overflow-y:auto}.e-card{border-radius:var(--radius);box-shadow:var(--shadow-card);background:#fffffff5;padding:14px}.e-hdr{object-fit:contain;object-position:left center;margin-bottom:10px;display:block}.e-hdr-score{height:42px}.e-hdr-grammar{height:32px}.e-card-empty{color:var(--text-light);font-size:14px;line-height:1.5}.e-score-num{font-size:40px;font-weight:900;line-height:1}.e-score-rating{margin-top:4px;font-weight:800}.e-bar-track{background:#e5eaf0;border-radius:999px;height:12px;margin-top:10px;overflow:hidden}.e-bar-fill{border-radius:999px;height:100%;transition:width .3s}.e-grammar-ok{color:var(--brand-green);font-size:16px;font-weight:800}.e-grammar-warn{color:var(--text-dark)}.e-grammar-head{color:#f57c00;margin-bottom:6px;font-weight:900}.e-grammar-line{margin-top:4px;font-size:14px;line-height:1.5}@media (width<=820px){.e-chat-body{grid-template-rows:1fr auto;grid-template-columns:1fr}.e-panel-toggle{display:block}.e-panel-body.collapsed{display:none}}@media (width<=560px){.e-topbar-logo{max-width:26vw}.e-topbar-back{height:40px}.e-status{height:32px}.e-end{height:40px}.e-end span{font-size:13px}.e-voice,.e-send-btn{height:52px}.e-topbar-report .e-topbar-logo{display:none}.e-report-title{height:24px}.e-done-pill{height:26px}}.e-chat-body{flex-direction:column;grid-template-columns:none;gap:8px;max-width:880px;display:flex}.e-chat-main{order:0}.e-panel{flex:none;order:-1}.e-panel-toggle{align-self:flex-start;margin-bottom:0;display:inline-block}.e-panel-body{flex-direction:row;gap:10px;overflow:visible}.e-panel-body.collapsed{display:none}.e-panel-body .e-card{flex:1;min-width:0}.e-report-title{object-fit:contain;flex:none;height:34px}.e-done-pill{object-fit:contain;flex:none;height:38px}.e-report-body{min-height:0;padding:14px 18px calc(18px + env(safe-area-inset-bottom));flex-direction:column;flex:1;gap:12px;width:100%;max-width:820px;margin:0 auto;display:flex;overflow-y:auto}.e-rhdr{object-fit:contain;object-position:left center;width:100%;max-height:52px;margin:4px 0 0;display:block}.e-stats-card{background:#e5f4fb;border:2px solid #b0dcee;border-radius:20px;padding:18px 12px}.e-stats{justify-content:space-evenly;gap:8px;display:flex}.e-stat-tile{flex-direction:column;flex:1;align-items:center;gap:6px;min-width:0;display:flex}.e-stat-icon{object-fit:contain;width:64px;height:64px}.e-stat-label{object-fit:contain;height:20px}.e-stat-value{color:#0b3d7b;text-align:center;font-size:20px;font-weight:900}.e-transcript-card{border-radius:var(--radius);box-shadow:var(--shadow-card);background:#fffffff5;padding:16px}.e-transcript{flex-direction:column;gap:12px;display:flex}.e-t-row{border-radius:12px;flex-direction:column;gap:4px;max-width:88%;padding:10px 12px;display:flex}.e-t-user{background:#eaf4ff;align-self:flex-end}.e-t-ai{background:#f4f6f8;align-self:flex-start}.e-t-who{color:var(--text-light);font-size:12px;font-weight:800}.e-t-text{white-space:pre-wrap;font-size:16px;line-height:1.5}.e-t-grammar{margin-top:2px;font-size:13px;line-height:1.5}.e-t-grammar.ok{color:var(--brand-green);font-weight:700}.e-t-grammar.warn{color:#b45309}.e-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:24px;padding:6px 0 8px;display:flex}.e-act-btn{object-fit:contain;cursor:pointer;height:74px}.e-act-btn:active{transform:scale(.97)}.e-toast{color:#fff;z-index:10;background:#000000d1;border-radius:999px;padding:10px 18px;font-weight:700;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.ph-back-float{top:max(10px, env(safe-area-inset-top));left:max(12px, env(safe-area-inset-left));cursor:pointer;z-index:5;height:46px;position:absolute}.ph-scroll{-webkit-overflow-scrolling:touch;padding:max(10px, env(safe-area-inset-top)) 18px calc(20px + env(safe-area-inset-bottom));flex-direction:column;flex:1;align-items:center;gap:12px;width:100%;max-width:720px;margin:0 auto;display:flex;overflow-y:auto}.ph-logo{object-fit:contain;width:50%;max-width:240px;max-height:86px;margin:4px 0 2px}.ph-panel{width:100%;box-shadow:var(--shadow-card);background:#eaf2fff5;border:1.5px solid #b0cedb;border-radius:16px;padding:14px}.ph-panel-dim{background:#eaf2ffb8}.ph-hdr{object-fit:contain;height:32px;margin-bottom:12px;display:block}.ph-hint{color:#6b7280;text-align:center;padding:20px 0;font-weight:700}.ph-grade-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.ph-subject-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.ph-pill{border:1.5px solid var(--border-light);min-width:0;height:52px;color:var(--text-dark);box-shadow:var(--shadow-card);background:linear-gradient(#fff,#f1f5f9);border-radius:999px;justify-content:center;align-items:center;gap:7px;padding:0 8px;font-weight:800;display:flex}.ph-pill.on{background:var(--grad-blue);color:#fff;border-color:#1565c0}.ph-pill-icon{flex:none;place-items:center;width:34px;height:34px;display:grid}.ph-pill-icon img{object-fit:contain;width:100%;height:100%}.ph-pill-name{text-align:center;-webkit-line-clamp:2;-webkit-box-orient:vertical;min-width:0;font-size:13px;line-height:1.15;display:-webkit-box;overflow:hidden}.ph-grade{height:58px}.ph-grade .ph-pill-icon{width:38px;height:38px}.ph-subject{gap:5px;height:58px;padding:0 6px}.ph-subject .ph-pill-icon{width:30px;height:30px}.ph-start-btn{color:#fff;letter-spacing:1px;text-shadow:0 2px 3px #00000040;cursor:pointer;background:linear-gradient(#ffc24d 0%,#f57c00 100%);border:3px solid #fff;border-radius:999px;width:min(92%,560px);margin-top:12px;padding:16px 30px;font-size:clamp(20px,5vw,28px);font-weight:900;box-shadow:0 5px 16px #00000047}.ph-start-btn:active{transform:scale(.97)}.ph-start-btn.off{opacity:.5;cursor:default}.ph-start-btn.off:active{transform:none}.ph-camera-body{min-height:0;padding:max(16px, calc(env(safe-area-inset-top) + 8px)) 16px calc(16px + env(safe-area-inset-bottom));flex-direction:column;flex:1;align-items:center;gap:14px;width:100%;max-width:900px;margin:0 auto;display:flex}.ph-stage{border-radius:var(--radius);width:100%;min-height:0;box-shadow:var(--shadow-card);background:#0b1f2e;flex:1;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.ph-video,.ph-preview{object-fit:contain;background:#0b1f2e;width:100%;height:100%}.ph-frame-hint{color:#fff;background:#0000006b;border-radius:999px;padding:6px 16px;font-size:14px;font-weight:800;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.ph-cam-fallback{color:#fff;text-align:center;padding:24px;font-weight:700;line-height:1.6}.ph-camera-actions{flex-direction:column;flex:none;align-items:center;gap:12px;display:flex}.ph-shutter{background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;width:88px;height:88px;padding:0;display:flex}.ph-shutter img{object-fit:contain;width:88px;height:88px}.ph-shutter:active{transform:scale(.95)}.ph-shutter:disabled{opacity:.5}.ph-file-btn{justify-content:center;align-items:center;display:inline-flex}.ph-confirm{color:#fff;text-align:center;text-shadow:0 1px 3px #00000080;flex:none;font-size:18px;font-weight:800}.ph-mode-row{flex-wrap:wrap;flex:none;justify-content:center;gap:18px;width:100%;display:flex}.ph-mode{background:0 0;border:none;flex-direction:column;align-items:center;gap:8px;padding:0;display:flex}.ph-mode:active{transform:scale(.96)}.ph-mode-icon{object-fit:contain;width:82px;height:82px}.ph-mode-label{font-size:15px;font-weight:800}.ph-mode-exam{color:#1abc9c}.ph-mode-detail{color:#f39c12}.ph-mode-extend{color:#9b59b6}.ph-retake{flex:none;width:min(320px,80%);height:50px}.ph-tc-bar{padding:max(6px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) 6px max(12px, env(safe-area-inset-left));background:linear-gradient(#a0ddf0,#3da5d9);align-items:center;gap:10px;display:flex;box-shadow:0 2px 6px #00000026}.ph-tc-back{cursor:pointer;flex:none;height:44px}.ph-tc-logo{object-fit:contain;flex:none;max-width:38vw;height:46px}.ph-tc-tag{color:#fff;white-space:nowrap;background:#0003;border-radius:999px;padding:6px 12px;font-size:13px;font-weight:800}.ph-tc-home{color:#fff;background:#ffffff47;border:none;border-radius:999px;flex:none;padding:6px 12px;font-size:18px}.ph-tc-share{object-fit:contain;cursor:pointer;flex:none;width:40px;height:40px}.ph-tc-share.off{opacity:.55;pointer-events:none}.ph-chat-body{flex-direction:row;flex:1;width:100%;max-width:1200px;min-height:0;margin:0 auto;display:flex}.ph-image-pane{flex:0 0 40%;justify-content:center;align-items:flex-start;min-width:0;padding:16px;display:flex;overflow-y:auto}.ph-image{border-radius:var(--radius);max-width:100%;max-height:100%;box-shadow:var(--shadow-card);object-fit:contain;background:#fff}.ph-chat-pane{flex-direction:column;flex:60%;min-width:0;min-height:0;display:flex}.ph-chead{flex:none;justify-content:space-between;align-items:center;gap:10px;padding:10px 16px 0;display:flex}.ph-mode-pill{object-fit:contain;height:42px}.ph-read-btn{cursor:pointer;background:0 0;border:none;flex:none;padding:0}.ph-read-btn img{object-fit:contain;height:42px;display:block}.ph-read-btn:active{transform:scale(.97)}.ph-chat-list{flex-direction:column;flex:1;gap:14px;padding:16px;display:flex;overflow-y:auto}.ph-row{gap:10px;width:100%;display:flex}.ph-row-user{flex-direction:row-reverse}.ph-avatar{object-fit:contain;background:#fff;border:2px solid #e0e0e0;border-radius:50%;flex:none;width:40px;height:40px}.ph-bubble{max-width:82%;box-shadow:var(--shadow-card);border-radius:16px;padding:12px 14px}.ph-bubble-ai{border:1px solid var(--ai-bubble-border);background:#fff}.ph-bubble-user{background:var(--user-bubble);color:#fff}.ph-bubble-name{color:#1f8fe0;margin-bottom:4px;font-size:14px;font-weight:900}.ph-name-user{color:#fff}.ph-bubble-text{white-space:pre-wrap;word-break:break-word;font-size:17px;line-height:1.55}.ph-speak-btn{color:#374151;background:#0000000a;border:1px solid #0000001f;border-radius:999px;align-items:center;gap:4px;margin-top:8px;padding:5px 12px;font-size:13px;font-weight:700;display:inline-flex}.ph-speak-btn img{object-fit:contain;width:18px;height:18px}.ph-typing{gap:5px;padding:4px 2px;display:flex}.ph-typing span{background:#9aa;border-radius:50%;width:8px;height:8px;animation:1s infinite ph-blink}.ph-typing span:nth-child(2){animation-delay:.2s}.ph-typing span:nth-child(3){animation-delay:.4s}@keyframes ph-blink{0%,to{opacity:.3}50%{opacity:1}}.ph-chat-input{padding:10px 16px calc(12px + env(safe-area-inset-bottom));flex:none;align-items:center;gap:10px;display:flex}.ph-mic,.ph-send{background:0 0;border:none;border-radius:50%;flex:none;place-items:center;width:52px;height:52px;padding:0;display:grid}.ph-mic img,.ph-send img{object-fit:contain;width:52px;height:52px;display:block}.ph-mic:active,.ph-send:active{transform:scale(.95)}.ph-mic-on{border-radius:50%;animation:1s infinite ph-pulse;box-shadow:0 0 0 3px #dc2626a6}@keyframes ph-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}.ph-send.off{opacity:.5}.ph-field{border:1.5px solid var(--border-light);background:#fff;border-radius:999px;outline:none;flex:1;height:52px;padding:0 18px;font-size:17px}@media (width<=760px){.ph-chat-body{flex-direction:column}.ph-image-pane{flex:none;max-height:34%;padding:10px}.ph-tc-tag{display:none}}
