:root{--color-bg: #1a1a2e;--color-surface: #16213e;--color-primary: #0f3460;--color-accent: #e94560;--color-text: #eaeaea;--color-text-muted: #a0a0a0;--color-border: #2a2a4a;--color-success: #4ade80;--color-evolution: #fbbf24;--radius: 12px;--radius-sm: 8px;--shadow: 0 4px 20px rgba(0, 0, 0, .3);--slot-size: 160px}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Segoe UI,system-ui,-apple-system,sans-serif;background:var(--color-bg);color:var(--color-text);min-height:100vh;overflow-x:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}#root{min-height:100vh}button{cursor:pointer;border:none;font-family:inherit;font-size:inherit}.app{min-height:100vh;display:flex;flex-direction:column}.app-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 2rem;background:var(--color-surface);border-bottom:1px solid var(--color-border);gap:1rem;flex-wrap:wrap}.app-title-wrapper{position:relative;display:inline-block}.app-title{font-size:1.5rem;font-weight:700;background:linear-gradient(135deg,var(--color-accent),var(--color-evolution));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.beta-badge{position:absolute;top:-6px;right:-42px;padding:2px 6px;background:var(--color-evolution);color:#1a1a2e;font-size:.5rem;font-weight:700;letter-spacing:.08em;border-radius:4px;transform:rotate(-20deg);transform-origin:center;pointer-events:auto;cursor:pointer;line-height:1.4}.beta-badge:hover{opacity:.85}.beta-info{position:absolute;top:calc(100% + 10px);left:0;white-space:nowrap;background:var(--color-surface);border:1px solid var(--color-evolution);color:var(--color-text-muted);font-size:.75rem;padding:.35rem .65rem;border-radius:var(--radius-sm);box-shadow:var(--shadow);z-index:10;animation:fadeIn .15s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.header-actions{display:flex;gap:.5rem}.lang-button,.reset-button{padding:.4rem .8rem;border-radius:var(--radius-sm);font-size:.85rem;font-weight:500;transition:all .2s}.lang-button{background:var(--color-primary);color:var(--color-text)}.lang-button:hover{background:var(--color-accent)}.reset-button{background:transparent;color:var(--color-text-muted);border:1px solid var(--color-border)}.reset-button:hover{border-color:var(--color-accent);color:var(--color-accent)}.era-indicator{display:flex;align-items:center;gap:.5rem;padding:.4rem 1rem;background:var(--color-primary);border-radius:var(--radius-sm);font-size:.9rem;cursor:pointer;transition:all .2s;border:1px solid transparent}.era-indicator:hover{border-color:var(--color-evolution);box-shadow:0 0 8px #fbbf2433}.era-label{color:var(--color-text-muted)}.era-name{color:var(--color-evolution);font-weight:600}.app-main{display:flex;flex:1;gap:2rem;padding:2rem}@media (max-width: 768px){.app-main{flex-direction:column;padding:1rem}}.element-list{flex:1;background:var(--color-surface);border-radius:var(--radius);padding:1.5rem;border:1px solid var(--color-border);display:flex;flex-direction:column;max-height:calc(100vh - 120px)}.element-list-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;margin-bottom:.25rem}.element-list-title{font-size:1.1rem}.element-list-controls{display:flex;gap:.5rem;flex-wrap:wrap}.filter-toggle{padding:.3rem .7rem;font-size:.8rem;border-radius:var(--radius-sm);background:var(--color-primary);color:var(--color-text-muted);border:1px solid var(--color-border);transition:all .2s}.filter-toggle:hover{border-color:var(--color-accent);color:var(--color-text)}.filter-toggle.active{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.sort-select{padding:.3rem .6rem;font-size:.8rem;border-radius:var(--radius-sm);background:var(--color-primary);color:var(--color-text);border:1px solid var(--color-border);cursor:pointer;transition:all .2s}.sort-select:hover{border-color:var(--color-accent)}.sort-select:focus{outline:none;border-color:var(--color-accent)}.element-list-grid{display:flex;flex-wrap:wrap;align-items:flex-start;align-content:flex-start;gap:.4rem;row-gap:1rem;overflow-y:auto;overflow-x:visible;flex:1;padding-right:.5rem;padding-top:.2rem}.element-list-grid::-webkit-scrollbar{width:6px}.element-list-grid::-webkit-scrollbar-track{background:var(--color-bg);border-radius:3px}.element-list-grid::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}.element-card{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem .8rem;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:grab;transition:all .2s;-webkit-user-select:none;user-select:none;line-height:1.4;position:relative}.element-card:hover{border-color:var(--color-accent);transform:translateY(-1px);box-shadow:0 2px 8px #e9456033}.element-card:active{cursor:grabbing}.element-card.dragging{opacity:.9;transform:scale(1.05);box-shadow:var(--shadow);border-color:var(--color-accent)}.element-card.compact{padding:.15rem .4rem;font-size:.8rem;max-width:100%}.element-card.compact .element-name{white-space:normal;word-break:break-word;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-align:center;text-overflow:unset}.element-card.compact .element-name.compact-name-sm{font-size:.88rem}.element-card.compact .element-name.compact-name-xs{font-size:.65rem}.element-card{border-color:var(--color-evolution)}.element-card.role-evolution{border-color:#fbbf241a;border-width:2px;background:linear-gradient(135deg,#a13f0e40,#e678141f,#28140a33);box-shadow:0 0 8px #c8500a4d,inset 0 0 12px #c8500a14}.element-card.role-fundamental{border-color:#a13f0e66}.element-card.role-necessary{border-color:#2ee37166}.element-card.role-optional{border-color:#1aace566}.element-emoji{font-size:1.2rem;line-height:1}.element-name{font-size:.95rem}.element-era-badge{position:absolute;top:100%;left:50%;transform:translate(-50%);font-size:.7rem;padding:.1rem .4rem;background:var(--color-primary);border:1px solid var(--color-border);border-radius:0 0 4px 4px;color:var(--color-evolution);white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .15s;z-index:10}.element-card:hover .element-era-badge{opacity:1}.merge-table{width:390px;min-width:390px;background:var(--color-surface);border-radius:var(--radius);padding:1.5rem 1rem;border:1px solid var(--color-border);display:flex;flex-direction:column;align-items:center;gap:1rem;align-self:flex-start;position:sticky;top:2rem}@media (max-width: 768px){.merge-table{width:100%;min-width:unset;position:static}}.merge-header{display:flex;align-items:center;justify-content:space-between;width:100%}.merge-title{font-size:1.1rem}.merge-clear-button{display:flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;background:transparent;color:var(--color-text-muted);border:1px solid transparent;border-radius:var(--radius-sm);transition:all .2s;flex-shrink:0}.merge-clear-button:hover{color:var(--color-accent);border-color:var(--color-accent);background:#e9456014}.merge-slots{display:flex;align-items:center;gap:1rem;width:100%;justify-content:center}.merge-slot{width:var(--slot-size);min-height:80px;height:auto;border:2px dashed var(--color-border);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;transition:all .2s}.merge-slot.empty{background:#ffffff05}.merge-slot.filled{border-style:solid;border-color:var(--color-primary);background:var(--color-bg);cursor:pointer}.merge-slot.filled:hover{border-color:var(--color-accent)}.slot-placeholder{font-size:.75rem;color:var(--color-text-muted);text-align:center}.merge-plus{font-size:1.5rem;color:var(--color-text-muted);font-weight:300}.merge-button{width:100%;padding:.8rem;background:linear-gradient(135deg,var(--color-accent),#c0392b);color:#fff;border-radius:var(--radius-sm);font-size:1rem;font-weight:600;transition:all .2s}.merge-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #e9456066}.merge-button:disabled{opacity:.4;cursor:not-allowed}.merge-no-result{padding:.6rem 1rem;background:#e945601a;border:1px solid var(--color-accent);border-radius:var(--radius-sm);width:100%;text-align:center;font-size:.85rem;color:var(--color-accent);animation:fadeIn .2s ease}.merge-result{display:flex;flex-direction:column;align-items:center;gap:.4rem;padding:1rem;background:#4ade801a;border:1px solid var(--color-success);border-radius:var(--radius-sm);width:100%;animation:fadeIn .3s ease}.result-emoji{font-size:2rem}.result-name{font-weight:600}.result-label{font-size:.75rem;color:var(--color-success)}.merge-already-discovered{display:flex;flex-direction:column;align-items:center;gap:.4rem;padding:.75rem 1rem;background:#94a3b814;border:1px solid var(--color-border);border-radius:var(--radius-sm);width:100%;animation:fadeIn .2s ease}.already-emoji{font-size:1.25rem;opacity:.7}.already-name{font-weight:500;color:var(--color-text-muted)}.already-label{font-size:.75rem;color:var(--color-text-muted)}.drag-ghost{opacity:.9;transform:scale(1.1)}.merge-table--locked{overflow:hidden}.merge-table--locked>*:not(.merge-locked-overlay){opacity:.25;pointer-events:none;-webkit-user-select:none;user-select:none;filter:grayscale(.6)}.merge-locked-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;display:flex;align-items:center;justify-content:center;pointer-events:none}.merge-locked-stamp{transform:rotate(-12deg);border:3px double var(--color-evolution);border-radius:50%;width:150px;height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--color-evolution);opacity:.85;text-align:center;padding:1rem;box-shadow:inset 0 0 14px #fbbf2426;animation:stampIn .35s ease}.merge-locked-stamp-text{font-size:1.25rem;font-weight:800;text-transform:uppercase;letter-spacing:.12em;line-height:1.2}.merge-locked-stamp-sub{font-size:.6rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;margin-top:.5rem;opacity:.8;line-height:1.4}@keyframes stampIn{0%{transform:rotate(-12deg) scale(1.3);opacity:0}to{transform:rotate(-12deg) scale(1);opacity:.85}}.victory-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:2000;animation:fadeIn .3s ease}.victory-banner{background:var(--color-surface);border:2px solid var(--color-evolution);border-radius:var(--radius);padding:2.5rem;text-align:center;max-width:400px;box-shadow:0 0 40px #fbbf244d;animation:scaleIn .4s ease}.victory-title{font-size:1.5rem;color:var(--color-evolution);margin-bottom:1rem}.victory-message{color:var(--color-text);margin-bottom:1.5rem;line-height:1.5}.victory-button{padding:.7rem 2rem;background:var(--color-evolution);color:#1a1a2e;border-radius:var(--radius-sm);font-weight:600;transition:all .2s}.victory-button:hover{transform:translateY(-1px);box-shadow:0 4px 12px #fbbf2466}.victory-banner--completed{border-color:var(--color-success);box-shadow:0 0 40px #4ade8040}.victory-title--completed{color:var(--color-success)}.victory-button--completed{background:var(--color-success)}.victory-button--completed:hover{box-shadow:0 4px 12px #4ade8066}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.shortcuts-button{width:28px;height:28px;border-radius:50%;background:var(--color-primary);color:var(--color-text);font-weight:700;font-size:.9rem;display:flex;align-items:center;justify-content:center;transition:all .2s;flex-shrink:0}.shortcuts-button:hover{background:var(--color-accent)}.shortcuts-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:3000;animation:fadeIn .2s ease}.shortcuts-modal{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:2rem;min-width:320px;max-width:420px;box-shadow:var(--shadow);animation:scaleIn .2s ease}.shortcuts-title{font-size:1.1rem;margin-bottom:1.25rem}.shortcuts-description{font-size:.875rem;color:var(--color-text-muted, var(--color-text));line-height:1.6;margin-bottom:1.5rem}.shortcuts-contact{margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--color-border);font-size:.8rem;color:var(--color-text-muted, var(--color-text));text-align:center}.shortcuts-contact p{margin-bottom:.4rem}.shortcuts-contact a{color:var(--color-accent, #4a90e2);text-decoration:none}.shortcuts-contact a:hover{text-decoration:underline}.shortcuts-list{list-style:none;display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.5rem}.shortcuts-list li{display:flex;align-items:center;gap:.75rem}kbd{display:inline-block;padding:.2rem .5rem;background:var(--color-bg);border:1px solid var(--color-border);border-radius:4px;font-size:.75rem;font-family:monospace;white-space:nowrap;width:fit-content;min-width:0;text-align:center;color:var(--color-text-muted)}.shortcuts-list li span{font-size:.875rem;color:var(--color-text)}.shortcuts-close{width:100%;padding:.6rem;background:var(--color-primary);color:var(--color-text);border-radius:var(--radius-sm);font-size:.9rem;transition:all .2s}.shortcuts-close:hover{background:var(--color-accent)}.shortcuts-legend-title{font-size:.85rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.6rem}.shortcuts-legend{list-style:none;display:flex;flex-direction:column;gap:.5rem;margin-bottom:1.5rem}.shortcuts-legend li{display:flex;align-items:center;gap:.75rem;font-size:.875rem}.legend-swatch{width:28px;height:14px;border-radius:4px;border:2px solid transparent;flex-shrink:0}.legend-swatch[data-role=fundamental]{border-color:#a13f0e66;background:transparent}.legend-swatch[data-role=necessary]{border-color:#2ee37166;background:transparent}.legend-swatch[data-role=optional]{border-color:#1aace566;background:transparent}.legend-swatch[data-role=evolution]{border-color:#fbbf241a;border-width:2px;background:linear-gradient(135deg,#a13f0e40,#e678141f,#28140a33);box-shadow:0 0 8px #c8500a4d}.legend-era-swatch{width:28px;height:14px;border-radius:4px;border:1px solid transparent;flex-shrink:0}.legend-era-swatch[data-era-state=current]{background:#fbbf2412;border-color:#fbbf2440}.legend-era-swatch[data-era-state=completed]{background:#4ade800d;border-color:#4ade8073}.legend-era-swatch[data-era-state=future]{background:transparent;border-color:var(--color-border);opacity:.5}.era-timeline-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:3000;animation:fadeIn .2s ease}.era-timeline-modal{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:2rem;min-width:320px;max-width:420px;box-shadow:var(--shadow);animation:scaleIn .2s ease}.era-timeline-title{font-size:1.1rem;margin-bottom:1.25rem}.era-timeline-list{list-style:none;display:flex;flex-direction:column;gap:.5rem;margin-bottom:1.5rem}.era-timeline-item{display:flex;flex-direction:column;padding:.5rem .75rem;border-radius:var(--radius-sm);font-size:.9rem;border:1px solid transparent}.era-timeline-item.clickable{cursor:pointer}.era-timeline-item.clickable:hover{background:#ffffff0a}.era-timeline-row{display:flex;align-items:center;gap:.75rem;width:100%}.era-timeline-item.past{color:var(--color-text-muted);background:#ffffff05}.era-timeline-item.current{color:var(--color-evolution);font-weight:600;background:#fbbf2412;border-color:#fbbf2440}.era-timeline-item.future{color:var(--color-text-muted);opacity:.5;font-style:italic}.era-timeline-item.completed{border-color:#4ade8073;background:#4ade800d;color:var(--color-text);box-shadow:inset 0 0 0 1px #4ade8026}.era-timeline-item.current.completed{color:var(--color-evolution);border-color:#4ade808c;background:#4ade8012}.era-timeline-emoji{font-size:1.2rem;line-height:1;flex-shrink:0}.era-timeline-name{flex:1}.era-timeline-mystery{letter-spacing:.15em}.era-timeline-badge{font-size:.65rem;color:var(--color-evolution);opacity:.8;flex-shrink:0}.era-timeline-badge--completed{color:var(--color-success);font-size:.8rem;opacity:1}.era-timeline-count{font-size:.75rem;color:var(--color-text-muted);flex-shrink:0;min-width:2.5rem;text-align:right}.era-timeline-count--completed{color:var(--color-success);font-weight:600}.era-timeline-hint{font-size:.8rem;color:var(--color-text-muted);margin-bottom:.25rem;line-height:1.45}.era-timeline-click-hint{font-size:.75rem;color:var(--color-text-muted);opacity:.6;margin-bottom:1rem;font-style:italic}.era-timeline-toggle{font-size:.6rem;color:var(--color-text-muted);opacity:.5;flex-shrink:0}.era-timeline-description{font-size:.78rem;color:var(--color-text-muted);opacity:.75;line-height:1.5;margin-top:.5rem;padding-top:.4rem;border-top:1px solid rgba(255,255,255,.07)}.confirm-reset-modal{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:2rem;min-width:300px;max-width:380px;box-shadow:var(--shadow);animation:scaleIn .2s ease;text-align:center}.confirm-reset-title{font-size:1.1rem;margin-bottom:.75rem}.confirm-reset-warning{color:var(--color-text-muted, #888);margin-bottom:1.5rem;font-size:.95rem}.confirm-reset-actions{display:flex;gap:1rem;justify-content:center}.confirm-reset-cancel{padding:.5rem 1.25rem;border-radius:var(--radius);border:1px solid var(--color-text-muted);background:transparent;color:var(--color-text);cursor:pointer;font-size:.9rem;font-weight:500}.confirm-reset-cancel:hover{background:#ffffff1a;border-color:var(--color-text)}.confirm-reset-confirm{padding:.5rem 1.25rem;border-radius:var(--radius);border:none;background:#d32f2f;color:#fff;cursor:pointer;font-weight:600;font-size:.9rem}.confirm-reset-confirm:hover{background:#b71c1c}.recipe-hint-label{font-size:.8rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.4rem}.recipe-hint-target,.recipe-hint-ingredient{display:flex;align-items:center;gap:.6rem;padding:.5rem .75rem;background:var(--color-surface-alt, rgba(255, 255, 255, .05));border-radius:var(--radius-sm);margin-bottom:.4rem}.recipe-hint-ingredients{margin-bottom:1rem}.recipe-hint-emoji{font-size:1.4rem}.recipe-hint-name{font-size:1rem}.recipe-hint-all-discovered{font-size:.95rem;color:var(--color-text-muted);text-align:center;margin-bottom:1rem}
