: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:#0874b9;--user-bubble-text:#fff;--ai-bubble:#fff;--ai-bubble-border:#ced4da;--top-bar-yellow:#ffcf40;--top-bar-yellow-edge:#fbc02d;--brand-green:#2e7d32;--danger:#dc2626;--focus-ring:#075985;--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%;min-height:100%;margin:0}html{background:var(--sky-blue-deep);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{color:var(--text-dark);-webkit-font-smoothing:antialiased;overscroll-behavior:none;min-width:320px;font-family:-apple-system,PingFang TC,Noto Sans TC,Microsoft JhengHei,system-ui,sans-serif;font-size:16px;line-height:1.5;overflow:hidden}button,input,textarea,select{font:inherit}button{cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;min-block-size:44px}button:disabled{cursor:not-allowed}:where(button,a,input,textarea,select,[tabindex]):focus-visible{outline-offset:2px;box-shadow:0 0 0 6px var(--focus-ring)!important;outline:3px solid #fff!important}.sr-only{clip:rect(0, 0, 0, 0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.speech-error-banner{color:#fff;text-align:center;background:#802014f5;border:2px solid #fff;border-radius:14px;flex:none;align-self:center;width:min(100% - 32px,620px);margin:4px auto;padding:8px 13px;font-size:15px;font-weight:800;line-height:1.4;box-shadow:0 5px 18px #00000047}.screen{isolation:isolate;flex-direction:column;width:100%;min-width:0;height:100dvh;min-height:100svh;display:flex;position:fixed;inset:0;overflow:hidden}.bg-cover{object-fit:cover;z-index:-1;pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;inset:0}.pill{border-radius:var(--radius-pill);box-shadow:var(--shadow-card);border:none;min-height:48px;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)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.login{justify-content:center;align-items:center;overflow:hidden}.login-inner{width:100%;max-width:808px;height:100%;min-height:0;padding:max(20px, env(safe-area-inset-top)) max(24px, env(safe-area-inset-right)) max(18px, env(safe-area-inset-bottom)) max(24px, env(safe-area-inset-left));overscroll-behavior-y:contain;scrollbar-gutter:stable;flex-direction:column;justify-content:safe center;align-items:center;display:flex;overflow-y:auto}.login-inner>*{flex-shrink:0}.login-hero{object-fit:contain;width:38%;max-width:200px;max-height:26vh;margin-bottom:6px}.login-brand{text-align:center;background:#ffffffe0;border:1px solid #ffffffd9;border-radius:14px;margin-bottom:18px;padding:8px 18px 10px}.login-brand-title{color:var(--dark-blue);text-shadow:none;letter-spacing:1px;margin:0;font-size:30px;font-weight:900;line-height:1.2}.login-brand-sub{color:#28445f;margin:7px 0 0;font-size:17px;font-weight:700;line-height:1.4}.login-form{flex-direction:column;align-items:center;width:100%;max-width:640px;display:flex}.login-fields{gap:24px;width:100%;display:flex}.login-fields .field{flex:1;min-width:0}.login .field{height:58px;box-shadow:var(--shadow-card);background:#fff;border:2px solid #ffffffb8;border-radius:13px;align-items:stretch;transition:border-color .15s,box-shadow .15s;display:flex;overflow:hidden}.login .field:focus-within{box-shadow:0 0 0 4px #ffffffb8, var(--shadow-card);border-color:#075aa8}.login .field-tag{color:#075aa8;background:linear-gradient(180deg, var(--panel-yellow) 0%, var(--panel-yellow-edge) 100%);white-space:nowrap;align-items:center;padding:0 17px;font-size:20px;font-weight:800;display:flex}.login .field-input{min-width:0;font:inherit;color:var(--text-dark);background:#fff;border:none;outline:none;flex:1;padding:0 14px;font-size:20px;font-weight:700}.login .field-input::placeholder{color:#737b87;opacity:1;font-weight:500}.login .field-input:disabled,.password-toggle:disabled{opacity:.66}.password-toggle{color:#075aa8;background:#f5f9fd;border:0;border-left:1px solid #d6dde6;min-width:58px;min-height:48px;padding:0 10px;font-size:16px;font-weight:800}.password-toggle:hover:not(:disabled){background:#e8f3fb}.password-toggle:focus-visible{outline-offset:-4px;outline:3px solid #075aa8}.login-remember{color:#fff;text-shadow:0 1px 3px #0003;cursor:pointer;background:#0b1f4ab8;border-radius:10px;align-self:flex-end;align-items:center;gap:9px;min-height:34px;margin-top:9px;padding:5px 10px;font-size:17px;font-weight:800;line-height:1.35;display:flex}.login-remember input{accent-color:#287d2d;flex:none;width:22px;height:22px;margin:0}.login-remember input:focus-visible{outline-offset:3px;outline:3px solid #fff}.login-message{justify-content:center;align-items:center;width:100%;min-height:32px;display:flex}.login-error{color:#fff59d;text-align:center;text-shadow:0 1px 3px #00000052;background:#0b1f4ac7;border-radius:9px;margin:4px 0;padding:4px 12px;font-size:17px;font-weight:900;line-height:1.35}.login-start{aspect-ratio:375/104;background:50%/contain no-repeat;border:none;border-radius:999px;flex:none;justify-content:center;align-items:center;width:min(320px,80%);margin-top:10px;transition:transform 80ms,filter .15s;display:flex;position:relative}.login-start:hover:not(:disabled){filter:brightness(1.04)}.login-start:active:not(:disabled){transform:scale(.98)}.login-start:disabled{cursor:wait}.login-start[aria-busy=true]{filter:saturate(.72)brightness(.86)}.login-start:focus-visible{outline-offset:3px;outline:4px solid #fff}.login-spin{background:#064576b3;border-width:4px;width:27px;height:27px;position:absolute;box-shadow:0 0 0 7px #064576b3}.login-notice{color:#fff;text-align:left;background:#08385ec2;border:1px solid #ffffff80;border-radius:12px;justify-content:center;align-items:flex-start;gap:8px;width:min(100%,640px);margin:18px 0 0;padding:9px 14px;font-size:15px;font-weight:700;line-height:1.45;display:flex}@media (width<=640px){.login-fields{flex-direction:column;gap:12px;max-width:430px}.login-fields .field{flex:none;width:100%;height:58px}.login-form{max-width:430px}.login-brand-title{font-size:27px}.login-brand-sub{font-size:16px}.login-start{margin-top:8px}}@media (orientation:landscape) and (height<=500px){.login-inner{max-width:none;padding:max(8px, env(safe-area-inset-top)) max(18px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(18px, env(safe-area-inset-left));justify-content:flex-start}.login-hero{width:70px;height:56px;margin-bottom:2px}.login-brand{justify-content:center;align-items:baseline;gap:12px;margin-bottom:7px;display:flex}.login-brand-title{font-size:24px}.login-brand-sub{margin-top:0;font-size:15px}.login-form{max-width:640px}.login-fields{flex-direction:row;gap:12px;max-width:640px}.login-fields .field{flex:1;width:auto}.login .field{height:50px}.login .field-tag{padding-inline:15px;font-size:18px}.login .field-input{font-size:18px}.login-remember{min-height:28px;margin-top:4px;padding-block:3px;font-size:16px}.login-remember input{width:20px;height:20px}.login-message{min-height:24px}.login-error{margin:2px 0;font-size:16px}.login-start{width:228px;margin-top:3px}.login-notice{max-width:640px;margin-top:6px;padding:5px 10px;font-size:14px}}@media (orientation:landscape) and (height<=350px){.login-hero{width:54px;height:43px}.login-brand{margin-bottom:5px}.login-brand-title{font-size:22px}.login-brand-sub{display:none}.login .field{height:46px}.login-message{min-height:20px}.login-start{width:198px}.login-notice{margin-top:4px;padding-block:4px;font-size:13px}}@media (prefers-reduced-motion:reduce){.login-start,.login .field{transition:none}}.home{min-height:0}.home-bar{min-height:calc(60px + env(safe-area-inset-top));padding:calc(8px + env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) 8px max(16px, env(safe-area-inset-left));background:var(--brand-green);color:#fff;z-index:2;flex:none;align-items:center;gap:12px;display:flex;box-shadow:0 2px 6px #0003}.home-logo{object-fit:cover;border-radius:10px;flex:none;width:40px;height:40px}.home-title{white-space:nowrap;font-size:clamp(20px,2.4vw,26px);font-weight:900;line-height:1.1}.home-spacer{flex:1}.home-user{text-overflow:ellipsis;white-space:nowrap;max-width:min(28vw,220px);font-size:clamp(15px,1.8vw,18px);font-weight:750;overflow:hidden}.home-logout{color:#fff;white-space:nowrap;background:#0000002e;border:1px solid #ffffff70;border-radius:999px;min-height:44px;padding:8px 18px;font-size:16px;font-weight:800}.home-grid{min-height:0;padding:clamp(18px, 3vw, 34px) max(clamp(18px, 3vw, 34px), env(safe-area-inset-right)) max(clamp(18px, 3vw, 34px), env(safe-area-inset-bottom)) max(clamp(18px, 3vw, 34px), env(safe-area-inset-left));overscroll-behavior:contain;-webkit-overflow-scrolling:touch;flex:1;grid-template-columns:repeat(3,minmax(0,1fr));align-content:center;gap:clamp(14px,2.2vw,24px);display:grid;overflow-y:auto}.app-card{min-width:0;min-height:clamp(220px,42dvh,360px);color:var(--text-dark);background:#fffffff5;border:1px solid #ffffffb3;border-radius:26px;flex-direction:column;justify-content:center;align-items:center;gap:clamp(14px,2.2vh,22px);padding:clamp(22px,3vw,36px) 18px;transition:transform .12s,box-shadow .12s;display:flex;position:relative;box-shadow:0 8px 24px #0b1f4a33}.app-card:active{transform:scale(.98)}.app-card-icon{object-fit:cover;border-radius:26px;width:clamp(124px,14vw,176px);height:clamp(124px,14vw,176px)}.app-card-name{color:var(--text-dark);text-wrap:balance;font-size:clamp(23px,2.5vw,30px);font-weight:900;line-height:1.2}@media (hover:hover) and (pointer:fine){.app-card:hover{transform:translateY(-3px);box-shadow:0 12px 30px #0b1f4a3d}}@media (width<=680px){.home-bar{gap:9px}.home-logo{width:36px;height:36px}.home-user{max-width:24vw}.home-logout{padding-inline:14px}.home-grid{padding:16px max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));grid-template-columns:1fr;align-content:start;gap:14px}.app-card{text-align:left;flex-direction:row;justify-content:flex-start;gap:20px;min-height:116px;padding:16px 22px}.app-card-icon{border-radius:20px;flex:none;width:84px;height:84px}.app-card-name{font-size:clamp(21px,6vw,26px)}}@media (width<=430px){.home-title{font-size:19px}.home-user{max-width:72px;font-size:14px}.home-logout{padding-inline:12px;font-size:15px}}@media (orientation:landscape) and (height<=520px){.home-bar{min-height:calc(52px + env(safe-area-inset-top));padding-top:calc(4px + env(safe-area-inset-top));padding-bottom:4px}.home-logo{width:34px;height:34px}.home-title{font-size:19px}.home-grid{padding:10px max(12px, env(safe-area-inset-right)) max(10px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));grid-template-rows:minmax(0,1fr);grid-template-columns:repeat(3,minmax(0,1fr));align-content:stretch;gap:12px;overflow:hidden}.app-card{text-align:center;border-radius:20px;flex-direction:column;justify-content:center;gap:8px;height:100%;min-height:0;padding:10px}.app-card-icon{border-radius:18px;width:clamp(68px,21vh,98px);height:clamp(68px,21vh,98px)}.app-card-name{font-size:clamp(17px,2.4vw,22px)}}.app-error{min-height:100dvh;padding:max(24px, env(safe-area-inset-top)) max(24px, env(safe-area-inset-right)) max(24px, env(safe-area-inset-bottom)) max(24px, env(safe-area-inset-left));text-align:center;background:var(--grad-login);color:#fff;flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex}.app-error-avatar{object-fit:contain;width:112px;height:112px}.app-error h1{margin:0;font-size:clamp(28px,5vw,42px)}.app-error p{max-width:520px;margin:0;font-size:clamp(18px,2.5vw,22px);font-weight:700}.app-error-actions{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:8px;display:flex}.app-error-actions button{color:#155e32;min-height:48px;font:inherit;cursor:pointer;background:#fff;border:2px solid #fff;border-radius:999px;padding:12px 24px;font-size:18px;font-weight:900}.app-error-actions .app-error-secondary{color:#fff;background:0 0}.app-loading{padding:max(24px, env(safe-area-inset-top)) max(24px, env(safe-area-inset-right)) max(24px, env(safe-area-inset-bottom)) max(24px, env(safe-area-inset-left));background:var(--grad-login);color:#fff;justify-content:center;align-items:center;gap:14px;font-size:20px;font-weight:900}.app-loading .spin{border-width:4px;width:34px;height:34px}
