.App{min-height:100vh;overflow-y:auto;overflow-x:hidden}.game-viewport{position:fixed;top:0;left:0;right:0;height:100vh;z-index:0;display:flex;flex-direction:column}.scroll-spacer{height:80vh;flex-shrink:0}.controls-tab{position:fixed;top:.5rem;right:.5rem;z-index:10;display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;padding:.25rem 1rem .6rem;min-height:2rem;background:#1a1a1a;border-radius:0 0 0 12px;box-shadow:-2px 2px 6px #00000059;border:1px solid #333;border-top:none;border-right:none;transition:border-radius .2s ease,padding .2s ease,min-width .2s ease,min-height .2s ease}.controls-tab.controls-tab--collapsed{padding:0;min-height:0;min-width:0;border-radius:50%;border:1px solid #333}.controls-tab--collapsed .controls-tab__content{display:none}.controls-tab__toggle{display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border:none;border-radius:50%;background:#333;color:#e0e0e0;font-size:1rem;cursor:pointer;flex-shrink:0}.controls-tab--collapsed .controls-tab__toggle{background:#1a1a1a}.controls-tab__toggle:hover{background:#444}.controls-tab--collapsed .controls-tab__toggle{width:2.5rem;height:2.5rem}.score{display:flex;align-items:center;gap:1rem;margin-right:.5rem;font-family:monospace;font-size:.85rem;color:#e0e0e0}.generation,.living-cells{font-weight:500}.speed-slider-wrap{display:inline-flex;align-items:center;gap:.5rem;margin-right:.25rem}.speed-label{font-size:.8rem;color:#b0b0b0;white-space:nowrap}.speed-slider{width:72px;height:6px;accent-color:#5c85af;cursor:pointer}.controls-tab .menu-item{display:inline-flex;align-items:center;gap:.35rem;margin:0;padding:.35em .7em;height:auto;font-size:.85rem;background:#333;border:1px solid #555;border-radius:4px;color:#e0e0e0;cursor:pointer}.controls-tab .menu-item:hover:not(:disabled){background:#444}.controls-tab .menu-item:disabled{opacity:.5;cursor:not-allowed}.game-area{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:0;overflow:hidden;background-color:#e8dfd4}.grid-wrapper{flex-shrink:0;transform-origin:center}.grid{display:grid;background-color:#e8dfd4}.gridCell{min-width:0;min-height:0;cursor:crosshair}.dead{background-color:#d4d4d4}.alive{background-color:#00c8c8}.resume-tab{position:relative;z-index:1;flex-shrink:0;width:85%;max-width:1700px;margin:0 auto;padding:0;min-height:110vh;background:#d4d4d4;border:3px solid #5c85af;border-bottom:none;border-radius:12px 12px 0 0;box-shadow:0 2px 12px #5c85af33;display:flex;flex-direction:column}.resume-tab__tabs{display:flex;gap:0;padding:0 .75rem;background:#d4d4d4;border-radius:12px 12px 0 0;min-height:2.5rem;align-items:flex-end;justify-content:center}.resume-tab__tab{padding:.4rem 1rem .5rem;font-family:monospace;font-size:.8rem;font-weight:600;color:#1e3a5f;background:transparent;border:2px solid #5c85af;border-bottom:none;border-radius:6px 6px 0 0;cursor:pointer;margin-right:.15rem;transition:background .15s ease,color .15s ease}.resume-tab__tab:hover{background:rgba(92,133,175,.2);color:#0f172a}.resume-tab__tab--active{background:#ffffff;color:#1a1a1a;position:relative;top:2px;padding-bottom:.6rem}.resume-tab__paper{flex:1;margin:.75rem .75rem 0;background:#ffffff;border-radius:4px 4px 0 0;box-shadow:inset 0 0 0 1px #5c85af26;min-height:calc(100vh - 1.5rem)}.resume-tab__inner{padding:1.25rem 1.5rem 4rem;font-family:monospace;font-size:.85rem}.resume-header{margin-bottom:1rem;padding-bottom:.75rem;border-bottom:3px solid #5c85af}.resume-header--centered{text-align:center}.resume-header--centered .resume-contact{justify-content:center}.resume-header__banner{margin:0;font-size:1.1rem;font-weight:600;color:#0f172a}.resume-header__tagline{margin:.5rem 0 0;font-size:.85rem;font-style:italic;color:#475569}.resume-name{margin:0 0 .2rem;font-size:1.35rem;font-weight:700;color:#1a1a1a;letter-spacing:.02em}.resume-title{margin:0 0 .4rem;font-size:.85rem;color:#2c5282;font-weight:500}.resume-contact{display:flex;flex-wrap:wrap;gap:1rem;font-size:.8rem;color:#1a365d}.resume-section{margin-bottom:1rem}.resume-section__title{margin:0 0 .4rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:#2c5282;border-bottom:3px solid #5c85af;padding-bottom:.3rem}.resume-section__content{line-height:1.5;color:#0f172a}.resume-section__content p{margin:0 0 .4rem;color:#0f172a}.intro-header{margin-bottom:1.25rem}.intro-contact{justify-content:center}.intro-section{margin-bottom:1.5rem}.intro-section__content{max-width:52rem;margin-left:auto;margin-right:auto;line-height:1.6}.intro-section__content p{margin-bottom:.75rem}.intro-section__content p:last-child{margin-bottom:0}.intro-list{margin:0;padding-left:1.5rem;list-style-type:disc}.intro-list li{margin-bottom:.6rem;color:#0f172a}.intro-list li:last-child{margin-bottom:0}.resume-item{margin-bottom:.85rem}.resume-item:last-child{margin-bottom:0}.resume-item__heading{margin:0 0 .15rem;font-size:.9rem;font-weight:600;color:#1a1a1a}.resume-item__meta{margin:0 0 .25rem;font-size:.78rem;color:#2c5282}.resume-item p:last-child{margin:0;color:#1e293b}.resume-list{margin:.25rem 0 .5rem;padding-left:1.25rem;color:#0f172a}.resume-list li{margin-bottom:.2rem}.resume-contact a,.resume-section__content a{color:#2c5282;text-decoration:none}.resume-contact a:hover,.resume-section__content a:hover{text-decoration:underline}.resume-section--note{background:#f8fafc;border-left:4px solid #5c85af;padding-left:.75rem;margin-left:-.75rem;padding-right:0}.resume-ai-note{font-size:.85rem;color:#334155;margin:0}.writeup-expandable{margin-bottom:.5rem;border:1px solid #94a3b8;border-radius:6px;overflow:hidden}.writeup-expandable__trigger{width:100%;display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;font-family:inherit;font-size:.8rem;font-weight:600;color:#0f172a;background:#f1f5f9;border:none;cursor:pointer;text-align:left;transition:background .15s ease}.writeup-expandable__trigger:hover{background:#e2e8f0}.writeup-expandable--open .writeup-expandable__trigger{background:#e2e8f0;border-bottom:1px solid #cbd5e1}.writeup-expandable__title{color:#0f172a}.writeup-expandable__icon{flex-shrink:0;margin-left:.5rem;font-size:.7rem;color:#475569}.writeup-expandable__body{background:#ffffff}.writeup-expandable__body[hidden]{display:none}.writeup-expandable__inner{padding:.75rem 1rem 1rem;color:#0f172a}.writeup-intro{margin-bottom:1rem}.writeup-group{margin-bottom:1rem;border:2px solid #5c85af;border-radius:8px;overflow:hidden}.writeup-group__trigger{width:100%;display:flex;align-items:center;justify-content:space-between;padding:.65rem 1rem;font-family:inherit;font-size:.95rem;font-weight:700;color:#0f172a;background:#e2e8f0;border:none;cursor:pointer;text-align:left;transition:background .15s ease}.writeup-group__trigger:hover{background:#cbd5e1}.writeup-group--open .writeup-group__trigger{background:#cbd5e1;border-bottom:2px solid #94a3b8}.writeup-group__title{color:#0f172a}.writeup-group__icon{flex-shrink:0;margin-left:.5rem;font-size:.75rem;color:#475569}.writeup-group__body{background:#ffffff}.writeup-group__body[hidden]{display:none}.writeup-group__inner{padding:1rem 1.25rem 1.25rem;color:#0f172a}.project-chunk{margin-bottom:1.25rem}.project-chunk .resume-name{font-size:1.2rem;margin-bottom:.15rem}.project-meta{margin-bottom:.75rem}.project-h3{margin:.6rem 0 .25rem;font-size:.82rem;font-weight:600;color:#0f172a;text-transform:none;letter-spacing:0;border:none;padding:0}.project-chunk ul,.project-chunk ol,.writeup-expandable__inner ul,.writeup-expandable__inner ol{margin:.25rem 0 .5rem;padding-left:1.25rem;color:#0f172a}.project-chunk li,.writeup-expandable__inner li{margin-bottom:.2rem}.project-chunk code,.writeup-expandable__inner code{font-family:monospace;font-size:.8em;background:#e2e8f0;padding:.1em .35em;border-radius:3px;color:#0f172a}.writeup-expandable__inner p{color:#0f172a}.project-commands{display:flex;flex-direction:column;gap:.75rem;margin:.5rem 0 .75rem}.project-commands .project-pre{margin:0}.project-pre{margin:.5rem 0 .75rem;padding:.6rem .8rem;background:#1a1a1a;color:#e0e0e0;border-radius:4px;font-size:.78rem;overflow-x:auto;border:1px solid #333}.project-pre code{background:transparent;padding:0;color:inherit}.project-table{width:100%;margin:.5rem 0 .75rem;border-collapse:collapse;font-size:.8rem}.project-table th,.project-table td{border:1px solid #5c85af;padding:.35rem .5rem;text-align:left}.project-table th{background:#e2e8f0;color:#0f172a;font-weight:600}.project-table td{color:#0f172a}.project-table td code{white-space:nowrap}.project-footer{margin-top:1rem;font-size:.8rem;color:#334155;font-style:italic}.report-intro-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;margin:.75rem 0 1rem}.report-download-link{display:inline-flex;align-items:center;gap:.35rem;padding:.4rem .75rem;font-size:.8rem;font-weight:600;color:#fff;background:#2c5282;border-radius:6px;text-decoration:none;transition:background .2s ease}.report-download-link:hover{background:#1e3a5f;color:#fff}.report-figures{display:flex;flex-direction:column;gap:.75rem;margin:.75rem 0 1rem}.report-fig{border:1px solid #cbd5e1;border-radius:6px;overflow:hidden;background:#f8fafc}.report-fig__img{display:block;width:100%;height:auto;max-width:100%}.report-fig__caption{padding:.35rem .5rem;font-size:.75rem;color:#475569;background:#f1f5f9;border-top:1px solid #e2e8f0}:root{font-family:Inter,Avenir,Helvetica,Arial,sans-serif;font-size:16px;line-height:24px;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;min-width:320px;min-height:100vh}#root{width:100%;height:100vh;margin:0;padding:0}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s;height:43px}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}
