:root {
	--color-bg:          #1a1a2e;
	--color-surface:     #16213e;
	--color-surface2:    #0f3460;
	--color-gold:        #f5c518;
	--color-gold-dim:    #b8941a;
	--color-text:        #e0e0e0;
	--color-text-muted:  #8a8a9a;
	--color-accent:      #e94560;
	--color-progress:    #4caf50;
	--color-progress-bg: #1e3a1e;
	--color-border:      #2a2a4a;

	--space-xs: 4px;
	--space-sm: 8px;
	--space-md: 16px;
	--space-lg: 24px;
	--space-xl: 32px;

	--font-sm:   0.8rem;
	--font-base: 1rem;
	--font-lg:   1.2rem;
	--font-xl:   1.5rem;
	--font-xxl:  2rem;

	--radius: 8px;
}

[hidden] { display: none !important; }

*, *::before, *::after {
	box-sizing: border-box;
	margin: 0;
	padding: 0;
}

html, body { height: 100%; }

body {
	background: var(--color-bg);
	color: var(--color-text);
	font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;
	font-size: var(--font-base);
	line-height: 1.5;
}

.sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0,0,0,0);
	white-space: nowrap;
	border: 0;
}

:focus-visible {
	outline: 3px solid var(--color-gold);
	outline-offset: 2px;
}
:focus:not(:focus-visible) { outline: none; }


#app {
	display: grid;
	grid-template-rows: auto 1fr;
	height: 100vh;
	overflow: hidden;
}


#top-bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-lg);
	padding: var(--space-sm) var(--space-lg);
	background: var(--color-surface);
	border-bottom: 1px solid var(--color-border);
}

#top-bar h1 {
	font-size: var(--font-xl);
	color: var(--color-gold);
	letter-spacing: 0.05em;
	text-transform: uppercase;
	white-space: nowrap;
}


#settings-btn {
	padding: var(--space-xs) var(--space-md);
	border: 1px solid var(--color-border);
	border-radius: var(--radius);
	background: var(--color-surface2);
	color: var(--color-text);
	font-size: var(--font-sm);
	cursor: pointer;
	white-space: nowrap;
	transition: background 0.15s;
	flex-shrink: 0;
}
#settings-btn:hover { background: var(--color-border); }

#hud-stats {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-sm) var(--space-lg);
	font-size: var(--font-sm);
	color: var(--color-text-muted);
}
#hud-stats strong { font-size: var(--font-base); }
#hud-gold { color: var(--color-gold); }
#hud-inventory { color: var(--color-text-muted); flex-wrap: wrap; }
#hud-chain:empty { display: none; }
.hud-ok   { color: var(--color-progress); }
.hud-warn { color: #f5a623; }


#content, #settings-view {
	overflow-y: auto;
	padding: var(--space-lg);
	display: flex;
	flex-direction: column;
	gap: var(--space-md);
	grid-row: 2;
}

#settings-view { display: none; }
#app.settings-open #settings-view { display: flex; }
#app.settings-open #content,
#app.settings-open #hud-stats,
#app.settings-open #settings-btn { display: none; }

#settings-back-row {
	display: flex;
	align-items: center;
}

#settings-back-row button {
	padding: var(--space-xs) var(--space-md);
	border: 1px solid var(--color-border);
	border-radius: var(--radius);
	background: var(--color-surface2);
	color: var(--color-text);
	font-size: var(--font-sm);
	cursor: pointer;
	transition: background 0.15s;
}
#settings-back-row button:hover { background: var(--color-border); }

details {
	background: var(--color-surface);
	border: 1px solid var(--color-border);
	border-radius: var(--radius);
}

details > summary {
	list-style: none;
	padding: var(--space-sm) var(--space-md);
	font-size: var(--font-base);
	font-weight: 600;
	color: var(--color-text-muted);
	text-transform: uppercase;
	letter-spacing: 0.05em;
	cursor: pointer;
	user-select: none;
}
details > summary::-webkit-details-marker { display: none; }

details > summary h2 {
	display: inline;
	font-size: inherit;
	font-weight: inherit;
	color: inherit;
	text-transform: inherit;
	letter-spacing: inherit;
}
details > summary:hover { color: var(--color-text); }
details[open] > summary { border-bottom: 1px solid var(--color-border); }

.section-body {
	padding: var(--space-md);
}

#building-row {
	display: flex;
	align-items: center;
	gap: var(--space-sm);
	margin-bottom: var(--space-md);
}

