/* Layout */ .loading { display: flex; align-items: center; justify-content: center; height: 100vh; font-style: italic; color: #6b5a3e; } .game { max-width: 680px; margin: 0 auto; padding: 2rem 1rem 4rem; } /* Header */ .game-header { border-bottom: 1px solid #c8b89a; padding-bottom: 1rem; margin-bottom: 1.5rem; } .game-title { font-size: 2rem; font-weight: normal; letter-spacing: 0.15em; color: #2a1f0e; } .game-subtitle { font-size: 0.8rem; color: #6b5a3e; font-style: italic; margin-top: 2px; letter-spacing: 0.05em; } /* Journey */ .journey { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-bottom: 1.5rem; } .journey-node { font-size: 0.75rem; padding: 3px 10px; border-radius: 12px; border: 1px solid #c8b89a; background: #ede8df; color: #6b5a3e; } .journey-node.reached { background: #d4e8d4; color: #2d5a2d; border-color: #8fbc8f; } .journey-node.current { background: #2d5a2d; color: #f0f7f0; border-color: #2d5a2d; font-weight: bold; } .journey-arrow { color: #c8b89a; font-size: 0.75rem; } /* Stats */ .stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-bottom: 1.5rem; } .stat { background: #ede8df; border: 1px solid #c8b89a; border-radius: 6px; padding: 0.75rem; } .stat-label { font-size: 0.7rem; color: #6b5a3e; text-transform: uppercase; letter-spacing: 0.08em; margin-bottom: 4px; } .stat-value { font-size: 1.4rem; color: #2a1f0e; } .stat-sub { font-size: 0.65rem; color: #6b5a3e; margin-top: 2px; } /* Progress bar */ .progress-wrap { margin-bottom: 1rem; } .progress-label { display: flex; justify-content: space-between; font-size: 0.75rem; color: #6b5a3e; font-style: italic; margin-bottom: 4px; } .progress-track { height: 4px; background: #c8b89a; border-radius: 2px; overflow: hidden; } .progress-fill { height: 100%; background: #2d5a2d; border-radius: 2px; transition: width 0.4s linear; } .progress-fill.otium { background: #534ab7; } /* Message */ .message { min-height: 1.2rem; font-size: 0.8rem; color: #2d5a2d; font-style: italic; margin-bottom: 0.75rem; } /* Section title */ .section-title { font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.1em; color: #6b5a3e; margin-bottom: 0.75rem; } /* Routes */ .route-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 1.5rem; } .route-card { background: #faf7f2; border: 1px solid #c8b89a; border-radius: 8px; padding: 0.875rem 1rem; cursor: pointer; transition: border-color 0.15s; } .route-card:hover:not(.locked) { border-color: #8fbc8f; } .route-card.locked { opacity: 0.5; cursor: not-allowed; } .route-card.selected { border: 2px solid #2d5a2d; } .route-name { font-size: 0.85rem; font-weight: bold; color: #2a1f0e; margin-bottom: 2px; } .route-goods { font-size: 0.75rem; color: #6b5a3e; font-style: italic; margin-bottom: 6px; } .route-desc { font-size: 0.72rem; color: #6b5a3e; margin-bottom: 8px; } .route-meta { display: flex; justify-content: space-between; font-size: 0.72rem; } .route-profit { color: #2d5a2d; font-weight: bold; } .route-time { color: #6b5a3e; } .route-lock { font-size: 0.68rem; color: #6b5a3e; background: #ede8df; border-radius: 4px; padding: 1px 6px; display: inline-block; margin-top: 4px; } /* Actions */ .actions { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 1.5rem; } .btn { padding: 0.75rem 1rem; border-radius: 6px; border: 1px solid #c8b89a; background: #faf7f2; color: #2a1f0e; font-size: 0.85rem; transition: background 0.15s; } .btn:hover:not(:disabled) { background: #ede8df; } .btn:disabled { opacity: 0.4; cursor: not-allowed; } .btn-dispatch { border-color: #2d5a2d; color: #2d5a2d; font-weight: bold; } .btn-dispatch:hover:not(:disabled) { background: #d4e8d4; } .btn-otium { border-color: #534ab7; color: #534ab7; font-weight: bold; } .btn-otium:hover:not(:disabled) { background: #eeedfe; } /* Journal */ .journal { background: #faf7f2; border: 1px solid #c8b89a; border-radius: 8px; padding: 1rem 1.25rem; max-height: 260px; overflow-y: auto; } .journal-entry { border-left: 2px solid #c8b89a; padding-left: 12px; margin-bottom: 1rem; } .journal-entry:last-child { margin-bottom: 0; } .journal-entry.new { border-left-color: #534ab7; } .journal-date { font-size: 0.7rem; color: #6b5a3e; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 4px; } .journal-text { font-size: 0.85rem; color: #2a1f0e; line-height: 1.7; } /* Token */ .token-bar { margin-top: 2rem; padding-top: 1rem; border-top: 1px solid #c8b89a; font-size: 0.68rem; color: #6b5a3e; text-align: center; display: flex; align-items: center; justify-content: center; gap: 1rem; } .token-code { font-family: monospace; letter-spacing: 0.1em; } /* Navigation */ .main-nav { display: flex; align-items: center; justify-content: space-between; padding: 0.75rem 1.5rem; border-bottom: 1px solid #c8b89a; background: #f5f0e8; position: sticky; top: 0; z-index: 10; } .nav-title { font-size: 0.85rem; letter-spacing: 0.2em; color: #6b5a3e; } .nav-links { display: flex; gap: 8px; } .nav-btn { padding: 4px 14px; border-radius: 12px; border: 1px solid #c8b89a; background: transparent; color: #6b5a3e; font-size: 0.78rem; letter-spacing: 0.05em; transition: background 0.15s; } .nav-btn:hover { background: #ede8df; } .nav-btn.active { background: #2a1f0e; color: #f5f0e8; border-color: #2a1f0e; } /* Screen wrapper */ .screen-wrap { min-height: calc(100vh - 49px); } /* Placeholder screens */ .placeholder { display: flex; align-items: center; justify-content: center; height: calc(100vh - 49px); font-style: italic; color: #6b5a3e; font-size: 0.85rem; } /* Map screen */ .map-screen { padding: 1.5rem 1rem; background: #0f1a24; min-height: calc(100vh - 49px); display: flex; align-items: flex-start; justify-content: center; } /* New game button — inline in token bar */ .btn-new-game { background: none; border: none; color: #9a8a6e; font-size: 0.68rem; cursor: pointer; padding: 0; text-decoration: underline; text-underline-offset: 2px; } .btn-new-game:hover { color: #6b5a3e; }