:root { font-family: "Trebuchet MS", "Segoe UI", sans-serif; color: #f4efe3; background: radial-gradient(circle at top, rgba(177, 91, 29, 0.25), transparent 26%), radial-gradient(circle at 20% 20%, rgba(227, 188, 101, 0.12), transparent 18%), linear-gradient(180deg, #160f0b 0%, #0b0807 100%); line-height: 1.5; font-weight: 400; color-scheme: dark; font-synthesis: none; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } * { box-sizing: border-box; } body { margin: 0; min-width: 320px; min-height: 100vh; } button, input, textarea, select { font: inherit; } #root { min-height: 100vh; } .app-shell { width: min(1200px, calc(100% - 2rem)); margin: 0 auto; padding: 1.5rem 0 3rem; } .hero { display: flex; justify-content: space-between; gap: 1.5rem; align-items: end; padding: 1.75rem; border: 1px solid rgba(255, 231, 196, 0.12); background: linear-gradient(135deg, rgba(62, 34, 17, 0.92), rgba(24, 18, 15, 0.86)), rgba(18, 14, 12, 0.9); box-shadow: 0 24px 80px rgba(0, 0, 0, 0.42); } .eyebrow { margin: 0 0 0.85rem; text-transform: uppercase; letter-spacing: 0.18em; color: #f1ba73; font-size: 0.76rem; } .hero h1 { margin: 0; font-size: clamp(2.6rem, 6vw, 4.8rem); line-height: 0.92; } .lede { width: min(56ch, 100%); margin: 1rem 0 0; color: rgba(244, 239, 227, 0.78); } .hero-actions { display: flex; flex-direction: column; gap: 0.85rem; align-items: flex-end; } .status-chip { display: flex; gap: 0.65rem; align-items: center; padding: 0.75rem 1rem; border: 1px solid rgba(255, 231, 196, 0.12); background: rgba(255, 231, 196, 0.05); text-transform: uppercase; letter-spacing: 0.08em; font-size: 0.78rem; } .status-chip strong { color: #f7d59d; font-size: 0.95rem; } .dashboard-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 1rem; margin-top: 1rem; } .panel { grid-column: span 4; padding: 1.2rem; border: 1px solid rgba(255, 231, 196, 0.1); background: rgba(25, 19, 16, 0.86); box-shadow: inset 0 1px 0 rgba(255, 231, 196, 0.03); } .panel-highlight { background: linear-gradient(180deg, rgba(101, 52, 28, 0.28), rgba(25, 19, 16, 0.92)), rgba(25, 19, 16, 0.9); } .panel-log { grid-column: span 12; } .panel-header { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; margin-bottom: 0.75rem; } .panel-header h2 { margin: 0; font-size: 1rem; color: #f8d79f; } .panel-header span { color: rgba(244, 239, 227, 0.58); font-size: 0.83rem; text-transform: uppercase; letter-spacing: 0.08em; } .stat-strip { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.75rem; } .stat-strip div, .encounter-box, .combat-status { padding: 0.9rem; background: rgba(255, 245, 223, 0.04); border: 1px solid rgba(255, 231, 196, 0.08); } .stat-strip span, .encounter-label, .combat-status span, .room-meta span, .log-entry span { display: block; color: rgba(244, 239, 227, 0.56); font-size: 0.76rem; text-transform: uppercase; letter-spacing: 0.08em; } .stat-strip strong, .encounter-box strong, .combat-status strong { display: block; margin-top: 0.3rem; font-size: 1.45rem; color: #fff2d6; } .supporting-text { margin: 0.9rem 0 0; color: rgba(244, 239, 227, 0.76); } .room-title { margin: 0 0 0.35rem; font-size: 1.5rem; color: #fff2d6; } .room-meta { display: flex; flex-wrap: wrap; gap: 0.9rem; margin-top: 0.95rem; } .button-row, .enemy-actions { display: flex; flex-wrap: wrap; gap: 0.65rem; margin-top: 1rem; } .button { border: 1px solid rgba(255, 217, 163, 0.24); background: rgba(255, 245, 223, 0.04); color: #f4efe3; padding: 0.72rem 1rem; cursor: pointer; transition: transform 140ms ease, background 140ms ease, border-color 140ms ease; } .button:hover:enabled { transform: translateY(-1px); background: rgba(255, 217, 163, 0.09); border-color: rgba(255, 217, 163, 0.35); } .button:disabled { opacity: 0.42; cursor: not-allowed; } .button-primary { background: linear-gradient(180deg, #c36b2d, #8d4617); border-color: rgba(255, 217, 163, 0.32); color: #fff4e1; } .button-primary:hover:enabled { background: linear-gradient(180deg, #d97833, #9f501b); } .encounter-box, .combat-status { margin-top: 1rem; } .move-list, .mini-map { display: grid; gap: 0.75rem; } .mini-map { margin-top: 1rem; } .move-card, .map-node { width: 100%; text-align: left; padding: 0.95rem; border: 1px solid rgba(255, 231, 196, 0.08); background: rgba(255, 245, 223, 0.04); } .move-card { cursor: pointer; transition: transform 140ms ease, background 140ms ease, border-color 140ms ease; } .move-card:hover:enabled { transform: translateY(-1px); background: rgba(255, 217, 163, 0.09); border-color: rgba(255, 217, 163, 0.35); } .move-card:disabled { opacity: 0.42; cursor: not-allowed; } .move-card span, .map-node span { display: block; color: rgba(244, 239, 227, 0.56); font-size: 0.74rem; text-transform: uppercase; letter-spacing: 0.08em; } .move-card strong, .map-node strong { display: block; margin-top: 0.3rem; font-size: 1rem; color: #fff2d6; } .move-card em { display: block; margin-top: 0.3rem; font-style: normal; color: rgba(244, 239, 227, 0.7); } .map-node-active { border-color: rgba(243, 186, 115, 0.55); background: rgba(243, 186, 115, 0.12); } .enemy-list { display: grid; gap: 0.75rem; margin-top: 1rem; } .enemy-card { padding: 0.95rem; border: 1px solid rgba(255, 231, 196, 0.08); background: rgba(255, 245, 223, 0.04); } .enemy-card strong { display: block; font-size: 1.05rem; color: #fff2d6; } .enemy-card span { color: rgba(244, 239, 227, 0.66); } .log-list { display: grid; gap: 0.75rem; max-height: 340px; overflow: auto; padding-right: 0.2rem; } .log-entry { padding: 0.9rem; border-left: 3px solid rgba(243, 186, 115, 0.7); background: rgba(255, 245, 223, 0.04); } .log-entry p { margin: 0.35rem 0 0; color: #f4efe3; } @media (max-width: 980px) { .panel, .panel-log { grid-column: span 12; } } @media (max-width: 720px) { .app-shell { width: min(100% - 1rem, 1200px); padding-top: 0.75rem; } .hero { flex-direction: column; align-items: stretch; } .hero-actions { align-items: stretch; } .stat-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); } }