*{box-sizing:border-box}html,body{min-height:100%;margin:0}.login-page{color:#333438;background:radial-gradient(circle at 14% 12%,#ff347821,#0000 30%),linear-gradient(145deg,#faf7f8,#f1f3f2);place-items:center;min-height:100vh;padding:24px;font-family:Noto Sans TC,system-ui,sans-serif;display:grid}.login-card{background:#ffffffeb;border:1px solid #30303517;border-radius:24px;width:min(420px,100%);padding:42px;box-shadow:0 20px 60px #2a25281f}.login-mark{color:#ff3478;background:#ffe7ef;border-radius:15px;place-items:center;width:46px;height:46px;font:700 28px/1 Outfit,sans-serif;display:grid}.login-kicker{color:#ff3478;letter-spacing:.16em;margin:24px 0 7px;font:700 11px/1 Outfit,sans-serif}.login-card h1{letter-spacing:-.04em;margin:0;font-size:28px}.login-copy{color:#777a7f;margin:10px 0 25px;font-size:14px;line-height:1.7}.login-error{color:#b42318;background:#fff0f0;border-radius:10px;padding:10px 12px;font-size:13px}.login-access-message{color:#72561f;background:#fff8e8;border:1px solid #ead9b6;border-radius:11px;padding:12px 13px;font-size:13px;line-height:1.6}.login-form{gap:16px;display:grid}.login-form label{gap:7px;font-size:13px;font-weight:700;display:grid}.login-form input{color:#333438;width:100%;height:47px;font:inherit;background:#fff;border:1px solid #d9dade;border-radius:11px;outline:none;padding:0 13px}.login-form input:focus{border-color:#ff79a6;box-shadow:0 0 0 3px #ffe8f0}.login-form button{color:#fff;cursor:pointer;background:#ff3478;border:0;border-radius:12px;height:48px;margin-top:4px;font:700 14px Noto Sans TC,sans-serif}.login-form button:hover{background:#e92365}.google-signin-slot{justify-content:center;min-height:44px;display:flex}.login-privacy{color:#777a80;margin:18px 0 0;font-size:11px;line-height:1.65}.login-privacy a{color:#d92764;margin:0 2px;font-weight:700}.account-panel{z-index:90;background:#fffffff5;border:1px solid #dedfe2;border-radius:16px;align-items:center;gap:8px;max-width:min(430px,100vw - 28px);padding:7px 8px;font-family:Noto Sans TC,system-ui,sans-serif;display:flex;position:fixed;bottom:16px;right:18px;box-shadow:0 6px 22px #2d2d321f}.account-panel img,.account-avatar{object-fit:cover;border-radius:50%;width:30px;height:30px}.account-avatar{color:#e92365;background:#ffe7ef;place-items:center;font-weight:800;display:grid}.account-identity{flex-direction:column;min-width:0;line-height:1.25;display:flex}.account-identity strong{text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.account-identity small{color:#85878d;text-overflow:ellipsis;white-space:nowrap;max-width:150px;font-size:9px;overflow:hidden}.account-panel a,.account-panel button{color:#66686e;cursor:pointer;white-space:nowrap;background:#f4f4f5;border:0;border-radius:8px;padding:6px 8px;font:700 10px Noto Sans TC,sans-serif;text-decoration:none}.account-panel .account-admin-link{color:#e92365;background:#fff0f5}.account-panel .account-legal-link{color:#5f6268;background:#f0f1f2}.admin-page{color:#303238;background:#f4f4f5;min-height:100vh;padding:36px 18px;font-family:Noto Sans TC,system-ui,sans-serif}.admin-shell{width:min(980px,100%);margin:auto}.admin-header{justify-content:space-between;align-items:center;gap:20px;display:flex}.admin-header-actions{align-items:center;gap:14px;display:flex}.admin-header p{color:#ff3478;letter-spacing:.15em;margin:0 0 5px;font-size:11px;font-weight:800}.admin-header h1{margin:0;font-size:30px}.admin-header a,.admin-shell>a{color:#e92365;font-size:13px;font-weight:700;text-decoration:none}.admin-summary{gap:12px;margin:24px 0;display:flex}.admin-summary span{background:#fff;border-radius:14px;padding:12px 18px;font-size:13px;box-shadow:0 5px 18px #28282d0f}.admin-summary strong{color:#ff3478;margin-right:5px;font-size:20px}.admin-access-requests{background:#fffaf1;border:1px solid #f0d9b4;border-radius:18px;gap:10px;margin:0 0 24px;padding:18px;display:grid}.admin-access-requests>header{justify-content:space-between;align-items:center;gap:16px;display:flex}.admin-access-requests>header p{color:#a06d1d;letter-spacing:.14em;margin:0 0 4px;font-size:9px;font-weight:800}.admin-access-requests>header h2{margin:0;font-size:18px}.admin-access-requests>header>span{color:#8a611e;background:#f4e2bf;border-radius:999px;padding:5px 9px;font-size:10px;font-weight:800}.admin-access-requests>article{background:#fff;border:1px solid #eadfc9;border-radius:13px;justify-content:space-between;align-items:center;gap:16px;padding:13px;display:flex}.admin-access-requests h3{margin:0;font-size:15px}.admin-access-actions{gap:7px;display:flex}.admin-access-actions button,.admin-user-access-action button{cursor:pointer;border-radius:9px;min-height:34px;padding:0 11px;font-size:10px;font-weight:800}.admin-access-actions .approve,.admin-user-access-action .approve{color:#fff;background:#2e9a72;border:1px solid #2e9a72}.admin-access-actions .deny,.admin-user-access-action .revoke{color:#b72e2e;background:#fff5f5;border:1px solid #efc6c6}.admin-users{gap:14px;display:grid}.admin-user-card{background:#fff;border:1px solid #e2e2e5;border-radius:18px;padding:20px}.admin-user-profile{align-items:center;gap:12px;display:flex}.admin-user-profile img{object-fit:cover;border-radius:50%;width:44px;height:44px}.admin-user-profile h2{margin:0;font-size:17px}.admin-user-profile h2 small{color:#e92365;background:#fff0f5;border-radius:999px;padding:3px 6px;font-size:9px}.admin-user-profile h2 small.access-approved{color:#28795c;background:#e8f6f0}.admin-user-profile h2 small.access-pending{color:#8a611e;background:#fff1d8}.admin-user-profile h2 small.access-denied,.admin-user-profile h2 small.access-revoked{color:#a62d2d;background:#fff0f0}.admin-user-access-action{margin-left:auto}.admin-user-profile p{color:#676a70;margin:2px 0;font-size:12px}.admin-user-profile span{color:#96989d;font-size:10px}.admin-journeys{border-top:1px solid #ececef;gap:7px;margin-top:16px;padding-top:14px;display:grid}.admin-journeys>div{background:#f7f7f8;border-radius:10px;grid-template-columns:minmax(160px,1fr) auto auto;align-items:center;gap:16px;padding:10px 12px;font-size:12px;display:grid}.admin-journeys span,.admin-journeys small,.admin-empty{color:#7d7f85}.admin-reports{background:#fff7fa;border:1px solid #efc9d7;border-radius:18px;gap:10px;margin:0 0 24px;padding:18px;display:grid}.admin-reports>header{justify-content:space-between;align-items:center;gap:16px;display:flex}.admin-reports>header p{color:#d92764;letter-spacing:.14em;margin:0 0 4px;font-size:9px;font-weight:800}.admin-reports>header h2{margin:0;font-size:18px}.admin-reports>header>span{color:#a61f50;background:#ffe3ed;border-radius:999px;padding:5px 9px;font-size:10px;font-weight:800}.admin-reports>article{background:#fff;border:1px solid #ecdce2;border-radius:13px;justify-content:space-between;align-items:flex-start;gap:18px;padding:14px;display:flex}.admin-reports h3{margin:0 0 5px;font-size:15px}.admin-reports p{color:#62656b;white-space:pre-wrap;max-width:620px;margin:0 0 7px;font-size:12px;line-height:1.55}.admin-reports small{color:#85878d;font-size:10px;display:block}.admin-reports a{color:#d92764;margin-top:7px;font-size:11px;font-weight:700;display:inline-block}.admin-report-actions{flex:none;gap:7px;display:flex}.admin-report-actions button{color:#62656b;cursor:pointer;background:#fff;border:1px solid #d9dade;border-radius:9px;min-height:34px;padding:0 11px;font-size:10px;font-weight:800}.admin-report-actions .remove{color:#fff;background:#c72e50;border-color:#c72e50}.admin-report-actions button:disabled{cursor:not-allowed;opacity:.45}.legal-page{color:#303238;background:#f5f5f6;min-height:100vh;padding:34px 18px 70px;font-family:Noto Sans TC,system-ui,sans-serif}.legal-shell{background:#fff;border:1px solid #e1e1e5;border-radius:24px;width:min(880px,100%);margin:auto;padding:clamp(26px,5vw,58px);box-shadow:0 14px 50px #28282d14}.legal-nav{flex-wrap:wrap;gap:9px;margin-bottom:40px;display:flex}.legal-nav a{color:#65676d;background:#f3f3f4;border-radius:9px;padding:7px 10px;font-size:11px;font-weight:700;text-decoration:none}.legal-nav a:first-child{color:#e92365;background:#fff0f5}.legal-shell header{border-bottom:1px solid #ececef;padding-bottom:28px}.legal-shell header p{color:#ff3478;letter-spacing:.16em;margin:0 0 9px;font-size:11px;font-weight:800}.legal-shell h1{letter-spacing:-.05em;margin:0 0 8px;font-size:clamp(30px,5vw,44px)}.legal-shell header span{color:#85878d;font-size:12px}.legal-shell section{border-bottom:1px solid #ececef;padding:30px 0 8px;scroll-margin-top:24px}.legal-shell h2{margin:0 0 17px;font-size:23px}.legal-shell h3{margin:20px 0 7px;font-size:15px}.legal-shell section p,.legal-shell footer p{color:#62656b;font-size:14px;line-height:1.9}.legal-shell a{color:#d92764}.legal-shell footer{padding-top:24px}.report-shell{max-width:720px}.report-success{color:#176a50;background:#effaf6;border:1px solid #b9dfd1;border-radius:12px;padding:13px 15px;font-size:13px}.report-form{gap:16px;margin-top:28px;display:grid}.report-form label{color:#55575d;gap:7px;font-size:13px;font-weight:700;display:grid}.report-form input,.report-form textarea,.report-form select{color:#303238;width:100%;font:inherit;background:#fff;border:1px solid #d9dade;border-radius:10px;outline:0;padding:11px 12px}.report-form input:focus,.report-form textarea:focus,.report-form select:focus{border-color:#ff79a6;box-shadow:0 0 0 3px #ffe8f0}.report-form .report-declaration{align-items:flex-start;gap:9px;font-weight:500;line-height:1.6;display:flex}.report-form .report-declaration input{accent-color:#ff3478;flex:none;width:auto;margin-top:4px}.report-form button{color:#fff;cursor:pointer;background:#ff3478;border:0;border-radius:11px;min-height:46px;font-weight:800}@media (width<=720px){.login-card{padding:32px 24px}.login-form input{font-size:16px}.account-panel{bottom:66px;right:10px}.account-identity{display:none}.admin-header{align-items:flex-start}.admin-summary{flex-wrap:wrap}.admin-access-requests>article{flex-direction:column;align-items:flex-start}.admin-reports>article{flex-direction:column}.admin-user-profile{flex-wrap:wrap;align-items:flex-start}.admin-user-access-action{width:100%;margin-left:56px}.admin-journeys>div{grid-template-columns:1fr;gap:3px}.shared-trip-banner span{display:none}}