#building-select {
	background: var(--color-surface2);
	border: 1px solid var(--color-border);
	border-radius: var(--radius);
	color: var(--color-text);
	font-size: var(--font-base);
	padding: var(--space-xs) var(--space-sm);
	cursor: pointer;
	min-width: 160px;
}
#building-select:focus { outline: 3px solid var(--color-gold); outline-offset: 2px; }

.rate-mode-row {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--space-sm);
	margin-bottom: var(--space-sm);
}

.rate-mode-btn {
	padding: var(--space-xs) var(--space-sm);
	border: 1px solid var(--color-border);
	border-radius: var(--radius);
	background: var(--color-surface2);
	color: var(--color-text);
	font-size: var(--font-sm);
	cursor: pointer;
}

.rate-mode-btn:hover { background: var(--color-border); }

.health-ok  { color: var(--color-progress); }
.health-warn { color: #f5a623; }

.product-section {
	background: var(--color-surface);
	border: 1px solid var(--color-border);
	border-radius: var(--radius);
	padding: var(--space-md);
	margin-bottom: var(--space-md);
}

.product-header {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-bottom: var(--space-sm);
}

.product-header h4 {
	font-size: var(--font-lg);
	color: var(--color-gold);
}

.manual-produce-row {
	display: flex;
	gap: var(--space-sm);
	align-items: center;
	margin-bottom: var(--space-sm);
}

.manual-produce-btn {
	flex: 1;
	padding: var(--space-sm) var(--space-md);
	border: 1px solid var(--color-gold-dim);
	border-radius: var(--radius);
	background: var(--color-surface2);
	color: var(--color-gold);
	font-size: var(--font-sm);
	font-weight: 500;
	cursor: pointer;
	transition: background 0.15s, opacity 0.15s;
}
.manual-produce-btn:hover:not(:disabled) { background: var(--color-border); }
.manual-produce-btn:disabled { opacity: 0.4; cursor: not-allowed; }

.add-slot-btn {
	padding: var(--space-xs) var(--space-md);
	border: 1px solid var(--color-border);
	border-radius: var(--radius);
	background: var(--color-surface2);
	color: var(--color-text);
	font-size: var(--font-sm);
	cursor: pointer;
	transition: background 0.15s, opacity 0.15s;
}
.add-slot-btn:hover:not(:disabled) { background: var(--color-border); }
.add-slot-btn:disabled { opacity: 0.4; cursor: not-allowed; }

.unlock-product-btn {
	padding: var(--space-xs) var(--space-md);
	border: 1px solid var(--color-accent);
	border-radius: var(--radius);
	background: var(--color-surface2);
	color: #f08090;
	font-size: var(--font-sm);
	cursor: pointer;
	transition: background 0.15s, opacity 0.15s;
}
.unlock-product-btn:hover:not(:disabled) { background: var(--color-border); }
.unlock-product-btn:disabled { opacity: 0.4; cursor: not-allowed; }

.toggle-product-btn {
	padding: var(--space-xs) var(--space-md);
	border: 1px solid var(--color-progress);
	border-radius: var(--radius);
	background: var(--color-surface2);
	color: #a8f0a8;
	font-size: var(--font-sm);
	cursor: pointer;
	transition: background 0.15s, opacity 0.15s;
}

.toggle-product-btn:hover { background: var(--color-border); }

.toggle-product-btn.paused {
	border-color: var(--color-accent);
	color: #f08090;
}


.storage-info {
	background: var(--color-surface);
	border: 1px solid var(--color-border);
	border-radius: var(--radius);
	padding: var(--space-md);
	margin-bottom: var(--space-sm);
}

.storage-bar-wrap {
	background: var(--color-progress-bg);
	border-radius: 8px;
	height: 20px;
	overflow: hidden;
	margin-bottom: var(--space-sm);
}
.storage-bar-fill {
	height: 100%;
	background: var(--color-progress);
	border-radius: 8px;
	width: 0%;
	transition: width 0.3s ease;
}

.storage-used-label {
	font-size: var(--font-sm);
	color: var(--color-text-muted);
	margin-bottom: var(--space-sm);
}

.storage-info button[data-action="storage-upgrade"] {
	padding: var(--space-sm) var(--space-md);
	border: 1px solid var(--color-accent);
	border-radius: var(--radius);
	background: var(--color-surface2);
	color: #f08090;
	font-size: var(--font-sm);
	font-weight: 500;
	cursor: pointer;
	transition: background 0.15s, opacity 0.15s;
}
.storage-info button[data-action="storage-upgrade"]:hover:not(:disabled) { background: var(--color-border); }
.storage-info button[data-action="storage-upgrade"]:disabled { opacity: 0.4; cursor: not-allowed; }

.sell-all-btn {
	display: block;
	width: 100%;
	padding: var(--space-sm) var(--space-md);
	border: 1px solid var(--color-progress);
	border-radius: var(--radius);
	background: var(--color-surface2);
	color: #a8f0a8;
	font-size: var(--font-base);
	font-weight: 600;
	cursor: pointer;
	text-align: center;
	margin-bottom: var(--space-md);
	transition: background 0.15s;
}
.sell-all-btn:hover { background: var(--color-border); }

.market-divider {
	border: none;
	border-top: 1px solid var(--color-border);
	margin: var(--space-md) 0;
}

.market-empty {
	font-size: var(--font-sm);
	color: var(--color-text-muted);
	font-style: italic;
}



#market-products {
	display: flex;
	flex-direction: column;
	gap: var(--space-md);
}

