/* Arctic house: one shared interface system. Scene, sky and workspaces have their own files. */
@import url('/tokens.css?v=5d55330329b2bd52');
@import url('/arctic.css?v=5d55330329b2bd52');
@import url('/inbox.css?v=5d55330329b2bd52');
@import url('/member.css?v=5d55330329b2bd52');
@import url('/broadcasts.css?v=5d55330329b2bd52');
@import url('/workspace-theme.css?v=5d55330329b2bd52');
@import url('/house-motion.css?v=5d55330329b2bd52');
@import url('/fonts/wenkai.css?v=5d55330329b2bd52');
html:root{font-size:16px}html,body{overflow-x:clip}
body.house-page,body.writing-shell{margin:0;min-height:100svh;background:var(--color-paper);color:var(--color-ink);font:var(--text-md)/1.7 var(--font-body);-webkit-font-smoothing:antialiased}
:is(.house-page,.writing-shell) *{box-sizing:border-box}
:is(.house-page,.writing-shell) [hidden]{display:none!important}
.house-page a{color:var(--color-accent)}
.house-page :is(button,input,textarea,select){font:inherit}
:is(.house-page,.writing-shell) ::placeholder{color:var(--color-ink-2);opacity:1}
.house-page button{cursor:pointer;white-space:nowrap;color:inherit}
:is(.house-page,.writing-shell) :is(button,a){-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.house-page button:disabled{cursor:not-allowed;opacity:.55}
:is(.house-page,.writing-shell) :is(button,a,input,textarea,select,summary):focus-visible{outline:3px solid var(--color-focus);outline-offset:4px}
.house-page :is(h1,h2,h3){font-family:var(--font-display);font-weight:500;font-style:normal;font-synthesis:none;letter-spacing:-.025em;line-height:1.35;text-wrap:balance;overflow-wrap:anywhere}
.house-page h1{font-size:var(--text-display);margin:0}
.house-page h2{font-size:var(--text-xl);margin:0 0 var(--space-md)}
.house-page p{margin:0 0 var(--space-lg)}
.house-width{width:min(1240px,calc(100% - 80px));margin-inline:auto}
.house-header{position:relative;z-index:20;min-height:96px;display:flex;justify-content:space-between;align-items:center;gap:var(--space-lg);flex-wrap:wrap;padding-block:var(--space-lg)}
.house-brand{display:inline-flex;align-items:center;gap:12px;text-decoration:none;white-space:nowrap;font:500 var(--text-lg)/1.4 var(--font-display);font-synthesis:none;min-height:44px}
.house-brand img{width:40px;height:40px}
.house-header nav{display:flex;align-items:center;gap:var(--space-xs);flex-wrap:wrap;max-width:100%;min-width:0}
.house-header nav a,.house-nav-link{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:8px 14px;border-radius:var(--radius-pill);text-decoration:none;white-space:nowrap;font-size:var(--text-sm)}
.house-header nav a[aria-current=page]{background:var(--color-paper-2);color:var(--color-ink)}
.house-button,.house-page .house-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);min-height:48px;border:0;border-radius:var(--radius-pill);padding:12px 24px;background:var(--color-accent);color:var(--color-accent-ink);font-size:var(--text-sm);font-weight:500;text-decoration:none;white-space:nowrap}
.house-button.secondary,.house-page .house-button.secondary{background:var(--color-paper-2);color:var(--color-ink)}

