:root{color-scheme:dark;--bg: #17191d;--bg-elevated: rgba(31, 34, 41, .92);--bg-elevated-strong: rgba(37, 40, 49, .96);--bg-soft: rgba(61, 66, 79, .5);--border: rgba(255, 255, 255, .08);--border-strong: rgba(255, 255, 255, .16);--text: #f4f0e6;--muted: #8a929f;--accent: #e2b714;--accent-soft: #f7d774;--success: #81d69d;--warning: #f3a45c;--danger: #ff7f7f;--floor: rgba(255, 255, 255, .05);--wall: #485163;--wall-shadow: #2b313c;--mark: #7aa2f7;--box: #e2b714;--player: #f0a25e;--shadow: 0 24px 60px rgba(0, 0, 0, .35);--radius-lg: 28px;--radius-md: 20px;--radius-sm: 14px;--copy-font: "IBM Plex Sans", "Avenir Next", "Segoe UI", sans-serif;--mono-font: "JetBrains Mono", "Fira Code", "SFMono-Regular", monospace}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:radial-gradient(circle at top left,rgba(226,183,20,.14),transparent 28%),radial-gradient(circle at top right,rgba(122,162,247,.12),transparent 26%),linear-gradient(180deg,#14161a,#191b20 45%,#111317);color:var(--text);font-family:var(--copy-font)}button,input,textarea{font:inherit}button{border:0}.app-shell{position:relative;min-height:100vh;overflow:hidden;padding:32px 20px 48px}.app-glow{position:absolute;z-index:0;width:440px;height:440px;border-radius:999px;filter:blur(32px);opacity:.28;pointer-events:none;animation:glow-drift 12s ease-in-out infinite}.app-glow--left{top:-120px;left:-80px;background:radial-gradient(circle,rgba(226,183,20,.4),transparent 62%)}.app-glow--right{right:-140px;bottom:-120px;background:radial-gradient(circle,rgba(122,162,247,.35),transparent 60%);animation-delay:-4s}.intro-card,.hero-card,.metric-card,.status-card,.guide-card,.action-group,.board-card,.result-card{position:relative;z-index:1;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);animation:panel-rise .5s ease both}.intro-card{max-width:760px;margin:80px auto 0;padding:44px;display:grid;gap:22px}.eyebrow{margin:0;color:var(--accent);font-family:var(--mono-font);font-size:.82rem;letter-spacing:.18em;text-transform:uppercase}.headline{margin:0;font-size:clamp(2.8rem,8vw,5rem);line-height:.95;letter-spacing:-.06em}.headline--compact{font-size:clamp(2.1rem,5vw,3.25rem)}.lead,.guide-copy,.helper-copy,.status-card__text{margin:0;color:var(--muted);line-height:1.6}.lead{max-width:42rem;font-size:1.02rem}.lead--compact{max-width:36rem}.form-block{display:grid;gap:10px}.form-block--compact{align-content:start}.auth-panel{display:grid;gap:12px;padding:16px;border-radius:var(--radius-md);background:#ffffff0a;border:1px solid rgba(255,255,255,.06)}.auth-panel__header{display:flex;align-items:center;justify-content:space-between;gap:12px}.auth-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.signed-in-panel,.modal-actions{display:grid;gap:12px}.saved-runs-panel{display:grid;gap:12px;padding:16px;border-radius:var(--radius-md);background:#ffffff0a;border:1px solid rgba(255,255,255,.06)}.saved-runs-panel--sidebar{padding:18px}.saved-runs-panel__header{display:flex;align-items:center;justify-content:space-between;gap:12px}.saved-run-list{display:grid;gap:8px;max-height:240px;overflow-y:auto}.saved-run-list--compact{max-height:280px}.saved-run-list--modal{max-height:min(420px,52vh)}.saved-run-item{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 12px;border-radius:14px;background:#0c0e128f;border:1px solid rgba(255,255,255,.08);color:var(--text);text-align:left;cursor:pointer}.saved-run-item:hover:not(:disabled){border-color:#e2b71452;background:#e2b71414}.saved-run-item:disabled{opacity:.58;cursor:not-allowed}.saved-run-item strong,.saved-run-item small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.saved-run-item strong{font-size:.92rem}.saved-run-item small{margin-top:4px;color:var(--muted);font-family:var(--mono-font);font-size:.72rem}.saved-run-badge,.invalid-run-badge{display:inline-flex;align-items:center;justify-content:center;width:fit-content;border-radius:999px;font-family:var(--mono-font);font-weight:700}.saved-run-badge{padding:6px 8px;background:#7aa2f71f;color:#b8ccff;font-size:.68rem;text-transform:uppercase}.saved-run-badge--debug,.invalid-run-badge{background:#f3a45c24;color:#ffd1a8}.invalid-run-badge{padding:8px 10px;font-size:.72rem}.debug-help-card{display:grid;gap:10px;padding:14px;border-radius:var(--radius-md);background:#f3a45c14;border:1px solid rgba(243,164,92,.18)}.debug-help-card--sidebar{padding:18px}.debug-help-list{margin:0;padding-left:18px;color:#f4f0e6d6;line-height:1.55}.input-label{color:var(--muted);font-size:.92rem}.text-input,.text-area{width:100%;padding:14px 16px;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-sm);background:#0c0e12bf;color:var(--text);font-family:var(--mono-font);transition:border-color .18s ease,transform .18s ease,box-shadow .18s ease,background .18s ease}.text-input:focus,.text-area:focus{outline:none;border-color:#e2b71480;box-shadow:0 0 0 4px #e2b7141f;background:#101217f2;transform:translateY(-1px)}.text-input:disabled,.text-area:disabled{opacity:.7;cursor:not-allowed}.text-area{min-height:120px;resize:vertical}.chip-row{display:flex;flex-wrap:wrap;gap:10px}.chip,.control-key,.status-pill,.loading-badge{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;font-family:var(--mono-font)}.chip{padding:8px 12px;background:#ffffff0d;border:1px solid rgba(255,255,255,.06);color:var(--muted);font-size:.86rem}.button{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:12px 18px;border-radius:16px;font-family:var(--mono-font);font-size:.95rem;font-weight:700;cursor:pointer;transition:transform .18s ease,box-shadow .18s ease,background .18s ease,color .18s ease}.button:hover:not(:disabled){transform:translateY(-1px)}.button:disabled{opacity:.56;cursor:not-allowed}.button--primary{background:linear-gradient(135deg,var(--accent-soft),var(--accent));color:#2a210f;box-shadow:0 14px 30px #e2b7143d}.button--secondary{background:#ffffff0d;color:var(--text);border:1px solid rgba(255,255,255,.08)}.button--ghost{background:transparent;color:var(--text);border:1px solid rgba(255,255,255,.14)}.button--large{min-height:56px;font-size:1rem}.notice{margin:0;padding:12px 14px;border-radius:16px;border:1px solid transparent;line-height:1.5}.notice--error{background:#ff7f7f1a;border-color:#ff7f7f40;color:#ffc1c1}.notice--success{background:#81d69d1a;border-color:#81d69d3d;color:#d7ffe2}.notice--muted{background:#ffffff0d;border-color:#ffffff14;color:var(--muted)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;padding:20px;background:#080a0db8;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.profile-modal{width:min(100%,420px);display:grid;gap:18px;padding:26px;border-radius:var(--radius-lg);background:var(--bg-elevated-strong);border:1px solid var(--border-strong);box-shadow:var(--shadow)}.saved-runs-modal{width:min(100%,620px)}.debug-modal{width:min(100%,560px)}.modal-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.modal-copy{margin:0;color:#f4f0e6e0;line-height:1.6}.modal-actions--inline{grid-template-columns:repeat(2,minmax(0,1fr))}.game-shell{position:relative;z-index:1;max-width:1500px;margin:0 auto;display:grid;gap:24px}.hero-card{padding:30px 32px;display:flex;align-items:flex-end;justify-content:space-between;gap:24px}.player-card{min-width:220px;padding:18px 20px;border-radius:var(--radius-md);background:linear-gradient(180deg,#ffffff0f,#ffffff05);border:1px solid var(--border)}.player-card__label,.board-card__label,.metric-card__label{display:block;color:var(--muted);font-family:var(--mono-font);font-size:.8rem;letter-spacing:.08em;text-transform:uppercase}.player-card__name{display:block;margin-top:8px;font-size:1.4rem}.player-card__actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px}.player-card__button,.player-card__logout{width:100%;min-height:40px;padding:9px 12px;font-size:.82rem}.game-layout{display:grid;grid-template-columns:280px minmax(0,1fr);gap:20px}.sidebar{display:grid;gap:18px}.metric-card,.status-card,.guide-card,.action-group{padding:22px}.metric-card{display:grid;gap:8px}.metric-card__value{font-size:3.4rem;line-height:.95;color:var(--accent);letter-spacing:-.06em}.status-card{display:grid;gap:14px}.status-pill{width:fit-content;padding:8px 12px;font-size:.84rem;letter-spacing:.08em;text-transform:uppercase}.status-pill--success{background:#81d69d1f;color:var(--success)}.status-pill--warning{background:#f3a45c1f;color:var(--warning)}.status-pill--neutral{background:#ffffff0f;color:var(--muted)}.status-pill--playing{background:#7aa2f71f;color:#9fbeff}.section-title{margin:0;font-size:1.3rem}.section-title--tight{margin-top:4px}.control-list{margin-top:18px;display:grid;gap:10px}.control-item{display:flex;align-items:center;justify-content:space-between;gap:16px}.control-key{padding:8px 12px;background:#ffffff0d;border:1px solid rgba(255,255,255,.06);color:var(--text);font-size:.82rem}.control-text{color:var(--muted);text-align:right}.action-group{display:grid;gap:12px}.helper-copy{padding:0 4px;font-size:.94rem}.board-card{padding:24px;display:grid;gap:18px;align-content:start}.board-card__header,.community-panel__header,.result-card__header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.loading-badge{padding:8px 12px;background:#ffffff0f;color:var(--muted);font-size:.82rem}.board-content{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:18px;align-items:start}.board-play-area{min-width:0}.board-frame{width:100%;max-width:100%;margin:0 auto;overflow-x:auto;overflow-y:hidden;padding-bottom:4px;scrollbar-color:rgba(255,255,255,.2) transparent}.board-grid{width:min(100%,var(--board-max-width));min-width:min(var(--board-min-width),var(--board-max-width));margin:0 auto;display:grid;grid-template-columns:repeat(var(--field-cols),minmax(0,1fr));gap:var(--board-gap);padding:var(--board-padding);border-radius:24px;background:#0b0c0fb8;border:1px solid rgba(255,255,255,.06);box-shadow:inset 0 1px #ffffff0a}.board-grid--debug{border-color:#f3a45c66;box-shadow:inset 0 1px #ffffff0a,0 0 0 3px #f3a45c1a}.board-cell{width:100%;min-width:0;aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:clamp(5px,28%,12px);background:var(--floor);color:#fff6;transition:transform .18s ease,background .18s ease,box-shadow .18s ease,color .18s ease;animation:tile-rise .35s ease both;animation-delay:var(--tile-delay)}.board-cell:hover{transform:translateY(-1px)}.board-cell--draggable{cursor:grab}.board-cell--draggable:active{cursor:grabbing}.board-cell--droppable{outline:1px dashed rgba(243,164,92,.22);outline-offset:-4px}.board-cell--droppable:hover{box-shadow:inset 0 0 0 2px #f3a45c61,0 12px 22px #f3a45c1f}.board-cell--void{background:#ffffff0a}.board-cell--wall{background:linear-gradient(180deg,#5a6479 0%,var(--wall) 100%);box-shadow:inset 0 1px #ffffff1f,0 12px 18px #2b313c59}.board-cell--mark{background:#7aa2f71f;color:#9fbeff;box-shadow:inset 0 0 0 2px #7aa2f73d}.board-cell--box{background:linear-gradient(135deg,var(--accent-soft),var(--box));color:#2b210d;box-shadow:0 14px 24px #e2b7143d}.board-cell--player{background:radial-gradient(circle at 35% 30%,#ffd9a7,var(--player));color:#261707;box-shadow:0 14px 28px #f0a25e42}.board-glyph{font-family:var(--mono-font);font-size:clamp(.72rem,2vw,var(--glyph-size));font-weight:700;line-height:1;-webkit-user-select:none;user-select:none}.board-glyph--box{font-size:clamp(.82rem,2.18vw,var(--box-glyph-size))}.board-glyph--player{font-size:clamp(.98rem,2.7vw,var(--player-glyph-size))}.board-glyph--wall,.board-glyph--void{opacity:0}.board-placeholder{padding:28px;border-radius:var(--radius-md);border:1px dashed rgba(255,255,255,.14);color:var(--muted);text-align:center}.community-panel{min-width:0;padding-left:18px;display:grid;gap:16px;align-content:start;border-left:1px solid rgba(255,255,255,.08)}.community-panel .notice{padding:10px 12px;font-size:.9rem}.rating-summary{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:end;gap:6px;padding:14px;border-radius:var(--radius-sm);background:#ffffff0d;border:1px solid rgba(255,255,255,.06)}.rating-summary__label{grid-column:1 / -1;color:var(--muted);font-family:var(--mono-font);font-size:.78rem;text-transform:uppercase}.rating-summary strong{color:var(--accent);font-size:2.5rem;line-height:.9}.rating-summary__scale{color:var(--muted);font-family:var(--mono-font);font-size:.9rem;line-height:1.2}.comment-list{display:grid;gap:10px;max-height:420px;overflow-y:auto;padding-right:2px;scrollbar-color:rgba(255,255,255,.2) transparent}.comment-item{position:relative;display:grid;gap:8px;padding:12px 58px 12px 12px;border-radius:var(--radius-sm);background:#0c0e1280;border:1px solid rgba(255,255,255,.06)}.comment-rating{position:absolute;top:10px;right:10px;padding:5px 7px;border-radius:999px;background:#e2b71424;border:1px solid rgba(226,183,20,.24);color:var(--accent);font-family:var(--mono-font);font-size:.74rem;font-weight:700;line-height:1}.comment-item__meta{display:grid;gap:4px}.comment-item__meta strong{min-width:0;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.comment-item__meta span{flex:0 0 auto;color:var(--muted);font-family:var(--mono-font);font-size:.72rem}.comment-item p,.empty-copy{margin:0;color:var(--muted);line-height:1.45}.comment-item p{color:#f4f0e6db;overflow-wrap:anywhere}.result-card{padding:22px;display:grid;gap:16px}.result-score{min-width:90px;text-align:right}.result-score span{display:block;color:var(--muted);font-family:var(--mono-font);font-size:.82rem;text-transform:uppercase}.result-score strong{display:block;margin-top:6px;font-size:2.2rem;color:var(--accent);line-height:1}.feedback-grid{display:grid;grid-template-columns:minmax(0,1fr) 160px;gap:14px}@keyframes panel-rise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes tile-rise{0%{opacity:0;transform:translateY(8px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes glow-drift{0%,to{transform:translateZ(0)}50%{transform:translate3d(16px,-12px,0)}}@media (max-width: 960px){.hero-card{flex-direction:column;align-items:flex-start}.player-card{width:100%}.game-layout,.board-content{grid-template-columns:1fr}.community-panel{padding-top:18px;padding-left:0;border-top:1px solid rgba(255,255,255,.08);border-left:0}.feedback-grid{grid-template-columns:1fr}}@media (max-width: 640px){.app-shell{padding:20px 14px 32px}.intro-card,.hero-card,.metric-card,.status-card,.guide-card,.action-group,.board-card,.result-card{border-radius:22px}.intro-card,.hero-card,.board-card{padding:22px}.metric-card,.status-card,.guide-card,.action-group,.result-card{padding:18px}.control-item,.community-panel__header,.result-card__header,.board-card__header{flex-direction:column;align-items:flex-start}.control-text,.result-score{text-align:left}.button{width:100%}.auth-actions,.modal-actions--inline,.player-card__actions{grid-template-columns:1fr}.board-grid{border-radius:18px}}