.market-product {
	background: var(--color-surface);
	border: 1px solid var(--color-border);
	border-radius: var(--radius);
	padding: var(--space-md);
	display: flex;
	flex-direction: column;
	gap: var(--space-sm);
}

.market-product-header {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: var(--space-md);
}

h4.market-product-name {
	font-size: var(--font-lg);
	color: var(--color-gold);
	font-weight: 600;
}

.market-product-stock {
	font-size: var(--font-sm);
	color: var(--color-text-muted);
}

.sell-btn {
	padding: var(--space-sm) var(--space-md);
	border: 1px solid var(--color-progress);
	border-radius: var(--radius);
	background: var(--color-surface2);
	color: #a8f0a8;
	font-size: var(--font-sm);
	font-weight: 500;
	cursor: pointer;
	text-align: left;
	transition: background 0.15s, opacity 0.15s;
}
.sell-btn:hover:not(:disabled) { background: var(--color-border); }
.sell-btn:disabled { opacity: 0.4; cursor: not-allowed; }

.settings-section {
	background: var(--color-surface);
	border: 1px solid var(--color-border);
	border-radius: var(--radius);
	padding: var(--space-md);
	margin-bottom: var(--space-md);
}

.settings-section h3 {
	font-size: var(--font-base);
	color: var(--color-text-muted);
	text-transform: uppercase;
	letter-spacing: 0.05em;
	margin-bottom: var(--space-md);
	padding-bottom: var(--space-xs);
	border-bottom: 1px solid var(--color-border);
}

.settings-row {
	display: flex;
	gap: var(--space-sm);
	flex-wrap: wrap;
}

.settings-row button {
	padding: var(--space-sm) var(--space-md);
	border: 1px solid var(--color-border);
	border-radius: var(--radius);
	background: var(--color-surface2);
	color: var(--color-text);
	font-size: var(--font-sm);
	cursor: pointer;
	transition: background 0.15s;
}
.settings-row button:hover { background: var(--color-border); }

.save-textarea {
	display: block;
	width: 100%;
	margin-top: var(--space-md);
	padding: var(--space-sm);
	background: var(--color-bg);
	border: 1px solid var(--color-border);
	border-radius: var(--radius);
	color: var(--color-text-muted);
	font-family: monospace;
	font-size: var(--font-sm);
	resize: vertical;
	box-sizing: border-box;
	word-break: break-all;
}

.unlock-section {
	display: flex;
	gap: var(--space-sm);
	flex-wrap: wrap;
	background: var(--color-surface);
	border: 1px solid var(--color-border);
	border-radius: var(--radius);
	padding: var(--space-md);
	margin-top: var(--space-md);
}


#panel-quests {
	display: flex;
	flex-direction: column;
	gap: var(--space-lg);
}

.quest-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: var(--space-md);
}

.quest-card {
	background: var(--color-surface);
	border: 1px solid var(--color-border);
	border-radius: var(--radius);
	padding: var(--space-md);
	display: flex;
	flex-direction: column;
	gap: var(--space-sm);
}

.quest-done {
	border-color: var(--color-progress);
	opacity: 0.85;
}

.quest-title {
	font-size: var(--font-base);
	color: var(--color-gold);
}

.quest-progress-row {
	display: flex;
	align-items: center;
	gap: var(--space-sm);
}

.quest-bar-wrap {
	flex: 1;
	background: var(--color-progress-bg);
	border-radius: 6px;
	height: 10px;
	overflow: hidden;
}

.quest-bar-fill {
	height: 100%;
	background: var(--color-progress);
	border-radius: 6px;
	transition: width 0.4s ease;
}

.quest-done .quest-bar-fill { background: var(--color-progress); }