.house-button[aria-busy=true]{opacity:.7}
@media(hover:hover){.house-header nav a:hover{background:var(--color-paper-2)}}
.house-skip{position:fixed;top:-100px;left:var(--space-md);z-index:1000;background:var(--color-surface);padding:var(--space-md)}.house-skip:focus{top:var(--space-sm)}
.hall-intro{padding:var(--space-2xl) 0;display:flex;justify-content:space-between;align-items:end;gap:var(--space-lg);flex-wrap:wrap}
.hall-intro h1{margin-bottom:var(--space-md);font-size:clamp(1.9rem,3.5vw,2.8rem)}
.hall-intro p{color:var(--color-ink-2);margin:0;max-width:36em}
.hall-account{font-size:var(--text-sm);display:flex;align-items:center;gap:var(--space-md);flex-wrap:wrap}
.hall-account a{min-height:44px;display:inline-flex;align-items:center;text-decoration:none}
.hall-account button{min-height:44px;padding:8px 16px;background:var(--color-surface);border:0;border-radius:var(--radius-pill);color:var(--color-accent)}
.hall-status{min-height:1.65em;font-size:var(--text-sm);color:var(--color-ink-2)}.hall-status.error{color:var(--color-error)}.hall-status:empty{display:none}
.room-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-lg)}
.room-card{border-radius:var(--radius-card);padding:var(--space-xl);min-width:0;background:var(--color-surface);display:grid;grid-template-columns:minmax(0,1fr) 128px;gap:var(--space-lg);align-items:center;min-height:270px}
.room-card{--room-tint:var(--color-water-deep);background:color-mix(in oklch,var(--color-surface) 91%,var(--room-tint));border:1px solid color-mix(in oklch,var(--color-rule) 65%,var(--room-tint));border-inline-start:4px solid color-mix(in oklch,var(--room-tint) 65%,var(--color-surface));box-shadow:0 8px 28px color-mix(in oklch,var(--color-ink) 3%,transparent)}
.room-card.study{--room-tint:var(--color-wood)}
.room-card.wishes{--room-tint:var(--color-water-deep)}
.room-card.forum{--room-tint:var(--color-accent)}
.room-card.games{--room-tint:var(--color-pine)}
.room-card h2{font-size:var(--text-2xl);margin-bottom:var(--space-sm)}
.room-card p{color:var(--color-ink-2);font-size:var(--text-md);max-width:25em;margin-bottom:var(--space-lg)}
.room-state{display:block;font-size:var(--text-xs);color:var(--color-ink-2);margin:0 0 var(--space-sm)}
.room-art{width:100%;height:150px;color:var(--color-accent);transition:transform var(--dur-long) var(--ease-out)}
.room-request-note{margin-top:var(--space-md)!important;margin-bottom:0!important;overflow-wrap:anywhere}
.waiting-rooms{margin-top:var(--space-2xl)}.waiting-rooms h2{font-size:var(--text-lg)}
.waiting-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-xl)}
.waiting-room{padding:var(--space-md) 0;min-width:0}
.waiting-room h3{font-size:var(--text-lg);margin:0 0 var(--space-sm)}.waiting-room p{font-size:var(--text-sm);margin:0;color:var(--color-ink-2)}.waiting-room small{display:block;margin-top:var(--space-md);font-size:var(--text-xs);color:var(--color-ink-2)}
.hall-feedback{margin-top:var(--space-2xl);padding:var(--space-xl);background:var(--color-surface);border-radius:var(--radius-card)}.hall-feedback h2{font-size:var(--text-lg)}
.hall-message{padding:var(--space-md) 0;overflow-wrap:anywhere}.hall-message p{margin:0;font-size:var(--text-sm)}.hall-message small{font-size:var(--text-xs);color:var(--color-ink-2)}
.house-page dialog{background:var(--color-surface);color:var(--color-ink);border:0;border-radius:var(--radius-card);box-shadow:0 24px 90px var(--color-overlay)} /* taste-skill-ignore: Native modal dialogs are floating overlays. */
.house-page dialog::backdrop{background:var(--color-overlay)}
.house-dialog{width:min(490px,calc(100% - 32px));max-height:90svh;overflow:auto;padding:var(--space-xl)}
.house-dialog h2{margin:0 0 var(--space-lg);font-size:var(--text-xl)}
.house-dialog label{display:block;font-size:var(--text-sm);margin-bottom:var(--space-sm)}
.house-dialog textarea{width:100%;background:var(--color-paper);color:var(--color-ink);border:1px solid var(--color-rule);border-radius:var(--radius-input);padding:var(--space-md);resize:vertical}
.dialog-actions{display:flex;justify-content:end;gap:var(--space-md);margin-top:var(--space-lg);flex-wrap:wrap}
.house-dialog .hall-status{margin-top:var(--space-md)}
.house-interior{--bg:var(--color-paper);--paper:var(--color-surface);--ink:var(--color-ink);--muted:var(--color-ink-2);--green:var(--color-accent);--green-light:var(--color-paper-2);--green-soft:var(--color-paper-2);--sidebar:var(--color-paper-2);--line:var(--color-rule);--red:var(--color-error);--red-soft:var(--color-error-surface);--gold:var(--color-warning);--gold-soft:var(--color-warning-surface)}
.house-interior>.house-header{padding-inline:var(--space-xl)}
.house-interior .auth-card{background:var(--color-surface);border:0;box-shadow:none}
.house-interior :is(input,select,textarea){border-color:var(--color-rule);background:var(--color-paper);color:var(--color-ink);border-radius:var(--radius-input)}
.house-interior :is(.primary,.primary-button){background:var(--color-accent);color:var(--color-accent-ink);border:0;border-radius:var(--radius-pill);min-height:48px;padding:12px 24px;font-size:var(--text-sm)}
.house-interior :is(.secondary,.quiet-button,.row-actions button){background:var(--color-paper-2);border:0;border-radius:var(--radius-pill);min-height:44px;color:var(--color-ink);padding:8px 16px;font-size:var(--text-sm)}
.house-interior button.danger{color:var(--color-error)}
.house-interior :is(.feedback,.hint){line-height:1.7;font-size:var(--text-sm)}
.house-interior :is(.hint,.list-row small,.empty,.code-box p){color:var(--color-ink-2)}
.house-interior .feedback{color:var(--color-error)}.house-interior .feedback.success{color:var(--color-accent)}
.house-interior label{font-size:var(--text-sm)}
.house-interior .list-row strong{font-size:var(--text-md)}
.house-interior .text-button{font-size:var(--text-sm);min-height:44px;color:var(--color-accent)}
.house-interior :is(.panel,.wish-card){border:0;background:var(--color-surface);border-radius:var(--radius-card)}
.house-interior .pool-intro h1{font-size:var(--text-display);font-weight:500}
.house-interior .view-tabs button{font-size:var(--text-md);min-height:48px;color:var(--color-ink-2)}
.house-interior .view-tabs [aria-selected=true]{color:var(--color-accent);border-color:var(--color-accent)}
.house-interior :is(.wish-body,.wish-target,.event p,.wish-meta){font-size:var(--text-sm);color:var(--color-ink)}
.house-interior :is(.wish-category,.status-pill,.event-heading,.event small,.unread,.pool-footer){font-size:var(--text-xs)}
.house-interior .status-pill{border:0;background:var(--color-paper-2);color:var(--color-ink-2)}
.house-interior .status-pill.fulfilled{background:var(--color-water);color:var(--color-accent)}
.console-tabs{display:flex;gap:var(--space-xs);flex-wrap:wrap;margin:var(--space-xl) 0;padding:6px;background:var(--color-paper-2);border-radius:18px;width:fit-content}
.console-tabs button{min-height:44px;padding:8px 16px;border:0;background:transparent;color:var(--color-ink-2);border-radius:var(--radius-pill);font-size:var(--text-sm)}
.console-tabs button[aria-selected=true]{background:var(--color-surface);color:var(--color-ink)}
.module-member,.module-request{padding:var(--space-lg) 0;border-bottom:1px solid var(--color-rule);overflow-wrap:anywhere} /* taste-skill-ignore: Administrator permission data rows retain their table separators. */
.module-member h3,.module-request h3{font:600 var(--text-md)/1.5 var(--font-body);margin:0 0 var(--space-sm)}
.module-member small,.module-request small{display:block;font-size:var(--text-sm);color:var(--color-ink-2);margin-bottom:var(--space-md)}
.permission-actions{display:flex;gap:var(--space-md);align-items:center;flex-wrap:wrap}
.permission-actions button{min-height:44px;padding:8px 16px;border:1px solid var(--color-rule);border-radius:var(--radius-pill);background:var(--color-paper);color:var(--color-accent)} /* taste-skill-ignore: Permission form controls need a visible boundary on the table surface. */
.permission-actions button[data-allowed=true]{background:var(--color-paper-2)}
.house-interior .admin-shell{max-width:1240px}
.house-interior .admin-shell .house-header{padding:0;margin-bottom:var(--space-lg);min-height:72px}
.house-interior .admin-shell h1{font-size:var(--text-2xl);margin-top:var(--space-lg)}
.house-interior .admin-shell .auth-card{padding:var(--space-xl);margin-top:var(--space-lg)}
.house-interior .code-box{background:var(--color-paper-2);border-color:var(--color-rule)}
.house-interior :is(.badge,.list-row small){color:var(--color-ink-2);font-size:var(--text-xs)}
.house-interior :is(.list-row,.badge,#password-result){border-color:var(--color-rule)}
.error-page{max-width:700px;margin:10vh auto;padding:var(--space-xl);font-family:var(--font-body)}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.site-copyright{clear:both;text-align:center;padding:16px;color:var(--color-ink-2);font:var(--text-xs)/1.6 var(--font-body)}.site-copyright small{font:inherit}
.writing-shell>.site-copyright{height:36px;padding:6px 16px;background:var(--color-paper)}.writing-shell .app-shell{height:calc(100dvh - var(--desk-chrome-height,152px) - 36px)}
.chapter-lock{max-width:560px;margin:12dvh auto;padding:24px;text-align:center}.chapter-lock p{line-height:1.9}.chapter-lock button{display:block;margin:16px auto;min-height:44px}.chapter-lock #unlock-feedback{color:var(--color-error);font-size:var(--text-xs)} /* taste-skill-ignore: unlock-feedback is a functional CSS selector, not marketing copy. */
.room-card .room-book-page{transform-origin:90px 90px}.room-card .room-bookmark{transform-origin:127px 32px}.room-card .room-pond-rings{transform-origin:90px 105px}.room-card .room-book-spark{opacity:.65}
.room-forum-note{transform-origin:65px 54px}.room-game-pad{transform-origin:51px 86px}
@keyframes room-note-nod{0%,100%{transform:rotate(0)}45%{transform:rotate(-4deg)}}
@keyframes room-reply-arrive{0%,100%{transform:translateY(0)}45%{transform:translateY(-4px)}}
@keyframes room-pad-press{0%,100%{transform:rotate(0)}45%{transform:rotate(8deg)}}
@keyframes room-button-press{0%,100%{transform:translateY(0)}45%{transform:translateY(3px)}}
@media(prefers-reduced-motion:no-preference){.room-card:is(:hover,:focus-within) .room-forum-note{animation:room-note-nod .8s var(--ease-in-out) 1}.room-card:is(:hover,:focus-within) .room-forum-reply{animation:room-reply-arrive .8s var(--ease-in-out) 1}.room-card:is(:hover,:focus-within) .room-game-pad{animation:room-pad-press .7s var(--ease-in-out) 1}.room-card:is(:hover,:focus-within) .room-game-buttons{animation:room-button-press .7s var(--ease-in-out) 1}}
@keyframes room-page-turn{0%,100%{transform:skewY(0)}45%{transform:skewY(-7deg)}}
@keyframes room-bookmark-sway{0%,100%{transform:rotate(0)}45%{transform:rotate(8deg)}}
@keyframes room-coin-float{0%,100%{transform:translateY(0)}50%{transform:translateY(7px) rotate(6deg)}}
@keyframes room-pond-wave{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.12);opacity:.55}}
@media(hover:hover) and (prefers-reduced-motion:no-preference){.room-card:is(:hover,:focus-within) .room-book-page{animation:room-page-turn .9s var(--ease-in-out) 1}.room-card:is(:hover,:focus-within) .room-bookmark{animation:room-bookmark-sway .9s var(--ease-in-out) 1}.room-card:is(:hover,:focus-within) .room-pond-coin{animation:room-coin-float 1s var(--ease-in-out) 1}.room-card:is(:hover,:focus-within) .room-pond-rings{animation:room-pond-wave 1s var(--ease-in-out) 1}.room-card:has(.house-button:hover) .room-art{transform:translateY(-4px)}}
@media(max-width:1050px){.room-grid{grid-template-columns:minmax(0,1fr)}.room-card{padding:var(--space-xl)}}
@media(max-width:1000px){.writing-shell .app-shell{height:auto}}
@media(max-width:680px){.house-width{width:calc(100% - 40px)}.house-header{gap:var(--space-sm);padding-block:var(--space-md);min-height:80px}.house-brand{font-size:var(--text-md);gap:8px}.house-brand img{width:32px;height:32px}.house-header nav a{padding-inline:10px;font-size:var(--text-xs)}.house-interior>.house-header{padding-inline:var(--space-md)}.hall-intro{padding-block:var(--space-xl)}.room-card{padding:var(--space-lg);grid-template-columns:minmax(0,1fr) 88px;min-height:250px;gap:var(--space-sm)}.room-card h2{font-size:var(--text-xl)}.room-card p{font-size:var(--text-sm)}.room-art{height:105px}.room-card .house-button{padding-inline:18px}.waiting-list{grid-template-columns:minmax(0,1fr);gap:var(--space-md)}.hall-feedback{padding:var(--space-lg)}.house-interior .section-heading{flex-wrap:wrap}.console-tabs{width:100%;border-radius:var(--radius-card)}.console-tabs button{padding-inline:10px;font-size:var(--text-xs)}.house-interior .admin-shell .auth-card{padding:var(--space-lg)}}
@media(max-width:768px){.message-page .message-shell{grid-template-rows:auto minmax(0,1fr) auto}.message-page .site-copyright{padding:4px 12px;font-size:var(--text-xs)}}
@media(prefers-reduced-motion:reduce){.house-page *,.house-page *::before,.house-page *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.house-page .house-button,.house-page .room-art{transform:none!important}}

/* Editable UI labels wrap without changing their associated action. */
.house-page button{white-space:normal;overflow-wrap:anywhere}
[data-ui-copy],[data-ui-rendered]{overflow-wrap:anywhere}
