/* OurFest case study. All page styles are scoped; the shared portfolio stays unchanged. */
.ourfest{--paper:#f7f7ef;--ink:#293d30;--muted:#657063;--sage:#e5ebdd;--line:#d6ddce;--accent:#587443;margin:0;background:var(--paper);color:var(--ink);font-family:Arial,Helvetica,sans-serif;font-size:16px;line-height:1.65}
.ourfest *{box-sizing:border-box}
.ourfest ::selection{background:#d3ddaa;color:#253625}
.ourfest a{color:inherit}
.ourfest .site-nav{background:rgba(247,247,239,.93);backdrop-filter:blur(14px);color:var(--ink)}
.ourfest .wrap{width:min(1320px,89%);margin-inline:auto}
.ourfest h1,.ourfest h2,.ourfest h3,.ourfest p,.ourfest figure{margin:0}
.ourfest h2{font-size:clamp(32px,3.4vw,52px);font-weight:600;letter-spacing:-.045em;line-height:1.08;text-wrap:balance;margin-bottom:28px}
.ourfest h3{font-size:clamp(20px,1.75vw,25px);font-weight:600;letter-spacing:-.025em;line-height:1.25;margin-bottom:14px}
.ourfest p{color:var(--muted)}
.ourfest .eyebrow{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.15em;line-height:1.5;color:var(--accent);margin-bottom:22px}
.ourfest .case-section{padding-block:88px;scroll-margin-top:100px}
.ourfest .two-column{display:grid;grid-template-columns:1fr 1.12fr;gap:clamp(36px,6vw,100px);align-items:center}
.ourfest .section-copy>p:not(.eyebrow){max-width:46ch}
.ourfest .section-heading{display:flex;justify-content:space-between;gap:40px;align-items:flex-end;margin-bottom:40px}
.ourfest .section-heading h2{margin-bottom:0}
.ourfest .section-heading>p{max-width:43ch;font-size:15px}
.ourfest a:focus-visible,.ourfest button:focus-visible{outline:3px solid var(--accent);outline-offset:6px}
.ourfest .skip-link{position:fixed;top:12px;left:12px;padding:10px 20px;background:var(--paper);z-index:10000;transform:translateY(-160%)}
.ourfest .skip-link:focus{transform:translateY(0)}
.ourfest .case-hero{display:grid;grid-template-columns:.83fr 1.25fr;gap:5%;align-items:center;padding-block:156px 66px}
.ourfest .hero-copy .eyebrow{display:flex;align-items:center;gap:10px}
.ourfest .status-dot{width:7px;height:7px;border-radius:50%;background:#8da279}
.ourfest h1{font-family:"Freckle Face",Georgia,serif;font-weight:400;font-size:clamp(76px,8.2vw,120px);line-height:.95;letter-spacing:-.035em;margin-bottom:30px;position:relative;display:inline-block}
.ourfest .title-star{position:absolute;font-family:Arial,sans-serif;font-size:.35em;color:#a2ae78;right:-.7em;top:-.2em;transform:rotate(15deg)}
.ourfest .hero-intro{font-family:"Schoolbell",cursive;font-size:clamp(21px,1.9vw,28px);line-height:1.4;max-width:34ch;color:#475443}
.ourfest .project-meta{margin-top:28px;font-size:12px;line-height:1.7}
.ourfest .project-meta p+p{margin-top:10px}
.ourfest .hero-actions{display:flex;align-items:center;flex-wrap:wrap;gap:20px;margin-top:30px;font-size:12px;font-weight:600}
.ourfest .button{display:inline-flex;align-items:center;justify-content:center;gap:22px;min-height:48px;border-radius:99px;padding:12px 22px;text-decoration:none;transition:background .2s,transform .2s}
.ourfest .button-primary{color:var(--paper);background:var(--ink)}
.ourfest .button:hover{background:#496040;transform:translateY(-2px)}
.ourfest .text-link{display:inline-flex;align-items:center;gap:14px;text-decoration:none;padding-block:10px;border-bottom:1px solid var(--line);transition:border-color .2s}
.ourfest .text-link:hover{border-color:var(--accent)}
.ourfest .hero-figure{min-width:0;transform:rotate(1deg)}
.ourfest .image-link{display:block;position:relative;overflow:hidden;border-radius:24px;cursor:zoom-in;text-decoration:none}
.ourfest .image-link img{display:block;width:100%;height:auto;transition:transform .45s ease}
.ourfest .hero-image{box-shadow:0 22px 50px -34px #34442e70}
.ourfest .hero-image img{aspect-ratio:867/650;object-fit:cover}
.ourfest .expand-icon{position:absolute;bottom:16px;right:16px;display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:#fafbf2ed;color:var(--ink);border:1px solid #46563a1a;font-size:20px;transition:background .2s}
.ourfest .image-link:hover .expand-icon{background:#d8e6c5}
.ourfest figcaption{font-size:11px;color:var(--muted);line-height:1.6;margin-top:14px}
.ourfest .hero-figure figcaption{display:flex;justify-content:space-between;gap:16px}
.ourfest .hero-figure figcaption>span:first-child{font-family:"Schoolbell",cursive;font-size:18px;color:var(--accent)}
.ourfest .overview{padding-block:24px 32px;border-top:1px solid var(--line)}
.ourfest .section-topline{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:26px}
.ourfest .section-topline h2{font-size:14px;letter-spacing:0;line-height:1.5;margin:0}
.ourfest .section-topline>span{font-size:11px;color:var(--muted)}
.ourfest .overview-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.ourfest .overview-grid article{padding:24px;border-radius:16px;background:#edf0e6}
.ourfest .overview-grid .eyebrow{margin-bottom:15px}
.ourfest .overview-grid article>p:last-child{font-size:14px;line-height:1.65}
.ourfest .image-frame{padding:24px;border:1px solid var(--line);background:#edf0e6}
.ourfest .paper-frame{padding:18px;background:#fff}
.ourfest .insight-list{list-style:none;padding:0;margin:26px 0 0;display:grid;gap:10px;counter-reset:insight}
.ourfest .insight-list li{counter-increment:insight;display:flex;gap:14px;align-items:baseline;font-size:14px;padding:13px 16px;border-radius:12px;background:#edf0e6;line-height:1.5}
.ourfest .insight-list li::before{content:"0" counter(insight);font-size:10px;color:var(--accent);flex:none}
.ourfest .research-section{grid-template-columns:1.1fr 1fr;border-top:1px solid var(--line)}
.ourfest .sage-frame{padding:35px;max-width:600px;background:#eaf0df}
.ourfest .numbered-findings{list-style:none;margin:25px 0 0;padding:0}
.ourfest .numbered-findings li{display:flex;gap:22px;align-items:baseline;border-top:1px solid var(--line);padding:17px 0}
.ourfest .numbered-findings span{font-family:"Schoolbell",cursive;font-size:20px;color:var(--accent)}
.ourfest .numbered-findings p{font-size:16px;line-height:1.45;color:var(--ink)}
.ourfest .concept-band{background:#e9eedd}
.ourfest .concept-section{grid-template-columns:.85fr 1.4fr}
.ourfest .sketch-frame{background:#eaf2de;padding:24px 12px;border-color:#d6dfc8}
.ourfest .principles{display:flex;flex-wrap:wrap;gap:8px;margin-top:26px}
.ourfest .principles span{font-size:12px;border:1px solid #b8c5aa;border-radius:99px;padding:6px 12px}
.ourfest .three-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.ourfest .system-grid article{border:1px solid var(--line);border-radius:20px;padding:30px;background:#f1f3e9}
.ourfest .system-grid .eyebrow{margin-top:34px;margin-bottom:14px}
.ourfest .system-grid article>p:last-child{font-size:15px;max-width:29ch}
.ourfest .system-art{height:74px;position:relative;color:#81936d}
.ourfest .calendar-art{display:flex;align-items:center;justify-content:center;gap:8px;border:2px solid currentColor;border-radius:12px;width:170px;height:64px;margin-top:10px}
.ourfest .calendar-art span{width:25px;height:25px;border:2px solid currentColor;border-radius:3px;background:#e0e9cd}
.ourfest .calendar-art span:first-child{border-radius:50%;width:37px;height:37px;background:#e9dabc}
.ourfest .calendar-art span:nth-child(3){border-radius:50%;background:#d3e5de}
.ourfest .calendar-art span:last-child{clip-path:polygon(50% 0,100% 100%,0 100%);border:0;background:#b6b7cd}
.ourfest .pendant-art{width:66px;border:1.5px solid currentColor;border-radius:50%;margin-left:20px;transform:rotate(-12deg)}
.ourfest .pendant-art span{position:absolute;bottom:-5px;left:14px;width:38px;height:38px;border:2px solid currentColor;border-radius:50%;background:#dce8d0;box-shadow:inset 0 0 0 6px #f5f7ed}
.ourfest .app-art{border:2px solid currentColor;border-radius:10px;width:45px;padding:13px 7px 7px;display:grid;gap:5px;margin-left:20px;transform:rotate(10deg);background:#eff5e7}
.ourfest .app-art::before{content:"";position:absolute;width:13px;height:3px;background:currentColor;top:5px;left:14px;border-radius:5px}
.ourfest .app-art span{background:#b9cdae;border-radius:3px}.ourfest .app-art span:first-child{background:#e4d7ae}
.ourfest .app-section{border-top:1px solid var(--line);grid-template-columns:.85fr 1fr}
.ourfest .app-frame{background:#e2e9d8;padding:24px 38px}
.ourfest .app-frame img{max-width:465px;margin-inline:auto}
.ourfest .app-features{list-style:none;padding:0;margin:30px 0;display:grid;gap:0}
.ourfest .app-features li{padding:17px 0;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:16px;font-size:16px}
.ourfest .app-features span{font-size:11px;color:var(--accent)}
.ourfest .handwritten{font-family:"Schoolbell",cursive;font-size:26px;color:var(--accent);transform:rotate(-3deg);margin-top:38px}
.ourfest .prototype-section{border-top:1px solid var(--line);grid-template-columns:1.1fr 1fr}
.ourfest .model-frame{background:#e9e9e1;padding:55px 24px}
.ourfest .model-frame img{max-width:520px;margin-inline:auto;border-radius:8px}
.ourfest .process-steps{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:28px 0 0;padding:0}
.ourfest .process-steps li{font-size:12px;border:1px solid var(--line);border-radius:99px;padding:6px 12px}
.ourfest .journey-band{background:#e4eadb}
.ourfest .journey-section figure{margin-top:50px;text-align:center}
.ourfest .storyboard-frame{max-width:450px;padding:20px;margin-inline:auto;background:#eef2e6;border:1px solid #ced7c2}
.ourfest .storyboard-frame img{width:100%;height:auto}
.ourfest .reflection-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:22px;margin-top:38px}
.ourfest .reflection-card{padding:34px;border:1px solid var(--line);border-radius:20px;background:#eaf0e1}
.ourfest .reflection-card:nth-child(2){background:#f0eee3}
.ourfest .reflection-symbol{display:block;margin-bottom:25px;color:#809467;font-size:28px;line-height:1}
.ourfest .reflection-card ul{margin:22px 0 0;padding-left:18px;color:var(--muted);font-size:15px}
.ourfest .reflection-card li+li{margin-top:14px}
.ourfest .reflection-card li::marker{color:#8c9e76}
.ourfest .reflection-note{max-width:78ch;margin:40px auto 0;font-size:18px;line-height:1.75;text-align:center}
.ourfest .reflection-note strong{font-weight:600;color:var(--ink)}
.ourfest .next-steps{border-top:1px solid var(--line)}
.ourfest .next-grid{margin-top:38px}
.ourfest .next-grid article{padding:26px 24px;border-radius:16px;border:1px solid var(--line)}
.ourfest .step-number{display:block;color:#809467;font-family:"Schoolbell",cursive;font-size:24px;margin-bottom:22px}
.ourfest .next-grid h3{font-size:19px}
.ourfest .next-grid p{font-size:14px}
.ourfest .image-dialog{padding:0;border:1px solid #ffffff30;border-radius:18px;width:min(1320px,94vw);max-width:94vw;height:90dvh;max-height:90dvh;background:#f7f7ef;color:var(--ink);box-shadow:0 25px 100px #0005}
.ourfest .image-dialog::backdrop{background:#152218cc;backdrop-filter:blur(7px)}
.ourfest .viewer-toolbar{height:70px;padding:12px 22px;display:flex;align-items:center;justify-content:space-between;gap:18px;border-bottom:1px solid var(--line)}
.ourfest .viewer-toolbar p{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ourfest .viewer-toolbar>div{display:flex;gap:8px;flex-shrink:0}
.ourfest .viewer-toolbar button{background:#e6ebdd;border:1px solid var(--line);border-radius:99px;padding:9px 16px;min-height:44px;color:var(--ink);font:inherit;font-size:13px;cursor:pointer}
.ourfest .viewer-content{height:calc(100% - 70px);overflow:auto;padding:24px;text-align:center;overscroll-behavior:contain}
.ourfest .viewer-content img{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;margin:auto}
.ourfest .image-dialog.is-zoomed .viewer-content img{width:1200px;max-width:none;max-height:none;height:auto}
@media(hover:hover){.ourfest .image-link:hover img{transform:scale(1.012)}}
@media(min-width:1600px){.ourfest .case-hero{padding-top:175px;padding-bottom:86px}}
@media(max-width:1100px){.ourfest .case-hero{padding-top:130px;gap:4%;grid-template-columns:1fr 1.15fr}.ourfest .hero-actions{gap:12px}.ourfest .hero-figure figcaption{display:block}.ourfest .hero-figure figcaption>span{display:block}.ourfest .overview-grid{grid-template-columns:repeat(2,1fr)}.ourfest .case-section{padding-block:65px}.ourfest .two-column{gap:32px}.ourfest .concept-section{grid-template-columns:1fr 1.2fr}.ourfest .system-grid article{padding:22px}.ourfest .section-heading>p{max-width:35ch}.ourfest .app-frame{padding:24px}.ourfest .three-grid{gap:14px}}
@media(max-width:700px){.ourfest .wrap{width:calc(100% - 40px)}.ourfest .case-hero{grid-template-columns:1fr;padding-top:118px;padding-bottom:42px;gap:40px}.ourfest h1{font-size:88px;margin-bottom:24px}.ourfest .hero-intro{font-size:20px;max-width:38ch}.ourfest .project-meta{margin-top:22px}.ourfest .hero-actions{gap:22px}.ourfest .hero-figure{transform:none}.ourfest .hero-image img{aspect-ratio:auto}.ourfest .hero-figure figcaption{display:flex}.ourfest .hero-figure figcaption>span:last-child{max-width:105px;text-align:right}.ourfest .section-topline>span{display:none}.ourfest .overview-grid{gap:10px}.ourfest .overview-grid article{padding:20px}.ourfest .case-section{padding-block:52px;scroll-margin-top:85px}.ourfest .two-column{grid-template-columns:1fr;gap:30px}.ourfest h2{font-size:36px;margin-bottom:23px}.ourfest .eyebrow{margin-bottom:16px;font-size:10px}.ourfest .section-copy>p:not(.eyebrow){max-width:none}.ourfest .research-section .section-copy{order:-1}.ourfest .image-frame{padding:18px;border-radius:18px}.ourfest .sketch-frame{padding:18px 6px}.ourfest .section-heading{display:block;margin-bottom:26px}.ourfest .section-heading>p{margin-top:20px;max-width:none}.ourfest .three-grid{grid-template-columns:1fr;gap:14px}.ourfest .system-grid article{padding:28px}.ourfest .system-grid article>p:last-child{max-width:none}.ourfest .system-grid .eyebrow{margin-top:25px}.ourfest .system-art{float:right;transform:scale(.8);transform-origin:top right;margin:0 0 12px 12px}.ourfest .system-grid h3{clear:both}.ourfest .app-frame{padding:20px}.ourfest .handwritten{font-size:23px}.ourfest .model-frame{padding:35px 18px}.ourfest .journey-section figure{margin-top:28px}.ourfest .storyboard-frame{max-width:390px;padding:14px}.ourfest .reflection-grid{grid-template-columns:1fr;gap:14px;margin-top:28px}.ourfest .reflection-card{padding:26px}.ourfest .reflection-note{font-size:16px;text-align:left;margin-top:28px}.ourfest .next-grid{margin-top:28px}.ourfest .project-footer{display:block;padding-block:25px 40px}.ourfest .project-footer nav{justify-content:space-between;gap:24px;margin-top:28px}.ourfest .viewer-toolbar{padding:10px;gap:6px}.ourfest .viewer-toolbar p{font-size:11px}.ourfest .viewer-toolbar button{padding:8px 12px;font-size:12px}.ourfest .viewer-content{padding:12px}}
@media(max-width:480px){.ourfest .overview-grid{grid-template-columns:1fr}.ourfest .overview-grid article{padding:20px 22px}.ourfest .hero-actions{gap:16px}.ourfest .hero-figure figcaption>span:first-child{font-size:16px}.ourfest .calendar-art{width:150px}.ourfest .section-topline{margin-bottom:20px}}
@media(prefers-reduced-motion:reduce){.ourfest *{scroll-behavior:auto!important;transition:none!important}.ourfest .image-link:hover img{transform:none}.ourfest .button:hover{transform:none}}

/* Compact case-study layout and full-bleed image cards. */
.ourfest .wrap{width:min(1400px,92%)}
.ourfest main{padding-bottom:128px}
.ourfest .case-hero{padding-block:124px 38px}
.ourfest .case-section{padding-block:48px}
.ourfest .two-column{grid-template-columns:1.08fr 1fr;gap:clamp(24px,3vw,48px)}
.ourfest .two-column>*{min-width:0}
.ourfest .section-copy>p:not(.eyebrow){max-width:none}
.ourfest .research-section,.ourfest .prototype-section{grid-template-columns:1fr 1.08fr}
.ourfest .section-heading{margin-bottom:24px}
.ourfest .eyebrow{margin-bottom:16px}
.ourfest h2{margin-bottom:22px}
.ourfest #research-title{font-size:clamp(23px,2.8vw,44px);white-space:nowrap}
.ourfest #problem-title,.ourfest #concept-title,.ourfest #prototype-title{font-size:clamp(22px,2.7vw,42px);white-space:nowrap}
.ourfest .image-frame,.ourfest .storyboard-frame{padding:0;border:0;background:transparent}
.ourfest .image-frame img{max-width:none;width:100%;border-radius:0}
.ourfest .sage-frame{max-width:none}
.ourfest .app-section figure{width:100%;max-width:340px;justify-self:end}
.ourfest .journey-section{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,1fr);gap:clamp(24px,3vw,48px);align-items:center}
.ourfest .journey-section .section-heading{display:block;margin-bottom:0}
.ourfest .journey-section .section-heading>p{max-width:88ch;margin-top:16px}
.ourfest .journey-section figure{margin-top:0;width:100%;max-width:500px;justify-self:end}
.ourfest .storyboard-frame{width:100%;max-width:500px}
.ourfest .reflection-grid,.ourfest .next-grid{margin-top:24px}
.ourfest .reflection-note{margin-top:26px}
.ourfest .back-to-work{position:fixed;left:48px;bottom:40px;z-index:9998;display:inline-flex;align-items:center;gap:16px;height:64px;padding:0 24px 0 0;border-radius:999px;isolation:isolate;color:#272733;text-decoration:none;font-family:Arial,Helvetica,sans-serif;font-size:15px;font-weight:700;letter-spacing:.025em;white-space:nowrap;transition:color 300ms ease}
.ourfest .back-to-work::before{content:"";position:absolute;inset:0 auto 0 0;width:64px;background:#272733;border-radius:999px;z-index:-1;transition:width 350ms ease}
.ourfest .back-to-work-icon{display:grid;place-items:center;width:64px;height:64px;flex:0 0 64px;color:white}
.ourfest .back-to-work-icon svg{width:26px;height:26px;transition:transform 300ms ease}
.ourfest .back-to-work:hover,.ourfest .back-to-work:focus-visible{color:white}
.ourfest .back-to-work:hover::before,.ourfest .back-to-work:focus-visible::before{width:100%}
.ourfest .back-to-work:hover svg,.ourfest .back-to-work:focus-visible svg{transform:translateX(-5px)}
@media(max-width:1100px){.ourfest .case-section{padding-block:38px}.ourfest .case-hero{padding-top:112px}.ourfest .two-column{gap:24px}}
@media(max-width:700px){.ourfest .wrap{width:calc(100% - 40px)}.ourfest .case-hero{padding-block:108px 30px;gap:28px}.ourfest .case-section{padding-block:32px}.ourfest .two-column{grid-template-columns:1fr;gap:24px}.ourfest .app-section figure{justify-self:center}.ourfest .back-to-work{left:20px;bottom:max(20px,env(safe-area-inset-bottom));gap:14px;font-size:14px;padding-right:20px}.ourfest .journey-section .section-heading>p{max-width:none}}
@media(prefers-reduced-motion:reduce){.ourfest .back-to-work:hover svg,.ourfest .back-to-work:focus-visible svg{transform:none}}
@media(max-width:700px){.ourfest #problem-title,.ourfest #concept-title,.ourfest #prototype-title{font-size:clamp(20px,5.6vw,36px)}.ourfest .app-section figure{max-width:280px}.ourfest .journey-section{grid-template-columns:1fr;gap:24px}.ourfest .journey-section figure{width:88%;max-width:400px;justify-self:end}}
/* Small-screen layout refinements: preserve the editorial two-column tablet layout. */
@media(min-width:701px) and (max-width:1100px){.ourfest .wrap{width:92%}.ourfest .case-hero{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:28px}.ourfest #research-title{font-size:clamp(22px,2.7vw,30px)}.ourfest .overview-grid article{padding:20px}}
@media(max-width:700px){.ourfest{font-size:15px}.ourfest .case-hero{padding-top:104px}.ourfest h1{font-size:clamp(58px,17vw,82px)}.ourfest #research-title,.ourfest #problem-title,.ourfest #concept-title,.ourfest #prototype-title{font-size:clamp(21px,6vw,30px);line-height:1.15;white-space:normal;max-width:100%;text-wrap:balance}.ourfest .overview-grid article{padding:18px}.ourfest .app-frame{padding:14px}.ourfest .app-section figure{max-width:min(100%,280px)}.ourfest .hero-actions{align-items:flex-start}.ourfest .button{min-height:46px}.ourfest .viewer-toolbar{height:auto;min-height:64px;flex-wrap:wrap}.ourfest .viewer-toolbar p{flex:1 1 100%;white-space:normal}.ourfest .viewer-content{height:calc(100% - 92px)}.ourfest .back-to-work{position:relative;left:auto;bottom:auto;margin:0 20px 32px;max-width:calc(100% - 40px)}}
@media(max-width:380px){.ourfest .wrap{width:calc(100% - 32px)}.ourfest .case-hero{padding-top:98px}.ourfest .overview-grid article{padding:16px}.ourfest .back-to-work{margin-inline:16px}}
