/* Shared controls and progressive interactions, v66. */
:root{--ux-ink:#204969;--ux-muted:#47667c;--ux-line:#c5d9e7;--ux-blue:#0869bd;--ux-radius:14px}
button,input,select,textarea{font-family:inherit}button,a.primary{min-height:44px}input:not([type=checkbox]):not([type=radio]),select,textarea{min-height:44px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #b57d12;outline-offset:3px}dialog{color:var(--ux-ink);border:1px solid var(--ux-line);border-radius:var(--ux-radius);box-shadow:0 22px 80px #102b4833}dialog::backdrop{background:#102b4880}dialog label{line-height:1.7}dialog p{line-height:1.8}button[disabled]{cursor:wait}
.signup-flow-form{display:block!important}.signup-flow{width:100%;min-width:0}.flow-steps{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 20px}.flow-steps button{flex:1;padding:8px;font-size:12px;background:#eef5fb;color:#315c7a;border:1px solid var(--ux-line)}.flow-steps button[aria-current=step]{background:var(--ux-blue);color:white;border-color:var(--ux-blue)}.flow-steps button:disabled{opacity:1;color:#576f80;background:#f6f8fa;cursor:default}.flow-panel{min-width:0}.flow-panel h3{margin:0 0 18px;font-size:21px}.flow-panel h3:focus{outline:none}.flow-panel[hidden]{display:none!important}.flow-actions{display:flex;justify-content:space-between;gap:12px;margin-top:20px}.flow-summary{display:grid;grid-template-columns:110px minmax(0,1fr);gap:10px;background:#f1f7fc;border:1px solid var(--ux-line);border-radius:12px;padding:18px}.flow-summary dt{color:#47667c}.flow-summary dd{margin:0;overflow-wrap:anywhere;font-weight:600}.flow-feedback{color:#9b3025!important}.flow-panel .subdomain-field{margin:0}.flow-panel .layout-preview{margin:12px 0}.flow-panel>button[type=submit]{width:100%;background:var(--ux-blue);color:white}.signup-flow-form>p{font-size:12px}.auth:has(.signup-flow){grid-template-columns:minmax(190px,.8fr) minmax(0,1.2fr)}
.island-mode{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:14px 18px;background:#fff;border:1px solid var(--ux-line);border-radius:14px;margin:16px 0}.island-mode button{min-width:105px;background:#edf5fc;color:#164e7c;border:1px solid #bed3e4;font-weight:700}.island-mode button[aria-pressed=true]{background:var(--ux-blue);color:white;border-color:var(--ux-blue)}.island-mode p{margin:0 0 0 12px;font-size:13px}.island-visit-mode .art-plot:not(.occupied){visibility:hidden;pointer-events:none}.art-plot.occupied{cursor:pointer}.art-plot.occupied:hover .building-sprite,.art-plot.occupied:focus-visible .building-sprite{filter:drop-shadow(0 0 8px #fff) drop-shadow(0 0 12px #0878d788)}.art-plot.occupied:hover .building-label,.art-plot.occupied:focus-visible .building-label{background:#fff;border:2px solid #0870c9;color:#164d75}.island-visit-mode #building-form{display:none!important}
.service-progress{list-style:none;padding:0;margin:18px 0;display:grid;gap:10px}.service-progress li{display:grid;grid-template-columns:32px 1fr auto;align-items:center;gap:12px;border:1px solid var(--ux-line);border-radius:12px;padding:14px;background:#fff}.service-progress .step-mark{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#e7f0f8;color:#254e70;font-weight:700}.service-progress li[data-state=done] .step-mark{background:#dff2e7;color:#216143}.service-progress li[data-state=attention] .step-mark{background:#fff0d9;color:#805318}.service-progress h3{margin:0;font-size:15px}.service-progress p{margin:3px 0 0;font-size:13px}.service-progress a{font-size:13px;color:#075ca6;text-decoration:underline}.service-panel{display:block!important}.service-panel[hidden]{display:none!important}.service-panel .service-actions{display:flex;gap:10px;flex-wrap:wrap}.service-panel button{background:#edf5fc;color:#164e7c;border:1px solid #bed3e4}.ux-load-state{padding:18px;border:1px solid var(--ux-line);background:#f2f8fc;border-radius:12px;margin:16px 0;color:#31546d}.ux-load-state button{margin-left:12px}.ux-load-state[data-state=error]{background:#fff5ef;border-color:#e1c2b2}.ux-load-state[data-state=loading]::before{content:'';display:inline-block;width:14px;height:14px;border:2px solid #bed6e9;border-top-color:#0869bd;border-radius:50%;margin-right:9px;animation:ux-spin .8s linear infinite}@keyframes ux-spin{to{transform:rotate(360deg)}}
.admin-priorities{margin:20px 0;display:grid;gap:10px}.admin-priorities>h2{font-size:21px;margin:0}.admin-priority{display:flex;align-items:center;gap:14px;padding:16px 20px;background:#fff;border:1px solid var(--ux-line);border-left:4px solid #bb8019;border-radius:12px;text-decoration:none;color:#204969}.admin-priority strong{font-size:24px;min-width:38px}.admin-priority small{display:block;letter-spacing:0;color:#47667c}.admin-priority .priority-link{margin-left:auto;color:#075ca6;font-weight:600}.mobile-details-toggle,.mobile-details-close{display:none}
@media(max-width:760px){.auth:has(.signup-flow){grid-template-columns:1fr;padding:20px;gap:20px}.flow-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.flow-steps button{font-size:11px}.flow-summary{grid-template-columns:85px minmax(0,1fr);font-size:13px}.island-mode p{flex-basis:100%;margin:4px 0 0}.service-progress li{grid-template-columns:30px 1fr}.service-progress li>a{grid-column:2}.service-panel{padding:20px}.game-layout{display:block}.game-layout>aside{position:fixed;inset:auto 0 0;max-height:75dvh;overflow-y:auto;background:#fff;z-index:9000;border-radius:22px 22px 0 0;box-shadow:0 -15px 60px #102b4833;transform:translateY(110%);visibility:hidden;transition:transform .2s,visibility .2s;padding:20px 18px calc(24px + env(safe-area-inset-bottom));width:100%}.mobile-details-open .game-layout>aside{transform:translateY(0);visibility:visible}.mobile-details-toggle{display:block;width:100%;margin:12px 0;background:#fff;color:#17578b;border:1px solid var(--ux-line);font-weight:700}.mobile-details-close{display:block;margin:0 0 14px auto;background:#eef5fc;color:#204969;border:1px solid var(--ux-line)}.game-layout .viewport{height:65dvh;min-height:360px}.game-layout .world-panel{border-radius:12px}.visitor .scene-panel,.game-layout .world-panel{width:100%}.signup-fields{display:block!important}#island-signup-dialog{max-width:100%;width:100%;max-height:94dvh;margin:auto 0 0;border-radius:20px 20px 0 0}.admin-priority{padding:14px;gap:10px}.admin-priority .priority-link{font-size:12px}}
@media(prefers-reduced-motion:reduce){.ux-load-state::before{animation:none}.game-layout>aside{transition:none}}

.priority-item{display:block;padding:10px 20px 10px 30px;margin:0 0 0 12px;background:#fff;color:#175a90;border-left:1px solid #c5d9e7;text-decoration:none;font-size:13px;overflow-wrap:anywhere}.priority-item:hover{text-decoration:underline}.record:target{outline:3px solid #b57d12;outline-offset:3px}
@media(max-width:760px){.shared-world{margin-inline:-4.35vw;border-radius:0;width:calc(100% + 8.7vw)}.game-layout{margin-inline:-4.35vw;width:calc(100% + 8.7vw)}.world-camera-stage #world-ocean{height:65dvh;min-height:380px}.profile-dialog{width:100%!important;max-width:100%!important;max-height:90dvh!important;margin:auto 0 0;border-radius:20px 20px 0 0!important}}

.flow-panel label{font-size:14px}.flow-panel label small{font-size:12px}.flow-panel p{font-size:14px}.service-panel p{font-size:14px}.island-visit-mode .legend>span:first-child{display:none}.world-top>span{font-size:12px}.world-top button{min-height:40px}.mobile-details-toggle[hidden],.island-mode[hidden],.admin-priorities[hidden]{display:none!important}@media(max-width:760px){input,textarea,select{font-size:16px!important}.flow-panel{scroll-margin-top:20px}.flow-steps button{min-height:44px}.game-layout .viewport{overscroll-behavior:contain}}

.ux-empty-state{padding:24px;background:#f2f7fb;border:1px dashed #b8d1e3;border-radius:14px;color:#3c617c}.world-empty button{margin-top:18px}.service-panel>button[data-refresh-service]{margin-top:12px}

.signup-flow{container-type:inline-size}#island-signup-dialog{width:min(760px,94vw);max-width:760px}@container(max-width:520px){.flow-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.flow-steps button{white-space:normal;line-height:1.5}}

.flow-panel input[type=checkbox]{width:20px;height:20px;margin:0 8px 0 0;vertical-align:middle;accent-color:#0869bd}.flow-panel label:has(input[type=checkbox]){display:block;line-height:1.8}.admin-priorities{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-priorities>h2,.admin-priorities>p{grid-column:1/-1}.priority-group{min-width:0}.admin-priority span{overflow-wrap:anywhere}.admin-priority strong{font-size:22px}.admin-priority .priority-link{font-size:12px;flex-shrink:0}@media(max-width:1050px){.admin-priorities{grid-template-columns:1fr}}
