:root{--color-primary: #4caf50;--color-primary-green: #c8e6c9;--color-primary-green-dark: #a5d6a7;--color-primary-green-light: #e8f5e9;--color-accent-orange: #ff6f00;--color-accent-orange-dark: #e65100;--color-accent-orange-light: #ffa726;--color-cancel: #d32f2f;--color-white: #ffffff;--color-black: #000000;--color-gray-100: #f5f5f5;--color-gray-200: #eeeeee;--color-gray-300: #e0e0e0;--color-gray-400: #bdbdbd;--color-gray-500: #9e9e9e;--color-gray-600: #757575;--color-gray-700: #616161;--color-gray-800: #424242;--color-gray-900: #212121;--color-text-primary: #212121;--color-text-secondary: #757575;--color-text-light: #ffffff;--color-bg-primary: #ffffff;--color-bg-secondary: #f5f5f5;--color-border: #e0e0e0;--color-border-light: #eeeeee;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .1);--shadow-orange: 0 4px 8px rgba(255, 111, 0, .2);--spacing-xs: .5rem;--spacing-sm: 1rem;--spacing-md: 1.5rem;--spacing-lg: 2rem;--spacing-xl: 3rem;--spacing-2xl: 4rem;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 2rem;--font-size-4xl: 2.5rem;--font-size-5xl: 3rem}*{margin:0;padding:0;box-sizing:border-box}:root{font-family:var(--font-family);line-height:1.5;font-weight:400;color:var(--color-text-primary);background-color:var(--color-bg-primary);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh}#root{min-height:100vh}button{font-family:inherit;cursor:pointer;border:none;outline:none;background:none;font-size:inherit}a{text-decoration:none;color:inherit}.splash-container{min-height:100vh;display:flex;flex-direction:column;background:linear-gradient(135deg,var(--color-primary-green-light) 0%,var(--color-primary-green) 100%)}body{background:linear-gradient(135deg,var(--color-primary-green-light) 0%,var(--color-primary-green) 100%)}.hero-banner{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-2xl) var(--spacing-lg)}.hero-content{width:100%;max-width:1200px;display:flex;flex-direction:column;align-items:center}.hero-header{width:100%;display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-2xl)}.hero-title-section{width:100%;text-align:center;margin-bottom:var(--spacing-2xl)}.hero-title{font-size:var(--font-size-lg);font-weight:400;color:var(--color-text-secondary);margin:0;margin-bottom:var(--spacing-md)}.hero-title-pyre{font-size:var(--font-size-5xl);font-weight:700;color:var(--color-accent-orange);text-shadow:var(--shadow-orange);letter-spacing:.05em}.app-preview{background:var(--color-bg-secondary);border:2px solid var(--color-border-light);border-radius:var(--radius-lg);padding:var(--spacing-lg);margin-bottom:var(--spacing-2xl);box-shadow:var(--shadow-lg);display:flex;align-items:center;justify-content:center;min-height:300px}.app-preview img{max-width:100%;height:auto;opacity:.8}.hero-features{font-size:var(--font-size-md);color:var(--color-text-secondary);margin:0;text-align:center;display:flex;align-items:center;gap:var(--spacing-md)}.hero-features:before,.hero-features:after{content:"";flex:1;height:1px;background:var(--color-gray-400)}.cta-button{padding:var(--spacing-sm) var(--spacing-lg);font-size:var(--font-size-base);font-weight:600;border-radius:var(--radius-md);transition:all .2s ease;box-shadow:var(--shadow-md)}.cta-button.primary{background:var(--color-accent-orange);color:var(--color-text-light)}.cta-button.primary:hover{background:var(--color-accent-orange-dark);transform:translateY(-2px);box-shadow:var(--shadow-lg)}.cta-button.secondary{background:var(--color-white);color:var(--color-text-primary);border:2px solid var(--color-gray-300)}.cta-button.secondary:hover{background:var(--color-gray-100);border-color:var(--color-gray-400);transform:translateY(-2px);box-shadow:var(--shadow-lg)}.hero-links{display:flex;gap:var(--spacing-md);align-items:center}.github-logo{height:30px}.kofi-logo{height:35px}.hero-link{color:var(--color-text-secondary);font-size:var(--font-size-sm);transition:color .2s ease}.hero-link:hover{color:var(--color-text-primary)}@media(max-width:768px){.hero-title-section{width:100%;text-align:center}.pyre-logo{font-size:var(--font-size-4xl)}.pyre-subtitle{font-size:var(--font-size-base)}.cta-buttons{flex-direction:column;width:100%;max-width:300px}.cta-button{width:100%}.app-preview{min-height:200px}}.block{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;transition:box-shadow .2s ease}.block:hover{box-shadow:var(--shadow-sm);border:1px solid var(--color-primary)}.block-header{display:flex;flex-direction:column;justify-content:space-between;padding:var(--spacing-sm) var(--spacing-md);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .2s ease}.block-header-left{display:flex;flex-direction:row;align-items:center;gap:var(--spacing-sm);margin-bottom:30px;flex:1}.block-header-row{display:flex;align-items:flex-start;gap:var(--spacing-md);flex-wrap:wrap}.block-expand-icon{font-size:var(--font-size-xs);color:var(--color-text-secondary);width:12px;display:inline-block}.block-title{font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin:0}.block-date-range{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-left:var(--spacing-sm);word-wrap:normal}.block-header-right{display:flex;gap:var(--spacing-xs)}.block-action-button{padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-white);color:var(--color-text-primary);cursor:pointer;transition:all .2s ease}.block-action-button:hover:not(.save):not(.delete){background-color:var(--color-gray-100);border-color:var(--color-gray-400)}.block-action-button.save{background-color:var(--color-primary);color:#fff;border-color:var(--color-primary)}.block-action-button.save:hover{background-color:#43a047;border-color:#43a047}.block-action-button.delete{color:var(--color-cancel);border-color:var(--color-cancel)}.block-action-button.delete:hover{background-color:#ffebee}.block-content{padding:var(--spacing-md);border-top:1px solid var(--color-border-light);background-color:var(--color-bg-secondary)}.block-section{margin-bottom:var(--spacing-md)}.block-section:last-child{margin-bottom:0}.block-section-title{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary);margin:0 0 var(--spacing-xs) 0}.block-placeholder{font-size:var(--font-size-sm);color:var(--color-text-secondary);font-style:italic;margin:0}.block-graph-placeholder{background:var(--color-white);border:1px dashed var(--color-border);border-radius:var(--radius-sm);padding:var(--spacing-lg);text-align:center;color:var(--color-text-secondary);font-size:var(--font-size-sm);font-style:italic}.block-edit-section{background:var(--color-white);border:2px solid var(--color-solid-green);border-radius:var(--radius-sm);padding:var(--spacing-md);margin-bottom:var(--spacing-md)}.block-form-row{display:flex;align-items:center;gap:var(--spacing-md);margin-bottom:var(--spacing-sm);flex-wrap:wrap}.block-form-inline-group{display:flex;align-items:center;gap:var(--spacing-xs)}.block-form-inline-group-flex{flex:1;min-width:200px}.block-form-group{display:flex;flex-direction:column;gap:4px;margin-bottom:var(--spacing-sm)}.block-inputs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--spacing-sm)}.block-input-field{font-size:var(--font-size-sm);padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-white);color:var(--color-text-primary)}.block-input-field:focus{outline:none;border-color:var(--color-solid-green)}.block-input-field:disabled{background:var(--color-gray-100);cursor:not-allowed}.block-form-effects-row{display:flex;align-items:center;gap:var(--spacing-xs);margin-bottom:var(--spacing-sm);flex-wrap:nowrap}.block-form-effects-label{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary);white-space:nowrap;flex-shrink:0}.block-form-effects-row .floating-input-container{flex:1;min-width:80px}.floating-input-container{position:relative;width:100%}.floating-input-container:has(input[type=date]){width:fit-content}.floating-input-container input,.floating-input-container textarea{box-sizing:border-box}.floating-label{position:absolute;top:0;bottom:0;left:var(--spacing-sm);display:flex;align-items:center;pointer-events:none}.floating-input-field{font-size:var(--font-size-sm);padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-white);color:var(--color-text-primary);font-family:inherit;min-width:50px;width:100%}.floating-label-text{transition:all .15s ease-out;color:var(--color-text-secondary);font-size:var(--font-size-sm)}.floating-input-container input:focus+.floating-label .floating-label-text,.floating-input-container input:not([value=""])+.floating-label .floating-label-text,.floating-input-container textarea:focus+.floating-label .floating-label-text,.floating-input-container textarea:not([value=""])+.floating-label .floating-label-text{font-size:var(--font-size-xs);transform:translate(-4px,-100%);background-color:var(--color-white);padding-left:4px;padding-right:4px}.floating-input-container input[type=date]{width:fit-content}.floating-input-container input:focus+.floating-label .floating-label-text,.floating-input-container textarea:focus+.floating-label .floating-label-text{color:var(--color-primary)}.floating-input-container textarea{font-size:var(--font-size-sm);padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-white);color:var(--color-text-primary);font-family:Courier New,monospace;resize:vertical;line-height:1.5;width:100%}.floating-input-container textarea+.floating-label{align-items:flex-start;padding-top:var(--spacing-xs)}.floating-label-text-always-float{font-size:var(--font-size-xs);transform:translate(-4px,-100%);background-color:var(--color-white);padding-left:4px;padding-right:4px}.chart-container{width:100%}.chart-title{margin:0 0 var(--spacing-sm) 0;font-size:14px;font-weight:600;color:var(--color-text-primary)}.chart-svg{width:100%;height:auto;display:block}.chart-placeholder{padding:var(--spacing-lg);text-align:center;color:var(--color-text-tertiary);font-size:14px;background:var(--color-bg-tertiary);border-radius:var(--border-radius-md)}.modal-overlay{position:fixed;inset:0;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000;padding:var(--spacing-md)}.modal-content{background:var(--color-white);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);max-width:1000px;width:100%;max-height:90vh;display:flex;flex-direction:column}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-md);border-bottom:1px solid var(--color-border)}.modal-title{font-size:var(--font-size-xl);font-weight:600;color:var(--color-text-primary);margin:0}.modal-close-button{background:none;border:none;cursor:pointer;color:var(--color-text-secondary);padding:var(--spacing-xs);display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:all .2s ease}.modal-close-button:hover{background-color:var(--color-gray-200);color:var(--color-text-primary)}.modal-body{padding:var(--spacing-md);overflow-y:auto}.modal-body h3{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary);margin:var(--spacing-lg) 0 var(--spacing-sm) 0}.modal-body h3:first-child{margin-top:0}.modal-body p{font-size:var(--font-size-base);color:var(--color-text-secondary);line-height:1.6;margin:0 0 var(--spacing-sm) 0}.modal-body ul{margin:0 0 var(--spacing-sm) 0;padding-left:var(--spacing-lg)}.modal-body li{font-size:var(--font-size-base);color:var(--color-text-secondary);line-height:1.6;margin-bottom:var(--spacing-xs)}.modal-body code{background-color:var(--color-gray-200);padding:2px 6px;border-radius:var(--radius-sm);font-family:Courier New,monospace;font-size:.9em;color:var(--color-text-primary)}.modal-body strong{color:var(--color-text-primary);font-weight:600}.tutorial-section{margin-bottom:var(--spacing-md)}.tutorial-section:last-child{margin-bottom:0}.app-page{min-height:100vh;display:flex;flex-direction:column;background:var(--color-bg-secondary)}.app-header{background:var(--color-white);border-bottom:1px solid var(--color-neutral-200);box-shadow:var(--shadow-sm);position:sticky;top:0;z-index:100}.header-content{max-width:1000px;margin:0 auto;padding:var(--spacing-sm) var(--spacing-md);display:flex;justify-content:space-between;align-items:center}.header-logo{display:flex;align-items:center;gap:var(--spacing-sm)}.logo-text{font-size:var(--font-size-3xl);font-weight:800;color:var(--color-accent-orange);text-shadow:2px 2px 4px rgba(0,0,0,.1);margin:0}.info-button{background:none;border:none;cursor:pointer;color:var(--color-text-secondary);padding:var(--spacing-xs);display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .2s ease}.info-button:hover{background-color:var(--color-gray-200);color:var(--color-accent-orange)}.header-links{display:flex;align-items:center;gap:var(--spacing-sm)}.header-link{color:var(--color-text-secondary);text-decoration:none;font-size:var(--font-size-sm);transition:color .2s ease}.header-simulate-button{padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-sm);border:none;border-radius:var(--radius-sm);background-color:var(--color-accent-orange);color:var(--color-white);cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:var(--spacing-xs);font-weight:500}.header-simulate-button:hover{background-color:#e66300;box-shadow:var(--shadow-sm)}.header-simulate-button:disabled{opacity:.7;cursor:not-allowed}.header-simulate-button:disabled:hover{background-color:var(--color-accent-orange);box-shadow:none}.secret-link-hint-stack{display:flex;flex-direction:column;align-items:center}.plan-id-row{display:flex;align-items:center;gap:var(--spacing-xs)}.save-status-icon{transition:color .3s ease}.save-status-icon.saved{color:var(--color-primary)}.save-status-icon.unsaved{color:var(--color-neutral-400)}.header-link:hover{color:var(--color-accent-orange)}.link-separator{color:var(--color-neutral-300);font-size:var(--font-size-sm)}.hero-links{display:flex;align-items:center;gap:var(--spacing-sm)}.github-link,.kofi-link{display:flex;align-items:center;transition:opacity .2s ease}.github-link:hover,.kofi-link:hover{opacity:.7}.github-logo,.kofi-logo{height:2rem;width:auto}.app-main{flex:1}.app-content{max-width:1000px;margin:0 auto}.simulation-setup-card{background:var(--color-white);padding:var(--spacing-md);margin-top:var(--spacing-sm);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);margin-bottom:var(--spacing-md)}.setup-header{display:flex;justify-content:space-between;align-items:center}.setup-header-expanded{margin-bottom:var(--spacing-md)}.setup-title{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary);margin:0}.setup-title-input{max-width:400px}.setup-buttons{display:flex;gap:var(--spacing-xs)}.setup-simulate-button{padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-sm);border:none;border-radius:var(--radius-sm);background-color:var(--color-accent-orange);color:var(--color-white);cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:var(--spacing-xs)}.setup-simulate-button:hover{background-color:#e66300;box-shadow:var(--shadow-sm)}.setup-simulate-button:disabled{opacity:.7;cursor:not-allowed}.setup-simulate-button:disabled:hover{background-color:var(--color-accent-orange);box-shadow:none}.spinner{width:12px;height:12px;border:2px solid rgba(255,255,255,.3);border-top-color:var(--color-white);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.setup-edit-button{padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-white);color:var(--color-text-primary);cursor:pointer;transition:all .2s ease}.setup-edit-button:hover{border-color:var(--color-primary);color:var(--color-primary)}.setup-edit-button.editing{background-color:var(--color-primary);color:var(--color-white);border-color:var(--color-primary)}.setup-edit-button.editing:hover{background-color:#45a049}.setup-content{display:flex;flex-direction:column;gap:var(--spacing-lg)}.global-init-section{width:100%}.graphs-config-section{display:flex;flex-direction:column;gap:var(--spacing-md)}.graphs-config-header{display:flex;justify-content:space-between;align-items:center}.graphs-config-title{font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);margin:0}.add-graph-button{padding:var(--spacing-xs) var(--spacing-md);font-size:var(--font-size-base);font-weight:600;border:none;border-radius:var(--radius-sm);background-color:var(--color-primary);color:var(--color-white);cursor:pointer;transition:all .2s ease}.add-graph-button:hover{background-color:#45a049;box-shadow:var(--shadow-sm)}.graph-config-card{padding:var(--spacing-md);border-radius:var(--radius-sm);border:2px solid var(--color-bg-secondary);display:flex;flex-direction:column;gap:var(--spacing-md)}.graph-config-header{display:flex;gap:var(--spacing-sm);align-items:flex-start}.graph-config-header .floating-input-container:first-child{flex:2}.graph-config-header .floating-input-container:nth-child(2){flex:1}.delete-graph-button{padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-sm);font-weight:600;border:1px solid var(--color-cancel);color:var(--color-cancel);border-radius:var(--radius-sm);cursor:pointer;transition:all .2s ease;white-space:nowrap}.delete-graph-button:hover{border-color:var(--color-cancel);color:var(--color-cancel)}.graph-config-expressions{display:flex;flex-direction:column;gap:var(--spacing-sm)}.overview-card{background:var(--color-white);padding:var(--spacing-md);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);margin-bottom:var(--spacing-sm)}.empty-graphs-message{text-align:center;padding:var(--spacing-xl);color:var(--color-text-secondary);font-size:var(--font-size-base)}.age-inputs-row{display:flex;gap:var(--spacing-md)}.age-inputs-row .floating-input-container{flex:1}.graph-section{margin-bottom:var(--spacing-lg)}.graph-section:last-child{margin-bottom:0}.graph-title{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary);margin:0 0 var(--spacing-sm) 0}.graph-content{width:100%;overflow:hidden}.graph-svg{width:100%;height:auto;display:block}.graph-svg text{font-family:var(--font-sans)}.graph-svg .grid line{stroke:var(--color-neutral-300)}.graph-svg .grid path{stroke-width:0}.blocks-section{margin-top:var(--spacing-sm);margin-bottom:var(--spacing-sm)}.blocks-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-sm)}.blocks-title{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary);margin:0}.add-block-button{padding:var(--spacing-xs) var(--spacing-md);font-size:var(--font-size-base);font-weight:600;border:none;border-radius:var(--radius-sm);background-color:var(--color-primary);color:var(--color-white);cursor:pointer;transition:all .2s ease}.add-block-button:hover{background-color:#45a049;box-shadow:var(--shadow-sm)}.blocks-list{display:flex;flex-direction:column;gap:var(--spacing-sm)}@media(min-width:1750px){.app-header{height:90px}.app-main{height:calc(100vh - 90px);max-height:calc(100vh - 90px);overflow:hidden;box-sizing:border-box}.header-content{max-width:1650px}.app-content{max-width:1650px;height:calc(100vh - 90px);max-height:calc(100vh - 90px);display:flex;flex-direction:row;gap:var(--spacing-md);box-sizing:border-box}.left-column{flex:1;display:flex;flex-direction:column;gap:var(--spacing-md);min-height:0;margin-top:var(--spacing-md);margin-bottom:var(--spacing-md);overflow-y:auto}.simulation-setup-card,.overview-card{margin-bottom:0;flex-shrink:0}.blocks-section{flex:1;margin-top:var(--spacing-sm);margin-bottom:var(--spacing-sm);display:flex;flex-direction:column;min-height:0;overflow:hidden}.blocks-header{flex-shrink:0;margin-bottom:var(--spacing-sm)}.blocks-list{flex:1;overflow-y:auto;overflow-x:hidden;min-height:0;padding-right:var(--spacing-xs)}.blocks-list>*{flex-shrink:0}}
