:root{--bg:#111318;--panel:#1c1f27;--panel2:#1a2030;--border:#313744;--white:#f5f4f2;--muted:#9b9da7;--blue:#69c9ed;--orange:#e8a642;--violet:#a997f4;--green:#55df94;--red:#ed655b}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:radial-gradient(circle at 50% 30%,#191c26 0%,#111318 68%);color:var(--white);font-family:'JetBrains Mono',ui-monospace,SFMono-Regular,Consolas,monospace;font-size:15px;line-height:1.55}a{color:inherit}button,input,textarea,select{font:inherit}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--blue);outline-offset:3px}.surface,.project-card{border:1px solid var(--border);border-radius:17px;background:linear-gradient(130deg,#1e212a,#1a1d25);box-shadow:0 6px 25px #0001}.site-header{height:73px;border-bottom:1px solid #292d36;display:grid;grid-template-columns:1fr 1fr 1fr;align-items:center;gap:20px;padding:0 30px;background:#191b22}.header-brand{text-decoration:none;font-weight:700;font-size:22px;white-space:nowrap}.header-tagline{text-align:center;color:#b6b6bf;font-size:13px;white-space:nowrap}.ret-mark{font-weight:800;font-style:italic;letter-spacing:-2px;color:#f0f0f0;font-size:21px;margin-right:10px}.site-header nav{display:flex;justify-content:flex-end;gap:26px}.site-header nav a{color:#a6a5ad;text-decoration:none;font-size:16px;white-space:nowrap}.site-header nav a:hover,.site-header nav .active{color:#fff}.site-header nav .active{border-bottom:2px solid #fff;padding-bottom:6px}.portfolio-grid{display:grid;grid-template-columns:minmax(270px,.78fr) minmax(390px,1.26fr) minmax(330px,1.03fr);align-items:start;gap:28px;padding:28px 30px 22px;max-width:2100px;margin:auto}.profile-column,.side-column,.feature-column{min-width:0}.intro-card{padding:26px 24px;font-size:17px;line-height:1.55}.intro-card p{margin:0;white-space:normal}.intro-secondary{margin-top:18px;font-size:13px;color:var(--muted);border-top:1px solid var(--border);padding-top:14px}.timeline{position:relative;margin:34px 0 28px 46px;min-height:385px;border-left:7px solid #555a69}.timeline:before{content:'';position:absolute;top:95px;left:-7px;width:7px;height:140px;background:var(--red)}.timeline-entry{position:relative;padding:53px 0 26px 30px;min-height:146px}.timeline-entry.current{padding-top:47px}.timeline-dot{position:absolute;left:-16px;top:74px;width:20px;height:20px;border:4px solid #555a69;border-radius:50%;background:#111318}.timeline-entry.current .timeline-dot{top:77px;border-color:var(--red)}.timeline-caption{color:#8f909a}.timeline-name{font-size:20px;white-space:normal}.timeline-end{position:absolute;left:-13px;bottom:-9px;color:#626877;font-size:25px}.copilot{padding:17px 18px}.copilot h3,.infra-card h3{margin:0 0 10px;font-size:16px}.copilot-body{display:grid;grid-template-columns:43% 1fr;gap:16px;align-items:start}.copilot-body img,.copilot-placeholder{width:100%;aspect-ratio:1.28;object-fit:cover;border-radius:8px}.copilot-placeholder{display:grid;place-items:center;background:#303440;font-size:54px}.copilot h4{margin:2px 0 8px;font-size:14px}.copilot p{margin:0;line-height:1.5}.feature-column{display:flex;flex-direction:column;gap:22px}.project-card{overflow:hidden;padding:16px}.project-card.featured{padding:17px}.project-art{height:188px;border-radius:10px;overflow:hidden;background:#232b3b;display:flex;align-items:center;justify-content:center;position:relative}.featured .project-art{height:auto;aspect-ratio:1.72}.project-art img{width:100%;height:100%;object-fit:cover;display:block}.art-gradient{background:linear-gradient(120deg,#47bcff,#5a6af1)}.art-gradient span{font-size:100px;color:#152236}.art-gradient small,.art-minecraft small{position:absolute;bottom:16px;font-size:11px;letter-spacing:4px}.art-minecraft{background:repeating-linear-gradient(30deg,#28251f,#28251f 30px,#332b21 30px,#332b21 60px)}.art-minecraft span,.art-code span{font-size:80px;color:#b3a083}.art-code{background:radial-gradient(circle,#294462,#191b26)}.project-copy h2,.experiment-card h2{font-size:clamp(19px,2vw,30px);line-height:1.2;margin:17px 0 10px;font-weight:800;letter-spacing:-.04em;overflow-wrap:anywhere}.featured .project-copy h2{font-size:clamp(25px,2.7vw,37px)}.project-copy h2 a,.experiment-card h2 a{text-decoration:none}.project-copy h2 a:hover,.experiment-card h2 a:hover{color:var(--blue)}.ext{color:var(--blue);font-size:.55em;vertical-align:middle}.chips{display:flex;flex-wrap:wrap;gap:7px}.chip{border:1px solid #6d8f9a;color:#90e2f3;border-radius:40px;padding:1px 9px;background:#243d48;font-weight:600;font-size:12px;white-space:nowrap}.chip-1{border-color:#7668ab;background:#302e4e;color:#baabff}.chip-2{border-color:#a47730;background:#42341f;color:#f5c063}.project-copy p,.experiment-card p{font-size:15px;line-height:1.6;margin:15px 0 0}.project-status{font-size:11px;color:var(--muted);display:inline-flex;align-items:center;gap:7px;margin-top:14px}.live-dot{width:6px;height:6px;border-radius:50%;background:var(--green)}.side-column{display:flex;flex-direction:column;gap:22px}.side-projects{display:none}.experiments-stack{display:flex;flex-direction:column;gap:22px}.experiment-card{padding:17px}.experiment-visual{height:125px;overflow:hidden;border-radius:8px;display:flex;align-items:center;justify-content:center;background:#19202b}.experiment-visual img{width:100%;height:100%;object-fit:cover}.waveform{width:100%;height:95px;display:flex;align-items:center;justify-content:center;gap:2px}.waveform i{background:#6ccbed;width:2px;min-height:2px;flex:1;max-width:4px;border-radius:3px;box-shadow:0 0 6px #5bbbe744}.experiment-card h2{margin:18px 0 8px;font-size:22px;letter-spacing:-.025em}.experiment-card p{font-size:14px;margin:10px 0 0}.infra-card{padding:16px}.infra-card h3{margin-bottom:5px}.infra-line{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:13px}.server-icons{font-size:22px;color:#54bdf3;white-space:nowrap}.server-icons span{color:#51d34e}.infra-line strong{font-weight:500}.bottom-content{max-width:1400px;margin:15px auto;padding:25px 30px}.bottom-content h2{font-size:18px}.journey-items{display:flex;gap:20px;flex-wrap:wrap}.journey-items div{background:var(--panel);padding:14px;border-radius:10px}.journey-items span{display:block;color:var(--muted)}.site-footer{max-width:2100px;margin:auto;padding:26px 30px;border-top:1px solid var(--border);display:flex;gap:20px;flex-wrap:wrap;color:var(--muted);font-size:12px}.site-footer a{color:var(--blue)}.admin-link{margin-left:auto}
/* Admin application */
body.admin{font-family:Inter,system-ui,sans-serif;font-size:14px;background:#111521;color:#edf1fa}body.admin .admin-top{height:66px;background:#171e2e;border-bottom:2px solid #eb6658;display:flex;align-items:center;justify-content:space-between;padding:0 27px;gap:16px}body.admin .admin-logo{font-weight:800;letter-spacing:-.03em;font-size:18px;text-decoration:none}body.admin .admin-top-actions{display:flex;align-items:center;gap:10px}body.admin .admin-layout{display:grid;grid-template-columns:245px minmax(0,1fr);min-height:calc(100vh - 66px)}body.admin .admin-sidebar{background:#14171e;border-right:1px solid #2b3140;padding:24px 12px}body.admin .side-label{color:#858fa8;font-size:10px;letter-spacing:.12em;padding:0 14px 12px}body.admin .sidebar-link{display:flex;align-items:center;gap:13px;padding:11px 14px;border-radius:10px;text-decoration:none;color:#b6c2d6;font-weight:600;font-size:13px;margin:2px 0}body.admin .sidebar-link:hover{background:#20273a;color:white}body.admin .sidebar-link.active{background:#31202f;color:#ff877b}body.admin .sidebar-link .nav-icon{width:22px;text-align:center;font-size:16px}body.admin .admin-main{max-width:1250px;width:100%;padding:28px 30px 70px;margin:0 auto}body.admin h1{font-size:24px;margin:0 0 4px}body.admin .subhead{color:#a1acc0;margin:0 0 20px}body.admin h2{font-size:17px;color:#eff3ff;margin:24px 0 13px}body.admin .dashboard-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:20px 0 16px}body.admin .metric,body.admin .admin-panel{background:#1a2234;border:1px solid #2b3650;border-radius:13px;padding:18px}body.admin .metric small{display:block;color:#aab9d1;font-size:11px;letter-spacing:.02em;text-transform:uppercase}body.admin .metric strong{display:block;font-size:28px;margin:5px 0}body.admin .metric span{color:#8f9eb7;font-size:11px}body.admin .admin-two{display:grid;grid-template-columns:1fr 1fr;gap:14px}body.admin .admin-panel h2{margin:0 0 14px}body.admin .admin-panel .panel-note{margin:0;color:#7de5af}body.admin .admin-panel ul{padding-left:18px}body.admin .admin-panel li{margin-bottom:9px}body.admin .admin-panel a{color:#8fcfff}body.admin .btn{background:#4d74e8;color:#fff;border:1px solid #587de9;border-radius:8px;padding:10px 15px;display:inline-block;text-decoration:none;cursor:pointer;font-size:13px;font-weight:600;line-height:1.4}body.admin .btn.ghost{background:#20283b;border:1px solid #34415c;color:#e5eaff}body.admin .btn.danger{background:#402634;border:1px solid #774153;color:#ffadae}body.admin .admin-top-actions .btn{margin:0}body.admin .inl{display:inline-flex}body.admin .f{display:flex;flex-direction:column;gap:7px;max-width:780px}body.admin .f label{font-size:13px;color:#cdd6e8;font-weight:600;margin-top:12px}body.admin input:not([type=checkbox]):not([type=file]),body.admin textarea,body.admin select{border:1px solid #39445a;background:#171e2e;color:#fff;border-radius:8px;padding:11px 13px;width:100%}body.admin input[type=file]{padding:11px;border:1px dashed #4c5c78;border-radius:8px;max-width:100%}body.admin .chk{display:flex;align-items:center;gap:10px}body.admin .chk input{width:17px;height:17px}body.admin .list{list-style:none;padding:0;margin:0}body.admin .list li{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;border-bottom:1px solid #343d52;padding:12px 0}body.admin .list li:last-child{border:0}body.admin .list li>span:first-child{flex:1 1 200px}body.admin .list li>span:last-child{display:flex;gap:6px;align-items:center;flex-wrap:wrap}body.admin .list .btn{padding:6px 9px;font-size:12px}body.admin small,body.admin .muted{color:#91a0ba}body.admin .ok{color:#7de5af}body.admin .err{color:#ff8c8c}body.admin .thumb{width:120px;max-height:100px;object-fit:cover;border-radius:8px}body.admin .admin-login{max-width:430px;margin:12vh auto;padding:30px;background:#1a2234;border:1px solid #34425e;border-radius:16px}body.admin .edit-card{padding:24px;background:#1a2234;border:1px solid #2b3650;border-radius:13px;margin-top:20px}body.admin .pill-note{display:inline-block;background:#263951;color:#90c7f5;padding:5px 10px;border-radius:20px;font-size:12px}body.admin .settings-columns{display:grid;grid-template-columns:1fr 1fr;gap:25px}
@media(max-width:1250px){.site-header{grid-template-columns:1fr auto}.header-tagline{display:none}.portfolio-grid{grid-template-columns:minmax(230px,.8fr) minmax(360px,1.25fr);gap:20px}.side-column{grid-column:2}.experiments-stack{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.infra-card{margin-bottom:8px}}@media(max-width:760px){.site-header{height:auto;display:flex;flex-wrap:wrap;padding:17px 18px;gap:12px}.header-brand{font-size:18px}.site-header nav{width:100%;justify-content:flex-start;gap:15px;overflow:auto}.site-header nav a{font-size:13px}.portfolio-grid{grid-template-columns:1fr;padding:16px;gap:18px}.profile-column{display:grid;grid-template-columns:1fr}.timeline{min-height:190px;margin:20px 0 16px 35px}.timeline-entry{min-height:90px;padding:12px 0 12px 30px}.timeline-entry.current{padding-top:10px}.timeline-dot,.timeline-entry.current .timeline-dot{top:20px}.timeline:before{top:25px;height:65px}.timeline-name{font-size:16px}.copilot{max-width:none}.side-column{grid-column:auto}.experiments-stack{grid-template-columns:1fr}.featured .project-art{aspect-ratio:1.65}.intro-card{font-size:15px;padding:20px}.site-footer{padding:20px 16px}body.admin .admin-layout{grid-template-columns:1fr}body.admin .admin-sidebar{display:flex;overflow-x:auto;padding:8px;border-right:0;border-bottom:1px solid #2b3140;gap:3px}body.admin .side-label{display:none}body.admin .sidebar-link{white-space:nowrap;font-size:12px}body.admin .admin-main{padding:20px 15px}body.admin .dashboard-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}body.admin .admin-two,body.admin .settings-columns{grid-template-columns:1fr}body.admin .admin-top{padding:0 13px}body.admin .admin-logo{font-size:14px}}

.side-projects{display:flex;flex-direction:column;gap:22px}.side-projects:empty{display:none}.side-projects .project-art{height:auto;aspect-ratio:1.85}.side-projects .project-copy h2{font-size:23px}.side-column .project-card{padding:16px}

/* Developer-only profile in place of the former career timeline. */
.developer-focus{margin:30px 0;padding:25px 24px}
.developer-focus h3{font-size:15px;letter-spacing:.04em;margin:0 0 24px;color:#a4dffa}
.focus-item{position:relative;display:flex;align-items:center;gap:18px;margin:0 0 22px;font-size:17px}
.focus-item:last-child{margin-bottom:0}
.focus-dot{width:12px;height:12px;flex:none;border-radius:50%;background:#65b9ed;box-shadow:0 0 0 4px #65b9ed20}

/* Shared portfolio + admin theme */
body.admin{font-family:'JetBrains Mono',ui-monospace,monospace;background:radial-gradient(circle at 50% 25%,#191c26,#111318 70%);color:var(--white)}
body.admin .admin-top{background:#191b22;border-bottom:1px solid var(--border);height:73px}
body.admin .admin-logo{letter-spacing:-.035em;font-size:17px}
body.admin .admin-sidebar{background:#191b22;border-right-color:var(--border)}
body.admin .side-label,body.admin .subhead,body.admin .metric span,body.admin small,body.admin .muted{color:var(--muted)}
body.admin .sidebar-link{color:#b9bac3}
body.admin .sidebar-link:hover{background:#262a34}
body.admin .sidebar-link.active{background:#273d48;color:var(--blue);border:1px solid #426877}
body.admin h1,body.admin h2{color:var(--white)}
body.admin .metric,body.admin .admin-panel,body.admin .edit-card,body.admin .admin-login{background:linear-gradient(130deg,#1e212a,#1a1d25);border-color:var(--border);box-shadow:0 6px 25px #0001}
body.admin .metric small{color:var(--blue)}
body.admin .btn{background:#294e61;color:#c4efff;border-color:#56859a;border-radius:8px}
body.admin .btn:hover{background:#36677f}
body.admin .btn.ghost{background:#242832;border-color:var(--border);color:var(--white)}
body.admin .btn.danger{background:#4b292d;border-color:#a65c60;color:#ffc7c7}
body.admin .f label{color:#e3e2e7}
body.admin input:not([type=checkbox]):not([type=file]),body.admin textarea,body.admin select{background:#151820;border-color:#404652}
body.admin input[type=file]{border-color:var(--border)}
body.admin .list li{border-bottom-color:var(--border)}
body.admin .admin-panel a{color:var(--blue)}
body.admin .admin-panel .panel-note,body.admin .ok{color:var(--green)}
body.admin .admin-login{margin-top:12vh}
body.admin .admin-two h2{margin-top:0}

/* Homepage widgets use one layout map for visitors and editors. */
.portfolio-grid .layout-column{display:flex;flex-direction:column;gap:22px;min-width:0}
.portfolio-grid .movable-widget{min-width:0}
.portfolio-grid .movable-widget > :first-child:not(.widget-handle){margin-top:0}
.portfolio-grid .movable-widget .developer-focus{margin:0}
.portfolio-grid .side-projects{display:flex;flex-direction:column;gap:22px}
.portfolio-grid .side-projects:empty,.portfolio-grid .experiments-stack:empty{display:none}
.visual-editor-toolbar{position:sticky;top:0;z-index:100;display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:13px 30px;background:#212d38;border-bottom:1px solid #54748b;box-shadow:0 4px 22px #0006;font-size:12px}
.visual-editor-toolbar strong{color:var(--blue);font-size:14px}
.visual-editor-toolbar span{color:#d0d9e2}
.visual-editor-toolbar button,.widget-controls button,.widget-controls a{background:#314b5a;border:1px solid #65869b;border-radius:7px;color:#eff8ff;padding:7px 11px;cursor:pointer;text-decoration:none;font-size:12px}
.visual-editor-toolbar a{color:var(--blue)}
.visual-editor-toolbar #save-layout{background:#2a6b72;color:white;font-weight:700}
.visual-editor-toolbar #editor-status.unsaved{color:var(--orange)}
.layout-editing .layout-column{min-height:300px;outline:1px dashed #466071;outline-offset:5px;border-radius:10px;padding-bottom:50px}
.layout-editing .movable-widget{border:1px dashed #577486;border-radius:13px;overflow:hidden;transition:opacity .12s}
.layout-editing .movable-widget.is-dragging{opacity:.5}
.widget-handle{display:flex;gap:12px;justify-content:space-between;align-items:center;flex-wrap:wrap;padding:8px 12px;background:#273544;color:#b5e6f8;cursor:grab;user-select:none;font-size:12px}
.widget-controls{display:flex;flex-wrap:wrap;gap:4px}
.widget-controls button{padding:3px 9px}
.widget-controls a{padding:3px 8px}
.layout-editing .project-card,.layout-editing .surface{border-radius:0 0 12px 12px}
@media(max-width:1250px){.portfolio-grid .layout-column.side-column{grid-column:2}}
@media(max-width:760px){.portfolio-grid .layout-column.side-column{grid-column:auto}.visual-editor-toolbar{padding:12px 16px}.layout-editing .layout-column{min-height:80px}}
.inline-editor-dialog{background:#1e212a;color:#f5f4f2;border:1px solid #596b7d;border-radius:15px;width:min(580px,calc(100vw - 30px));padding:26px;font-family:'JetBrains Mono',monospace}
.inline-editor-dialog::backdrop{background:#090b10c9}
.inline-editor-dialog h2{margin:0 0 10px}
.inline-editor-dialog textarea{background:#10141b;border:1px solid #516879;color:#fff;width:100%;padding:13px;border-radius:9px;resize:vertical}
.inline-editor-dialog .dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:15px}
.inline-editor-dialog button{background:#294e61;border:1px solid #56859a;color:#fff;padding:10px 15px;border-radius:8px;cursor:pointer}
.inline-editor-dialog #intro-error{color:#ff9e9e}
