
:root{color-scheme:dark;--bg:#070b12;--panel:#0c1320f5;--line:#29354a;--txt:#dfe8f4;--mute:#899bb1;--gold:#f4bb61}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--bg);font-family:Inter,'Segoe UI','Microsoft YaHei',sans-serif;color:var(--txt)}
canvas#scene{position:absolute;inset:0;width:100%;height:100%;display:block;cursor:grab;touch-action:none}canvas#scene:active{cursor:grabbing}
.shade{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 43% 45%,transparent 28%,#02050a99 100%)}
header{position:absolute;top:38px;left:34px;pointer-events:none;max-width:calc(100% - 400px)}h1.chinese-title{font-family:'Microsoft YaHei','PingFang SC','Noto Sans CJK SC',sans-serif;font-size:clamp(26px,3.05vw,45px);font-weight:900;letter-spacing:.045em;line-height:1.2;margin:0;color:#dfe8f4;text-shadow:0 3px 20px #0008;white-space:nowrap}h1.chinese-title span{color:#e5ad64}
.stat{position:absolute;left:35px;bottom:27px;color:#6f8196;font:11px monospace;line-height:2}.stat b{color:#d2ddea}
aside{position:absolute;right:22px;top:22px;bottom:22px;width:355px;background:var(--panel);border:1px solid #27374a;border-radius:15px;backdrop-filter:blur(18px);display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 70px #0008}
.top{padding:19px 18px 14px;border-bottom:1px solid var(--line)}.top label,.section{font-size:10px;color:#95a8be;letter-spacing:1.8px;font-weight:800}
.input{border:1px solid #314159;background:#0a101c;border-radius:8px;color:white;padding:10px 11px;width:100%;outline:none;font:13px 'Segoe UI','Microsoft YaHei',sans-serif;margin-top:10px}.input:focus{border-color:#c6a06b}.input::placeholder{color:#63768d}select.input{padding:9px}.text-area{min-height:65px;resize:vertical}
.btnrow{display:flex;gap:6px;margin-top:11px;flex-wrap:wrap}button{cursor:pointer;border:1px solid #34445a;background:#172235;color:#dbe4f0;padding:8px 10px;border-radius:7px;font-size:11px;font-family:inherit}button:hover{background:#263950;border-color:#ba945d}button.on,.primary{background:#634526;border-color:#d5a561;color:#fff}.full{width:100%;margin-top:11px;padding:11px}
#body{overflow:auto;padding:19px;flex:1;scrollbar-width:thin;scrollbar-color:#36445b transparent}.hint{color:#8395ad;font-size:12px;line-height:1.8}
#profileName{font-size:26px;font-weight:850;margin:10px 0 5px;overflow-wrap:anywhere}#profileMeta{color:#e3b675;font-size:11px;letter-spacing:1px}.desc{font-size:13px;line-height:1.8;color:#aab9cc;margin:15px 0}
.avatar{height:190px;width:100%;object-fit:cover;object-position:center;border-radius:12px;border:1px solid #3b4b60;display:block;margin:13px 0 16px;background:#111d30}.avatar-placeholder{height:150px;width:100%;border:1px dashed #344762;border-radius:12px;background:radial-gradient(circle at 50% 50%,#243752,#0a111e);display:flex;align-items:center;justify-content:center;font-size:51px;color:#e8c28e;margin:13px 0 16px}
.pills{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 17px}.pill{padding:5px 8px;border:1px solid #46526a;border-radius:50px;background:#1a283b;color:#baccde;font-size:11px;max-width:100%;overflow-wrap:anywhere}.pill.clickable{cursor:pointer}.pill.clickable:hover{border-color:#e2b578;color:#fbd8aa}.pill button{background:transparent;border:0;color:#eecb9c;padding:0 2px 0 7px;font-size:13px}
.relation{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #273246;padding:11px 0;font-size:12px;cursor:pointer;gap:10px}.relation:hover{color:#f0c389}.relation small{font-size:10px;color:#93a8bc;text-align:right;max-width:53%;line-height:1.5}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:8px;flex-shrink:0}
/* Individual profile & relationship management */
.actionbar{display:flex;gap:8px;margin:13px 0 19px}.actionbar button{flex:1;font-size:12px}
.danger{background:#341c24;border-color:#81505a;color:#ffbbc1}.danger:hover{background:#57242f;border-color:#d97787}
.person-editor{padding:15px;border:1px solid #53617b;border-radius:11px;background:#101d2c;margin:13px 0 21px}
.person-editor .input{margin-top:9px}.person-editor .field-title{margin-top:11px}.person-editor .upload{margin-top:8px}
.person-editor .pills{margin:7px 0}.person-editor .btnrow button{flex:1}
.relation-wrap{padding:4px 0 8px;border-bottom:1px solid #28384b}.relation-wrap .relation{border-bottom:0;padding:9px 0 5px}
.relation-actions{display:flex;justify-content:flex-end;gap:7px;margin-bottom:6px}.relation-actions button{padding:5px 9px;font-size:10px}
#personAvatarInput{display:none}
.footer{padding:13px 17px;border-top:1px solid var(--line);display:flex;gap:7px;flex-wrap:wrap}.footer button{flex:1 1 auto}
#edit{display:none;border-top:1px solid var(--line);padding-top:18px;margin-top:18px}.field-title{font-size:11px;color:#adbdd0;margin-top:13px;margin-bottom:3px}.minor{font-size:10px;color:#8798ac;margin:9px 0;line-height:1.7}.form-split{border-top:1px solid var(--line);margin-top:21px;padding-top:21px}
.upload{margin-top:9px;display:flex;align-items:center;gap:10px;background:#0a101b;border:1px dashed #43546a;border-radius:9px;padding:11px;cursor:pointer}.upload:hover{border-color:#d9ae71}.thumb{height:49px;width:49px;flex:0 0 49px;display:flex;align-items:center;justify-content:center;object-fit:cover;border-radius:8px;background:#19283d;color:#9eacc0}.upload .help{font-size:11px;color:#b9cadf;line-height:1.7}.upload .help small{color:#72859b}.tag-editor{display:flex;gap:6px}.tag-editor .input{flex:1;min-width:0}.tag-editor button{margin-top:10px;white-space:nowrap}.tag-chips{min-height:19px}
.picker-wrap{position:relative;margin-top:9px}.picker-wrap .input{margin-top:0}.suggestions{position:relative;max-height:178px;overflow:auto;border:1px solid #3a4a61;border-radius:8px;background:#101b2b;margin-top:5px;display:none;z-index:2}.suggestions.show{display:block}.suggestion{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;text-align:left;border:0;border-bottom:1px solid #263345;border-radius:0;background:transparent;padding:10px 11px;font-size:12px}.suggestion:last-child{border:0}.suggestion:hover{background:#253850}.suggestion small{color:#8399af;font-size:10px}.picked{margin-top:6px;padding:9px 10px;background:#122f38;border:1px solid #35737b;border-radius:7px;color:#b5e9e3;font-size:12px;display:none}.picked.show{display:block}.picked button{float:right;border:0;background:transparent;color:#c4e9e4;padding:0;font-size:11px}
.result{display:flex;align-items:center;justify-content:space-between;gap:8px;cursor:pointer;padding:9px 0;border-bottom:1px solid #28354a;font-size:12px}.result:hover{color:#eac088}.result small{color:#92a4ba;font-size:10px}.result strong{font-weight:650}.result-list{margin:9px 0 20px;max-height:205px;overflow:auto}.divider{border-top:1px solid #2b3b50;margin:17px 0}
#toast{position:absolute;left:30px;bottom:105px;padding:9px 13px;border-radius:8px;border:1px solid #52657d;background:#152337ed;font-size:12px;color:#e2edf7;opacity:0;pointer-events:none;transition:opacity .25s;max-width:300px}
#fileInput,#avatarInput{display:none}
@media(max-width:760px){header{left:16px;top:16px;max-width:calc(100% - 32px)}header h1.chinese-title{font-size:clamp(20px,5.5vw,31px);letter-spacing:.015em}aside{width:100%;height:53%;top:auto;right:0;left:0;bottom:0;border-radius:15px 15px 0 0}#legend{left:16px;bottom:55%;max-width:calc(100% - 32px)}.stat{display:none}.top{padding:12px 16px}.top .input{margin-top:6px}.top .btnrow{margin-top:7px}#body{padding:16px}}

/* Cloud editing access */
[hidden]{display:none!important}
.auth-state{margin:12px 0 0;color:#92a3b9;font-size:11px;line-height:1.6}
.auth-state.unlocked{color:#83d9b4}.auth-state.unsaved{color:#eebc7b}.auth-state.failed{color:#ff9f9f}
.auth-overlay{position:fixed;inset:0;background:rgba(2,6,12,.80);z-index:1000;display:flex;align-items:center;justify-content:center;padding:16px;backdrop-filter:blur(6px)}
.auth-dialog{width:min(420px,100%);border:1px solid #53617b;border-radius:16px;background:#111c2c;padding:26px;box-shadow:0 20px 80px #000b}
.auth-dialog h2{font-size:24px;margin:12px 0}.auth-dialog label{font-size:12px;color:#adbdd0}.auth-dialog .btnrow button{flex:1}
.auth-error{min-height:19px;margin-top:8px;color:#ffaba9;font-size:12px}
#saveCloud{border-color:#5d806b;color:#a7edc6}