.quest-prog-text {
	font-size: var(--font-sm);
	color: var(--color-text-muted);
	white-space: nowrap;
}

.quest-done .quest-prog-text { color: var(--color-progress); }

.quest-reward-label {
	font-size: var(--font-sm);
	color: var(--color-gold-dim);
	margin-top: auto;
}

.quest-done .quest-reward-label { color: var(--color-gold); }

.prestige-section {
	background: var(--color-surface);
	border: 1px solid var(--color-border);
	border-radius: var(--radius);
	padding: var(--space-md);
}

.prestige-section h3,
.quest-group h3,
.product-group h3,
.unlock-group h3,
.market-inventory-section h3 {
	font-size: var(--font-base);
	color: var(--color-text-muted);
	text-transform: uppercase;
	letter-spacing: 0.05em;
	margin-bottom: var(--space-md);
	padding-bottom: var(--space-xs);
	border-bottom: 1px solid var(--color-border);
}

.unlock-group {
	margin-top: var(--space-lg);
}

.prestige-bonus-list {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-xs) var(--space-lg);
}

.prestige-bonus-list li {
	font-size: var(--font-sm);
	color: var(--color-gold);
}

.quest-no-bonuses {
	font-size: var(--font-sm);
	color: var(--color-text-muted);
	font-style: italic;
}

.reroll-quest-btn {
	padding: var(--space-xs) var(--space-sm);
	border: 1px solid var(--color-text-muted);
	border-radius: var(--radius);
	background: transparent;
	color: var(--color-text-muted);
	font-size: var(--font-sm);
	cursor: pointer;
	align-self: flex-start;
	transition: background 0.15s, color 0.15s, opacity 0.15s;
}
.reroll-quest-btn:hover:not(:disabled) {
	background: var(--color-border);
	color: var(--color-text);
}
.reroll-quest-btn:disabled { opacity: 0.4; cursor: not-allowed; }

.prestige-reset-row {
	display: flex;
	flex-direction: column;
	gap: var(--space-sm);
	align-items: flex-start;
}

.prestige-reset-btn {
	padding: var(--space-sm) var(--space-lg);
	border: 1px solid var(--color-accent);
	border-radius: var(--radius);
	background: var(--color-surface2);
	color: #f08090;
	font-size: var(--font-base);
	font-weight: 600;
	cursor: pointer;
	transition: background 0.15s, opacity 0.15s;
}
.prestige-reset-btn:hover:not(:disabled) { background: var(--color-border); }
.prestige-reset-btn:disabled { opacity: 0.35; cursor: not-allowed; }

.reset-warning {
	font-size: var(--font-sm);
	color: #f5a623;
}

.chain-overview {
	margin-top: var(--space-lg);
	background: var(--color-surface2);
	border: 1px solid var(--color-border);
	border-radius: var(--radius);
	padding: var(--space-md);
}

.chain-overview h3 {
	font-size: var(--font-base);
	color: var(--color-text-muted);
	text-transform: uppercase;
	letter-spacing: 0.05em;
	margin-bottom: var(--space-md);
}

.chain-prose {
	display: flex;
	flex-direction: column;
	gap: var(--space-sm);
}

.chain-prose p {
	font-size: var(--font-sm);
	line-height: 1.4;
}

.chain-prose ul {
	font-size: var(--font-sm);
	margin: 0 0 0 var(--space-md);
	padding: 0;
	line-height: 1.6;
}

.chain-item-pos { color: var(--color-progress); }
.chain-item-neg { color: var(--color-accent); }
.chain-item-muted { color: var(--color-text-muted); }
.chain-suggestion { font-style: italic; margin-top: var(--space-xs); }
.chain-fix-btn {
	margin-top: var(--space-md);
	width: 100%;
	padding: var(--space-sm) var(--space-md);
	background: var(--color-surface);
	border: 1px solid var(--color-accent);
	border-radius: var(--radius);
	color: var(--color-accent);
	font-size: var(--font-sm);
	cursor: pointer;
}
.chain-fix-btn:hover { background: var(--color-accent); color: var(--color-bg); }

@media (max-width: 700px) {
	#top-bar { flex-wrap: wrap; gap: var(--space-sm); padding: var(--space-sm) var(--space-md); }
	#content { padding: var(--space-md); }
	.market-product-header { flex-direction: column; gap: var(--space-xs); }
}

/* Victory overlay */
#victory-overlay {
	position: fixed;
	inset: 0;
	background: rgba(10, 10, 20, 0.92);
	display: flex;
	align-items: center;
	justify-content: center;
	z-index: 100;
	padding: var(--space-lg);
}

