/* Your Other World v1.14 — Profile personalization. Existing five-section UI stays intact. */
.ff-avatar-img{width:100%;height:100%;object-fit:cover;display:block;border-radius:inherit}
.ff-profile-hero{display:flex;align-items:center;gap:26px;margin-bottom:24px}
.ff-profile-hero h2{margin:4px 0 6px;font-size:clamp(26px,3.6vw,39px)}
.ff-profile-hero p{margin:6px 0 14px;color:#b4bfd4}
.ff-profile-photo{width:116px!important;height:116px!important;min-width:116px;border-radius:50%;overflow:hidden;display:grid;place-items:center;font-size:54px;flex-shrink:0}
.ff-profile-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-bottom:45px}
.ff-profile-grid>*{min-width:0}
.ff-profile-panel h2{font-size:clamp(22px,2.5vw,29px);margin:10px 0 12px}
.ff-profile-panel .muted{font-size:13px;line-height:1.65}
.ff-profile-form{display:grid;gap:15px;margin-top:16px}
.ff-profile-form>label,.ff-profile-form>label:not(:has(input)){display:grid;gap:8px;color:#c4b0e1;letter-spacing:.075em;font-weight:800;font-size:11px}
.ff-profile-form input[type="text"],.ff-profile-form input[type="email"],.ff-profile-form input[type="password"],.ff-profile-form input[type="file"],.ff-profile-form textarea{width:100%;max-width:100%;min-width:0;color:#f6edff;border:1px solid #455779;border-radius:11px;background:#080f20;padding:13px 14px;font-family:inherit;font-size:14px;font-weight:500;line-height:1.5;letter-spacing:normal}
.ff-profile-form input[type="file"]{padding:11px;font-size:12px;cursor:pointer}
.ff-profile-form input:focus-visible,.ff-profile-form textarea:focus-visible{outline:2px solid #c491f5;outline-offset:2px}
.ff-profile-form textarea{resize:vertical;min-height:112px}
.ff-profile-form>.button{justify-self:start;min-height:42px}
.ff-profile-form input::file-selector-button{border:0;border-radius:7px;padding:9px;margin-right:14px;background:#543d80;color:white;cursor:pointer}
.ff-avatar-preview{width:130px;height:130px;object-fit:cover;border-radius:14px;border:2px solid #af81e1}
.ff-profile-remove{margin-top:12px}
.ff-profile-footer{display:flex;flex-wrap:wrap;gap:10px 18px;margin-top:25px;border-top:1px solid #35415a;padding-top:19px}
.ff-profile-footer a{color:#d9b1fd;font-size:12px}
.avatar-header,.avatar.avatar-large,.world-avatar,.ff-chat-avatar,.social-profile-avatar{overflow:hidden}
@media(max-width:860px){.ff-profile-grid{grid-template-columns:1fr}}
@media(max-width:560px){.ff-profile-hero{align-items:flex-start;flex-direction:column;gap:15px}.ff-profile-photo{width:90px!important;height:90px!important;min-width:90px}.ff-profile-form>.button{width:100%}}
/* v1.15: upload progress, custom address, public-facing resident card */
.ff-upload-progress{display:grid;gap:10px;margin-top:2px}
.ff-upload-progress[hidden],.ff-avatar-preview[hidden]{display:none!important}
.ff-upload-track{height:13px;border-radius:999px;overflow:hidden;border:1px solid #554778;background:#080d1b}
.ff-upload-track span{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,#7f42cb,#d38bf4);transition:width .14s ease}
.ff-upload-label{font-size:12px;color:#d8bee9}
.ff-upload-progress.has-error .ff-upload-track span{background:#e16d85}
.ff-vanity-panel .ff-vanity-input{display:flex;align-items:stretch;min-width:0;border:1px solid #455779;border-radius:11px;overflow:hidden;background:#080f20}
.ff-vanity-input>span{display:flex;align-items:center;padding:0 12px;color:#b8a5df;background:#161b32;border-right:1px solid #455779;white-space:nowrap;font-size:13px;letter-spacing:normal;font-weight:500}
.ff-profile-form .ff-vanity-input input[type="text"]{min-width:0;border:0;border-radius:0;padding:12px 10px;flex:1}
.ff-profile-form .ff-public-toggle{display:flex;flex-direction:row;align-items:flex-start;gap:12px;letter-spacing:normal;font-size:13px;color:#f0e8fb;cursor:pointer}
.ff-public-toggle input{flex:none;width:19px;height:19px;accent-color:#a35de3;margin-top:3px}
.ff-public-toggle span{display:grid;gap:6px}
.ff-public-toggle small{color:#aab4cc;font-size:12px;line-height:1.6}
.ff-share-link{margin-top:23px;border:1px solid #455779;border-radius:13px;background:#0a1125;padding:15px;display:flex;align-items:center;justify-content:space-between;gap:15px}
.ff-share-link>div{display:grid;gap:6px;min-width:0}
.ff-share-link a{overflow-wrap:anywhere;color:#e1b6fa;font-weight:700}
.ff-share-link .button{flex-shrink:0}
.ff-resident-profile{overflow:hidden;margin:20px auto 45px;max-width:1100px}
.ff-resident-cover{background:linear-gradient(115deg,rgba(6,9,25,.43),rgba(22,9,49,.62)),url('cinematic/skyline.webp') center/cover;padding:55px clamp(22px,5vw,70px);min-height:238px;display:flex;flex-direction:column;justify-content:end}
.ff-resident-cover h1{color:#fff;font-size:clamp(38px,6vw,72px);margin:10px 0 4px}
.ff-resident-cover p{color:#d7c6e7;margin:0}
.ff-resident-main{display:flex;gap:32px;padding:clamp(24px,4vw,48px);align-items:flex-start}
.ff-resident-avatar{width:146px;height:146px;min-width:146px;border-radius:20px;border:2px solid #b780e1;display:grid;place-items:center;background:linear-gradient(125deg,#3e2673,#a45fe1);font-size:58px;font-weight:800;overflow:hidden;box-shadow:0 15px 38px rgba(0,0,0,.3)}
.ff-resident-details{min-width:0;flex:1}
.ff-resident-details h2{font-size:clamp(27px,3.3vw,43px);margin:6px 0}
.ff-resident-details p{color:#c0c9dd}
.ff-resident-bio{max-width:760px;line-height:1.8;margin:22px 0}
.ff-resident-facts{display:flex;flex-wrap:wrap;gap:12px;margin:20px 0}
.ff-resident-facts span{border:1px solid #455779;border-radius:10px;padding:12px 14px;background:#0a1325;font-size:13px}
.ff-resident-facts b{color:#ebd1f8}
.ff-resident-actions{display:flex;flex-wrap:wrap;gap:10px}
@media(max-width:670px){.ff-resident-main{display:block}.ff-resident-avatar{margin-top:-80px;position:relative;margin-bottom:22px}.ff-share-link{align-items:start;flex-direction:column}.ff-share-link .button{width:100%}.ff-vanity-input>span{padding:0 7px;font-size:11px}.ff-resident-cover{min-height:190px}}
.ff-handle-status{font-size:13px;line-height:1.6;color:#cdb8eb;border-left:3px solid #8d6bbf;padding:9px 12px;background:#17172d;border-radius:6px}
.ff-handle-status[data-valid="yes"]{border-left-color:#4fcbab;color:#b5f1dd}
.ff-handle-status[data-valid="no"]{border-left-color:#e783a3;color:#ffd4de}
.ff-handle-status[data-valid="checking"]{border-left-color:#9c86db}
.ff-profile-form .ff-vanity-input input:read-only{opacity:.7;background:#10182b;cursor:not-allowed}
@media(max-width:560px){.ff-vanity-panel .ff-vanity-input{flex-wrap:wrap}.ff-vanity-input>span{padding:9px;border-right:0;border-bottom:1px solid #455779;width:100%}.ff-share-link{align-items:stretch;flex-direction:column}}

.ff-profile-form select.ff-banner-select{width:100%;max-width:100%;color:#f6edff;border:1px solid #455779;border-radius:11px;background:#080f20;padding:13px 14px;font-family:inherit;font-size:14px;min-height:46px}
.ff-resident-cover.ff-cover-skyline{background-image:linear-gradient(115deg,rgba(6,9,25,.43),rgba(22,9,49,.62)),url('cinematic/skyline.webp')}
.ff-resident-cover.ff-cover-old-quarter{background-image:linear-gradient(115deg,rgba(6,9,25,.43),rgba(22,9,49,.62)),url('cinematic/old-quarter.webp')}
.ff-resident-cover.ff-cover-harbor{background-image:linear-gradient(115deg,rgba(6,9,25,.43),rgba(22,9,49,.62)),url('cinematic/harbor.webp')}
.ff-resident-cover.ff-cover-glass{background-image:linear-gradient(115deg,rgba(6,9,25,.43),rgba(22,9,49,.62)),url('cinematic/glass.webp')}

/* v1.16: connect and message on the shareable resident page. */
.ff-resident-interactions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin:20px 0 30px;scroll-margin-top:120px}
.ff-resident-connect-card{min-width:0}.ff-resident-connect-card h2{font-size:clamp(23px,2.5vw,30px)}
.ff-resident-connection-list{display:grid;gap:10px;margin:18px 0}
.ff-resident-connection-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px;border:1px solid #435074;border-radius:12px;background:#090f20b3;flex-wrap:wrap}
.ff-resident-connection-row div{display:grid;gap:3px}.ff-resident-connection-row small,.ff-resident-status,.ff-profile-note{color:#b7bbd2;font-size:12px}
.ff-resident-message-form{display:grid;gap:10px;margin:12px 0 18px}.ff-resident-message-form textarea{width:100%;min-height:110px;border:1px solid #586284;background:#070d1c;color:#fff;border-radius:10px;padding:13px;font:inherit;resize:vertical}
.ff-resident-message-form label{font-size:11px;font-weight:800;letter-spacing:1.2px}.ff-resident-message-form button{justify-self:start}
@media(max-width:800px){.ff-resident-interactions{grid-template-columns:1fr}}
