@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700;800&family=Noto+Sans+KR:wght@400;500;600;700;800;900&display=swap');
:root{--ink:#302732;--muted:#928a94;--pink:#d9698b;--rose:#f8e6ed;--line:#f0e7eb;--cream:#fdf9fa;--deep:#9e3d61;font-family:'DM Sans','Noto Sans KR',system-ui,sans-serif;color:var(--ink)}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:#fbf7f8}button,textarea,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.42}button:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #e9a2b9;outline-offset:2px}[hidden]{display:none!important}
body:before{content:"";position:fixed;inset:0;background:radial-gradient(circle at 4% 8%,#fce0e8 0,transparent 26%),radial-gradient(circle at 95% 90%,#fae5ef 0,transparent 30%);pointer-events:none}.app{position:relative;display:grid;grid-template-columns:minmax(240px,290px) minmax(350px,590px) minmax(220px,270px);gap:24px;max-width:1230px;min-height:100vh;margin:auto;padding:28px 24px}
.side{display:flex;flex-direction:column;gap:20px;padding:5px 0}.brand{display:flex;align-items:center;gap:11px}.brandMark{height:47px;width:47px;display:grid;place-items:center;position:relative;border-radius:15px;background:#d36a8a;color:white;font-weight:900;font-size:25px;letter-spacing:-5px;padding-right:5px;box-shadow:0 9px 22px #eeb4c5}.brandMark span{font-size:13px;letter-spacing:0;position:absolute;right:3px;top:1px;color:#fff3aa}.brand small{font-size:10px;letter-spacing:2px;color:#bf7c94;display:block;font-weight:800}.brand strong{font-size:20px;line-height:1.23;display:block;margin-top:2px}.portrait{height:350px;border-radius:24px;overflow:hidden;position:relative;box-shadow:0 18px 50px #bda9b02c}.portrait>img{width:100%;height:100%;object-fit:cover;object-position:center 16%}.portraitShade{position:absolute;inset:auto 0 0 0;color:white;padding:60px 22px 20px;background:linear-gradient(transparent,#312229bc)}.portraitShade span{font-size:11px;letter-spacing:2px;font-weight:600}.portraitShade b{display:block;font-size:32px}.portraitShade p{font-size:12px;margin:6px 0 0}.detail{background:#fff;border:1px solid var(--line);padding:15px;border-radius:19px}.mini{display:flex;gap:11px;align-items:center}.mini img{height:44px;width:44px;border-radius:15px;object-fit:cover}.mini strong{display:block;font-size:13px}.badge-sm{font-size:9px;border-radius:6px;background:#f7d4e2;padding:3px 5px;color:#b44e76}.mini small{font-size:11px;color:#8b808b}.detail p{font-size:12px;color:#716671;line-height:1.9;margin:12px 0 2px}.sidebarBottom{margin-top:auto;color:#a79aa4;font-size:11px;letter-spacing:.2px;display:flex;align-items:center;gap:7px}.dot{width:7px;height:7px;border-radius:50%;background:#d76e92}
.chat{display:flex;flex-direction:column;min-width:0;height:calc(100vh - 56px);min-height:580px;max-height:930px;border-radius:26px;background:white;box-shadow:0 18px 65px #6f43551f;border:1px solid #f0e4e9;overflow:hidden}.chatHead{display:flex;align-items:center;justify-content:space-between;padding:18px 20px 15px;border-bottom:1px solid var(--line)}.headPerson{display:flex;align-items:center;gap:11px}.headPerson img{height:44px;width:44px;object-fit:cover;border-radius:16px;border:2px solid #f6e4eb}.headPerson strong{font-size:15px}.heartmark{color:#d36d90}.headPerson small{display:block;color:var(--muted);font-size:11px;margin-top:4px}.onDot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#73c4a4;margin-right:3px}.headRight{display:flex;gap:9px;align-items:center}.round{border-radius:9px;background:#f9ecf1;padding:7px 11px;color:#bb5d81;font-size:12px;font-weight:800}.plainbtn{font-size:12px;padding:8px 2px;border:0;background:transparent;color:#aa94a0}.topLine{margin:12px 18px 0;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 13px;border-radius:12px;background:#fff8f9;color:#926a7a;font-size:11px}.connect{background:#d66e90;border:0;padding:8px 10px;color:white;font-size:11px;border-radius:8px;font-weight:700;white-space:nowrap}.loadingModels{margin:7px 20px 0;display:none;align-items:center;gap:10px;color:#ab8c99;font-size:11px}.loadingModels.show{display:flex}.loadingModels select{flex:1;width:0;padding:5px 8px;background:#fcf6f8;border:1px solid #f3dce4;border-radius:7px;color:#785669;font-size:11px}
.messages{flex:1;overflow-y:auto;min-height:0;display:flex;flex-direction:column;gap:17px;padding:20px 22px 24px;scrollbar-color:#f4dfe7 transparent;scrollbar-width:thin;background:linear-gradient(#fff,#fffdfd)}.dateChip{margin:0 auto 6px;background:#f8f2f5;border-radius:30px;color:#aba0a7;font-size:10px;padding:7px 13px}.message{display:flex;align-items:flex-start;gap:9px;max-width:87%;animation:arrive .22s both}.message.self{margin-left:auto;flex-direction:row-reverse}.message img{height:34px;width:34px;border-radius:13px;object-fit:cover;flex-shrink:0}.bubbleGroup{min-width:0}.bubbleName{font-size:10px;color:#8c7c86;font-weight:700;margin:1px 0 7px 4px}.self .bubbleName{text-align:right;margin-right:4px}.bubble{padding:12px 14px;font-size:13px;line-height:1.7;white-space:pre-wrap;overflow-wrap:anywhere;background:#f8f1f4;color:#4b3844;border-radius:4px 15px 15px 15px;box-shadow:0 2px 3px #00000005}.self .bubble{background:#dc7899;color:white;border-radius:15px 4px 15px 15px}.bubbleTime{font-size:9px;color:#c2b9bf;margin-top:5px;text-align:right}.typing{display:flex;gap:8px;align-items:center;padding:0 22px 12px;color:#ad8798}.typing img{width:30px;height:30px;border-radius:12px;object-fit:cover}.typing small{font-size:10px}.typingDots{padding:8px 11px;background:#f9eff3;border-radius:15px;display:flex;gap:3px}.typingDots i{width:5px;height:5px;border-radius:50%;background:#d78ba6;animation:bounce 1.1s infinite}.typingDots i:nth-child(2){animation-delay:.16s}.typingDots i:nth-child(3){animation-delay:.3s}@keyframes bounce{50%{transform:translateY(-4px);opacity:.45}}@keyframes arrive{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
.composer{padding:13px 17px 14px;border-top:1px solid #f1e8eb;background:#fff}.compInner{display:flex;align-items:end;gap:10px}.myAvatar{width:33px;height:33px;object-fit:cover;border-radius:11px;margin-bottom:2px}.compInner textarea{flex:1;resize:none;min-height:41px;max-height:110px;border:1px solid #f1e1e7;border-radius:14px;background:#fffafb;color:#493642;outline:0;line-height:1.55;padding:10px 12px;font-size:12px}.compInner textarea:focus{border-color:#e2a2b8}.send{display:grid;place-items:center;width:40px;height:40px;border:0;color:#fff;background:#d86f91;border-radius:13px;box-shadow:0 4px 10px #de9fb0}.hint{display:flex;justify-content:space-between;gap:6px;margin:9px 0 0 45px;color:#b7a9b0;font-size:10px}
.rightSide{padding:40px 2px 8px 6px;display:flex;flex-direction:column}.rightTitle{font-size:10px;color:#ca6f8e;letter-spacing:2px;font-weight:800;display:flex;justify-content:space-between}.rightTitle span{font-size:20px}.rightSide h2{font-size:30px;line-height:1.34;margin:27px 0 12px;letter-spacing:-1.5px}.rightSide>p{color:#958491;font-size:12px;line-height:2}.steps{margin-top:30px;display:grid;gap:20px}.steps>div{display:flex;align-items:center;gap:12px;font-size:12px;color:#766670}.steps i{height:31px;width:31px;border:1px solid #ebcbd6;color:#b56e8b;border-radius:11px;display:grid;place-items:center;font-size:11px;font-weight:800;font-style:normal}.steps b{color:#bd5377}.goal{margin-top:38px;background:white;border:1px solid #f3e3e9;border-radius:18px;padding:22px 18px}.goal span{font-size:11px;color:#9b8190}.goal strong{display:block;font-size:55px;color:#d0698b;line-height:1.3;letter-spacing:-2px}.goal strong small{font-size:28px}.goal p{font-size:11px;line-height:1.9;color:#95808d;margin:5px 0 0}.statsAside{margin-top:auto;display:grid;gap:11px}.statsAside button{background:transparent;border:0;border-bottom:1px solid #ddb7c8;padding:10px 1px;color:#bd6284;font-size:12px;text-align:left;font-weight:800;display:flex;justify-content:space-between}.statsAside small{font-size:10px;color:#aa9aa4;line-height:1.8}
.overlay{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:14px;background:#31202dc4;backdrop-filter:blur(9px);overflow:auto}.confessPanel,.resultPanel{background:#fff;width:min(100%,470px);border-radius:27px;padding:32px 34px;position:relative;text-align:center;box-shadow:0 25px 100px #1c102250;animation:arrive .25s}.flower{font-size:32px;color:#d57697;line-height:1}.overEyebrow{font-size:10px;letter-spacing:2px;font-weight:900;color:#c77392;margin:14px 0}.confessPanel h2,.resultPanel h2{margin:10px 0;font-size:24px;letter-spacing:-1.2px}.confessPanel>p,.statIntro{font-size:12px;line-height:2;color:#988a94}.confessImage{margin:12px auto 20px;width:92px;height:92px;object-fit:cover;border-radius:50%;box-shadow:0 0 0 8px #faedf3}.confessPanel textarea{width:100%;resize:vertical;min-height:105px;border:1px solid #efdce4;background:#fffafb;border-radius:14px;padding:14px;line-height:1.8;color:#3a2d37;font-size:13px}.mainBtn{width:100%;margin:13px 0 5px;background:#d4698c;border:0;border-radius:14px;color:white;padding:15px 16px;font-size:14px;font-weight:800;box-shadow:0 8px 20px #d4698c33}.confessPanel>small{display:block;color:#aa9ba4;font-size:10px;margin-top:11px}.resultIcon{font-size:42px;color:#d26c8f;background:#fae9ef;width:85px;height:85px;border-radius:50%;display:grid;place-items:center;margin:auto}.resultPanel{max-height:95vh;overflow:auto}.resultPanel h2{font-size:27px}.lastAnswer{display:flex;gap:12px;margin:21px 0;text-align:left}.lastAnswer img{height:46px;width:46px;object-fit:cover;border-radius:15px;flex-shrink:0}.lastAnswer>div{flex:1;background:#f9f0f4;border-radius:3px 15px 15px 15px;padding:14px 15px}.lastAnswer strong{font-size:12px;color:#b55c7e}.lastAnswer p{font-size:13px;white-space:pre-wrap;line-height:1.85;margin:7px 0 0}.resultStats{padding:20px 18px;background:#fcf7f9;border-radius:15px;margin-top:18px;text-align:left}.statHeader{display:flex;justify-content:space-between;gap:10px;margin-bottom:18px}.statHeader strong{font-size:13px}.statHeader span{font-size:11px;color:#aa8899}.statRow{display:grid;grid-template-columns:70px 1fr 42px;gap:10px;align-items:center;margin:14px 0;color:#846e7b;font-size:11px}.bar{height:9px;background:#eee0e7;border-radius:9px;overflow:hidden}.bar>div{height:100%;border-radius:9px}.statRow strong{text-align:right;font-size:11px;color:#725366}.resultStats small{display:block;color:#a598a1;font-size:10px;line-height:1.65;margin-top:16px}.textBtn{border:0;background:none;color:#987688;font-size:12px;padding:10px}.closeX{position:absolute;right:19px;top:15px;border:0;background:none;font-size:25px;color:#a88899}.toast{position:fixed;z-index:50;bottom:25px;left:50%;transform:translate(-50%,10px);background:#3f2d39;color:white;padding:13px 19px;border-radius:12px;box-shadow:0 8px 30px #0003;font-size:12px;min-width:200px;text-align:center;opacity:0;pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:1100px){.app{grid-template-columns:minmax(210px,270px) minmax(350px,650px)}.rightSide{display:none}}
@media(max-width:700px){body{background:white}.app{display:block;margin:0;min-height:100dvh;padding:0}.side,.rightSide{display:none}.chat{height:100dvh;max-height:none;min-height:0;border:none;border-radius:0;box-shadow:none}.chatHead{padding:11px 13px 9px}.headPerson img{width:39px;height:39px;border-radius:14px}.round{font-size:11px}.topLine{margin:7px 12px 0}.loadingModels{margin-left:13px;margin-right:13px}.messages{padding:15px 14px 18px;gap:16px}.message{max-width:91%}.bubble{font-size:13px;padding:11px 12px}.composer{padding:10px 12px calc(12px + env(safe-area-inset-bottom))}.hint{font-size:9px;margin-left:0}.hint span{display:none}.confessPanel,.resultPanel{padding:26px 22px;border-radius:22px}.overlay{padding:10px}}

/* Public counters: never show an invented target win rate. */
.liveSummary{font-size:12px;color:#756473;background:#fff4f8;padding:8px 18px;border-bottom:1px solid #f4e6eb;}
.goal #successCount{font-size:30px;letter-spacing:-.04em;}
.goal #challengeCount{margin-top:5px;font-size:14px;color:#765c6e;font-weight:600;}

/* 2026-10-22: familiar sky-blue Korean messenger styling inside chat; game sidebar intact */
.chat{background:#B2C7DA;border-color:#9fafbf}
.chatHead{background:#B2C7DA;border-bottom:1px solid #9aafc1}
.chatHead .headPerson img{border-color:#e3eff5;border-radius:13px}
.chatHead .headPerson strong{color:#22313b}
.chatHead .headPerson small{color:#596d7c}
.chatHead .round{background:#d4e0e8;color:#334c5b}
.chatHead .plainbtn{color:#41596b}
.topLine{background:rgba(255,255,255,.26);color:#3e586a;margin:8px 12px 0;border-radius:8px;padding:7px 12px}
.liveSummary{background:#B2C7DA;color:#456071;border-bottom:1px solid #9aafc1;font-size:11px;padding:7px 17px}
.messages{background:#B2C7DA;scrollbar-color:#90a9bc transparent;gap:16px}
.dateChip{color:#fff;background:#95aec2cc;border-radius:14px;padding:6px 12px;font-size:11px}
.message img{border-radius:12px;width:39px;height:39px}
.bubbleName{color:#23394a;font-weight:600}
.bubble{background:#fff;color:#272727;border-radius:3px 10px 10px 10px;box-shadow:0 1px 1px #35495a16;line-height:1.65;position:relative}
.message.them .bubble:before{content:"";position:absolute;left:-6px;top:9px;border-top:6px solid #fff;border-left:7px solid transparent}
.message.self .bubble{background:#FEE500;color:#202020;border-radius:10px 3px 10px 10px}
.message.self .bubble:before{content:"";position:absolute;right:-6px;top:9px;border-top:6px solid #FEE500;border-right:7px solid transparent}
.bubbleTime{color:#526879}
.typing{background:#B2C7DA;color:#455e6f}
.typingDots{background:#fff}
.typingDots i{background:#8ea2ad}
.composer{background:#fff;border-top:1px solid #cbd6dd}
.compInner textarea{background:#fff;border-color:#dce2e8;border-radius:10px;color:#292929}
.compInner textarea:focus{border-color:#9bb1bf}
.send{background:#FEE500;color:#262626;border-radius:10px;box-shadow:none}
.hint{color:#8e98a2}
.personalKeyBtn{border-radius:7px!important;border:1px solid #8ca4b7!important;background:#dfe9eea3!important;padding:6px 8px!important;white-space:nowrap;font-weight:700!important}
.keyPanel{text-align:left}
.keyPanel h2{text-align:center}
.keyPanel .overEyebrow{text-align:center}
.keyPanel .statIntro{color:#675f69}
.keyLabel{display:block;font-weight:700;font-size:12px;margin:14px 0 8px}
.keyInput{width:100%;padding:12px 14px;border:1px solid #d6dce2;border-radius:10px;font-size:13px;background:#fff;color:#262626}
.keyInput:focus{outline:2px solid #9cbcd0;outline-offset:1px}
.keyPanel>a{display:block;margin-top:10px}
.keyPanel #useSharedBtn{display:block;margin:auto}
@media(max-width:700px){.chat{background:#B2C7DA}.headRight{gap:5px}.personalKeyBtn{font-size:10px!important;padding:5px 6px!important}.topLine{font-size:10px}.bubble{font-size:13px}}

@media(max-width:400px){.chatHead{gap:5px;padding:10px 8px}.headPerson{gap:6px}.headPerson img{width:33px;height:33px}.headPerson strong{font-size:13px}.headPerson small{font-size:9px}.headRight{gap:4px}.headRight .round{padding:6px 5px;font-size:10px}.headRight .plainbtn{font-size:10px}.personalKeyBtn{font-size:9px!important;padding:4px!important}}
