.hero{position:relative;display:flex;flex-direction:column;align-items:center;padding:64px 24px 48px;overflow:hidden;min-height:360px}.hero-sun-wrap{position:absolute;top:-60px;left:50%;transform:translate(-50%);width:480px;height:480px;pointer-events:none;z-index:0}.hero-rays{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background:repeating-conic-gradient(rgba(255,42,0,.12) 0deg 10deg,transparent 10deg 20deg);transform:scale(1.6)}.hero-sun{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background:radial-gradient(circle,rgba(255,42,0,.2) 0%,rgba(255,42,0,.08) 60%,transparent 72%)}.hero-auth{position:absolute;top:16px;right:24px;z-index:10}.auth-user{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:24px;padding:4px 12px 4px 4px}.avatar-circle{width:28px;height:28px;border-radius:50%;background:var(--red-pale);border:1px solid var(--red);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:var(--red);overflow:hidden;flex-shrink:0}.avatar-circle img{width:100%;height:100%;object-fit:cover}.auth-name{font-size:11px;color:var(--text);max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.auth-logout{font-size:10px;color:var(--text-muted);letter-spacing:.06em;transition:color .2s}.auth-logout:hover{color:var(--red)}.auth-login-btn{display:inline-flex;align-items:center;padding:6px 16px;background:var(--border-dark);color:#fff;border-radius:24px;font-family:var(--text-mono);font-size:11px;letter-spacing:.1em;transition:opacity .2s}.auth-login-btn:hover{opacity:.8}.hero-content{position:relative;z-index:1;text-align:center;display:flex;flex-direction:column;align-items:center;gap:12px}.hero-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 14px;border:1px solid var(--border-dark);border-radius:20px;font-family:var(--text-mono);font-size:11px;letter-spacing:.12em;color:var(--text);background:var(--surface)}.hero-pill-dot{color:var(--red);font-size:8px}.hero-title{font-family:var(--text-serif);font-size:clamp(56px,10vw,96px);font-weight:700;color:var(--text);line-height:1;letter-spacing:-.02em}.hero-sub{font-family:Lora,serif;font-style:italic;font-size:18px;color:var(--text-muted)}.hero-desc{font-family:var(--text-mono);font-size:12px;color:var(--text-muted);letter-spacing:.04em;line-height:1.7;max-width:380px}.hero-status-row{display:flex;align-items:center;gap:8px;margin-top:4px}.ws-badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:20px;border:1px solid var(--border);font-size:10px;letter-spacing:.1em;color:var(--text-muted);background:var(--surface)}.ws-dot{width:6px;height:6px;border-radius:50%;background:var(--text-muted);transition:background .3s}.ws-badge--connected .ws-dot{background:#4eca8b}.ws-badge--connected{color:#4eca8b}.ws-badge--connecting .ws-dot{background:#e8b84b;animation:pulse 1.2s ease-in-out infinite}.ws-badge--disconnected .ws-dot{background:var(--red)}.ws-badge--disconnected{color:var(--red)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.latency-badge{font-size:10px;letter-spacing:.1em;color:var(--text-muted);padding:3px 10px;border:1px solid var(--border);border-radius:20px;background:var(--surface)}.hero-fade{position:absolute;bottom:0;left:0;right:0;height:80px;background:linear-gradient(to bottom,transparent,var(--bg));pointer-events:none;z-index:2}.statusbar{padding:0 24px;max-width:1200px;margin:0 auto;width:100%}.statusbar-main{display:flex;align-items:center;justify-content:space-between;padding:10px 0}.statusbar-label{font-family:var(--text-mono);font-size:11px;letter-spacing:.14em;color:var(--red);text-transform:uppercase}.statusbar-count{font-family:var(--text-mono);font-size:14px;color:var(--red);letter-spacing:.06em;font-weight:700}.statusbar-hr{border:none;border-top:1px solid var(--border-dark);margin:0}.activity-feed{display:flex;gap:16px;padding:6px 0;overflow:hidden;flex-wrap:nowrap}.activity-entry{font-size:10px;font-family:var(--text-mono);color:var(--text-muted);letter-spacing:.06em;white-space:nowrap;animation:fadeInAct .3s ease;flex-shrink:0}.act-on{color:var(--red)}.act-off{color:var(--text-muted)}@keyframes fadeInAct{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.cell{width:80px;height:80px;flex-shrink:0;border-radius:8px;border:1px solid var(--border);background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;cursor:pointer;user-select:none;-webkit-user-select:none;transition:all .18s ease;outline:none}.cell:hover{border-color:var(--text-muted);transform:translateY(-2px)}.cell:focus-visible{box-shadow:0 0 0 2px var(--red)}.cell--asleep{background:var(--surface);border-color:var(--border)}.cell--asleep .cell-face{filter:grayscale(1) opacity(.45);transform:scale(1)}.cell--awake{background:var(--red-pale);border-color:var(--red);animation:cellWake .25s ease}.cell--awake .cell-face{filter:grayscale(0) opacity(1);transform:scale(1.08)}@keyframes cellWake{0%{transform:scale(.94)}60%{transform:scale(1.05)}to{transform:scale(1)}}.cell-face{font-size:32px;line-height:1;display:block;transition:filter .18s ease,transform .18s ease}.cell-index{font-family:var(--text-mono);font-size:8px;color:var(--text-muted);letter-spacing:.04em}.grid-outer{padding:16px 24px;max-width:1200px;margin:0 auto;width:100%}.grid-container{border:2px solid var(--border-dark);border-radius:10px;height:52vh;overflow-y:auto;overflow-x:hidden;background:var(--surface);position:relative}.grid-container::-webkit-scrollbar{width:6px}.grid-container::-webkit-scrollbar-track{background:var(--bg)}.grid-container::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.grid-container::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.grid-scroller{padding:8px}.grid-row{height:88px}.grid-loading{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:var(--surface);z-index:10;font-family:var(--text-mono);font-size:12px;color:var(--text-muted);letter-spacing:.08em}.loading-bar{width:160px;height:3px;background:var(--border);border-radius:2px;overflow:hidden}.loading-fill{height:100%;width:60%;background:var(--red);border-radius:2px;animation:loadingShimmer 1.2s ease-in-out infinite alternate}@keyframes loadingShimmer{0%{transform:translate(-100%)}to{transform:translate(200%)}}.footer{padding:12px 24px 8px;max-width:1200px;margin:0 auto;width:100%}.footer-main{display:flex;align-items:center;justify-content:space-between;padding:8px 0;border-top:1px solid var(--border)}.footer-hint{font-family:var(--text-mono);font-size:10px;letter-spacing:.16em;color:var(--text-muted);text-transform:uppercase}.footer-right{display:flex;align-items:center;gap:12px}.footer-users{font-family:var(--text-mono);font-size:10px;letter-spacing:.1em;color:var(--text-muted)}.reset-btn{padding:5px 14px;background:var(--border-dark);color:#fff;border:none;border-radius:6px;font-family:var(--text-mono);font-size:11px;letter-spacing:.08em;transition:opacity .2s}.reset-btn:hover{opacity:.75}.footer-credit{text-align:center;font-family:var(--text-mono);font-size:9px;letter-spacing:.14em;color:var(--text-muted);padding:6px 0 12px}.toast-container{position:fixed;bottom:56px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;z-index:999;pointer-events:none}.toast-item{background:var(--surface);border:1px solid var(--red);color:var(--text);font-family:var(--text-mono);font-size:12px;letter-spacing:.06em;padding:10px 22px;border-radius:24px;white-space:nowrap;animation:toastSlideUp .3s cubic-bezier(.34,1.56,.64,1) forwards}@keyframes toastSlideUp{0%{opacity:0;transform:translateY(16px) scale(.94)}to{opacity:1;transform:translateY(0) scale(1)}}:root{--bg: #f5f0e8;--surface: #faf7f2;--red: #ff2a00;--red-pale: #ffc2b8;--border: #c8c0b0;--border-dark: #2a2520;--text: #1a1714;--text-muted: #8a8070;--text-mono: "Share Tech Mono", monospace;--text-serif: "Noto Serif JP", serif;--dot-pattern: radial-gradient(#c8c0b0 1px, transparent 1px)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background-color:var(--bg);background-image:var(--dot-pattern);background-size:20px 20px;color:var(--text);font-family:var(--text-mono);min-height:100vh;overflow-x:hidden}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit}
