:root{--navy:#132e4b;--surf:#007b80;--sand:#fffbf2;--foam:#e7f4ed}
[hidden]{display:none!important}
body.resort{color:var(--navy);background:#f6f2e9;margin:0;font:16px/1.55 system-ui,sans-serif}
.resort>header{position:sticky;top:0;z-index:5;height:58px;padding:0 max(14px,calc((100% - 920px)/2));display:grid;grid-template-columns:1fr auto 1fr;background:var(--sand);border-bottom:1px solid #d9d3bd;gap:8px}
.resort-header h1{font-size:19px;letter-spacing:.05em;margin:0}.resort-header a{color:var(--navy);font-size:14px;font-weight:700;text-decoration:none;display:inline-flex;align-items:center;min-height:44px}
#staff-links{justify-self:end;display:flex;gap:8px}
.resort main{max-width:920px;margin:auto;padding:0 0 36px}
#island{background:#137f91}
.island-map{position:relative;margin:auto;width:100%;aspect-ratio:2/3;background:#37aebe url(/resort-island.webp) center / 100% 100% no-repeat}
.pin{position:absolute;display:grid;place-items:center;text-decoration:none;white-space:nowrap;padding:7px 17px;min-height:44px;border:1px solid #c4ae80;border-radius:22px;background:var(--sand);color:var(--navy);font-size:clamp(15px,2vw,20px);font-weight:800;box-shadow:0 3px 0 #846c4b,0 6px 14px #17374c33;transform:translate(-50%,-50%)}
.pin:hover,.pin:focus-visible{background:#fff0c4}.pavilion{left:23%;top:30%}.cafe{left:73%;top:29%}.stage{left:76%;top:57%}.cottage{left:23%;top:66%}
#room-art{height:clamp(105px,23vh,195px);background-size:cover;background-position:center;border-bottom:3px solid #cca968}
body[data-room=chat] #room-art{background-image:url(/resort-chat.webp)}body[data-room=topics] #room-art{background-image:url(/resort-topics.webp)}body[data-room=events] #room-art{background-image:url(/resort-events.webp)}body[data-room=profile] #room-art,body[data-room^="islander/"] #room-art{background-image:url(/resort-profile.webp)}
#plaza-content{padding:16px}.plaza-pane{width:100%}.plaza-section-intro{display:none}.resort .plaza-invite{background:#fffbf2;border-color:#ded8c4;box-shadow:none}.resort .plaza-invite span{white-space:normal}.plaza-filters button{min-height:40px;color:var(--navy)}.plaza-filters button[aria-pressed=true],.resort .primary{background:var(--surf);color:white}
.resort .plaza-list{grid-template-columns:1fr}.plaza-topic-card{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 14px;border-radius:17px;margin:0;padding:17px;background:#fffdf7}.plaza-topic-card>*{grid-column:1}.plaza-topic-card>.feed-photo{grid-column:2;grid-row:1/5;width:88px;height:96px;object-fit:cover;align-self:center}.plaza-topic-card p{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin:0;color:#4f6063;font-size:14px}.plaza-topic-card>.plaza-author{margin:3px 0}
.resident{display:block;width:40px;aspect-ratio:1;background:#f5ecda url(/resort-portraits.webp) no-repeat;background-size:400% 200%;border-radius:50%;border:1px solid #e6d5b5}.avatar-grid .resident{width:100%}.avatar-grid button{border-radius:15px}.profile-heading .resident{width:64px}.profile-heading{margin-bottom:12px}
.resort .plaza-event-card{border-top:4px solid #c98a61}.event-date{display:inline-block;background:#efe2bb;border-radius:8px;padding:4px 10px;color:#594822;font-weight:700}
.resort .plaza-chat-room{border-radius:14px;display:flex;flex-direction:column}.plaza-chat-list{min-height:150px;flex:1 1 auto;height:auto;max-height:none}.plaza-pane-chat{height:clamp(330px,calc(var(--visible-height,100dvh) - 285px),760px);display:flex;flex-direction:column}.plaza-chat-room{flex:1;min-height:0}.plaza-chat-privacy,.plaza-room-head,.plaza-chat-composer,.plaza-chat-room>.plaza-invite{flex:none}.plaza-room-head{padding:8px 12px}.room-title small{display:none}.room-mark{width:30px;height:30px}.plaza-chat-message{width:min(92%,580px)}.plaza-chat-message.mine{margin-left:auto}.plaza-chat-message.mine>p{background:#d8eee7}.chat-day{text-align:center;color:#607375;font-size:12px;margin:12px 0}.plaza-chat-composer textarea{min-height:42px;height:46px;font-size:16px}.plaza-chat-composer label{font-size:0}.plaza-chat-composer .plaza-error:empty{display:none}
body.typing[data-room=chat] #room-art{display:none}body.typing[data-room=chat] .plaza-pane-chat{height:calc(var(--visible-height,100dvh) - 76px);min-height:0}body.typing[data-room=chat] .plaza-chat-list{min-height:60px}
body[data-room=home] main{max-width:none;padding:0}body[data-room=home] #plaza-content:empty{display:none}
@media(min-width:700px){body[data-room=home]{background:#0c7589}body[data-room=home] main{display:grid;max-width:1040px;grid-template-columns:minmax(0,1.35fr) minmax(260px,1fr);background:var(--sand);min-height:calc(100dvh - 58px)}body[data-room=home] #plaza-content{align-self:center;padding:28px}#island{align-self:start}.island-map{max-width:610px}.resort main:not(:has(#island:not([hidden]))){background:var(--sand)}}
@media(max-width:699px){body[data-room=home] #plaza-content{display:none}.island-map{max-width:min(100vw,calc((100svh - 58px)*.667));min-width:min(100%,270px)}#island{min-height:calc(100svh - 58px);display:grid;align-items:center;background:linear-gradient(#73cef6,#008ea2)}#plaza-content{padding:10px}.resort .plaza-chat-room>.plaza-invite p{display:none}.resort .plaza-chat-room>.plaza-invite{display:flex;padding:8px 12px}.plaza-filters{margin:0 0 12px;padding:2px}.resort main{padding-bottom:env(safe-area-inset-bottom)}.plaza-pane-chat{height:calc(var(--visible-height,100dvh) - clamp(105px,23vh,195px) - 80px);min-height:285px}.plaza-chat-room>.plaza-chat-composer{padding:8px}.resort .plaza-empty{min-height:160px}.resort-header h1{font-size:17px}#staff-links a{font-size:12px}}
@media(max-height:480px){#room-art{height:68px}.plaza-pane-chat{height:calc(100dvh - 140px);min-height:210px}}
@media(max-width:699px) and (orientation:portrait){#island{overflow:hidden;display:flex;justify-content:center}.island-map{flex:none;max-width:none;width:max(100%,calc((100svh - 58px)*.667))}}
#island .island-map.orbit-ready{position:relative;width:100%;max-width:none;min-width:0;height:calc(100svh - 58px);min-height:280px;aspect-ratio:auto;overflow:hidden;background:#73bdbd;touch-action:none;user-select:none}
.orbit-ready canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:grab}.orbit-ready canvas:active{cursor:grabbing}
.orbit-ready .pin{font-size:14px;min-height:36px;min-width:58px;padding:5px 12px;z-index:1;touch-action:none;box-shadow:0 2px 0 #a38a69,0 3px 8px #284c5730}
.orbit-tools{position:absolute;z-index:2;bottom:max(14px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);display:flex;align-items:center;padding:4px;background:#fff9ebf2;border:1px solid #d5c6a5;border-radius:20px;box-shadow:0 4px 18px #16435726}
.orbit-tools button{border:0;background:transparent;min-width:42px;min-height:40px;white-space:nowrap;font-weight:700;color:#244352;padding:5px 10px}.orbit-tools button:hover{background:#eee4ce}.orbit-hint{position:absolute;bottom:70px;text-align:center;width:100%;color:#fff;text-shadow:0 1px 3px #143c50;pointer-events:none}
@media(hover:hover){.orbit-hint{font-size:0}.orbit-hint:after{content:'拖曳旋轉 · Shift 拖曳平移 · 滾輪縮放';font-size:13px}}
@media(min-width:700px){body[data-room=home] main:has(.orbit-ready){max-width:1440px;grid-template-columns:minmax(0,3fr) minmax(215px,1fr)}}
@media(prefers-reduced-motion:reduce){.resort{scroll-behavior:auto}}
