*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--font-sans);font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.visible{visibility:visible}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:root{--font-sans: "Noto Sans JP", system-ui, -apple-system, BlinkMacSystemFont, "Hiragino Sans", "Yu Gothic UI", "Meiryo", sans-serif;--font-display: "Kaisei Decol", var(--font-sans);--noise-url: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/><feColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 0.08 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>")}html,body,#root{height:100%;margin:0}body{font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.font-display{font-family:var(--font-display)}.bg-noise{background-image:var(--noise-url);background-repeat:repeat}*{box-sizing:border-box}html,body{margin:0;padding:0;font-family:"M PLUS Rounded 1c",system-ui,sans-serif;-webkit-font-smoothing:antialiased;color:#3a2a4a;overflow:hidden;height:100%}#root,.app{width:100vw;height:100vh;overflow:hidden}.app{position:relative;background:radial-gradient(circle at 18% 12%,#ffd6f5 0%,transparent 45%),radial-gradient(circle at 88% 22%,#fff0c8 0%,transparent 50%),radial-gradient(circle at 75% 88%,#c8e8ff 0%,transparent 45%),radial-gradient(circle at 10% 80%,#d8c8ff 0%,transparent 50%),#fdf7ff}.device-frame{width:100%;height:100%;position:relative;overflow:hidden}.screen-wrap{width:100%;height:100%;position:absolute;top:0;right:0;bottom:0;left:0}.screen-in{animation:screenIn .5s cubic-bezier(.34,1.4,.64,1) both}.screen-out{animation:screenOut .3s ease-in both;pointer-events:none}@keyframes screenIn{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}@keyframes screenOut{to{opacity:0;transform:scale(1.04)}}.home-screen{position:relative;width:100%;height:100%;overflow-y:auto;padding:clamp(20px,4vh,48px) clamp(16px,4vw,56px);display:flex;flex-direction:column;align-items:center;gap:clamp(24px,4vh,44px)}.bg-blob{position:absolute;border-radius:50%;filter:blur(60px);opacity:.55;pointer-events:none;z-index:0}.bg-blob-1{top:-8%;left:-8%;width:380px;height:380px;background:#ffc6e6;animation:float 14s ease-in-out infinite}.bg-blob-2{top:35%;right:-10%;width:420px;height:420px;background:#c8e0ff;animation:float 18s ease-in-out infinite reverse}.bg-blob-3{bottom:-12%;left:25%;width:360px;height:360px;background:#e8d4ff;animation:float 16s ease-in-out infinite}@keyframes float{0%,to{transform:translate(0) scale(1)}33%{transform:translate(30px,-20px) scale(1.05)}66%{transform:translate(-20px,25px) scale(.95)}}.bg-stars{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0}.bg-star{position:absolute;font-size:14px;color:#ffd6f5;animation:twinkle 3s ease-in-out infinite;opacity:.6}@keyframes twinkle{0%,to{opacity:.2;transform:scale(.8)}50%{opacity:.8;transform:scale(1.2)}}.home-header{position:relative;z-index:1;text-align:center;display:flex;flex-direction:column;align-items:center;gap:14px;margin-top:clamp(8px,2vh,24px)}.badge-pill{display:inline-flex;align-items:center;gap:8px;background:#fff;padding:7px 16px;border-radius:999px;font-size:12px;font-weight:700;color:#7a4ea8;box-shadow:0 2px #e0c8f0,0 6px 16px #b878dc2e;letter-spacing:.04em}.badge-dot{width:8px;height:8px;border-radius:50%;background:#4ade80;box-shadow:0 0 0 3px #4ade8040;animation:pulse 1.6s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.logo{font-family:Mochiy Pop P One,sans-serif;font-size:clamp(56px,10vw,110px);margin:0;line-height:.95;display:inline-flex;align-items:baseline;position:relative;filter:drop-shadow(0 6px 0 rgba(180,100,220,.18)) drop-shadow(0 12px 24px rgba(180,100,220,.28));animation:logoBob 3.2s ease-in-out infinite}@keyframes logoBob{0%,to{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-6px) rotate(1deg)}}.logo-gya,.logo-ru,.logo-ai{-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-stroke:2px #fff;paint-order:stroke fill;display:inline-block}.logo-gya{background:linear-gradient(180deg,#ff6ec7,#c84ec8);transform:rotate(-4deg)}.logo-ru{background:linear-gradient(180deg,#b878ff,#7a4ec8);transform:rotate(2deg) translateY(4px)}.logo-ai{background:linear-gradient(180deg,#6e7eff,#4a3ec8);transform:rotate(-2deg);margin-left:.05em;font-family:Mochiy Pop P One,sans-serif}.tagline{font-size:clamp(15px,2vw,18px);font-weight:700;color:#6a4a8a;margin:0;background:#fff;padding:8px 22px;border-radius:999px;box-shadow:0 3px #e0c8f0,0 8px 18px #b478dc26}.howto{display:inline-flex;align-items:center;gap:10px;font-size:13px;color:#8a6aaa;font-weight:600;margin-top:4px}.howto-key{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:linear-gradient(180deg,#ff7eb6,#ff5a9b);color:#fff;font-weight:900;font-size:13px;box-shadow:0 3px #d04a85,inset 0 1px #fff6}.card-grid{position:relative;z-index:1;display:grid;grid-template-columns:repeat(2,minmax(0,220px));gap:clamp(16px,2.4vw,26px);width:100%;max-width:520px;perspective:1000px}@media(min-width:720px){.card-grid{grid-template-columns:repeat(4,minmax(0,200px));max-width:920px}}.char-card{position:relative;aspect-ratio:3 / 4;border:none;border-radius:28px;cursor:pointer;padding:0;overflow:hidden;font-family:inherit;color:#fff;text-align:left;box-shadow:0 4px #783ca040,0 14px 30px #8c50c84d,inset 0 2px #fff6,inset 0 -10px 20px #00000014;transition:transform .18s cubic-bezier(.34,1.6,.64,1),box-shadow .18s;animation:cardPop .5s cubic-bezier(.34,1.5,.64,1) both}@keyframes cardPop{0%{opacity:0;transform:translateY(30px) scale(.85)}to{opacity:1;transform:translateY(0) scale(1)}}.char-card:hover{transform:translateY(-6px) rotate(-.8deg);box-shadow:0 6px #783ca040,0 22px 40px #8c50c866,inset 0 2px #ffffff80,inset 0 -10px 20px #00000014}.char-card:active,.char-card.card-pressed{transform:translateY(2px) scale(.98);box-shadow:0 1px #783ca040,0 6px 16px #8c50c840,inset 0 2px #fff6,inset 0 -6px 14px #0000001f}.card-image{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center top;object-position:center top;pointer-events:none;z-index:0}.card-fade{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1;background:linear-gradient(180deg,#0000 35%,#0000002e 60%,#0000008c)}.char-card-img .card-emoji,.char-card-img .card-shine,.char-card-img .card-corner-tag,.char-card-img .card-bottom,.char-card-img .card-select-ring{z-index:2}.card-emoji{position:absolute;top:18px;left:18px;font-size:38px;filter:drop-shadow(0 3px 6px rgba(0,0,0,.18));animation:cardEmojiBob 2.4s ease-in-out infinite}@keyframes cardEmojiBob{0%,to{transform:rotate(-6deg) translateY(0)}50%{transform:rotate(6deg) translateY(-4px)}}.card-shine{position:absolute;top:6px;left:6px;right:6px;height:38%;background:linear-gradient(180deg,#ffffff80,#fff0);border-radius:22px 22px 60% 60%;pointer-events:none}.card-corner-tag{position:absolute;top:18px;right:16px;background:#ffffffd9;color:#502878d9;font-size:10px;font-weight:800;padding:4px 9px;border-radius:999px;letter-spacing:.08em;box-shadow:0 2px 4px #0000001a}.card-bottom{position:absolute;left:18px;bottom:16px;right:18px}.card-name{font-family:Mochiy Pop P One,sans-serif;font-size:26px;font-weight:900;letter-spacing:.02em;text-shadow:0 2px 0 rgba(80,40,120,.25),0 4px 10px rgba(0,0,0,.15);margin-bottom:2px}.card-tag{font-size:12px;font-weight:700;background:#ffffffeb;color:#502878e6;padding:4px 10px;border-radius:999px;display:inline-block;box-shadow:0 2px 4px #00000014}.card-select-ring{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:28px;pointer-events:none;border:4px solid white;opacity:0}.card-selecting .card-select-ring{animation:selectRing .5s ease-out forwards}.card-selecting{animation:cardSelect .5s cubic-bezier(.34,1.5,.64,1) forwards!important;z-index:5}@keyframes selectRing{0%{opacity:0;transform:scale(1)}50%{opacity:1}to{opacity:0;transform:scale(1.15)}}@keyframes cardSelect{0%{transform:scale(1)}40%{transform:scale(1.08) rotate(2deg)}to{transform:scale(1.3) rotate(0);opacity:0}}.home-footer{position:relative;z-index:1;text-align:center;margin-top:auto;padding-top:12px}.footer-line{font-size:12px;color:#8a6aaa;font-weight:600;margin:2px 0}.footer-line.dim{color:#b89ac8}.avatar{transform-origin:bottom center;position:relative;display:inline-block}.avatar-img{border-radius:50%;background-size:cover;background-position:center top;background-repeat:no-repeat;box-shadow:inset 0 -8px 18px #0000000f,inset 0 2px #fff6}.avatar-talking{animation:avatarTalk .18s linear infinite}@keyframes avatarTalk{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-1px) scale(1.01,.99)}}.bounce-fast.avatar-talking,.bounce-mid.avatar-talking,.bounce-slow.avatar-talking,.bounce-wild.avatar-talking{animation:inherit}.bounce-fast{animation:bounceFast .55s ease-in-out infinite}.bounce-mid{animation:bounceMid .85s ease-in-out infinite}.bounce-slow{animation:bounceSlow 1.4s ease-in-out infinite}.bounce-wild{animation:bounceWild .7s cubic-bezier(.34,1.6,.64,1) infinite}@keyframes bounceFast{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-10px) scale(.96,1.04)}}@keyframes bounceMid{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-7px) scale(.98,1.02)}}@keyframes bounceSlow{0%,to{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-4px) rotate(1deg)}}@keyframes bounceWild{0%{transform:translateY(0) rotate(-3deg) scale(1)}25%{transform:translateY(-12px) rotate(4deg) scale(.94,1.08)}50%{transform:translateY(0) rotate(-2deg) scale(1.04,.96)}75%{transform:translateY(-8px) rotate(3deg) scale(.96,1.06)}to{transform:translateY(0) rotate(-3deg) scale(1)}}.mouth-talking .mouth{animation:mouthTalk .18s linear infinite}@keyframes mouthTalk{0%,to{transform:scaleY(1)}50%{transform:scaleY(.4)}}.chat-screen{width:100%;height:100%;display:flex;flex-direction:column;position:relative}.chat-header{display:flex;align-items:center;padding:12px clamp(12px,2vw,24px);gap:12px;color:#fff;position:relative;box-shadow:0 4px 20px #0000001f;z-index:5;flex-shrink:0}.chat-header:after{content:"";position:absolute;bottom:-8px;left:0;right:0;height:8px;background:inherit;filter:blur(8px);opacity:.4}.btn-back{display:inline-flex;align-items:center;gap:6px;background:#fffffff2;color:#5a3a8a;border:none;border-radius:999px;padding:8px 14px 8px 11px;font-family:inherit;font-weight:800;font-size:13px;cursor:pointer;box-shadow:0 3px #00000026,0 4px 10px #0000001a;transition:transform .12s,box-shadow .12s}.btn-back:hover{transform:translateY(-1px)}.btn-back:active{transform:translateY(2px);box-shadow:0 1px #00000026,0 2px 4px #0000001a}.btn-back-arrow{font-size:11px}.chat-title{flex:1;text-align:center;display:flex;flex-direction:column;align-items:center}.chat-title-name{font-family:Mochiy Pop P One,sans-serif;font-size:22px;font-weight:900;text-shadow:0 2px 0 rgba(0,0,0,.18),0 3px 8px rgba(0,0,0,.12);letter-spacing:.02em}.chat-title-tag{font-size:11px;font-weight:700;opacity:.92;background:#ffffff40;padding:2px 10px;border-radius:999px;margin-top:2px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.chat-header-spacer{width:90px}.stage{position:relative;flex:1;min-height:280px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:clamp(12px,2vh,24px) 16px;overflow:hidden}.stage-bg{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none}.stage-floor{position:absolute;bottom:0;left:50%;width:70%;height:60px;transform:translate(-50%);border-radius:50%;filter:blur(20px)}.stage-spotlight{position:absolute;top:0;left:50%;width:70%;height:100%;transform:translate(-50%);background:radial-gradient(ellipse at center top,rgba(255,255,255,.45) 0%,transparent 60%);pointer-events:none}.stage-character{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center}.char-shadow{position:absolute;bottom:-10px;width:120px;height:16px;background:#50287833;border-radius:50%;filter:blur(6px);animation:shadowPulse .85s ease-in-out infinite}@keyframes shadowPulse{0%,to{transform:scale(1);opacity:.25}50%{transform:scale(.85);opacity:.18}}.speech-pop{position:absolute;top:-8px;right:-16px;background:#fff;border-radius:50%;width:36px;height:36px;display:flex;align-items:center;justify-content:center;font-size:18px;color:#ff6ec7;box-shadow:0 3px #0000001a,0 6px 14px #0000001f;animation:popIn .4s cubic-bezier(.34,1.6,.64,1),wiggle 1.2s ease-in-out infinite .4s}@keyframes popIn{0%{transform:scale(0) rotate(-30deg)}to{transform:scale(1) rotate(0)}}@keyframes wiggle{0%,to{transform:rotate(-8deg)}50%{transform:rotate(8deg)}}.char-stats{position:absolute;top:14px;left:14px;background:#ffffffd9;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:14px;padding:8px 12px;display:flex;flex-direction:column;gap:5px;box-shadow:0 3px #783ca01f,0 6px 16px #783ca01f;z-index:2}.stat-row{display:flex;align-items:center;gap:8px}.stat-label{font-family:DotGothic16,monospace;font-size:10px;font-weight:700;color:#6a4a8a;width:36px}.stat-bar{width:80px;height:7px;background:#7850a026;border-radius:999px;overflow:hidden;position:relative}.stat-fill{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:999px}.stat-fill-mood{background:linear-gradient(90deg,#ff6ec7,#ffae6e);animation:barPulse 2.4s ease-in-out infinite}.stat-fill-vibes{background:linear-gradient(90deg,#6e9eff,#ff6ec7);width:100%}@keyframes barPulse{0%,to{width:95%}50%{width:100%}}.stat-val{font-family:DotGothic16,monospace;font-size:11px;font-weight:700;color:#6a4a8a}.msg-area{flex-shrink:0;max-height:38vh;overflow-y:auto;padding:14px clamp(12px,3vw,28px) 6px;scroll-behavior:smooth}.msg-list{display:flex;flex-direction:column;gap:12px;max-width:720px;margin:0 auto}.msg{display:flex;align-items:flex-end;gap:8px;animation:msgIn .35s cubic-bezier(.34,1.5,.64,1) both}@keyframes msgIn{0%{opacity:0;transform:translateY(12px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}.msg-user{flex-direction:row-reverse}.msg-avatar-mini{flex-shrink:0;width:42px;height:42px;border-radius:50%;overflow:hidden;background:#fff;box-shadow:0 2px #783ca026,0 4px 8px #783ca01a}.msg-bubble{position:relative;max-width:min(72%,520px);padding:12px 18px;border-radius:22px;font-size:15px;font-weight:600;line-height:1.55;background:#fff;border:3px solid #e8a8ff;color:#3a2a4a;box-shadow:0 3px #783ca024,0 6px 16px #783ca01f}.msg-bubble-bot{border-top-left-radius:6px}.msg-bubble-user{border:none;color:#fff;border-top-right-radius:6px;box-shadow:0 3px #501e7840,0 6px 16px #783ca02e,inset 0 1px #ffffff4d}.msg-text{white-space:pre-wrap;word-break:break-word}.caret{display:inline-block;margin-left:1px;color:#b878ff;font-weight:700;animation:blink .8s steps(2) infinite}@keyframes blink{to{opacity:0}}.msg-arrow{position:absolute;bottom:6px;right:12px;font-size:11px;font-weight:900;animation:arrowBob .8s ease-in-out infinite}@keyframes arrowBob{0%,to{transform:translateY(0);opacity:.7}50%{transform:translateY(3px);opacity:1}}.typing-bubble{display:inline-flex;gap:5px;padding:14px 18px}.typing-bubble .dot{width:8px;height:8px;border-radius:50%;background:#b878ff;animation:typingDot 1s ease-in-out infinite}.typing-bubble .dot:nth-child(2){animation-delay:.15s}.typing-bubble .dot:nth-child(3){animation-delay:.3s}@keyframes typingDot{0%,to{transform:translateY(0);opacity:.4}50%{transform:translateY(-5px);opacity:1}}.input-bar{flex-shrink:0;padding:12px clamp(12px,3vw,28px) 16px;background:#ffffffb3;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-top:2px solid rgba(120,60,160,.08)}.input-wrap{display:flex;align-items:flex-end;gap:8px;background:#fff;border:3px solid #b878ff;border-radius:24px;padding:6px 6px 6px 18px;max-width:720px;margin:0 auto;box-shadow:0 3px #783ca026,0 6px 18px #783ca01f;transition:transform .12s,box-shadow .12s}.input-wrap:focus-within{transform:translateY(-1px);box-shadow:0 4px #783ca02e,0 8px 24px #783ca02e}.input-field{flex:1;border:none;outline:none;resize:none;font-family:inherit;font-size:15px;font-weight:600;color:#3a2a4a;padding:8px 0;background:transparent;max-height:120px;line-height:1.5}.input-field::-moz-placeholder{color:#b89ac8}.input-field::placeholder{color:#b89ac8}.btn-send{flex-shrink:0;width:42px;height:42px;border:none;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 3px #501e784d,0 6px 14px #783ca040,inset 0 1px #fff6;transition:transform .12s,box-shadow .12s}.btn-send:hover:not(:disabled){transform:translateY(-1px)}.btn-send:active:not(:disabled){transform:translateY(2px);box-shadow:0 1px #501e784d,0 3px 8px #783ca033}.btn-send:disabled{opacity:.5;cursor:not-allowed;filter:grayscale(.4)}.input-hint{text-align:center;font-size:11px;color:#8a6aaa;font-weight:600;margin-top:6px}.kbd{display:inline-block;background:#fff;border:1px solid #d8c0e8;border-bottom-width:2px;border-radius:5px;padding:1px 6px;font-family:DotGothic16,monospace;font-size:10px;color:#5a3a8a;margin:0 2px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#b878dc59;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#b878dc8c}@media(max-width:600px){.chat-header-spacer{display:none}.char-stats{padding:6px 10px}.stat-bar{width:60px}.msg-area{max-height:32vh}.stage-character .avatar{width:130px!important;height:130px!important}}.novel-screen{position:relative;width:100%;height:100%;overflow:hidden;font-family:"M PLUS Rounded 1c",sans-serif;color:#fff;-webkit-user-select:none;-moz-user-select:none;user-select:none}.novel-screen.scene-shake{animation:sceneShake .45s cubic-bezier(.36,.07,.19,.97) both}@keyframes sceneShake{10%,90%{transform:translate3d(-1px,0,0)}20%,80%{transform:translate3d(2px,-1px,0)}30%,50%,70%{transform:translate3d(-3px,1px,0)}40%,60%{transform:translate3d(3px,-1px,0)}}.scene-layer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none}.scene-bg{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;animation:sceneFade .45s ease-out both}@keyframes sceneFade{0%{opacity:0;transform:scale(1.04)}to{opacity:1;transform:scale(1)}}.scene-pattern{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.18) 1px,transparent 2px) 0 0/22px 22px,radial-gradient(circle at 50% 50%,rgba(255,255,255,.1) 1px,transparent 2px) 11px 11px/22px 22px;opacity:.6;mix-blend-mode:overlay}.novel-topbar{position:relative;z-index:50;display:flex;align-items:center;gap:10px;padding:12px 16px;background:linear-gradient(180deg,#00000059,#0000)}.novel-btn{background:#0000008c;border:2px solid rgba(255,255,255,.85);color:#fff;font-family:inherit;font-weight:800;font-size:12px;letter-spacing:.05em;padding:7px 14px;border-radius:8px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;text-shadow:0 1px 2px rgba(0,0,0,.6);box-shadow:0 3px #0006,0 0 0 2px #0000004d;transition:transform .1s}.novel-btn:hover{background:#000000bf}.novel-btn:active{transform:translateY(2px);box-shadow:0 1px #0006}.novel-btn.is-on{background:#fffffff2;color:#2a1a3a;text-shadow:none}.novel-btn-arrow{font-size:10px}.novel-title{flex:1;text-align:center;font-family:Mochiy Pop P One,sans-serif;font-size:18px;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-shadow:0 2px 0 rgba(0,0,0,.45),0 4px 12px rgba(0,0,0,.35);letter-spacing:.04em}.novel-title-em{font-size:22px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.3))}.novel-title-tag{background:#00000073;border:1.5px solid rgba(255,255,255,.7);border-radius:6px;font-family:"M PLUS Rounded 1c",sans-serif;font-size:11px;font-weight:800;padding:2px 8px;margin-left:4px;letter-spacing:.05em}.portrait-stage{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;display:flex;align-items:flex-end;justify-content:center;cursor:pointer;padding-bottom:34vh;padding-top:56px}.portrait-pedestal{position:absolute;bottom:calc(38vh - 30px);left:50%;transform:translate(-50%);width:320px;height:60px;border-radius:50%;filter:blur(12px);pointer-events:none}.portrait{position:relative;width:min(640px,96vw);height:min(820px,100vh);max-height:76vh;display:flex;align-items:flex-end;justify-content:center;animation:portraitBreath 3s ease-in-out infinite}@keyframes portraitBreath{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-6px) scale(1.005)}}.portrait-glow{position:absolute;top:-10%;right:-10%;bottom:-10%;left:-10%;z-index:-1;filter:blur(40px);opacity:.7}.portrait-img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;-o-object-position:center bottom;object-position:center bottom;filter:drop-shadow(0 18px 32px rgba(0,0,0,.4)) drop-shadow(0 0 22px rgba(0,0,0,.12));-webkit-mask-image:radial-gradient(ellipse 78% 96% at center 56%,black 0%,black 60%,rgba(0,0,0,.85) 76%,rgba(0,0,0,.4) 90%,transparent 100%);mask-image:radial-gradient(ellipse 78% 96% at center 56%,black 0%,black 60%,rgba(0,0,0,.85) 76%,rgba(0,0,0,.4) 90%,transparent 100%);-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.portrait-fallback{width:min(360px,60vw);height:min(360px,60vw);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:clamp(80px,18vw,160px);filter:drop-shadow(0 14px 30px rgba(0,0,0,.35))}.portrait-talking{animation:portraitTalk .16s linear infinite}@keyframes portraitTalk{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-2px) scale(1.005,.995)}}.portrait-shake{animation:portraitShake .4s ease-in-out}@keyframes portraitShake{0%,to{transform:translate(0)}25%{transform:translate(-8px) rotate(-1deg)}75%{transform:translate(8px) rotate(1deg)}}.portrait-emotion-excited{animation:portraitBreath 3s infinite,portraitBob .7s ease-in-out infinite}@keyframes portraitBob{0%,to{transform:translateY(-6px)}50%{transform:translateY(-14px)}}.fx{position:absolute;top:0;right:0;bottom:0;left:0;z-index:6;pointer-events:none;overflow:hidden}.fx-shock{mix-blend-mode:screen}.fx-line{position:absolute;top:50%;left:50%;width:100vmax;height:4px;background:linear-gradient(90deg,transparent 0%,transparent 35%,rgba(255,255,255,.9) 60%,rgba(255,255,255,0) 100%);transform-origin:0 50%;animation:lineFlash .5s ease-out forwards}@keyframes lineFlash{0%{opacity:0}50%{opacity:1}to{opacity:0}}.fx-flash{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;animation:flashOut .35s ease-out forwards}@keyframes flashOut{0%{opacity:.85}to{opacity:0}}.fx-confetti{position:absolute;top:-10px;width:10px;height:14px;border-radius:2px;animation:confettiFall 2s linear infinite}@keyframes confettiFall{0%{transform:translateY(0) rotate(0);opacity:1}to{transform:translateY(110vh) rotate(720deg);opacity:.4}}.fx-heart{position:absolute;bottom:38vh;font-size:24px;color:#ff6ec7;text-shadow:0 0 12px #ff6ec7;animation:heartFloat 2.4s ease-out infinite;opacity:0}@keyframes heartFloat{0%{transform:translateY(0) scale(.5);opacity:0}20%{opacity:1}to{transform:translateY(-50vh) scale(1.2);opacity:0}}.fx-note{position:absolute;top:30%;font-size:28px;color:#fff;text-shadow:0 2px 8px rgba(0,0,0,.5);animation:noteFloat 2.6s ease-out infinite}@keyframes noteFloat{0%{transform:translateY(0) rotate(-10deg);opacity:0}20%{opacity:1}to{transform:translateY(-30vh) rotate(20deg);opacity:0}}.fx-vignette{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at center,transparent 30%,rgba(0,0,0,.55) 100%)}.fx-drop{position:absolute;top:-10px;width:3px;height:18px;background:linear-gradient(180deg,transparent,#7eb8e8);border-radius:999px;animation:dropFall 1.8s linear infinite}@keyframes dropFall{0%{transform:translateY(0);opacity:0}10%{opacity:1}to{transform:translateY(110vh);opacity:.4}}.textbox-wrap{position:absolute;bottom:0;left:0;right:0;z-index:30;padding:0 clamp(8px,2vw,24px) clamp(8px,2vh,16px);cursor:pointer}.name-tag{display:inline-block;position:relative;z-index:2;padding:8px 22px;font-family:Mochiy Pop P One,sans-serif;font-size:18px;letter-spacing:.06em;color:#fff;text-shadow:0 2px 0 rgba(0,0,0,.4),0 3px 8px rgba(0,0,0,.3);border-radius:12px 12px 0 0;border:3px solid #1a0a2a;border-bottom:none;margin-left:12px;margin-bottom:-3px;box-shadow:0 -3px #00000026}.textbox{position:relative;background:linear-gradient(180deg,#0f051ee0,#1e0a32eb);border:3px solid #1a0a2a;border-radius:14px;padding:4px;box-shadow:0 0 0 2px #ffffff8c inset,0 6px #0006,0 14px 30px #00000080;cursor:pointer}.textbox-inner{background:linear-gradient(180deg,#ffffff0f,#ffffff05);border:1px solid rgba(255,255,255,.18);border-radius:10px;padding:18px 22px;min-height:90px;display:flex;align-items:center}.textbox-text{font-family:"M PLUS Rounded 1c",sans-serif;font-size:clamp(17px,2.2vw,22px);font-weight:700;line-height:1.55;color:#fff;text-shadow:0 2px 0 rgba(0,0,0,.55),0 0 12px rgba(0,0,0,.4);letter-spacing:.03em;word-break:break-word}.textbox-empty{opacity:.5;font-weight:600}.textbox-thinking{display:inline-flex;gap:8px}.textbox-thinking .dot{width:12px;height:12px;background:#fff;border-radius:50%;animation:nvTypingDot 1s ease-in-out infinite}.textbox-thinking .dot:nth-child(2){animation-delay:.15s}.textbox-thinking .dot:nth-child(3){animation-delay:.3s}@keyframes nvTypingDot{0%,to{opacity:.3;transform:translateY(0)}50%{opacity:1;transform:translateY(-5px)}}.text-caret{display:inline-block;margin-left:1px;color:#ffffffb3;animation:nvBlink .7s steps(2) infinite}@keyframes nvBlink{to{opacity:0}}.textbox-arrow{position:absolute;bottom:8px;right:18px;font-size:16px;font-weight:900;color:#fff;text-shadow:0 2px 0 rgba(0,0,0,.5);animation:nvArrowBob .7s ease-in-out infinite}@keyframes nvArrowBob{0%,to{transform:translateY(0);opacity:.7}50%{transform:translateY(4px);opacity:1}}.novel-input{margin-top:8px;display:flex;align-items:center;gap:8px;background:#fffffff5;border:3px solid;border-radius:12px;padding:4px 4px 4px 14px;box-shadow:0 4px #0000004d,0 0 0 2px #00000080}.novel-input-prompt{font-family:DotGothic16,monospace;font-weight:700;font-size:18px;flex-shrink:0}.novel-input-field{flex:1;border:none;outline:none;resize:none;background:transparent;font-family:inherit;font-size:16px;font-weight:700;color:#2a1a3a;padding:8px 0;max-height:100px;line-height:1.5}.novel-input-field::-moz-placeholder{color:#a89ac0}.novel-input-field::placeholder{color:#a89ac0}.novel-input-field:disabled{opacity:.4}.novel-send{background:linear-gradient(160deg,#ff6ec7,#c84ec8);border:2px solid rgba(0,0,0,.55);color:#fff;font-family:Mochiy Pop P One,sans-serif;font-size:14px;letter-spacing:.08em;padding:8px 18px;border-radius:8px;cursor:pointer;text-shadow:0 2px 0 rgba(0,0,0,.4);box-shadow:0 3px #00000059;transition:transform .1s;flex-shrink:0}.novel-send:hover:not(:disabled){transform:translateY(-1px)}.novel-send:active:not(:disabled){transform:translateY(2px);box-shadow:0 1px #00000059}.novel-send:disabled{opacity:.5;cursor:not-allowed}.log-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:80;background:#0a0014b3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;padding:24px;animation:logFadeIn .25s ease}@keyframes logFadeIn{0%{opacity:0}to{opacity:1}}.log-panel{width:100%;max-width:600px;max-height:80vh;background:linear-gradient(180deg,#1a0a2a,#2a0a3a);border:3px solid #fff;border-radius:16px;box-shadow:0 8px #0006,0 14px 40px #00000080;display:flex;flex-direction:column;overflow:hidden}.log-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;background:#ffffff14;font-family:Mochiy Pop P One,sans-serif;font-size:18px;color:#fff;border-bottom:2px solid rgba(255,255,255,.15)}.log-close{width:30px;height:30px;border-radius:8px;background:#ffffff26;border:2px solid rgba(255,255,255,.6);color:#fff;font-size:20px;font-weight:900;cursor:pointer;line-height:1}.log-body{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:10px;color:#fff}.log-empty{text-align:center;opacity:.5;padding:40px 0}.log-row{display:flex;gap:10px;align-items:flex-start;font-size:14px;font-weight:600;line-height:1.5}.log-row-user{flex-direction:row-reverse}.log-who{flex-shrink:0;font-family:Mochiy Pop P One,sans-serif;font-size:12px;background:#ffffff2e;padding:4px 10px;border-radius:6px;letter-spacing:.05em}.log-row-user .log-who{background:#ff6ec766}.log-text{flex:1}.log-row-user .log-text{text-align:right}@media(max-width:600px){.novel-title-tag{display:none}.portrait-stage{padding-bottom:42vh}.textbox-inner{padding:14px 16px;min-height:80px}.textbox-text{font-size:16px}.name-tag{font-size:15px;padding:6px 16px}}
