/* Edvia learning worlds — dimensional academy art direction.
   Functional controls and coordinates remain owned by the campus/house runtime. */
.gf-campus-page {
    --gf-violet: #397798;
    --gf-cyan: #7adbe8;
    --gf-gold: #ffbd69;
    --gf-line: rgba(158, 201, 217, .2);
    --gf-text: #f3f5ef;
    --gf-muted: #b0c5cf;
    background: #102a3b;
}
.body__wrapper.gf-campus-page, .body__wrapper.gf-campus-page .main_wrapper { background: #102a3b; }
.gf-campus-page .gf-campus-shell,
.gf-campus-page .gf-campus-directory { max-width: 1700px; }
.gf-campus-heading h1, .gf-campus-title-block h1 { font-weight: 750; letter-spacing: -.035em; }
.gf-campus-heading .alpha-kicker, .gf-campus-title-block .alpha-kicker { color: #ffc482; letter-spacing: .12em; }
.gf-campus-tool, .gf-campus-panel, .gf-campus-chat, .gf-campus-server-clock,
.gf-campus-fullscreen, .gf-campus-statusbar { border-color: rgba(167, 218, 231, .24); }
.gf-campus-tool { border-radius: 12px; background: #1b3b50; box-shadow: inset 0 1px rgba(255,255,255,.08); }
.gf-campus-tool:hover, .gf-campus-tool:focus-visible { background: #2a5366; border-color: #f5bb76; }
.gf-campus-stage-shell { border: 1px solid #698e9f; border-radius: 22px; box-shadow: 0 24px 70px #05172555; }
.gf-campus-stage:focus-visible, .gf-house-stage:focus-visible { outline: 3px solid #ffc482; outline-offset: 4px; }

/* One shared GPU renderer copies sharp, locally rendered images into these canvases. */
.gf-graphics-canvas { display: block; width: 100%; height: 100%; pointer-events: none; }
.gf-graphics-canvas[hidden] { display: none !important; }
.gf-avatar-rig.gf-graphics-ready { aspect-ratio: .59; filter: none; isolation: isolate; }
.gf-avatar-rig.gf-graphics-ready > span:not([data-asset-url]) { visibility: hidden; }
.gf-avatar-rig.gf-graphics-ready::before, .gf-avatar-rig.gf-graphics-ready::after { display: none; }
.gf-avatar-rig.gf-graphics-ready > .gf-graphics-canvas { position: absolute; inset: 0 auto 0 -70%; width: 240%; height: 100%; max-width: none; z-index: 7; }
.gf-avatar-rig.gf-graphics-ready > [data-asset-url] { z-index: 8; }
.gf-avatar-actor:has(.gf-graphics-ready) { width: clamp(66px, 6.3vw, 108px); }
.gf-avatar-actor[data-current="false"]:has(.gf-graphics-ready) { width: clamp(60px, 5.9vw, 100px); opacity: 1; }
.gf-avatar-actor.is-walking .gf-avatar-rig.gf-graphics-ready { animation: none; }
.gf-avatar-nameplate { padding: 6px 11px; border: 1px solid #bddae555; border-radius: 9px; background: #153447e8; color: #fff8ec; box-shadow: 0 5px 15px #16394a26; font-weight: 700; }
.gf-avatar-nameplate__role { color: #bddeea; }
.gf-avatar-actor[data-current="true"] .gf-avatar-nameplate { border-color: #ffd09399; }
.gf-avatar-item-card__visual.gf-graphics-ready > .gf-avatar-item,
.gf-furniture-object.gf-graphics-ready > span,
.gf-house-architecture.gf-graphics-ready > span { display: none; }
.gf-furniture-object.gf-graphics-ready > span { display: none !important; visibility: hidden; }
.gf-avatar-item-card__visual.gf-graphics-ready::before,
.gf-avatar-item-card__visual.gf-graphics-ready::after,
.gf-furniture-object.gf-graphics-ready::before,
.gf-furniture-object.gf-graphics-ready::after,
.gf-house-architecture.gf-graphics-ready::before,
.gf-house-architecture.gf-graphics-ready::after { display: none; }
.gf-avatar-item-card__visual.gf-graphics-ready > canvas,
.gf-furniture-object.gf-graphics-ready > canvas,
.gf-house-architecture.gf-graphics-ready > canvas { position: absolute; inset: 0; }
.gf-furniture-object.gf-graphics-ready { filter: none; }

/* Campus architecture and atmospheric event lighting. */
.gf-world-render { position: absolute; inset: 0; overflow: hidden; pointer-events: none; z-index: 0; }
.gf-world-render > canvas { position: absolute; inset: 0; }
.gf-campus-stage:has(> .gf-world-render.gf-graphics-ready)::before { background: linear-gradient(180deg, #f4fff600, #f4fff600 65%, #0d304035); }
.gf-campus-stage:has(> .gf-world-render.gf-graphics-ready)::after { opacity: .16; }
.gf-campus-hud { z-index: 160; }
.gf-campus-statusbar { background: transparent; backdrop-filter: none; color: #eaf8fb; }
.gf-campus-presence, .gf-campus-server-clock { background: #173b50ed; }
.gf-room-door { filter: drop-shadow(0 12px 10px #153e4b30); }
.gf-room-door__portal { border: 5px solid #e4e0c9; border-radius: 18px 18px 6px 6px; background: var(--gf-room-theme-image, radial-gradient(ellipse at 50% 75%, color-mix(in srgb, var(--gf-room-color), white 30%), #25526f 60%, #142d44)) center / cover; box-shadow: inset 0 0 22px #99e5ea55, 0 0 0 1px #6a8696, 0 8px 0 #577487; }
.gf-room-door__label { background: #17384eee; border: 1px solid #d3b48480; border-radius: 9px; color: #fff3da; }
.gf-scene-atmosphere { inset: 0; position: absolute; pointer-events: none; overflow: hidden; z-index: 1; }
.gf-scene-atmosphere span { position: absolute; width: 5px; height: 5px; background: #f5f0c8; box-shadow: 0 0 12px #fff6ad; border-radius: 50%; left: 14%; top: 56%; opacity: .5; animation: gf-world-drift 8s ease-in-out infinite alternate; }
.gf-scene-atmosphere span:nth-child(2) { left: 75%; top: 34%; animation-delay: -3s; }
.gf-scene-atmosphere span:nth-child(3) { left: 54%; top: 65%; animation-delay: -5s; }
@keyframes gf-world-drift { to { transform: translate(35px, -45px); opacity: .08; } }
.gf-campus-card { border-radius: 18px; border-color: #8eafbc40; box-shadow: 0 12px 25px #061a2726; }
.gf-campus-card__image { filter: saturate(.9) brightness(1.08); }
.gf-campus-card__world { z-index: 0; }
.gf-campus-card__content { position: relative; z-index: 1; }
.gf-campus-card__content { background: linear-gradient(180deg, #112f4100, #112f41d9 18%, #112f41); }
.gf-campus-card__arrow { background: #e8a256; color: #183547; box-shadow: none; }
.gf-domain-chip.is-active { background: #efd3a6; color: #153547; border-color: #efd3a6; }

/* A proper character stage with a rotatable full-body preview. */
.gf-avatar-page__studio { background: #153448; border-radius: 22px; border-color: #7296a24d; }
.gf-avatar-studio-preview { position: relative; min-height: 330px; overflow: hidden; border: 1px solid #e0dcc5; border-radius: 18px; background: radial-gradient(ellipse at 50% 85%, #b4bcb275, transparent 45%), linear-gradient(150deg, #e9ede3, #d2e2e5 65%, #b6cfd7); }
.gf-avatar-studio-preview::before { background: radial-gradient(ellipse, #a6c3c8 0 45%, #f9f0d2 46% 48%, #bed1d0 49% 65%, transparent 66%); opacity: 1; border: 0; box-shadow: none; width: 80%; height: 22%; left: 10%; bottom: 11%; top: auto; transform: none; }
.gf-avatar-studio-preview::after { display: none; }
.gf-avatar-studio-preview .gf-avatar-actor:has(.gf-graphics-ready) { position: absolute; width: 139px; top: 79%; left: 50%; transform: translate(-50%, -100%); }
.gf-avatar-page__studio .gf-avatar-studio-preview { min-height: 420px; }
.gf-avatar-page__studio .gf-avatar-studio-preview .gf-avatar-actor:has(.gf-graphics-ready) { width: 178px; }
.gf-avatar-studio-preview .gf-avatar-nameplate { display: none; }
.gf-studio-caption { position: absolute; inset-block-start: 22px; inset-inline-start: 22px; color: #38576a; letter-spacing: .18em; font-size: 10px; font-weight: 800; z-index: 1; }
.gf-studio-turntable { position: absolute; bottom: 14px; left: 50%; transform: translateX(-50%); z-index: 180; display: flex; align-items: center; gap: 6px; direction: ltr; }
.gf-studio-turntable button { min-width: 36px; min-height: 36px; padding: 6px 12px; border: 1px solid #7a9aab55; border-radius: 10px; color: #26485c; background: #f6f7eed9; font: inherit; font-size: 12px; cursor: pointer; }
.gf-studio-turntable button:first-child, .gf-studio-turntable button:last-child { font-size: 22px; line-height: 1; }
.gf-studio-turntable button:hover, .gf-studio-turntable button:focus-visible { background: #fff0ce; outline: 2px solid #cb934b; }
html:not([data-gf-graphics="3d"]) .gf-studio-turntable { display: none; }
.gf-avatar-appearance, .gf-avatar-collection { border-radius: 16px; background: #193b4e; border-color: #a6cdd326; }
.gf-avatar-item-card { background: #234657; border-radius: 14px; border-color: #7296a440; }
.gf-avatar-item-card__visual { width: 100%; height: 128px; border-radius: 10px; background: radial-gradient(ellipse at 50% 90%, #a0b5b7 0, #d9e5e1 50%, #edf0e4 100%); overflow: hidden; }
.gf-avatar-item-card.is-equipped { border-color: #edbd7e; box-shadow: inset 0 0 0 1px #edbd7e55; }
.gf-avatar-item-card__action { border-radius: 8px; }
.gf-avatar-save { border-radius: 10px; background: linear-gradient(110deg, #e9a156, #f0bf78); color: #153348; box-shadow: 0 6px 18px #071b2633; }
.gf-avatar-section-heading > div > span { color: #ffd197; }

/* House catalog, cutaway interiors, and furnished rooms. */
.gf-house-card, .gf-store-card { border-radius: 18px; overflow: hidden; box-shadow: 0 12px 26px #173b4820; }
.gf-house-card__scene, .gf-store-card__scene { background: linear-gradient(155deg, #d5e8e5, #a9cbd1); }
.gf-house-architecture.gf-graphics-ready { background: linear-gradient(155deg, #dce9df, #b3d1d7); }
.gf-house-architecture.gf-graphics-ready[data-architecture*="orbital"],
.gf-house-architecture.gf-graphics-ready[data-architecture*="lunar"],
.gf-house-architecture.gf-graphics-ready[data-architecture*="space"],
.gf-house-architecture.gf-graphics-ready[data-architecture*="galaxy"] { background: radial-gradient(ellipse at top right, #335b7a, #16273f); }
.gf-house-stage { border-radius: 20px; }
.gf-house-stage:has(> .gf-world-render.gf-graphics-ready) > :is(.gf-house-world, .gf-house-cutaway, .gf-house-scenery) { visibility: hidden; }
.gf-house-stage:has(> .gf-world-render.gf-graphics-ready) .gf-house-floor { background-color: transparent; background-image: none; border-color: transparent; box-shadow: none; }
.gf-house-stage:has(> .gf-world-render.gf-graphics-ready) .gf-house-floor.is-drop-target { background-image: linear-gradient(#4b9fba45 1px,transparent 1px),linear-gradient(90deg,#4b9fba45 1px,transparent 1px); background-size: calc(100% / var(--gf-house-cols)) calc(100% / var(--gf-house-rows)); box-shadow: inset 0 0 0 2px #77c4d4; }
.gf-placed-furniture:has(.gf-graphics-ready) .gf-furniture-visual { transform: none; }
.gf-store-card--furniture .gf-furniture-object.gf-graphics-ready { width: 96%; height: 94%; max-width: 96%; }
.gf-house-selection-tools { backdrop-filter: blur(16px); border: 1px solid #95c7d4; }
.gf-house-live-stage { border: 1px solid #8adae7; border-radius: 16px; background: linear-gradient(135deg, #143a52f5, #0b253cf5); box-shadow: 0 0 0 5px #71d5e915, 0 18px 48px #10273455; color: #eefaff; }
.gf-house-live-stage h2, .gf-house-live-stage__status { color: #eff7f4; }
.gf-house-live-choices button { border-color: #82b9cb70; border-radius: 10px; background: #264d66; color: #fff8e9; }
.gf-house-live-choices button:hover { border-color: #ffd295; background: #35617a; }

/* Game-show lighting reacts to the existing server-authoritative event phases. */
.gf-arena-lighting { position: absolute; inset: 0; pointer-events: none; z-index: 3; overflow: hidden; }
.gf-arena-lighting span { position: absolute; width: 17%; height: 130%; top: -18%; left: 3%; transform: rotate(-27deg); transform-origin: top; background: linear-gradient(180deg, #7de8ff55, #5bd5eb00 75%); clip-path: polygon(48% 0, 52% 0, 100% 100%, 0 100%); animation: gf-arena-sweep 12s ease-in-out infinite alternate; }
.gf-arena-lighting span:nth-child(2) { left: 27%; transform: rotate(16deg); animation-delay: -4s; }
.gf-arena-lighting span:nth-child(3) { left: 70%; background: linear-gradient(#ffd39365,#ef963900 80%); animation-delay: -7s; }
.gf-arena-lighting span:nth-child(4) { left: 91%; transform: rotate(28deg); animation-delay: -9s; }
@keyframes gf-arena-sweep { to { transform: rotate(14deg); opacity: .55; } }
.gf-event-round { border: 1px solid #7acfe9; border-radius: 14px; background: linear-gradient(120deg, #163d56f5, #0b273ef5); box-shadow: inset 0 0 0 4px #83e2ee0d, 0 0 28px #56c7ed22, 0 14px 36px #0003; }
.gf-event-round h2 { color: #fff5df; text-shadow: none; letter-spacing: -.015em; }
.gf-event-round__eyebrow { color: #9fe8f5; letter-spacing: .15em; }
.gf-event-score { background: #f0ba6b; color: #14364c; border-radius: 9px; }
.gf-event-score b { color: #14364c; }
.gf-event-timer { color: #fff0d6; border-color: #ffc976; background: #1b425a; box-shadow: 0 0 22px #ffcb7626; }
.gf-event-vote-zone__label { border-radius: 12px; background: linear-gradient(140deg, #224f67f5, #112f45f5); border-color: #6bc4d8; box-shadow: 0 6px 0 #0a2539, 0 9px 23px #04172955; }
.gf-event-vote-zone__label b { background: #edd5a7; color: #12364e; }
.gf-event-vote-zone:hover .gf-event-vote-zone__label, .gf-event-vote-zone:focus-visible .gf-event-vote-zone__label { border-color: #ffd394; box-shadow: 0 6px 0 #0a2539, 0 0 22px #ffca6d44; }
.gf-event-vote-zone.is-selected .gf-event-vote-zone__label { border-color: #ffce84; background: #70552e; }
.gf-event-vote-zone.is-correct .gf-event-vote-zone__label, .gf-event-vote-zone.is-answer .gf-event-vote-zone__label { border-color: #80eed4; background: #1c645f; }
.gf-event-leaderboard { border-color: #8abaaf70; border-radius: 13px; background: #16364de8; }
.gf-event-countdown { background: radial-gradient(ellipse, #285876f0, #0a233bdd); }
.gf-event-countdown__number { color: #ffe3a8; text-shadow: 0 0 45px #ffbd6755; }
.gf-event-teleport { background: radial-gradient(ellipse, #7bd2dc44, transparent 65%); }
.gf-event-teleport__ring { border-color: #8feaf1; box-shadow: 0 0 35px #61dbf288; }
.gf-event-memory__card { border-radius: 14px; }

@media (max-width: 767px) {
    .gf-campus-stage-shell, .gf-house-stage { border-radius: 14px; }
    .gf-avatar-page__studio { padding: 12px; border-radius: 16px; }
    .gf-avatar-page__studio .gf-avatar-studio-preview { min-height: 350px; }
    .gf-avatar-page__studio .gf-avatar-studio-preview .gf-avatar-actor:has(.gf-graphics-ready) { width: 144px; }
    .gf-avatar-item-card__visual { height: 108px; }
    .gf-avatar-nameplate { font-size: 10px; padding: 4px 7px; }
    .gf-event-round { border-radius: 10px; }
    .gf-studio-turntable button { min-height: 40px; }
}
@media (prefers-reduced-motion: reduce) {
    .gf-scene-atmosphere, .gf-arena-lighting { display: none; }
    .gf-avatar-rig.gf-graphics-ready, .gf-avatar-actor:has(.gf-graphics-ready) { animation: none !important; }
    .gf-avatar-actor:has(.gf-graphics-ready) { transition-duration: 0ms; }
}

/* The same animated model can be inspected at the available screen resolution. */
.gf-item-inspect { animation: none; transform: none; cursor: zoom-in; border: 0; padding: 0; }
.gf-item-inspect:focus-visible { outline: 3px solid #d9a854; outline-offset: 3px; }
.gf-graphics-detail { box-sizing: content-box; width: min(1920px, calc(92vw - 42px)); max-width: 92vw; max-height: 94dvh; padding: 20px; border: 1px solid #9ab5c5; border-radius: 20px; background: #eef2ed; color: #17364c; box-shadow: 0 30px 90px #091d3d66; }
.gf-graphics-detail::backdrop { background: #102b43b8; backdrop-filter: blur(6px); }
.gf-graphics-detail h2 { padding-inline-end: 150px; margin: 0 0 16px; font-size: 20px; }
.gf-graphics-detail .gf-detail-close { position: absolute; inset-block-start: 14px; inset-inline-end: 14px; border: 1px solid #7897ab; border-radius: 8px; padding: 8px 12px; background: #fff; color: #17364c; }
.gf-graphics-detail .gf-detail-visual { width: 100%; height: min(76dvh, 1000px); min-height: 280px; position: relative; overflow: hidden; }
@media (max-width: 600px) { .gf-graphics-detail { padding: 14px; } .gf-graphics-detail h2 { padding-inline-end: 110px; font-size: 16px; } }

.gf-meta-card__preview.gf-avatar-item-card__visual { position: relative; width: 100%; height: 160px; }

.gf-avatar-item-card__visual.gf-graphics-ready { animation: none; transform: none; }
