:root{--navy:#142841;--navy2:#1b3552;--ink:#172b42;--muted:#617286;--blue:#9cc6e7;--pale:#eaf3f7;--line:#dbe3e9;--white:#fff}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#fff;color:var(--ink);font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;line-height:1.6}a{color:inherit}.container{width:min(1100px,calc(100% - 42px));margin:auto}.site-header{background:var(--navy);color:#fff;border-bottom:1px solid #35506b}.nav{display:flex;justify-content:space-between;align-items:center;min-height:73px;gap:20px}.brand{text-decoration:none;letter-spacing:.09em;font-weight:750;font-size:.84rem}.nav-links{display:flex;gap:26px}.nav-links a{text-decoration:none;font-size:.89rem;color:#d9e3ee}.nav-links a:hover,.text-link:hover{text-decoration:underline}.hero{background:linear-gradient(125deg,var(--navy),#214767);color:#fff}.hero-inner{padding:96px 0 105px}.eyebrow,.tag{color:var(--blue);font-size:.77rem;font-weight:750;letter-spacing:.14em}.hero h1,.case-hero h1{font-size:clamp(2.5rem,5.6vw,4.75rem);line-height:1.14;max-width:900px;letter-spacing:-.045em;margin:21px 0}.hero-sub{font-weight:600;font-size:1.05rem;color:#edf5fb}.hero-detail{max-width:740px;color:#cadbe9;font-size:1.03rem}.primary-link{display:inline-block;margin-top:24px;padding:12px 20px;background:#d7eaf6;color:#142841;text-decoration:none;border-radius:4px;font-weight:700}.section{padding:70px 0;border-bottom:1px solid var(--line)}.section-heading{display:flex;align-items:baseline;gap:18px;margin-bottom:24px}.section-number{color:#7f91a4;font-weight:700;font-size:.84rem}.section h2{font-size:2rem;letter-spacing:-.04em;margin:0}.about-layout{display:grid;grid-template-columns:1.2fr 1fr;gap:70px}.lead{font-size:1.26rem;line-height:1.55;margin:0}.about-layout>p:last-child{color:#485d71;margin:0}.projects-section{padding-bottom:85px}.project-grid{display:grid;grid-template-columns:1.45fr 1fr;gap:22px}.project-card{border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#fff}.card-art{background:linear-gradient(145deg,#244869,#142841);padding:25px;min-height:230px;color:white;display:flex;flex-direction:column;justify-content:space-between}.mini-heading{font-size:.68rem;letter-spacing:.14em;color:#b9d4e9}.art-metrics{display:flex;gap:36px}.art-metrics div{display:flex;flex-direction:column}.art-metrics b{font-size:1.9rem;line-height:1.2}.art-metrics small{font-size:.76rem;color:#c5d9e7}.art-bars{height:54px;display:flex;align-items:flex-end;gap:10px;max-width:410px}.art-bars i{display:block;flex:1;background:#6eaccd;opacity:.88;border-radius:2px 2px 0 0}.art-bars i:nth-child(even){background:#a5d5e8}.card-content{padding:25px}.card-content .tag{color:#4d7694;letter-spacing:.1em;font-size:.68rem}.card-content h3{font-size:1.4rem;line-height:1.3;margin:12px 0}.card-content p{color:#506477}.text-link{display:inline-block;margin-top:8px;color:#1e5277;text-decoration:none;font-weight:700}.future{background:#f7fafc;display:flex;align-items:center}.subtle-label{font-size:.7rem;letter-spacing:.11em;color:#75899a;font-weight:700}.contact{border-bottom:0}.muted{color:var(--muted);font-size:.9rem}.footer{background:#f0f5f8;border-top:1px solid var(--line);color:#5b6f7f}.footer-inner{display:flex;justify-content:space-between;gap:24px;padding:25px 0;font-size:.8rem}.footer a{text-decoration:none}.case-hero{background:linear-gradient(125deg,var(--navy),#214767);color:#fff;padding:55px 0 70px}.case-hero h1{font-size:clamp(2.2rem,4.6vw,3.8rem)}.back-link{display:inline-block;color:#dcebf4;font-size:.85rem;text-decoration:none;margin-bottom:42px}.case-section{padding:53px 0}.case-section .lead{max-width:960px}.method-list{margin:0;max-width:930px;padding-left:25px}.method-list li{padding-bottom:14px}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}.stat{border:1px solid var(--line);padding:22px;background:#f8fbfd;border-radius:5px;display:flex;flex-direction:column;gap:12px}.stat strong{font-size:1.8rem;color:#173d5c;line-height:1.1}.stat span{font-size:.83rem;color:#526779}.notice{border-left:4px solid #7aa6c7;background:#eef5f8;padding:20px 25px;max-width:950px}.notice p{margin-bottom:0}.case-section:last-child{border-bottom:0}@media(max-width:760px){.nav{align-items:flex-start;padding:18px 0;flex-direction:column}.nav-links{gap:17px}.hero-inner{padding:65px 0 72px}.section{padding:45px 0}.about-layout,.project-grid{grid-template-columns:1fr;gap:20px}.stat-grid{grid-template-columns:repeat(2,1fr)}.footer-inner{flex-direction:column;gap:6px}}@media(max-width:470px){.stat-grid{grid-template-columns:1fr}.art-metrics{gap:20px}.card-content{padding:20px}}
/* Portfolio revision: 2026-10 */
.brand-slash{color:#83b8da;padding:0 4px}.eyebrow-line{display:inline-block;width:24px;height:2px;background:#9cc6e7;vertical-align:middle;margin-right:10px}.hero h1 em{font-style:normal;color:#b8dcef}.hero-actions{display:flex;gap:25px;align-items:center;flex-wrap:wrap}.secondary-link{margin-top:24px;color:#e0ebf6;text-decoration:none;font-weight:650;font-size:.93rem}.secondary-link:hover{text-decoration:underline}.about-layout strong{color:#102e4a}.image-link{display:block;overflow:hidden;background:#e9f0f4}.image-link img{width:100%;height:255px;object-fit:cover;object-position:top left;display:block;transition:transform .35s ease}.image-link:hover img{transform:scale(1.025)}.project-facts{display:flex;gap:10px;flex-wrap:wrap;margin:18px 0 8px}.project-facts span{font-size:.7rem;color:#315979;padding:5px 9px;border-radius:3px;background:#eaf3f9;font-weight:700}.contact-lead{margin-bottom:20px}.case-tags{display:flex;gap:10px;flex-wrap:wrap;margin-top:28px}.case-tags span{border:1px solid #68819a;color:#dfebf4;font-size:.75rem;border-radius:3px;padding:4px 10px}.narrow{max-width:880px}.section-intro{max-width:900px;color:#526779;margin:0 0 24px}.dashboard-figure{margin:0;background:#f9fbfd;border:1px solid var(--line);border-radius:7px;overflow:hidden}.dashboard-figure>a{display:block}.dashboard-figure img{display:block;width:100%;height:auto}.dashboard-figure figcaption{padding:13px 18px;font-size:.8rem;color:#607387}.dashboard-figure figcaption a{color:#22587f;font-weight:650}.image-detail-grid{display:grid;grid-template-columns:1.65fr 1fr;gap:20px;margin-top:22px;align-items:start}.sidebar-facts{background:#f2f7fa;border:1px solid var(--line);padding:23px;border-radius:7px}.sidebar-facts h3{margin:0 0 16px;font-size:1.1rem}.fact-row{display:flex;align-items:baseline;gap:15px;border-top:1px solid #d4e1e8;padding:12px 0}.fact-row strong{color:#163d5d;font-size:1.65rem;min-width:74px}.fact-row span{font-size:.82rem;color:#50687b}.workflow{display:grid;grid-template-columns:repeat(4,1fr);gap:13px}.workflow>div{border:1px solid var(--line);border-top:3px solid #527e9e;border-radius:4px;padding:20px;background:#fafcfd}.step-num{display:block;font-size:.8rem;letter-spacing:.08em;color:#6992ae;font-weight:800;margin-bottom:11px}.workflow strong{display:block;line-height:1.3}.workflow p{font-size:.83rem;color:#53697a;margin-bottom:0}.benchmark-rows{border:1px solid var(--line);border-radius:7px;padding:25px;margin-top:25px;max-width:820px}.benchmark-rows>div:not(.legend){margin-bottom:20px}.benchmark-rows span{font-weight:700}.benchmark-rows small{display:block;color:#62768a;margin-top:7px}.bars{margin-top:9px;width:100%;display:flex;flex-direction:column;gap:5px}.bars i{height:14px;display:block;border-radius:2px}.bar-manual{background:#1c597d}.bar-ai{background:#e78c52}.legend{display:flex;gap:25px;margin-top:20px}.legend span{font-size:.78rem;font-weight:600}.legend i{display:inline-block;width:10px;height:10px;margin-right:6px}.dot-manual{background:#1c597d}.dot-ai{background:#e78c52}.control-grid{display:grid;grid-template-columns:1fr 1fr;gap:45px;margin-bottom:30px}.control-grid h3{margin-top:0}.control-grid li{margin-bottom:10px}.dark-link{background:#1b4768;color:white;margin-top:20px}@media(max-width:800px){.image-detail-grid,.workflow,.control-grid{grid-template-columns:1fr 1fr}}@media(max-width:560px){.image-detail-grid,.workflow,.control-grid{grid-template-columns:1fr}.image-link img{height:200px}.hero h1{font-size:2.5rem}.nav-links{flex-wrap:wrap}}

/* Salesforce case study */
.expense-table-wrap{overflow-x:auto}.expense-table{width:100%;border-collapse:collapse;font-size:.92rem;margin:20px 0}.expense-table th,.expense-table td{text-align:left;padding:15px;border-bottom:1px solid var(--line)}.expense-table thead,.expense-table tfoot{background:#eef5f8}.flow-figure{max-width:700px;margin:auto}.project-card.future{grid-column:1/-1}a:focus-visible{outline:3px solid #588bb0;outline-offset:4px}@media(min-width:761px){.project-grid{grid-template-columns:1fr 1fr}}

/* Narrative project article */
.project-story .case-section>p,.story-prose,.story-outcome{max-width:850px}.project-story .case-section>p{font-size:1.04rem;line-height:1.85}.story-outcome{margin-top:26px;border-left:3px solid #527e9e;padding:15px 22px;background:#f4f8fb}.story-outcome p{margin:6px 0 0}.project-story h2{line-height:1.25}.project-story .section-heading{align-items:flex-start;flex-direction:column;gap:12px}

/* Contact, roadmap and personal detour */
.contact-links{display:flex;flex-wrap:wrap;gap:14px 28px;margin:25px 0}.contact-links a{color:#1e5277;font-weight:700;text-underline-offset:5px;overflow-wrap:anywhere}.pet-invite{margin-top:32px;padding-top:24px;border-top:1px solid var(--line);color:var(--muted)}.pet-invite a{color:#1e5277;font-weight:650}.roadmap-grid,.pet-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin:30px 0}.roadmap-grid .sidebar-facts{padding:26px}.roadmap-grid p{font-size:.95rem;line-height:1.8}.pet-card{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#f8fafb}.pet-card>img{display:block;width:100%;height:auto;aspect-ratio:3/4;object-fit:cover}.pet-card h2 small{font-size:1rem;color:var(--muted);font-weight:500}.pet-card .tag{color:#4d7694}.pet-signoff{margin-top:32px;color:var(--muted)}.project-story .dashboard-figure{margin-top:24px;margin-bottom:24px}@media(max-width:680px){.roadmap-grid,.pet-grid{grid-template-columns:1fr}.contact-links{flex-direction:column}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.image-link img{transition:none}}
/* Shared discussions */
.discussion{max-width:1100px}.discussion h2{font-size:clamp(1.6rem,3vw,2.2rem)}.discussion-intro{max-width:760px;font-size:1.1rem}.avatar-strip{display:flex;margin:25px 0}.avatar-strip img{width:52px;height:52px;object-fit:cover;border:3px solid white;border-radius:50%;margin-right:-8px}.comment-form{max-width:760px;padding:26px;background:#f2f7fa;border:1px solid var(--line);border-radius:10px}.comment-form label{display:block;font-weight:650;margin-bottom:18px}.comment-form select,.comment-form textarea,#admin-token{display:block;margin-top:8px;border:1px solid #9aafc1;border-radius:5px;padding:12px;font:inherit;color:var(--ink);background:white;max-width:100%;width:100%}.comment-form textarea{resize:vertical}.comment-button,.comment-more{font:inherit;cursor:pointer;border-radius:5px;padding:10px 17px;margin:8px 10px 8px 0;border:1px solid #335b7b}.comment-button{background:var(--navy);color:white}.comment-more{background:white;color:var(--ink)}button:disabled{opacity:.5;cursor:not-allowed}.comment-status{min-height:1.6em;color:#345c78}.comment-list{max-width:800px}.comment{border-top:1px solid var(--line);padding:25px 0}.comment-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.comment-head img{width:45px;height:45px;object-fit:cover;border-radius:50%}.comment-category{font-size:.78rem;background:#eaf3f7;padding:4px 8px;border-radius:4px}.comment time{font-size:.8rem;color:var(--muted)}.comment-body{white-space:pre-wrap;overflow-wrap:anywhere}.comment-trap{position:absolute!important;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.comment-dialog{border:1px solid var(--line);border-radius:12px;padding:28px;max-width:520px;width:calc(100% - 32px);color:var(--ink)}.comment-dialog::backdrop{background:#142841a8}.comment-dialog h2{line-height:1.3}.comment-dialog .comment-button{margin-right:0}#admin-login{max-width:600px}

/* Personal portrait beside About */
.about-with-photo{display:grid;grid-template-columns:240px 1fr;gap:42px;align-items:start}.profile-photo{margin:0}.profile-photo img{display:block;width:100%;height:auto;border-radius:10px;border:1px solid var(--line)}.about-with-photo .about-layout{grid-template-columns:1fr;gap:16px}.about-with-photo .about-layout p{margin-top:0}@media(max-width:680px){.about-with-photo{grid-template-columns:1fr;gap:25px}.profile-photo{max-width:240px}.about-with-photo .about-layout{gap:12px}}
/* Cool Morandi palette — portfolio visual refresh */
:root{--navy:#425866;--navy2:#526c76;--ink:#354a55;--muted:#6d7e84;--blue:#cedde3;--pale:#edf2f1;--line:#d7dfde;--white:#fffefa}
body{background:#f8f9f6;color:var(--ink)}
.site-header{background:#eef2f0;color:var(--ink);border-bottom:1px solid var(--line)}
.brand{letter-spacing:.075em}.brand-slash{color:#9caeb7}.nav-links a{color:#526874}
.hero,.case-hero{background:linear-gradient(120deg,#e0e9e8 0%,#e9e7ef 58%,#dce7ed 100%);color:var(--ink);position:relative;overflow:hidden}
.hero:after,.case-hero:after{content:"";position:absolute;right:-85px;top:-90px;width:340px;height:340px;border:1px solid #b3c4c799;border-radius:48% 52% 67% 33%;transform:rotate(25deg);pointer-events:none}
.hero-inner,.case-hero>.container{position:relative;z-index:1}.hero h1,.case-hero h1{font-weight:600;letter-spacing:-.045em}.hero h1 em{color:#68868c}.hero-sub{color:#526975}.hero-detail{color:#607480}.eyebrow,.tag{color:#647f87}.eyebrow-line{background:#92a9b0}
.primary-link{background:#536e79;color:#fffefa;border-radius:24px;padding:12px 23px}.secondary-link,.back-link{color:#536d78}.case-tags span{border:1px solid #bac9cc;color:#536a75;background:#ffffff40;border-radius:15px}
.section-number{color:#83999e}.section h2{font-weight:600}.about-layout strong{color:#43616c}.lead{color:#4d656f}
.project-card{background:#fffefa;border-color:#d7e1df;border-radius:18px;box-shadow:0 5px 24px #52697406}.project-card.featured{background:#f1f5f2}.project-card:not(.featured):not(.future){background:#f0eef5}.project-card.future{background:#eaf0f3}.card-content{padding:29px}.card-content .tag{color:#788c94}.card-content p{color:#647880}.project-facts span{background:#e0e9e7;color:#58717a;border-radius:12px}.project-card:not(.featured) .project-facts span{background:#e3e0ec}.text-link,.contact-links a,.pet-invite a{color:#567685}.image-link{background:#e8eeec}.image-link img{opacity:.96}
.profile-photo img{border-radius:45% 45% 18px 18px;border:7px solid #e4ece7;box-shadow:10px 12px 0 #e6e3ed}.about-with-photo{gap:48px}.about-with-photo .lead{font-family:"Segoe Print","Bradley Hand","Chalkboard SE","Comic Sans MS",cursive;font-weight:400;line-height:1.8;font-size:1.4rem;letter-spacing:.005em}.about-with-photo .lead strong{font-weight:600}
.notice,.story-outcome{background:#eaf0ed;border-left-color:#a5bcb6;border-radius:0 12px 12px 0}.story-outcome{background:#edf0f5;border-left-color:#aab8cb}.sidebar-facts,.stat{background:#eff3f1;border-color:#d6e0dc;border-radius:14px}.roadmap-grid>.sidebar-facts:nth-child(3n+2){background:#eeedf4}.roadmap-grid>.sidebar-facts:nth-child(3n){background:#e9f0f4}.workflow>div{background:#eef3f1;border-top-color:#a3bcb8;border-radius:12px}.workflow>div:nth-child(even){background:#eeedf3;border-top-color:#bcb3cf}.step-num{color:#8b9fa9}.dashboard-figure{background:#fff;border-radius:14px;border-color:#d9e2df}.expense-table thead,.expense-table tfoot{background:#e7eeeb}.stat strong{color:#577880}.dark-link{background:#597783;color:white}.benchmark-rows{background:#f1f5f2;border-radius:14px}.bar-manual,.dot-manual{background:#829eaa}.bar-ai,.dot-ai{background:#b5aec5}
.discussion{border-top:1px solid var(--line)}.comment-form{background:#edf2ef;border-color:#d5dfdc;border-radius:18px}.comment-form select,.comment-form textarea,#admin-token{background:#fffefa;border-color:#c0ceca;border-radius:10px}.comment-button{background:#607d87;color:#fffefa;border-color:#607d87;border-radius:22px}.comment-more{background:#f7f8f4;border-color:#bdcdcd;border-radius:22px;color:#5c747d}.comment-status{color:#69828a}.comment-category{background:#e8e5ef;color:#777287;border-radius:12px}.comment-dialog{background:#f8faf6;border-radius:20px}.comment-dialog::backdrop{background:#40586380}.avatar-strip img{border-color:#f8f9f6}.comment-head img{border:2px solid #e0e7e3}.pet-card{background:#edf2ef;border-radius:20px}.pet-card:nth-child(2){background:#eeedf4}.pet-signoff{font-style:italic}.footer{background:#e8efec;border-color:#d5dfda;color:#77898e}.section-heading{gap:18px}a:focus-visible,button:focus-visible,textarea:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid #8b9fb6;outline-offset:4px}.contact{background:transparent}
@media(max-width:680px){.about-with-photo{gap:34px}.about-with-photo .lead{font-size:1.25rem}.hero:after,.case-hero:after{width:220px;height:220px;right:-100px}.card-content{padding:23px}}

/* Upcoming noticeboard and operations journal: additive styles using existing Morandi tokens */
.upcoming-board-section{isolation:isolate}
.upcoming-noticeboard{position:relative;margin-top:38px;padding:42px 24px 24px;border:1px solid var(--line);border-radius:26px;background:var(--pale)}
.upcoming-cloud{position:absolute;top:-22px;right:28px;padding:13px 21px;border:1px solid var(--line);border-radius:60% 55% 52% 55%;background:var(--white);color:var(--muted);font:600 .82rem "Segoe Print","Bradley Hand","Chalkboard SE",cursive;transform:rotate(3deg)}
.upcoming-notes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.upcoming-note{position:relative;min-width:0;min-height:244px;padding:27px 22px 22px;border:1px solid var(--line);border-radius:10px 18px 12px 16px;box-shadow:3px 6px 0 #4258660c;background:#fffefa;transform:rotate(-1deg)}
.upcoming-note:nth-child(2){transform:rotate(1.2deg);background:#eeedf4}
.upcoming-note:nth-child(3){transform:rotate(-.7deg);background:#e8efec}
.upcoming-note:before{content:"";position:absolute;top:8px;left:calc(50% - 18px);width:36px;height:9px;border-radius:3px;background:#ffffffa8;border:1px solid var(--line)}
.upcoming-state,.upcoming-topic,.ops-phase{font-size:.7rem;letter-spacing:.1em;font-weight:750;color:var(--muted)}
.upcoming-note h3{margin:14px 0 10px;font-size:1.17rem;color:var(--ink)}
.upcoming-note p{font-size:.91rem;line-height:1.6;color:var(--muted)}
.upcoming-note a{font-size:.8rem;color:#567685;font-weight:700;text-decoration:none}
.upcoming-note a:hover{text-decoration:underline}
.upcoming-footnote{color:var(--muted);font-size:.83rem;margin-top:17px}
.ops-journal-step{border-top:1px solid var(--line);padding:26px 0;max-width:880px}
.ops-journal-step h3{margin:10px 0;font-size:1.28rem}
.ops-journal-step p{line-height:1.75}
.ops-journal-step>a{font-weight:650;color:#567685}
.ops-reflection{padding:16px 21px;background:var(--pale);border-radius:12px;border:1px solid var(--line);margin:19px 0}
.ops-reflection p{margin:7px 0 0}
.ops-journal-disclosure{padding:19px 23px;border:1px solid var(--line);border-radius:14px;max-width:880px;background:#eeedf4}
.ops-journal-disclosure p{margin:8px 0 0;line-height:1.7}
@media(max-width:760px){.upcoming-notes{grid-template-columns:1fr}.upcoming-note,.upcoming-note:nth-child(2),.upcoming-note:nth-child(3){transform:none;min-height:0}.upcoming-cloud{right:10px;font-size:.7rem}.upcoming-noticeboard{padding:43px 14px 17px}}
@media(prefers-reduced-motion:reduce){.upcoming-note,.upcoming-cloud{transform:none!important}}
