:root{--font-sans: "Outfit", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", monospace;--bg-app: #0b0c16;--bg-panel: rgba(22, 24, 47, .45);--border-glass: rgba(255, 255, 255, .07);--border-glass-hover: rgba(255, 255, 255, .15);--text-main: #f1f3f9;--text-muted: #8b92b6;--color-primary: #8a2be2;--color-primary-glow: rgba(138, 43, 226, .4);--color-success: #10b981;--color-warning: #f59e0b;--color-error: #ef4444;--color-info: #06b6d4;--color-accent: #f43f5e;--color-gold: #fbbf24}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-sans);background-color:var(--bg-app);color:var(--text-main);overflow-x:hidden;height:100vh}.app-container{display:flex;flex-direction:column;height:100vh;padding:1.5rem;gap:1.5rem;background:radial-gradient(circle at 50% 0%,#171831,#080914 70%)}.app-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;background:var(--bg-panel);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--border-glass);border-radius:16px;box-shadow:0 8px 32px #0000004d}.logo-text{font-size:1.8rem;font-weight:700;letter-spacing:2px;background:linear-gradient(135deg,#a855f7,#06b6d4);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.badge{font-size:.75rem;font-weight:500;padding:.25rem .5rem;border-radius:6px;background:#ffffff0d;border:1px solid var(--border-glass);color:var(--text-muted);margin-left:.75rem;vertical-align:middle}.header-center{display:flex;gap:1rem}.info-card{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:#ffffff08;border:1px solid var(--border-glass);border-radius:12px}.info-card .value{font-weight:600;letter-spacing:.5px}.clock-card .value{font-family:var(--font-mono);color:var(--color-info);text-shadow:0 0 10px rgba(6,182,212,.3)}.weather-card .value{color:var(--color-gold);text-shadow:0 0 10px rgba(251,191,36,.3)}.btn{font-family:var(--font-sans);font-weight:600;font-size:.9rem;padding:.6rem 1.2rem;border-radius:10px;border:none;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:all .25s ease}.btn-primary{background:var(--color-primary);color:#fff;box-shadow:0 4px 15px var(--color-primary-glow)}.btn-primary:hover{background:#9b4cf7;transform:translateY(-2px);box-shadow:0 6px 20px #8a2be299}.btn-primary:active{transform:translateY(0)}.btn-paused{background:var(--color-success);box-shadow:0 4px 15px #10b9814d}.btn-paused:hover{background:#10c98c;box-shadow:0 6px 20px #10b98180}.app-layout{display:grid;grid-template-columns:1.2fr .8fr;flex:1;gap:1.5rem;min-height:0}.panel{display:flex;flex-direction:column;background:var(--bg-panel);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--border-glass);border-radius:16px;padding:1.5rem;box-shadow:0 8px 32px #0003;min-height:0}.panel-header{margin-bottom:1.25rem}.panel-header h2{font-size:1.4rem;font-weight:600;display:flex;align-items:center;gap:.5rem}.panel-header .counter{font-size:1rem;color:var(--text-muted);font-weight:400}.panel-subtitle{font-size:.85rem;color:var(--text-muted);margin-top:.25rem}.npcs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem;overflow-y:auto;padding-right:.5rem;flex:1}.npcs-grid::-webkit-scrollbar{width:6px}.npcs-grid::-webkit-scrollbar-thumb{background:#ffffff0d;border-radius:3px}.npcs-grid::-webkit-scrollbar-thumb:hover{background:#ffffff26}.npc-card{background:#ffffff05;border:1px solid var(--border-glass);border-radius:12px;padding:1rem;display:flex;flex-direction:column;gap:.85rem;transition:all .3s cubic-bezier(.25,.8,.25,1);position:relative;overflow:hidden}.npc-card:hover{transform:translateY(-4px);border-color:var(--border-glass-hover);background:#ffffff0a;box-shadow:0 10px 20px #00000026}.npc-card-header{display:flex;justify-content:space-between;align-items:flex-start}.npc-name{font-size:1.1rem;font-weight:600;color:#fff}.npc-age-job{font-size:.8rem;color:var(--text-muted);margin-top:.15rem;display:flex;align-items:center;gap:.4rem}.job-badge{font-size:.7rem;font-weight:600;text-transform:uppercase;padding:.15rem .4rem;border-radius:4px}.job-badge.worker{background:#8a2be226;color:#c084fc;border:1px solid rgba(138,43,226,.3)}.job-badge.shopkeeper{background:#f59e0b26;color:#fbbf24;border:1px solid rgba(245,158,11,.3)}.job-badge.student{background:#06b6d426;color:#22d3ee;border:1px solid rgba(6,182,212,.3)}.job-badge.unemployed{background:#ffffff0d;color:var(--text-muted);border:1px solid var(--border-glass)}.npc-loc-badge{font-size:.75rem;background:#ffffff08;border:1px solid var(--border-glass);padding:.25rem .5rem;border-radius:6px;display:flex;align-items:center;gap:.3rem}.npc-loc-text{max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.burnout-alert-badge{position:absolute;top:0;right:0;background:linear-gradient(90deg,var(--color-accent) 0%,var(--color-error) 100%);color:#fff;font-size:.65rem;font-weight:700;padding:.15rem .6rem;border-bottom-left-radius:8px;letter-spacing:.5px;box-shadow:0 2px 8px #f43f5e4d}.npc-needs{display:flex;flex-direction:column;gap:.45rem;border-top:1px solid rgba(255,255,255,.04);padding-top:.65rem}.need-row{display:flex;flex-direction:column;gap:.15rem}.need-info{display:flex;justify-content:space-between;font-size:.72rem;color:var(--text-muted)}.need-info .need-val{font-family:var(--font-mono);font-weight:600}.progress-container{height:5px;background:#ffffff0d;border-radius:3px;overflow:hidden}.progress-bar{height:100%;border-radius:3px;transition:width .4s cubic-bezier(.4,0,.2,1),background-color .4s ease}.money-display{display:flex;justify-content:space-between;align-items:center;font-size:.8rem;font-weight:600;color:var(--color-gold);background:#fbbf240d;padding:.35rem .6rem;border-radius:6px;border:1px solid rgba(251,191,36,.15)}.terminal-container{display:flex;flex-direction:column;background:#06070e;border:1px solid var(--border-glass);border-radius:12px;flex:1;min-height:0;box-shadow:inset 0 0 20px #0009}.terminal-header{display:flex;align-items:center;padding:.65rem 1rem;background:#ffffff05;border-bottom:1px solid var(--border-glass)}.terminal-header .dot{width:10px;height:10px;border-radius:50%;margin-right:.4rem}.dot.red{background:#ef4444}.dot.yellow{background:#f59e0b}.dot.green{background:#10b981}.terminal-title{margin-left:.5rem;font-family:var(--font-mono);font-size:.75rem;color:var(--text-muted)}.terminal-body{padding:1rem;overflow-y:auto;font-family:var(--font-mono);font-size:.82rem;line-height:1.5;color:#fffc;flex:1;display:flex;flex-direction:column;gap:.4rem}.terminal-body::-webkit-scrollbar{width:6px}.terminal-body::-webkit-scrollbar-thumb{background:#ffffff0d;border-radius:3px}.log-line{word-break:break-word;animation:fadeIn .2s ease-out}.log-line.critical{color:#fda4af;background:#f43f5e14;padding:.15rem .4rem;border-left:3px solid var(--color-accent);border-radius:0 4px 4px 0}.log-line.drift{color:#6ee7b7}.log-line.weather{color:#93c5fd;background:#93c5fd0d;padding:.15rem .4rem;border-radius:4px}.log-line.day-start{color:#d8b4fe;font-weight:600;text-align:center;border-top:1px dashed rgba(216,180,254,.2);border-bottom:1px dashed rgba(216,180,254,.2);padding:.35rem 0;margin:.5rem 0}.log-line.system-line{color:#64748b}.log-line.burnout{color:#fca5a5;background:#ef44441a;padding:.15rem .4rem;border-left:3px solid var(--color-error);border-radius:0 4px 4px 0}.log-line.decision{color:#cbd5e1}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.filter-select{background:#ffffff0a;color:var(--text-main);border:1px solid var(--border-glass);padding:.4rem .8rem;border-radius:8px;outline:none;font-family:var(--font-sans);font-size:.85rem;cursor:pointer;transition:all .2s ease}.filter-select:hover{background:#ffffff14;border-color:var(--border-glass-hover)}.filter-select option{background:var(--bg-app);color:var(--text-main)}
