:root{color:#f8fafc;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#09030d;font-family:Inter,Noto Sans SC,Microsoft YaHei,system-ui,sans-serif}*{box-sizing:border-box}body{min-width:320px;min-height:100svh;margin:0}#root{min-height:100svh}.app-shell{background:linear-gradient(#09030dc7,#09030df5),url(https://images.unsplash.com/photo-1514525253161-7a46d19cd819?q=80&w=1600&auto=format&fit=crop) 50%/cover;place-items:start center;min-height:100svh;padding:18px;display:grid;position:relative;overflow:hidden auto}.ambient{aspect-ratio:1;filter:blur(80px);opacity:.34;pointer-events:none;width:42vw;position:absolute}.ambient-one{background:#fb1f72;top:-120px;right:-80px}.ambient-two{background:#7c3aed;bottom:-140px;left:-100px}.phone-frame{z-index:1;-webkit-backdrop-filter:blur(26px);backdrop-filter:blur(26px);background:#0a0812c7;border:1px solid #ffffff24;border-radius:34px;flex-direction:column;gap:12px;width:min(100vw - 36px,max(430px,72svh - 25.92px));min-height:max(760px,100svh - 36px);padding:18px;display:flex;position:relative;overflow:visible;box-shadow:0 28px 80px #0000008a}.topbar,.profile-row,.status-copy,.modal-head,.modal-actions{justify-content:space-between;align-items:center;gap:12px;display:flex}.modal-actions{flex-wrap:wrap}.modal-actions button{border-radius:14px;justify-content:center;align-items:center;gap:7px;min-height:42px;padding:0 14px;font-weight:900;display:inline-flex}.topbar h1,.profile-row h2,.age-card h2,.settings-card h2,.ending-card h2{color:#fff;letter-spacing:0;margin:0}.topbar h1{font-size:34px;font-weight:900}.mini-label{color:#fb7185;text-transform:uppercase;margin:0 0 2px;font-size:11px;font-weight:800}.top-actions{align-items:center;gap:8px;display:flex}.round-badge,.distance-pill{color:#ffe4ef;background:#f43f5e2e;border:1px solid #fb718547;border-radius:999px;padding:7px 10px;font-size:12px;font-weight:800}button{color:#f8fafc;font:inherit;cursor:pointer;background:#ffffff14;border:0}button:disabled{cursor:not-allowed;opacity:.48}.icon-btn{border-radius:50%;place-items:center;width:38px;height:38px;display:grid}.status-bars{gap:9px;display:grid}.status-line{gap:5px;display:grid}.status-copy{color:#cbd5e1;font-size:12px;font-weight:800}.status-copy strong{color:#fff;font-size:13px}.bar-track{background:#ffffff14;border-radius:999px;height:8px;padding:2px}.bar-fill{border-radius:inherit;height:100%;transition:width .3s}.bar-fill.impulse{background:linear-gradient(90deg,#22c55e,#fb7185,#e11d48)}.bar-fill.anxiety{background:linear-gradient(90deg,#6366f1,#a855f7)}.bar-fill.anxiety.panic{background:linear-gradient(90deg,#a855f7,#ef4444)}.panic-warning{color:#fecdd3;background:#be123c33;border:1px solid #fb718547;border-radius:14px;padding:9px 11px;font-size:12px;font-weight:800;line-height:1.45}.date-card{touch-action:none;background:linear-gradient(#ffffff21,#ffffff0d);border:1px solid #ffffff1f;border-radius:26px;flex-direction:column;flex:none;gap:10px;min-height:0;padding:12px;transition:transform .2s;display:flex;position:relative;box-shadow:inset 0 1px #ffffff14}.date-card.swiping{border-color:#fb718580}.swipe-stamp{z-index:4;color:#fecdd3;opacity:0;border:2px solid #fb7185;border-radius:10px;padding:6px 10px;font-weight:900;position:absolute;top:26px;left:22px;transform:rotate(-12deg)}.swiping .swipe-stamp{opacity:1}.avatar-field{border-radius:22px;flex:none;place-items:center;height:clamp(140px,18svh,220px);min-height:0;display:grid;position:relative;overflow:hidden}.avatar-field:after{content:"";background:linear-gradient(#0000,#000000b8);height:45%;position:absolute;inset:auto 0 0}.distance-pill{z-index:2;position:absolute;top:12px;right:12px}.partner-status-pill{z-index:2;color:#fff;background:#0f172aad;border:1px solid #ffffff29;border-radius:999px;padding:6px 9px;font-size:11px;font-weight:900;position:absolute;top:12px;left:12px}.partner-status-pill.safe{color:#bbf7d0;border-color:#4ade8047}.partner-status-pill.danger{color:#fecdd3;border-color:#fb71855c}.avatar-mark{filter:drop-shadow(0 18px 24px #0000006b);font-size:58px}.quote{z-index:2;color:#ffe4ef;margin:0;font-size:15px;font-weight:700;position:absolute;bottom:16px;left:18px;right:18px}.profile-row h2{font-size:30px;font-weight:900}.profile-row p{color:#cbd5e1;margin:2px 0 0;font-size:13px}.body-meta{gap:6px;min-width:78px;display:grid}.body-meta span{color:#fff;background:#ffffff14;border-radius:12px;padding:6px 9px;font-size:12px;font-weight:900}.first-tag,.tag-slot{color:#f8fafc;background:#f43f5e24;border:1px solid #f43f5e38;border-radius:14px;align-items:center;min-height:38px;padding:9px 11px;font-size:13px;font-weight:800;display:flex}.first-tag{gap:8px}.first-tag b{color:#fecdd3;margin-left:auto;font-size:11px}.tag-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.tag-slot{text-align:center;color:#94a3b8;overflow-wrap:anywhere;background:#0f172ab8;border-color:#94a3b833;justify-content:center;gap:5px;min-width:0}.tag-slot span{opacity:.8}.tag-slot.tone-danger{color:#fecdd3;background:#be123c3d;border-color:#fb718557}.tag-slot.tone-safe{color:#bbf7d0;background:#1665343d;border-color:#4ade803d}.tag-slot.tone-neutral,.tag-slot.tone-limit{color:#fde68a;background:#92400e33;border-color:#fbbf2438}.tag-slot.is-masked{color:#e9d5ff;filter:blur(.2px);background:#581c8757;border-color:#a855f747}.dialog-panel{color:#cbd5e1;background:#0206178f;border:1px solid #ffffff14;border-radius:20px;flex:150px;align-content:start;gap:8px;min-height:132px;padding:13px 14px;font-size:13px;line-height:1.55;display:grid;overflow:auto}.dialog-panel p,.feedback-card p,.ending-card p{margin:0}blockquote{color:#fbcfe8;margin:0;font-weight:800}.dialog-panel span,.feedback-card span{color:#fda4af;font-size:12px;font-weight:800}.loading-line{color:#fbcfe8;justify-content:center;align-items:center;gap:8px;display:flex}.chat-error{gap:8px;display:grid}.chat-error p{color:#f8fafc}.chat-error span{color:#fda4af;font-size:12px;font-weight:800}.chat-error button{color:#fff;background:#f43f5e38;border-radius:13px;justify-content:center;align-items:center;gap:7px;min-height:38px;font-weight:900;display:inline-flex}.actions{gap:9px;display:grid}.primary-action{color:#fff;background:linear-gradient(135deg,#e11d48,#9333ea);border-radius:17px;justify-content:center;align-items:center;gap:8px;min-height:48px;font-weight:900;display:flex;box-shadow:0 16px 32px #e11d4847}.primary-action small{color:#ffffffb3;font-size:11px;font-weight:800}.action-grid{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}.choice{border-radius:16px;gap:3px;min-height:68px;padding:9px 8px;font-size:14px;font-weight:900;display:grid;position:relative}.choice small{color:#ffffff94;gap:1px;font-size:10px;font-weight:700;line-height:1.25;display:grid}.choice.is-blocked{opacity:.62;filter:grayscale(.85)}.choice-lock{border-radius:inherit;color:#fecdd3;pointer-events:none;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#08030ab3;border:1px solid #fb71855c;place-items:center;font-size:12px;font-weight:950;display:grid;position:absolute;inset:0;transform:rotate(-2deg)}.choice-oral_condom{background:#334155d1}.choice-oral_raw{background:#78350fd1}.choice-sex_condom{background:#056149d1}.choice-sex_raw{background:#9f1239e6}.utility-row{grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.utility-row button{border-radius:15px;flex-wrap:wrap;justify-content:center;align-items:center;gap:2px 6px;min-height:66px;font-weight:800;display:flex}.utility-row button small{color:#ffffff94;flex-basis:100%;gap:1px;font-size:10px;line-height:1.25;display:grid}.modal-layer{z-index:20;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#030008b8;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.age-card,.settings-card,.help-card,.feedback-card,.ending-card{color:#cbd5e1;background:#0f0916f0;border:1px solid #ffffff1f;border-radius:28px;gap:16px;width:min(100%,420px);padding:24px;display:grid;box-shadow:0 24px 80px #00000080}.ending-card{max-height:calc(100svh - 36px);overflow:auto}.age-card h2,.settings-card h2,.help-card h2,.ending-card h2{font-size:34px;font-weight:950}.help-card{max-height:calc(100svh - 36px);overflow:auto}.help-list{gap:9px;display:grid}.help-list p{color:#cbd5e1;margin:0;font-size:13px;line-height:1.55}.help-list strong{color:#fbcfe8}.goal-note{color:#fbcfe8;margin:-4px 0 0;font-size:13px;font-weight:800;line-height:1.55}.settings-card label{color:#f8fafc;gap:7px;font-size:13px;font-weight:800;display:grid}.locked-api{color:#f8fafc;gap:8px;font-size:13px;font-weight:800;display:grid}.locked-api strong{color:#fff;overflow-wrap:anywhere;background:#ffffff14;border:1px solid #ffffff1f;border-radius:14px;align-items:center;min-height:46px;padding:0 13px;display:flex}.api-note{color:#fbcfe8;margin:-2px 0 0;font-size:12px;font-weight:700;line-height:1.45}.settings-card input{box-sizing:border-box;color:#fff;width:100%;font:inherit;background:#ffffff14;border:1px solid #ffffff1f;border-radius:14px;padding:12px 13px}.range-value,.settings-error,.model-count{color:#fda4af;font-size:12px;font-weight:800}.model-count{color:#cbd5e1;margin:0}.guide-link{color:#fbcfe8;background:#f43f5e1f;border:1px solid #f43f5e33;border-radius:14px;justify-content:center;align-items:center;gap:7px;min-height:38px;font-size:13px;font-weight:900;text-decoration:none;display:inline-flex}.guide-link:hover{background:#f43f5e33}.model-list{gap:7px;max-height:170px;display:grid;overflow:auto}.model-list button{text-align:left;color:#cbd5e1;border-radius:12px;min-height:36px;padding:0 12px}.model-list button.active{color:#fff;background:#e11d4859}.feedback-card{text-align:left}.feedback-card .primary-action,.ending-card .primary-action{width:100%}.ending-card h3{color:#fbcfe8;margin:0}.stats-grid{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}.stats-grid span{color:#cbd5e1;background:#ffffff12;border-radius:14px;padding:10px;font-size:12px;font-weight:800}.stats-grid strong{color:#fff;font-size:20px;display:block}.disease-report{color:#fecdd3;background:#be123c2e;border:1px solid #fb718547;border-radius:16px;gap:4px;padding:12px;display:grid}.disease-report strong{color:#fff}.disease-report span,.disease-report small{color:#fbcfe8;font-size:12px}.action-stats{grid-template-columns:repeat(2,1fr);gap:7px;display:grid}.action-stats span{color:#cbd5e1;background:#ffffff0f;border-radius:12px;justify-content:space-between;gap:8px;padding:8px 10px;font-size:12px;font-weight:800;display:flex}.action-stats strong{color:#fff}.history-review{gap:10px;display:grid}.history-list{gap:8px;display:grid}.history-item{background:#ffffff0f;border:1px solid #ffffff1a;border-radius:14px;grid-template-columns:1fr auto;gap:6px 10px;padding:10px;display:grid}.history-item div{gap:2px;display:grid}.history-item strong{color:#fff;font-size:13px}.history-item div span,.history-item p,.history-item small{color:#cbd5e1;font-size:11px}.history-item mark{color:#fff;background:#94a3b83d;border-radius:999px;align-self:start;padding:4px 8px;font-size:10px;font-weight:900}.history-item p,.history-item small{grid-column:1/-1;margin:0}.history-item.tone-safe mark,.history-item.tone-checked mark{background:#0596696b}.history-item.tone-carrier mark{background:#b4530985}.history-item.tone-infected mark{background:#be123ca3}.spin{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=520px){.app-shell{padding:0;display:block}.phone-frame{border:0;border-radius:0;gap:10px;width:100%;height:auto;min-height:100svh;padding:18px;overflow:visible}.topbar h1{font-size:32px}.status-bars{gap:8px}.date-card{flex:none;gap:9px;min-height:0;padding:12px}.avatar-field{flex:none;height:clamp(136px,17svh,156px);min-height:0}.avatar-mark{font-size:48px}.quote{font-size:14px;bottom:14px}.profile-row h2{font-size:25px}.body-meta{gap:4px;min-width:76px}.body-meta span{padding:5px 8px}.first-tag,.tag-slot{min-height:36px;padding:8px 9px;font-size:12px}.tag-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.dialog-panel{flex:130px;min-height:120px;padding:12px 13px;font-size:12px;line-height:1.45}.primary-action{min-height:46px}.choice{min-height:66px;font-size:13px}.utility-row button{min-height:64px;font-size:13px}}@media (height<=820px) and (width<=520px){.phone-frame{gap:8px;padding:16px}.avatar-field{height:140px;min-height:0}.date-card{gap:8px}.dialog-panel{max-height:150px;overflow:auto}.action-grid{gap:7px}.choice{min-height:62px}}
