*{margin:0;padding:0;box-sizing:border-box}:root{--accent: #6aa8e8;--accent2: #f0a8c8;--bg-glass: rgba(255, 255, 255, .82);--bg-glass-strong: rgba(255, 255, 255, .92);--text: #3a4458;--text-soft: #7a8496;--radius: 16px;--shadow: 0 12px 40px rgba(60, 90, 130, .18)}html,body,#root{width:100%;height:100%;overflow:hidden;font-family:PingFang SC,Hiragino Sans GB,Microsoft YaHei,-apple-system,sans-serif;color:var(--text);background:linear-gradient(160deg,#bfe0f7,#e8f4fb 40%,#fbe8d8);-webkit-font-smoothing:antialiased;user-select:none}button{font-family:inherit;cursor:pointer;border:none;background:none}input,textarea{font-family:inherit;outline:none;border:none}.panel{background:var(--bg-glass);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid rgba(255,255,255,.7)}.screen{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:10}.welcome-wrap{width:min(560px,92vw);text-align:center;padding:40px 44px 34px}.logo{font-size:42px;font-weight:800;background:linear-gradient(120deg,#5a9ad8,#b06a9a);-webkit-background-clip:text;background-clip:text;color:transparent;letter-spacing:2px}.slogan{color:var(--text-soft);margin:10px 0 24px;font-size:14px}.field-label{text-align:left;font-size:13px;color:var(--text-soft);margin:16px 0 8px}.input-name{width:100%;padding:12px 16px;border-radius:12px;background:#fffc;border:1.5px solid rgba(106,168,232,.35);font-size:16px;color:var(--text);text-align:center}.input-name:focus{border-color:var(--accent)}.persona-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-top:4px}.persona-card{padding:14px 12px;border-radius:14px;background:#ffffffb8;border:1.5px solid transparent;transition:all .18s;text-align:left}.persona-card:hover{transform:translateY(-2px)}.persona-card.active{border-color:var(--accent);background:#6aa8e81f;box-shadow:0 6px 18px #6aa8e840}.persona-card .p-emoji{font-size:26px}.persona-card .p-name{font-weight:700;font-size:15px;margin-top:6px}.persona-card .p-desc{font-size:11px;color:var(--text-soft);margin-top:3px;line-height:1.5}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:13px 30px;border-radius:999px;font-size:16px;font-weight:700;color:#fff;background:linear-gradient(120deg,#5a9ad8,#7ab0e8);box-shadow:0 8px 24px #5a9ad859;transition:all .18s;margin-top:24px}.btn:hover{transform:translateY(-2px);box-shadow:0 10px 28px #5a9ad873}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn.secondary{background:#ffffffe6;color:var(--accent);box-shadow:none;border:1.5px solid rgba(106,168,232,.4)}.avatar-screen{display:flex;align-items:stretch;justify-content:flex-start;width:100%;height:100%}.avatar-preview{flex:1;position:relative;height:100%;min-height:0;background:linear-gradient(170deg,#a8d4f0,#d8ecf8 55%,#f8e8d0);border-radius:0}.avatar-preview canvas{display:block}.avatar-preview .tip{position:absolute;bottom:18px;left:50%;transform:translate(-50%);color:#3c4664b3;font-size:12px;background:#ffffff8c;padding:6px 14px;border-radius:999px;white-space:nowrap}.avatar-editor{width:380px;height:100%;overflow-y:auto;padding:22px 20px;background:#ffffffd9;backdrop-filter:blur(16px)}.avatar-editor h2{font-size:20px;margin-bottom:4px}.avatar-editor .sub{color:var(--text-soft);font-size:12px;margin-bottom:16px}.editor-block{margin-bottom:16px}.editor-block .block-title{font-size:12px;color:var(--text-soft);margin-bottom:8px}.swatches{display:flex;flex-wrap:wrap;gap:8px}.swatch{width:30px;height:30px;border-radius:9px;border:2px solid rgba(255,255,255,.9);box-shadow:0 2px 6px #00000026;transition:transform .15s}.swatch:hover{transform:scale(1.12)}.swatch.active{outline:2.5px solid var(--accent);outline-offset:2px}.chip-row{display:flex;flex-wrap:wrap;gap:8px}.chip{padding:7px 14px;border-radius:999px;background:#6aa8e81f;font-size:13px;transition:all .15s;border:1.5px solid transparent}.chip:hover{background:#6aa8e833}.chip.active{background:var(--accent);color:#fff}.editor-actions{display:flex;gap:10px;margin-top:18px}.editor-actions .btn{margin-top:0;flex:1;padding:12px 16px;font-size:14px}.hud{position:fixed;top:0;left:0;right:0;z-index:20;pointer-events:none;padding:14px 16px;display:flex;align-items:flex-start;justify-content:space-between}.hud-top-left,.hud-top-right{display:flex;gap:10px;align-items:center;pointer-events:auto}.hud-card{display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;font-size:13px;color:var(--text);background:var(--bg-glass);backdrop-filter:blur(14px);box-shadow:0 4px 14px #3c5a8226;border:1px solid rgba(255,255,255,.7)}.hud-card .dot{width:8px;height:8px;border-radius:50%;background:#6ac86a;box-shadow:0 0 0 3px #6ac86a40;animation:pulse 2s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.hud-btn{width:44px;height:44px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:20px;background:var(--bg-glass);backdrop-filter:blur(14px);box-shadow:0 4px 14px #3c5a8226;border:1px solid rgba(255,255,255,.7);position:relative;transition:transform .15s}.hud-btn:hover{transform:translateY(-2px) scale(1.05)}.hud-btn .badge{position:absolute;top:-5px;right:-5px;min-width:18px;height:18px;border-radius:999px;background:#f06a8a;color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;padding:0 5px}.hud-tip{position:fixed;bottom:16px;left:50%;transform:translate(-50%);z-index:20;color:#3c4664bf;font-size:12px;background:#fff9;padding:7px 18px;border-radius:999px;backdrop-filter:blur(8px);white-space:nowrap;pointer-events:none}.chat-panel{position:fixed;right:18px;bottom:18px;width:min(380px,94vw);height:min(560px,82vh);z-index:30;display:flex;flex-direction:column;overflow:hidden}.chat-head{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid rgba(90,110,140,.12)}.chat-head .avatar-box{width:38px;height:38px;border-radius:12px}.chat-head .c-name{font-weight:700;font-size:15px}.chat-head .c-sub{font-size:11px;color:var(--text-soft);margin-top:1px}.chat-head .spacer{flex:1}.icon-btn{width:32px;height:32px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:15px;color:var(--text-soft);transition:background .15s}.icon-btn:hover{background:#5a6e8c1a}.chat-body{flex:1;overflow-y:auto;padding:14px 14px 6px;display:flex;flex-direction:column;gap:10px}.msg{display:flex;gap:8px;max-width:88%;animation:msgIn .22s ease}@keyframes msgIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.msg.me{align-self:flex-end;flex-direction:row-reverse}.msg .bubble{padding:10px 14px;border-radius:14px;font-size:14px;line-height:1.55;word-break:break-word;background:#fff;box-shadow:0 2px 8px #3c5a8214}.msg.me .bubble{background:linear-gradient(120deg,#5a9ad8,#7ab0e8);color:#fff}.msg .time{font-size:10px;color:var(--text-soft);align-self:flex-end;padding:0 2px}.msg-avatar{width:30px;height:30px;border-radius:10px;flex-shrink:0}.typing{display:flex;gap:8px;align-items:center;color:var(--text-soft);font-size:12px;padding-left:38px}.typing .dots span{display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--accent);margin-right:3px;animation:blink 1.2s infinite}.typing .dots span:nth-child(2){animation-delay:.2s}.typing .dots span:nth-child(3){animation-delay:.4s}@keyframes blink{0%,to{opacity:.2;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}}.quick-emo{display:flex;flex-wrap:wrap;gap:6px;padding:8px 14px;border-top:1px solid rgba(90,110,140,.1)}.quick-emo .qe{font-size:12px;padding:5px 10px;border-radius:999px;background:#6aa8e81f;transition:background .15s}.quick-emo .qe:hover{background:#6aa8e840}.chat-input-row{display:flex;gap:8px;padding:10px 12px 12px;border-top:1px solid rgba(90,110,140,.1)}.chat-input{flex:1;padding:10px 14px;border-radius:12px;background:#ffffffd9;font-size:14px;border:1.5px solid rgba(106,168,232,.3)}.chat-input:focus{border-color:var(--accent)}.send-btn{width:42px;height:42px;border-radius:12px;background:linear-gradient(120deg,#5a9ad8,#7ab0e8);color:#fff;font-size:16px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.mode-switch{display:flex;gap:4px;background:#5a6e8c14;border-radius:10px;padding:3px}.mode-switch .ms{font-size:11px;padding:4px 8px;border-radius:8px;color:var(--text-soft)}.mode-switch .ms.active{background:#fff;color:var(--accent);font-weight:600;box-shadow:0 1px 4px #00000014}.house-choice{padding:14px 16px 16px;border-top:1px solid rgba(90,110,140,.12);background:#5a6e8c0a;display:flex;flex-direction:column;gap:10px}.house-choice .hc-title{font-size:13px;font-weight:600;color:var(--text-soft);text-align:center}.hc-btn{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:12px 14px;border-radius:14px;background:#fff;border:1.5px solid rgba(106,168,232,.25);box-shadow:0 2px 8px #3c5a8214;transition:transform .12s,border-color .15s;text-align:left}.hc-btn:hover{transform:translateY(-2px);border-color:var(--accent)}.hc-btn .hc-emoji{font-size:22px}.hc-btn .hc-label{font-size:15px;font-weight:700;color:#3a4a6a}.hc-btn .hc-desc{font-size:11px;color:var(--text-soft)}.pk-card{margin:0 12px 10px;padding:14px;border-radius:16px;background:linear-gradient(160deg,#c7def58c,#ffffffd9);border:1.5px solid rgba(90,127,181,.3);display:flex;flex-direction:column;gap:12px}.pk-q .pk-tag{font-size:11px;color:#5a7fb5;font-weight:600}.pk-question{font-size:15px;font-weight:600;line-height:1.5;margin-top:4px;color:#2f3d57}.pk-result{font-size:13px;line-height:1.55;padding:10px 12px;border-radius:12px}.pk-result.right{background:#7ac08a2e;color:#2f7d45}.pk-result.wrong{background:#f0a8c833;color:#b05178}.pk-controls{display:flex;flex-direction:column;gap:8px}.pk-ctrl-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.pk-ctrl-label{font-size:11px;color:var(--text-soft);width:32px;flex-shrink:0}.pk-chip{font-size:11px;padding:4px 9px;border-radius:999px;background:#ffffffb3;border:1px solid rgba(90,127,181,.25);color:#4a5d7a;transition:all .15s}.pk-chip.active{background:#5a7fb5;color:#fff;border-color:#5a7fb5;font-weight:600}.pk-actions{display:flex;align-items:center;justify-content:space-between;gap:8px}.pk-next{flex:1;padding:10px;border-radius:12px;background:linear-gradient(120deg,#5a7fb5,#7aa8e8);color:#fff;font-size:14px;font-weight:600}.pk-hint{flex:1;font-size:11px;color:var(--text-soft);text-align:center}.pk-exit{font-size:12px;padding:8px 12px;border-radius:10px;background:#5a6e8c1a;color:var(--text-soft)}.avatar-box.sm{width:30px;height:30px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}.drawer{position:fixed;right:0;top:0;bottom:0;width:min(360px,92vw);z-index:40;background:#fffffff0;backdrop-filter:blur(20px);box-shadow:-8px 0 30px #3c5a8226;display:flex;flex-direction:column;animation:slideIn .25s ease;border-left:1px solid rgba(255,255,255,.7)}@keyframes slideIn{0%{transform:translate(100%)}to{transform:none}}.drawer-head{display:flex;align-items:center;gap:10px;padding:18px 18px 12px;border-bottom:1px solid rgba(90,110,140,.1)}.drawer-head h3{font-size:18px}.drawer-head .spacer{flex:1}.drawer-body{flex:1;overflow-y:auto;padding:12px 14px}.drawer-section-title{font-size:12px;color:var(--text-soft);margin:12px 4px 8px}.friend-row{display:flex;align-items:center;gap:10px;padding:10px;border-radius:12px;transition:background .15s;cursor:pointer}.friend-row:hover{background:#6aa8e81a}.friend-row .avatar-box{width:40px;height:40px;border-radius:12px;flex-shrink:0}.friend-info{flex:1;min-width:0}.friend-info .f-name{font-weight:600;font-size:14px;display:flex;align-items:center;gap:6px}.friend-info .f-tag{font-size:11px;color:var(--text-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.friend-info .f-bio{font-size:11px;color:var(--text-soft);opacity:.8}.f-online{width:8px;height:8px;border-radius:50%;background:#6ac86a;flex-shrink:0}.f-online.off{background:#c0c8d0}.mini-btn{font-size:12px;padding:6px 12px;border-radius:999px;background:#6aa8e824;color:var(--accent);font-weight:600;transition:all .15s;flex-shrink:0}.mini-btn:hover{background:var(--accent);color:#fff}.mini-btn.danger{background:#f06a8a1f;color:#e06a8a}.mini-btn.danger:hover{background:#e06a8a;color:#fff}.modal-mask{position:fixed;inset:0;z-index:50;background:#1e283c59;backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center}.modal{width:min(420px,90vw);max-height:90vh;overflow-y:auto;padding:26px 28px;text-align:center;animation:msgIn .25s ease}.modal-drag{cursor:grab;user-select:none;-webkit-user-select:none;touch-action:none}.modal-drag:active{cursor:grabbing}.modal::-webkit-scrollbar,.redeem-list::-webkit-scrollbar{width:6px}.modal::-webkit-scrollbar-thumb,.redeem-list::-webkit-scrollbar-thumb{background:#96825a59;border-radius:999px}.modal::-webkit-scrollbar-track,.redeem-list::-webkit-scrollbar-track{background:transparent}.modal .m-emoji{font-size:44px}.modal h3{font-size:20px;margin:10px 0 6px}.modal p{font-size:13px;color:var(--text-soft);line-height:1.7}.modal .btn-row{display:flex;gap:10px;margin-top:20px}.modal .btn-row .btn{flex:1;margin-top:0;padding:11px 16px;font-size:14px}.toast-wrap{position:fixed;top:70px;left:50%;transform:translate(-50%);z-index:60;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}.toast{padding:10px 22px;border-radius:999px;background:#283750d9;color:#fff;font-size:13px;backdrop-filter:blur(8px);animation:msgIn .25s ease;box-shadow:0 6px 20px #0003}.status-panel{position:fixed;left:16px;bottom:16px;z-index:20;padding:14px 16px;width:min(240px,60vw);pointer-events:auto}.status-panel .sp-title{font-size:13px;font-weight:700;margin-bottom:10px;display:flex;align-items:center;gap:6px}.bond-row{display:flex;align-items:center;gap:8px;margin-bottom:7px}.bond-row .b-label{font-size:11px;color:var(--text-soft);width:46px;flex-shrink:0}.bond-bar{flex:1;height:6px;border-radius:999px;background:#5a6e8c1f;overflow:hidden}.bond-bar .fill{height:100%;border-radius:999px;background:linear-gradient(90deg,#6aa8e8,#f0a8c8);transition:width .6s ease}.bond-bar .val{font-size:10px;color:var(--text-soft);width:28px;text-align:right}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-thumb{background:#5a6e8c40;border-radius:999px}::-webkit-scrollbar-track{background:transparent}@media (max-width: 640px){.avatar-editor{width:320px}.status-panel{display:none}}.house-entry{padding:12px 14px 4px}.draw-wrap{display:flex;flex-direction:column;gap:8px;padding:12px 14px 14px;border-top:1px solid rgba(90,110,140,.12);background:#e7d6f02e}.draw-prompt{font-size:12px;line-height:1.5;color:var(--text-soft);background:#fff;border-radius:10px;padding:8px 10px;border:1px solid rgba(122,92,138,.18)}.draw-tools{display:flex;gap:8px;flex-wrap:wrap}.dtool{flex:1 1 0;min-width:84px;padding:8px 6px;border-radius:10px;border:1.5px solid rgba(122,92,138,.22);background:#fff;font-size:12.5px;font-weight:600;color:#5a4a6a;cursor:pointer;transition:transform .12s,border-color .15s,background .15s}.dtool:hover{transform:translateY(-1px);border-color:var(--accent)}.dtool.active{background:#efe4f6;border-color:#9a78b0;color:#6a4a80}.draw-canvas{width:100%;height:auto;aspect-ratio:4 / 3;border-radius:10px;border:1.5px solid rgba(122,92,138,.3);background:#fff;touch-action:none;cursor:crosshair;box-shadow:0 2px 10px #503c641f}.draw-actions{display:flex;gap:8px}.draw-actions .dtool{flex:1 1 0}.dsubmit{flex:1 1 0;padding:10px 6px;border-radius:10px;border:none;background:linear-gradient(135deg,#b08ad0,#8a6ab0);color:#fff;font-size:13px;font-weight:700;cursor:pointer;transition:transform .12s,opacity .15s}.dsubmit:hover:not(:disabled){transform:translateY(-1px)}.dsubmit:disabled{opacity:.45;cursor:not-allowed}.htp-loading{display:flex;align-items:center;gap:8px;padding:18px 14px;border-top:1px solid rgba(90,110,140,.12);font-size:13px;color:var(--text-soft);background:#e7d6f02e}.htp-options{display:flex;flex-direction:column;gap:8px;padding:12px 14px 14px;border-top:1px solid rgba(90,110,140,.12);background:#e7d6f02e}.htp-result-tip{font-size:12.5px;color:var(--text-soft);text-align:center;margin-bottom:2px}.htp-opt{padding:11px 12px;border-radius:12px;border:1.5px solid rgba(122,92,138,.25);background:#fff;font-size:13px;font-weight:600;color:#5a4a6a;cursor:pointer;text-align:left;transition:transform .12s,border-color .15s}.htp-opt:hover{transform:translateY(-1px);border-color:var(--accent)}.htp-opt.leave{border-color:#b4787859;color:#a85a5a}.title-badge{margin-left:8px;font-size:10px;font-weight:600;color:#b07720;background:linear-gradient(135deg,#fff0c8,#ffe1a0);border:1px solid rgba(200,150,40,.4);border-radius:10px;padding:1px 8px;white-space:nowrap}.gift-row{padding:8px 14px 0}.gift-btn{width:100%;padding:9px 10px;border-radius:12px;border:1.5px solid rgba(224,160,32,.4);background:linear-gradient(135deg,#fff4d6,#ffe7b0);color:#9a6a10;font-size:13px;font-weight:700;cursor:pointer;transition:transform .12s,opacity .15s}.gift-btn:hover:not(:disabled){transform:translateY(-1px)}.gift-btn:disabled{opacity:.5;cursor:not-allowed}.gift-count{font-size:11px;font-weight:600;opacity:.8}.redeem-modal{width:min(420px,92vw);display:flex;flex-direction:column}.redeem-list{display:flex;flex-direction:column;gap:10px;margin-bottom:14px;overflow-y:auto;flex:1 1 auto;min-height:0;-webkit-overflow-scrolling:touch;touch-action:pan-y;padding-right:6px}.redeem-card{display:flex;align-items:center;gap:10px;padding:12px;border-radius:14px;background:#fff;border:1.5px solid rgba(224,160,32,.25);box-shadow:0 2px 8px #785a1e14}.redeem-card.done{opacity:.7;border-color:#78a07866;background:#e8f5e899}.rc-emoji{font-size:26px;flex-shrink:0}.rc-body{flex:1;min-width:0}.rc-title{font-size:14px;font-weight:700;color:#5a4a2a}.rc-desc{font-size:11px;color:var(--text-soft);line-height:1.45;margin-top:2px}.rc-effect{font-size:11px;color:#c07a12;font-weight:600;line-height:1.45;margin-top:4px;padding:4px 7px;border-radius:8px;background:#ffe09659;border:1px solid rgba(224,160,32,.3)}.rc-btn{flex-shrink:0;padding:9px 12px;border-radius:10px;border:none;background:linear-gradient(135deg,#e8b24a,#d89520);color:#fff;font-size:12px;font-weight:700;cursor:pointer;transition:transform .12s,opacity .15s}.rc-btn:hover:not(:disabled){transform:translateY(-1px)}.rc-btn:disabled{opacity:.45;cursor:not-allowed;background:#bbb}
