/* NORANSTUDIO branding, accessibility, and progressive enhancement. */
:root{color-scheme:only light;--font-serif:'Song Myung',Georgia,'Times New Roman',serif;--font-sans:var(--font-serif);--font-mono:var(--font-serif)}
body{font-family:var(--font-serif);font-synthesis:none}
.header-inner{height:76px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.brand{display:inline-flex;align-items:flex-end;gap:1.2px;font-size:20px;letter-spacing:-.05em;font-weight:800;line-height:1;white-space:nowrap}
.brand-dot{width:4px;height:4px;border-radius:50%;background:currentColor;margin-bottom:.8px;flex:none}
.brand-footer{font-size:24px;gap:1.44px}.brand-footer .brand-dot{width:4.8px;height:4.8px;margin-bottom:.96px}
.theme-toggle{width:44px;padding:0;flex:none;cursor:pointer}.theme-toggle svg{width:18px;height:18px}
.theme-moon{display:block}.theme-sun{display:none}
[data-theme=dark] .theme-sun{display:block}[data-theme=dark] .theme-moon{display:none}
.muted{color:var(--muted)}.hero-description{max-width:470px}.service-description{max-width:420px}
.services-heading{max-width:900px}.origin-subtitle{font-size:24px}.origin-title{font-size:clamp(30px,3.5vw,46px)}
.outline-filter{position:absolute}.hero-line{white-space:normal}.hero-copy{position:relative;z-index:2}
.hero .h-hero{overflow-wrap:anywhere}.rotator>span{width:max-content;white-space:normal;overflow-wrap:anywhere;filter:none}
.rotator-text{filter:url(#rotator-hollow)}.rotator-particle{color:var(--ink)}
.hero-art{pointer-events:none}.contact-link{min-width:280px;max-width:100%}.contact-caption{font-size:14px}
.footer-description{max-width:340px;font-size:16px}.foot-link{overflow-wrap:anywhere}
.company-footer{padding-top:88px;padding-bottom:36px}
.company-footer-grid{display:grid;grid-template-columns:1fr 1fr;gap:36px 56px;align-items:start}
.company-footer-brand h2{display:flex;align-items:baseline;gap:5px;font-size:30px;line-height:1.4;font-weight:400}
.company-footer-brand .brand-dot{background:var(--accent);width:5px;height:5px}
.company-footer-brand p{margin-top:17px;color:var(--muted);font-size:17px;line-height:1.8}
.company-footer-contact{padding-top:8px;font-style:normal;color:var(--muted);font-size:16px;line-height:1.8;overflow-wrap:anywhere}
.company-footer-contact p+p{margin-top:12px}
.company-footer-contact p>span{color:var(--ink);margin-right:5px}
.company-footer-contact a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:5px;overflow-wrap:anywhere}
.company-footer-contact a:hover{text-decoration-color:var(--accent)}
[data-copy-key="footer.address"]{white-space:pre-line;color:inherit!important;margin:0!important}
[data-copy-key="contact.button"]{white-space:normal;min-height:56px;height:auto;padding-block:12px;overflow-wrap:anywhere}
@media(max-width:767px){.company-footer-grid{grid-template-columns:1fr;gap:28px}.company-footer{padding-top:64px}.company-footer-contact{padding-top:0;font-size:15px}.company-footer-brand p{font-size:16px}.company-footer .foot-bottom{margin-top:44px;font-size:12px}}
.portfolio-description{max-width:560px}.portfolio-image{aspect-ratio:16/10;display:grid;place-items:center}
.portfolio-image img{object-fit:cover;object-position:center top}.portfolio-card-title{font-size:26px}
.coming-tag{height:32px;padding:0 14px;color:var(--muted);font-size:12px}
.filter-count{opacity:.6;font-size:12.5px}.project-arrow{width:44px;height:44px;padding:0;border-radius:14px;flex:none}
button,a{touch-action:manipulation}button{cursor:pointer}
.reveal{opacity:1;transform:none;transition-delay:var(--delay,0ms)}
.motion-ready .reveal:not(.in){opacity:0;transform:translateY(18px)}
.skip-link{position:fixed;z-index:100;left:20px;top:12px;padding:12px 20px;background:var(--ink);color:var(--on-ink);border-radius:14px;transform:translateY(-200%)}
.skip-link:focus{transform:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.error-page{min-height:100svh;display:grid;place-items:center;padding:32px}.error-page .card{max-width:680px;padding:64px}
@media(max-width:767px){.portfolio-nav{display:none}.brand{font-size:18px}.hero{padding-top:128px;padding-bottom:48px}.hero-copy{max-width:640px}}
@media(max-width:420px){.brand{font-size:16px}.header-inner{gap:8px}.nav-pill{padding:4px;gap:0}.theme-toggle{width:36px}.btn-nav{padding:0 13px;font-size:13px}.hero .h-hero{font-size:clamp(27px,7.35vw,32px)}.hero-description{font-size:16px}.eyebrow{font-size:11px}.contact-link{min-width:0;width:100%}.origin-title{font-size:29px}}
@media(prefers-reduced-motion:reduce){.motion-ready .reveal:not(.in){opacity:1;transform:none}.rotator,.rotator>span{transition:none!important}}

/* Warm yellow identity: ivory, butter yellow, and brushed champagne. */
:root{
  --bg:#f0ede2;
  --panel:#fffdf5;
  --card:#f4f0e2;
  --plate:#fffaf0;
  --chip:#fffbee;
  --ink:#292a1e;
  --muted:#5d5e4d;
  --line:#9a85442b;
  --on-ink:#fffdf5;
  --glass-rgb:255,253,245;
  --marker:#e9c64545;
  --accent:#97700d;
  --brand:#e9c647;
  --accent-ink:#342b12;
  --gold-gradient:linear-gradient(120deg,#f7e8a6 0%,#efd05b 52%,#e2b74b 100%);
  --particle-highlight:#b79a37;
  --particle-mid:#987b24;
  --particle-shadow:#c2a459;
}
:root[data-theme=dark]{
  --bg:#10120d;
  --panel:#191c14;
  --card:#24271c;
  --plate:#1c2016;
  --chip:#303321;
  --ink:#fffced;
  --muted:#b4b39d;
  --line:#e5d08026;
  --on-ink:#1b1e13;
  --glass-rgb:25,28,20;
  --marker:#efd36a38;
  --accent:#e4c75e;
  --brand:#edcf62;
  --gold-gradient:linear-gradient(120deg,#fff0b3 0%,#f0d66f 48%,#dcb64e 100%);
  --particle-highlight:#fff1b5;
  --particle-mid:#efd15e;
  --particle-shadow:#b99743;
}
.hero{
  background:
    radial-gradient(ellipse 58% 88% at 89% 24%,#f0d2538c,transparent 70%),
    radial-gradient(ellipse 59% 72% at 73% 106%,#dbc89775,transparent 72%),
    radial-gradient(ellipse 50% 58% at 13% 0%,#fffdf6,transparent 82%),
    linear-gradient(118deg,#fffef9 15%,#fff9e5 57%,#f3e9c5 100%);
}
:root[data-theme=dark] .hero{
  background:
    radial-gradient(ellipse 59% 90% at 89% 27%,#ccac3642,transparent 70%),
    radial-gradient(ellipse 52% 60% at 70% 111%,#c095502e,transparent 76%),
    radial-gradient(ellipse 40% 58% at 8% 0%,#90996917,transparent 78%),
    linear-gradient(118deg,#171b13 0%,#1b1e14 52%,#28291a 100%);
}
/* Center the hero content and leave a quiet area within the full-width wave. */
.hero{isolation:isolate;justify-content:center;padding-block:clamp(112px,12svh,160px)}
.hero>.wrap{position:relative;z-index:2}
.hero .hero-copy{max-width:1000px;margin-inline:auto;text-align:center}
.hero .h-hero{font-size:clamp(36px,5.25vw,76px);line-height:1.15}
.hero .eyebrow{max-width:100%;justify-content:center;font-size:14px;line-height:1.5;letter-spacing:.04em;text-transform:none}
.hero .hero-description{max-width:720px;margin-inline:auto;font-size:18px;line-height:1.8;text-wrap:balance;white-space:pre-line}
.hero-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:14px}
.hero-actions .btn{position:relative;min-width:172px;max-width:260px;min-height:60px;height:auto;padding:12px 38px;font-size:17px;line-height:1;text-align:center;justify-content:center;align-items:center;white-space:normal;overflow-wrap:anywhere}
.hero-actions .btn>span{display:block;line-height:1}
.hero-actions .btn>svg{position:absolute;right:18px;top:50%;margin-top:-8px}
.hero .hero-art{position:absolute;inset:0;width:100%;height:100%;margin:0;aspect-ratio:auto;transform:none;z-index:0;pointer-events:none;mask-image:radial-gradient(ellipse 62% 46% at 50% 40%,#0001 10%,#0008 65%,#000 100%)}
.hero .hero-art canvas{width:100%;height:100%;display:block}
@media(max-width:767px){
  .hero{padding-block:112px}
  .hero .hero-copy{max-width:620px}
  .hero .h-hero{font-size:clamp(32px,7.5vw,42px);letter-spacing:-.045em}
  .hero .eyebrow{font-size:clamp(11px,3.1vw,13px);letter-spacing:.015em}
  .hero .hero-description{max-width:520px;font-size:16px;line-height:1.8}
  .hero-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));max-width:320px;margin-inline:auto;gap:12px}
  .hero-actions .btn{min-width:0;max-width:none;min-height:56px;height:auto;padding:12px 28px;font-size:16px}
  .hero-actions .btn>svg{right:12px;width:14px;height:14px;margin-top:-7px}
  .hero .hero-art{mask-image:linear-gradient(to bottom,transparent 10%,#0002 38%,#000 68%)}
}
.brand-dot{background:var(--brand);box-shadow:0 0 12px #e7c85233}
.eyebrow svg{color:var(--accent)}
.nav-pill{background:rgba(var(--glass-rgb),.72);backdrop-filter:blur(18px)}
.btn-black{
  background:var(--gold-gradient);
  color:var(--accent-ink);
  box-shadow:inset 0 1px 0 #ffffff70,0 3px 14px #a9811820;
}
.btn-black:hover{opacity:1;filter:brightness(1.045);box-shadow:inset 0 1px 0 #ffffff80,0 5px 22px #bc931c30}
.btn-line{background:rgba(var(--glass-rgb),.22)}
.btn-line:hover{box-shadow:inset 0 0 0 1.5px var(--accent)}
.tone-green{--card:linear-gradient(122deg,#f3efd9 0%,#f1e9c6 65%,#e9dfb5 100%);--plate:linear-gradient(145deg,#fffdf8db,#fff6d7a1)}
.tone-purple{--card:linear-gradient(122deg,#f3eeda 0%,#eee4ca 65%,#e7dcc2 100%);--plate:linear-gradient(145deg,#fffdf7db,#f6efdca1)}
.tone-pink{--card:linear-gradient(122deg,#f7efd8 0%,#efe2bd 65%,#e9d6ad 100%);--plate:linear-gradient(145deg,#fffdf7db,#fff0d3a1)}
:root[data-theme=dark] .tone-green{--card:linear-gradient(122deg,#282e1c,#333720 62%,#3a3b22);--plate:linear-gradient(145deg,#e4d88a12,#f5df8108)}
:root[data-theme=dark] .tone-purple{--card:linear-gradient(122deg,#2b2c20,#353324 62%,#3b3827);--plate:linear-gradient(145deg,#e4d88a12,#f5df8108)}
:root[data-theme=dark] .tone-pink{--card:linear-gradient(122deg,#2e2c1e,#393222 62%,#403826);--plate:linear-gradient(145deg,#e4d88a12,#f5df8108)}
.svc-card{box-shadow:inset 0 1px 0 #e0c97620}
.svc-art{box-shadow:inset 0 1px 0 #fff6cf26}
.svc-art img{filter:grayscale(1) sepia(.36) saturate(1.2)}
:root[data-theme=dark] .svc-art img{filter:grayscale(1) sepia(.42) saturate(1.25) brightness(.93)}
.timeline .card{background:linear-gradient(125deg,#f6f2e4,#f1e9d1);box-shadow:inset 0 1px 0 #fffef4}
:root[data-theme=dark] .timeline .card{background:linear-gradient(125deg,#262b1d,#302f20);box-shadow:inset 0 1px 0 #efd98714}
.origin-word{color:var(--accent)}
.tl-num{color:var(--accent);background:var(--panel)}
.cta-card{
  background:radial-gradient(ellipse at 86% 0%,#edd16a80,transparent 62%),linear-gradient(120deg,#f4efdc,#f3e5ae 68%,#e9d492);
  box-shadow:inset 0 1px 0 #fffef5;
}
:root[data-theme=dark] .cta-card{
  background:radial-gradient(ellipse at 86% 0%,#d7b43726,transparent 66%),linear-gradient(120deg,#272e1d,#363822 68%,#464127);
  box-shadow:inset 0 1px 0 #f4df861c;
}
.portfolio-image{background:linear-gradient(138deg,#fffdf7,#f4ecd1)}
:root[data-theme=dark] .portfolio-image{background:linear-gradient(138deg,#20261a,#302f1e)}
.tag{background:var(--chip);color:var(--accent)}
.foot-mail{background:rgba(var(--glass-rgb),.35)}
.foot-mail svg{color:var(--accent)}
@media(max-width:420px){.contact-link{padding:0 12px;gap:8px;font-size:14px}}

/* A focused contact dialog, using the same ivory and champagne palette. */
.contact-modal-open{overflow:hidden;scrollbar-gutter:stable}
.contact-dialog{
  width:min(560px,calc(100% - 32px));max-width:none;max-height:calc(100dvh - 40px);
  margin:auto;padding:0;border:1px solid var(--line);border-radius:28px;
  background:radial-gradient(ellipse at 100% 0%,#eed47430,transparent 52%),var(--panel);
  color:var(--ink);box-shadow:0 28px 100px #16190938;overflow:auto;overscroll-behavior:contain;
}
.contact-dialog[open]{animation:contact-appear .22s ease-out}
.contact-dialog::backdrop{background:#151a145e;backdrop-filter:blur(8px)}
.contact-dialog-inner{position:relative;padding:36px}
.contact-close{
  position:absolute;top:20px;right:20px;display:grid;place-items:center;
  width:40px;height:40px;border:1px solid var(--line);border-radius:50%;
  color:var(--muted);background:rgba(var(--glass-rgb),.5);transition:background .15s,color .15s;
}
.contact-close:hover{color:var(--ink);background:var(--card)}
.contact-close svg{width:18px;height:18px}
.contact-kicker{display:flex;align-items:center;gap:8px;color:var(--accent);font-family:var(--font-serif);font-size:11px;letter-spacing:.12em;font-weight:400;line-height:1.5}
.contact-kicker svg{width:17px;height:17px}
.contact-dialog h2{font-size:30px;line-height:1.35;letter-spacing:-.055em;font-weight:700;margin-top:18px}
#contact-intro{color:var(--muted);font-size:14px;line-height:1.65;margin-top:8px;word-break:keep-all}
#contact-form{margin-top:28px}
.contact-fields{margin:0;padding:0;border:0;min-width:0;display:grid;gap:20px}
.contact-field{display:flex;flex-direction:column;gap:8px;min-width:0}
.contact-field label{font-size:13px;font-weight:600;line-height:1.5}
.contact-required{color:var(--accent);margin-left:4px;font-weight:500}
.contact-optional{font-size:11px;font-weight:400;color:var(--muted);margin-left:4px}
.contact-field input,.contact-field textarea{
  box-sizing:border-box;width:100%;min-width:0;border:1px solid var(--line);border-radius:12px;
  background:rgba(var(--glass-rgb),.62);color:var(--ink);font:inherit;font-size:14px;line-height:1.6;
  padding:13px 15px;outline:none;transition:border-color .15s,box-shadow .15s;
}
.contact-field input{height:48px}
.contact-field textarea{min-height:144px;max-height:320px;resize:vertical}
.contact-field input::placeholder,.contact-field textarea::placeholder{color:var(--muted);opacity:.78}
.contact-field input:focus,.contact-field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--marker)}
.contact-field input:user-invalid,.contact-field textarea:user-invalid{border-color:#b94a32}
.contact-count{font-family:var(--font-serif);font-size:10px;line-height:1.5;color:var(--muted);text-align:right;margin-top:-2px}
.contact-honey{display:none}
.contact-status{margin-top:14px;padding:11px 13px;border-radius:10px;font-size:13px;line-height:1.6;color:var(--muted);background:var(--card);word-break:keep-all}
.contact-status[data-state=error]{color:#9b3d2c;background:#ae4b3910}
[data-theme=dark] .contact-status[data-state=error]{color:#ffb9a6;background:#ffa8840e}
.contact-actions{display:flex;align-items:center;justify-content:flex-end;gap:20px;margin-top:22px;padding-top:22px;border-top:1px solid var(--line)}
.contact-cancel{height:44px;padding:0 10px;font-size:14px;color:var(--muted)}
.contact-cancel:hover{color:var(--ink)}
.contact-submit{height:48px;min-width:136px;padding:0 22px;gap:12px;border-radius:14px;font-size:14px}
.contact-submit:disabled{cursor:wait;opacity:.7;filter:none}
.contact-fields:disabled{opacity:.7}
.contact-spinner{width:15px;height:15px;border:1.5px solid currentColor;border-right-color:transparent;border-radius:50%;animation:contact-spin .7s linear infinite}
.contact-spinner:not([hidden])~svg{display:none}
.contact-success{text-align:center;padding:38px 0 12px}
.contact-success-icon{display:grid;place-items:center;width:72px;height:72px;margin:0 auto 28px;border-radius:24px;background:var(--gold-gradient);color:var(--accent-ink);box-shadow:0 8px 28px #aa831521}
.contact-success-icon svg{width:30px;height:30px;stroke-width:1.8}
.contact-success .contact-kicker{justify-content:center}
.contact-success h2{margin-top:12px;font-size:27px}
.contact-success p:not(.contact-kicker){margin-top:12px;color:var(--muted);font-size:14px;line-height:1.7;word-break:keep-all}
.contact-success .btn{margin-top:30px;min-width:140px;height:48px;font-size:14px;border-radius:14px}
.contact-dialog [hidden]{display:none!important}
.foot-link[data-contact-open]{text-align:left}
@keyframes contact-appear{from{opacity:0;transform:translateY(12px) scale(.985)}to{opacity:1;transform:none}}
@keyframes contact-spin{to{transform:rotate(360deg)}}
@media(max-width:600px){
  .contact-dialog{width:calc(100% - 24px);max-height:calc(100dvh - 24px);border-radius:22px}
  .contact-dialog-inner{padding:28px 24px}
  .contact-close{top:16px;right:16px}
  .contact-dialog h2{font-size:27px;margin-top:16px}
  #contact-intro{font-size:13px}
  #contact-form{margin-top:24px}
  .contact-field input,.contact-field textarea{font-size:16px;padding:12px}
  .contact-field input::placeholder,.contact-field textarea::placeholder{font-size:13px}
  .contact-field textarea{min-height:132px}
  .contact-actions{margin-top:18px;padding-top:18px}
  .contact-success h2{font-size:24px}
}
@media(prefers-reduced-motion:reduce){.contact-dialog[open],.contact-spinner{animation:none}}
