:root{--bg:#1b1310;--bg-glow-1:rgba(255,140,66,0.07);--bg-glow-2:rgba(255,196,110,0.05);--surface:#251a14;--surface-2:#2f221a;--surface-3:#3a2b21;--hover:#382921;--border:#40302a;--border-soft:#33251f;--text:#f8eee1;--muted:#c2ab97;--faint:#8a7260;--brand:#ff8c42;--brand-hover:#ffa25f;--brand-strong:#ff7a2e;--brand-soft:rgba(255,140,66,0.14);--brand-softer:rgba(255,140,66,0.08);--brand-contrast:#241205;--danger:#ff6b6b;--danger-soft:rgba(255,107,107,0.14);--warn:#ffcf5c;--success:#6fd39a;--font-display:var(--font-jua),"Jua","Noto Sans KR",sans-serif;--font-body:var(--font-noto),"Noto Sans KR",-apple-system,"Apple SD Gothic Neo","Malgun Gothic",sans-serif;--text-xs:12px;--text-sm:13.5px;--text-base:15.5px;--text-lg:18px;--text-xl:23px;--text-2xl:30px;--text-3xl:40px;--text-4xl:54px;--radius-sm:10px;--radius-md:16px;--radius-lg:22px;--radius-xl:28px;--radius-full:999px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:72px;--shadow-1:0 2px 8px rgba(12,6,3,0.35);--shadow-2:0 12px 40px rgba(12,6,3,0.5);--shadow-glow:0 0 0 1px rgba(255,140,66,0.25),0 8px 32px rgba(255,140,66,0.18);--maxw:1120px;--chat-maxw:780px;--ease-out:cubic-bezier(0.16,1,0.3,1)}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:var(--text-base);line-height:1.6;-webkit-font-smoothing:antialiased}body{min-height:100dvh;position:relative}body:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(900px 600px at 12% -8%,var(--bg-glow-1),transparent 60%),radial-gradient(800px 500px at 95% 12%,var(--bg-glow-2),transparent 55%),radial-gradient(700px 700px at 50% 110%,rgba(255,140,66,.04),transparent 60%)}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}img{display:block;max-width:100%}::selection{background:var(--brand);color:var(--brand-contrast)}.display{font-family:var(--font-display);font-weight:400;letter-spacing:-.01em;line-height:1.15}:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:var(--radius-sm)}*{scrollbar-width:thin;scrollbar-color:var(--border) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border);border-radius:var(--radius-full)}.container{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 var(--space-5)}.stack>*+*{margin-top:var(--space-3)}@keyframes rise-in{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.rise{animation:rise-in .7s var(--ease-out) both}.rise-1{animation-delay:.05s}.rise-2{animation-delay:.14s}.rise-3{animation-delay:.23s}.rise-4{animation-delay:.32s}.nav{position:-webkit-sticky;position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--bg) 78%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--border-soft)}.nav-inner{gap:var(--space-4);height:64px}.nav-brand,.nav-inner{display:flex;align-items:center}.nav-brand{gap:10px;font-family:var(--font-display);font-size:22px;color:var(--text);letter-spacing:-.01em}.nav-brand svg{width:28px;height:28px}.nav-links{display:flex;align-items:center;gap:var(--space-1);margin-left:auto}.nav-link{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:var(--radius-full);color:var(--muted);font-size:var(--text-sm);font-weight:700;transition:color .18s var(--ease-out),background .18s var(--ease-out)}.nav-link:hover{color:var(--text);background:var(--hover)}.nav-link.active{color:var(--brand);background:var(--brand-soft)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:10px 20px;border-radius:var(--radius-full);border:1px solid var(--border);background:var(--surface-2);color:var(--text);font-family:var(--font-body);font-size:var(--text-sm);font-weight:700;white-space:nowrap;transition:background .18s var(--ease-out),transform .12s var(--ease-out),border-color .18s var(--ease-out),box-shadow .18s var(--ease-out)}.btn:hover{background:var(--hover);border-color:color-mix(in srgb,var(--brand) 40%,var(--border))}.btn:active{transform:translateY(1px) scale(.98)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--brand);border-color:var(--brand);color:var(--brand-contrast);box-shadow:0 4px 18px rgba(255,140,66,.28)}.btn-primary:hover{background:var(--brand-hover);border-color:var(--brand-hover);box-shadow:0 6px 24px rgba(255,140,66,.38)}.btn-ghost{background:transparent;border-color:transparent;color:var(--muted)}.btn-ghost:hover{background:var(--hover);color:var(--text)}.btn-danger{background:var(--danger-soft);border-color:transparent;color:var(--danger)}.btn-danger:hover{background:var(--danger);color:#fff}.btn-sm{padding:7px 14px;font-size:var(--text-xs)}.btn-lg{padding:14px 28px;font-size:var(--text-base)}.btn-block{width:100%}.field{display:flex;flex-direction:column;gap:7px}.field>label{font-size:var(--text-sm);font-weight:700;color:var(--muted)}.input,.select,.textarea{width:100%;padding:12px 16px;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--surface-2);color:var(--text);font-size:var(--text-base);font-family:var(--font-body);transition:border-color .18s var(--ease-out),box-shadow .18s var(--ease-out)}.input::placeholder,.textarea::placeholder{color:var(--faint)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.textarea{resize:vertical;min-height:96px;line-height:1.55}.card{background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius-lg);padding:var(--space-5)}.char-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));grid-gap:var(--space-5);gap:var(--space-5)}.char-card{position:relative;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius-xl);overflow:hidden;transition:transform .28s var(--ease-out),border-color .28s var(--ease-out),box-shadow .28s var(--ease-out)}.char-card:hover{transform:translateY(-6px);border-color:color-mix(in srgb,var(--brand) 55%,var(--border));box-shadow:var(--shadow-2)}.char-card-media{position:relative;aspect-ratio:1/.86;background:var(--surface-2);overflow:hidden}.char-card-media img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ease-out)}.char-card:hover .char-card-media img{transform:scale(1.06)}.char-card-media .char-fallback{position:absolute;inset:0;display:grid;place-items:center;font-size:64px}.char-card-media:after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(20,12,8,.85),transparent 55%);pointer-events:none}.char-card-body{position:relative;padding:var(--space-4) var(--space-4) var(--space-4);margin-top:-44px;z-index:1}.char-card-top{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-2)}.char-name{font-family:var(--font-display);font-size:var(--text-xl);color:var(--text);line-height:1.2;display:flex;align-items:center;gap:7px}.char-species{color:var(--faint);font-size:var(--text-xs);font-weight:700;margin-top:2px}.char-tagline{color:var(--muted);font-size:var(--text-sm);margin-top:var(--space-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.6em}.char-card-foot{display:flex;align-items:center;justify-content:space-between;margin-top:var(--space-3)}.char-meta{color:var(--faint);font-size:var(--text-xs);font-weight:600}.char-detail-head{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-3);padding:var(--space-6) 0 var(--space-5)}.char-detail-avatar{width:150px;height:150px;border-radius:var(--radius-full);padding:4px;background:conic-gradient(from 140deg,var(--brand),#ffc46e,var(--brand-strong),var(--brand));box-shadow:var(--shadow-glow)}.char-detail-avatar img,.char-detail-avatar>div{width:100%;height:100%;border-radius:var(--radius-full);overflow:hidden;background:var(--surface-2)}.char-detail-avatar img{object-fit:cover}.char-detail-avatar .emoji-fallback{display:grid;place-items:center;height:100%;font-size:68px}.char-detail-name{font-family:var(--font-display);font-size:var(--text-3xl);display:flex;align-items:center;gap:10px;margin:0}.char-detail-species{color:var(--brand);font-weight:800;font-size:var(--text-sm);letter-spacing:.04em}.char-detail-tagline{color:var(--muted);font-size:var(--text-lg);max-width:44ch;margin:0}.chips{display:flex;flex-wrap:wrap;gap:7px}.chip{font-size:var(--text-xs);font-weight:700;padding:4px 12px;border-radius:var(--radius-full);background:var(--brand-softer);color:var(--brand);border:1px solid transparent}.chip-btn{cursor:pointer;background:var(--surface-2);color:var(--muted);border:1px solid var(--border);transition:color .18s var(--ease-out),border-color .18s var(--ease-out),background .18s var(--ease-out)}.chip-btn:hover{color:var(--text);border-color:var(--brand)}.chip-btn.active{border-color:var(--brand)}.ai-badge,.chip-btn.active{background:var(--brand);color:var(--brand-contrast)}.ai-badge{font-family:var(--font-body);font-size:9.5px;font-weight:900;letter-spacing:.06em;padding:2.5px 7px;border-radius:var(--radius-full);text-transform:uppercase;flex-shrink:0}.hero{display:grid;grid-template-columns:1.05fr .95fr;grid-gap:var(--space-7);gap:var(--space-7);align-items:center;padding:var(--space-7) 0 var(--space-6)}.hero-eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:var(--text-xs);font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--brand);background:var(--brand-soft);border:1px solid color-mix(in srgb,var(--brand) 35%,transparent);padding:6px 14px;border-radius:var(--radius-full)}.hero h1{font-family:var(--font-display);font-size:clamp(38px,5.4vw,58px);line-height:1.12;margin:var(--space-4) 0 var(--space-4);letter-spacing:-.015em}.hero h1 .accent{color:var(--brand)}.hero-sub{color:var(--muted);font-size:var(--text-lg);max-width:46ch;margin:0 0 var(--space-6)}.hero-cta{display:flex;gap:var(--space-3);flex-wrap:wrap}.hero-spot{position:relative;display:flex;flex-direction:column;align-items:center;gap:var(--space-4)}.hero-avatar-ring{position:relative;width:240px;height:240px;border-radius:var(--radius-full);padding:5px;background:conic-gradient(from 140deg,var(--brand),#ffc46e,var(--brand-strong),var(--brand));box-shadow:var(--shadow-glow)}.hero-avatar-ring .hero-avatar{width:100%;height:100%;border-radius:var(--radius-full);overflow:hidden;background:var(--surface-2)}.hero-avatar img{width:100%;height:100%;object-fit:cover}.hero-bubble{position:relative;max-width:320px;background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-sm);padding:var(--space-3) var(--space-4);color:var(--text);font-size:var(--text-sm);box-shadow:var(--shadow-1)}.hero-bubble:before{content:"";position:absolute;left:18px;top:-8px;width:14px;height:14px;background:var(--surface);border-left:1px solid var(--border-soft);border-top:1px solid var(--border-soft);transform:rotate(45deg)}.hero-bubble .speaker{font-family:var(--font-display);color:var(--brand);font-size:var(--text-sm);display:block;margin-bottom:3px}.section-title{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);margin:var(--space-7) 0 var(--space-5)}.section-title h2{font-family:var(--font-display);font-size:var(--text-2xl);margin:0;letter-spacing:-.01em}.section-title a{color:var(--brand);font-size:var(--text-sm);font-weight:800;transition:color .18s var(--ease-out)}.section-title a:hover{color:var(--brand-hover)}.empty{text-align:center;padding:var(--space-7) var(--space-5);color:var(--muted);border:1.5px dashed var(--border);border-radius:var(--radius-xl);background:var(--surface)}.skeleton{background:linear-gradient(90deg,var(--surface) 25%,var(--surface-2) 50%,var(--surface) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite;border-radius:var(--radius-lg)}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.auth-wrap{min-height:calc(100dvh - 64px);display:grid;place-items:center;padding:var(--space-5)}.auth-card{width:100%;max-width:420px}.auth-card h1{font-family:var(--font-display);font-size:var(--text-2xl);margin:0 0 var(--space-1)}.auth-sub{color:var(--muted);margin:0 0 var(--space-5)}.auth-error{background:var(--danger-soft);color:var(--danger);padding:11px 15px;border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:700}.auth-note{font-size:var(--text-xs);color:var(--faint);text-align:center;margin-top:var(--space-4)}.chat-shell{display:flex;flex-direction:column;height:100dvh;background:var(--bg)}.chat-header{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-soft);background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.chat-header-title{font-family:var(--font-display);font-size:var(--text-lg);display:flex;align-items:center;gap:7px}.chat-header-sub{font-size:var(--text-xs);color:var(--faint);font-weight:600}.chat-scroll{flex:1 1;overflow-y:auto;padding:var(--space-5) var(--space-4)}.chat-inner{max-width:var(--chat-maxw);margin:0 auto;display:flex;flex-direction:column;gap:var(--space-4)}.msg{display:flex;gap:var(--space-3);max-width:86%;animation:rise-in .35s var(--ease-out) both}.msg-user{align-self:flex-end;flex-direction:row-reverse}.msg-bubble{padding:11px 16px;border-radius:var(--radius-lg);white-space:pre-wrap;word-break:break-word;font-size:var(--text-base);line-height:1.6}.msg-user .msg-bubble{background:var(--brand);color:var(--brand-contrast);border-bottom-right-radius:var(--radius-sm);font-weight:500}.msg-bot .msg-bubble{background:var(--surface);border:1px solid var(--border-soft);border-bottom-left-radius:var(--radius-sm)}.msg-system{align-self:center;max-width:90%;text-align:center;color:var(--faint);font-style:italic;font-size:var(--text-sm)}.typing-dot{display:inline-block;width:7px;height:7px;margin-right:4px;border-radius:50%;background:var(--brand);animation:blink 1.2s infinite}.typing-dot:nth-child(2){animation-delay:.2s}.typing-dot:nth-child(3){animation-delay:.4s}@keyframes blink{0%,80%,to{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}.chat-composer{border-top:1px solid var(--border-soft);padding:var(--space-3) var(--space-4) var(--space-4);background:color-mix(in srgb,var(--bg) 90%,transparent)}.composer-inner{max-width:var(--chat-maxw);margin:0 auto;display:flex;gap:var(--space-3);align-items:flex-end}.composer-inner .textarea{min-height:48px;max-height:180px;resize:none;flex:1 1;border-radius:var(--radius-lg)}.composer-hint{max-width:var(--chat-maxw);margin:7px auto 0;font-size:var(--text-xs);color:var(--faint);text-align:center}.send-btn{width:48px;height:48px;font-size:18px}.avatar,.send-btn{border-radius:var(--radius-full);flex-shrink:0}.avatar{width:56px;height:56px;display:grid;place-items:center;font-size:28px;border:2px solid var(--brand-soft);background:var(--surface-2);overflow:hidden}.avatar-lg{width:96px;height:96px;font-size:48px}.footer{border-top:1px solid var(--border-soft);margin-top:var(--space-8);padding:var(--space-6) 0;color:var(--faint);font-size:var(--text-sm)}.footer a:hover{color:var(--muted)}.footer-links{display:flex;flex-wrap:wrap;gap:var(--space-5);margin-bottom:var(--space-3)}.row,.row-between{display:flex;align-items:center;gap:var(--space-3)}.row-between{justify-content:space-between}.muted{color:var(--muted)}.faint{color:var(--faint)}.divider{height:1px;background:var(--border-soft);margin:var(--space-4) 0}.notice{background:var(--brand-softer);border:1px solid color-mix(in srgb,var(--brand) 30%,transparent);color:var(--text);padding:13px 17px;border-radius:var(--radius-md);font-size:var(--text-sm)}.prose p{color:var(--muted)}.prose h2{margin-top:var(--space-5)}.prose h1,.prose h2{font-family:var(--font-display)}@media (max-width:900px){.hero{grid-template-columns:1fr;gap:var(--space-6);padding-top:var(--space-6)}.hero-spot{order:-1}.hero-avatar-ring{width:180px;height:180px}}@media (max-width:640px){.nav-link span.label{display:none}.char-grid{grid-template-columns:repeat(auto-fill,minmax(165px,1fr));gap:var(--space-3)}.container{padding:0 var(--space-4)}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}