#victory-content {
	background: var(--color-surface);
	border: 2px solid var(--color-gold);
	border-radius: var(--radius);
	padding: var(--space-xl);
	max-width: 560px;
	width: 100%;
	display: flex;
	flex-direction: column;
	gap: var(--space-lg);
	text-align: center;
}

#victory-content h2 {
	font-size: var(--font-xxl);
	color: var(--color-gold);
	letter-spacing: 0.05em;
}

.victory-subtitle {
	color: var(--color-text);
	line-height: 1.6;
	font-style: italic;
}

.victory-stats {
	background: var(--color-surface2);
	border-radius: var(--radius);
	padding: var(--space-md);
	display: flex;
	flex-direction: column;
	gap: var(--space-xs);
	font-size: var(--font-sm);
	color: var(--color-text-muted);
}

.victory-bonuses-title {
	font-size: var(--font-sm);
	color: var(--color-text-muted);
	text-transform: uppercase;
	letter-spacing: 0.05em;
	margin-bottom: var(--space-sm);
}

.victory-bonus-list {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-xs) var(--space-lg);
	justify-content: center;
}

.victory-bonus-list li {
	font-size: var(--font-sm);
	color: var(--color-gold);
}

.victory-actions {
	display: flex;
	gap: var(--space-md);
	justify-content: center;
	flex-wrap: wrap;
}

.victory-keep-btn {
	padding: var(--space-sm) var(--space-lg);
	border: 1px solid var(--color-border);
	border-radius: var(--radius);
	background: var(--color-surface2);
	color: var(--color-text);
	font-size: var(--font-base);
	cursor: pointer;
	transition: background 0.15s;
}
.victory-keep-btn:hover { background: var(--color-border); }

.victory-new-game-btn {
	padding: var(--space-sm) var(--space-lg);
	border: 1px solid var(--color-gold);
	border-radius: var(--radius);
	background: var(--color-surface2);
	color: var(--color-gold);
	font-size: var(--font-base);
	font-weight: 600;
	cursor: pointer;
	transition: background 0.15s;
}
.victory-new-game-btn:hover { background: var(--color-border); }
 
 # t r e a s u r e - c o n t a i n e r   {  
 	 m a r g i n - b o t t o m :   1 r e m ;  
 	 d i s p l a y :   f l e x ;  
 	 j u s t i f y - c o n t e n t :   c e n t e r ;  
 }  
  
 . t r e a s u r e - b t n   {  
 	 b a c k g r o u n d :   # f f d 7 0 0 ;  
 	 c o l o r :   # 0 0 0 ;  
 	 f o n t - w e i g h t :   b o l d ;  
 	 p a d d i n g :   1 r e m   2 r e m ;  
 	 b o r d e r :   3 p x   s o l i d   # b 8 8 6 0 b ;  
 	 b o r d e r - r a d i u s :   8 p x ;  
 	 c u r s o r :   p o i n t e r ;  
 	 a n i m a t i o n :   p u l s e   2 s   i n f i n i t e ;  
 	 f o n t - s i z e :   1 . 1 r e m ;  
 	 b o x - s h a d o w :   0   4 p x   8 p x   r g b a ( 0 , 0 , 0 , 0 . 3 ) ;  
 }  
  
 . t r e a s u r e - b t n : h o v e r   {  
 	 b a c k g r o u n d :   # f f e c 8 b ;  
 	 t r a n s f o r m :   s c a l e ( 1 . 0 5 ) ;  
 }  
  
 . t r e a s u r e - b t n : a c t i v e   {  
 	 t r a n s f o r m :   s c a l e ( 0 . 9 5 ) ;  
 }  
  
 @ k e y f r a m e s   p u l s e   {  
 	 0 %   {   t r a n s f o r m :   s c a l e ( 1 ) ;   b o x - s h a d o w :   0   0   0   0   r g b a ( 2 5 5 ,   2 1 5 ,   0 ,   0 . 7 ) ;   }  
 	 7 0 %   {   t r a n s f o r m :   s c a l e ( 1 . 0 5 ) ;   b o x - s h a d o w :   0   0   0   1 0 p x   r g b a ( 2 5 5 ,   2 1 5 ,   0 ,   0 ) ;   }  
 	 1 0 0 %   {   t r a n s f o r m :   s c a l e ( 1 ) ;   b o x - s h a d o w :   0   0   0   0   r g b a ( 2 5 5 ,   2 1 5 ,   0 ,   0 ) ;   }  
 }  
 