/* ==========================================================================
   Mago Solutions, app.css (components: services, work, why, advisory,
   contact, footer, mobile menu, reveals, motion/low-fx switches)
   ========================================================================== */

/* ---------- services index ---------- */
.services__layout{display:grid;grid-template-columns:34% minmax(0,1fr);gap:clamp(32px,5vw,72px);align-items:start}
.services__side{position:sticky;top:110px}
.services__side .section__head{margin-bottom:28px}
.services__nav{display:flex;flex-direction:column;gap:4px}
.services__nav a{display:flex;gap:14px;align-items:baseline;padding:10px 14px;border-radius:12px;color:var(--ink-2);font-size:.95rem;border-left:1px solid transparent;transition:color .3s,background .3s,border-color .3s}
.services__nav a:hover{background:rgba(255,255,255,.04);color:var(--ink)}
.services__nav .n{font-family:var(--font-mono);font-size:.7rem;color:var(--amber)}
.services__nav a.is-active{color:var(--ink);border-left-color:var(--amber);background:rgba(255,181,71,.06)}
.services__groups{display:grid;gap:56px;min-width:0}
.sgroup{scroll-margin-top:110px}
.sgroup__head{display:flex;align-items:baseline;gap:16px;padding-bottom:18px;border-bottom:1px solid var(--line-2)}
.sgroup__num{font-family:var(--font-mono);font-size:.75rem;color:var(--amber)}
.sgroup__title{font-family:var(--font-display);font-weight:700;font-size:clamp(1.5rem,2.6vw,2.1rem);letter-spacing:-.02em}
.srow{display:grid;grid-template-columns:minmax(0,.42fr) minmax(0,.58fr);gap:24px;padding:22px 0;border-top:1px solid var(--line);position:relative}
.srow:first-child{border-top:none}
.srow::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--grad);transform:scaleX(0);transform-origin:left;transition:transform .6s var(--ease-out)}
.srow:hover::after{transform:scaleX(1)}
.srow__name{font-family:var(--font-display);font-weight:700;font-size:1.12rem;letter-spacing:-.01em;transition:color .3s}
.srow:hover .srow__name{color:var(--amber)}
.srow__desc{color:var(--ink-2);font-size:.95rem;line-height:1.55}
.sgroup--quiet{opacity:.85}
.sgroup--quiet .srow{padding:15px 0}
.sgroup--quiet .srow__name{font-size:1rem;font-weight:600}
.sgroup--quiet .srow__desc{color:var(--mute);font-size:.9rem}
@media (max-width:900px){
  .services__layout{grid-template-columns:1fr}
  .services__side{position:static}
  .services__nav{flex-direction:row;overflow-x:auto;gap:8px;padding-bottom:6px;scrollbar-width:none}
  .services__nav::-webkit-scrollbar{display:none}
  .services__nav a{white-space:nowrap;border-left:none;border:1px solid var(--line-2);border-radius:999px;padding:9px 14px}
  .services__nav a.is-active{border-color:var(--amber)}
  .srow{grid-template-columns:1fr;gap:6px}
}

/* ---------- work ---------- */
.work__band{margin:48px 0 64px;padding:34px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:grid;gap:28px}
.marquee{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)}
.marquee__track{display:flex;align-items:center;gap:72px;width:max-content;padding-right:72px;animation:marquee 46s linear infinite;will-change:transform}
.marquee--reverse .marquee__track{animation-direction:reverse}
.marquee:hover .marquee__track{animation-play-state:paused}
@keyframes marquee{to{transform:translateX(-50%)}}
.marquee__item{flex:none}
.marquee__item img{height:32px;width:auto;max-width:150px;object-fit:contain;opacity:.5;filter:brightness(0) invert(1);transition:opacity .3s}
.marquee__item:hover img{opacity:1}
.cases{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}
.case{padding:clamp(24px,3vw,36px);border-radius:var(--radius);border:1px solid var(--line);background:rgba(255,255,255,.02);min-height:300px;display:flex;flex-direction:column;position:relative;overflow:hidden;transition:border-color .4s,transform .8s var(--ease-out)}
.case:hover{border-color:rgba(255,181,71,.3)}
.case::before{content:"";position:absolute;inset:0;background:radial-gradient(540px circle at var(--mx,50%) var(--my,50%),rgba(255,181,71,.10),transparent 42%);opacity:0;transition:opacity .4s;pointer-events:none}
.case:hover::before{opacity:1}
.case>*{position:relative}
.case__cat{font-family:var(--font-mono);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--mute)}
.case__title{font-family:var(--font-display);font-weight:700;font-size:clamp(1.35rem,2vw,1.75rem);letter-spacing:-.02em;line-height:1.05;margin:14px 0 12px}
.case__body{color:var(--ink-2);font-size:.95rem;line-height:1.55;max-width:46ch}
.case__result{margin-top:auto;padding-top:28px;font-family:var(--font-display);font-weight:700;font-size:clamp(2.1rem,4vw,3.2rem);letter-spacing:-.035em;line-height:1}
.case__result small{display:block;font-family:var(--font-mono);font-weight:400;font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--mute);margin-top:8px;line-height:1.4}
@media (max-width:900px){.cases{grid-template-columns:1fr}.case{min-height:auto}}
@media (max-width:560px){.marquee__track{gap:44px}.marquee__item img{height:26px}}

/* ---------- why ---------- */
.principles{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.principle{padding:28px 24px;border-radius:18px;border:1px solid var(--line);background:rgba(255,255,255,.02);display:flex;flex-direction:column;gap:14px;min-height:250px;transition:transform .6s var(--ease-out),border-color .4s}
.principle:hover{transform:translateY(-4px);border-color:rgba(255,181,71,.35)}
.principle__icon{width:42px;height:42px;border-radius:12px;border:1px solid var(--line-2);display:grid;place-items:center;color:var(--amber);background:rgba(255,181,71,.06)}
.principle__icon svg{width:18px;height:18px}
.principle h3{font-family:var(--font-display);font-weight:700;font-size:1.2rem;letter-spacing:-.01em;margin-top:6px}
.principle p{color:var(--ink-2);font-size:.93rem;line-height:1.55}
.founder{margin-top:20px;display:flex;align-items:center;gap:18px;padding:22px 24px;border-radius:18px;border:1px solid var(--line);background:rgba(255,255,255,.02)}
.founder__mark{width:48px;height:48px;border-radius:50%;flex:none;display:grid;place-items:center;background:var(--grad);color:#160a05;font:800 1.1rem var(--font-display)}
.founder p{color:var(--ink-2);font-size:.95rem;line-height:1.5}
.founder b{color:var(--ink);font-weight:600}
@media (max-width:900px){.principles{grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.principles{grid-template-columns:1fr}.principle{min-height:auto}.founder{align-items:flex-start}}

/* ---------- advisory band ---------- */
.advisory{padding:0 0 var(--section)}
.advisory__card{border-radius:28px;padding:clamp(36px,6vw,72px);position:relative;overflow:hidden;background:linear-gradient(135deg,rgba(255,106,61,.12),rgba(123,97,255,.10));display:grid;grid-template-columns:1.3fr .7fr;align-items:center;gap:40px}
.advisory__card::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;background:var(--grad);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;opacity:.7}
.advisory__card>*{position:relative}
.advisory p{font-size:clamp(1rem,1.3vw,1.15rem);line-height:1.55;color:var(--ink-2);margin-top:18px;max-width:54ch}
.advisory__cta{justify-self:end}
@media (max-width:900px){.advisory__card{grid-template-columns:1fr}.advisory__cta{justify-self:start}}

/* ---------- contact ---------- */
.contact__layout{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(32px,6vw,80px);align-items:start}
.contact__email{display:inline-block;margin-top:8px;font-family:var(--font-display);font-weight:700;font-size:clamp(1.2rem,2.4vw,1.8rem);letter-spacing:-.02em;border-bottom:1px solid var(--line-2);padding-bottom:4px;transition:border-color .3s,color .3s;color:inherit}
.contact__email:hover{border-color:var(--amber);color:var(--amber)}
.contact__steps{margin-top:36px}
.contact__steps li{display:grid;grid-template-columns:32px 1fr;gap:14px;padding:16px 0;border-top:1px solid var(--line);font-size:.95rem;line-height:1.5;color:var(--ink-2)}
.contact__steps li:last-child{border-bottom:1px solid var(--line)}
.contact__steps b{font-family:var(--font-mono);color:var(--amber);font-weight:500;font-size:.75rem;padding-top:.25em}
.form{padding:clamp(24px,3vw,36px);border-radius:24px;border:1px solid var(--line);background:rgba(255,255,255,.02);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.form__fields{display:flex;flex-direction:column;gap:16px}
.form__row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.field label{display:block;font-family:var(--font-mono);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--mute);margin-bottom:8px}
.field input,.field textarea{width:100%;background:rgba(255,255,255,.03);border:1px solid var(--line-2);border-radius:12px;padding:14px 16px;color:var(--ink);font:inherit;font-size:1rem;line-height:1.4;transition:border-color .3s,box-shadow .3s}
.field input::placeholder,.field textarea::placeholder{color:rgba(139,145,165,.7)}
.field input:focus,.field textarea:focus{outline:none;border-color:var(--amber);box-shadow:0 0 0 3px rgba(255,181,71,.15)}
.field textarea{min-height:140px;resize:vertical}
.field--hp{position:absolute;left:-9999px;opacity:0;height:0;overflow:hidden}
.form__foot{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:22px}
.form__note{font-size:.8rem;color:var(--mute)}
.form__status{display:none;margin-top:14px;font-size:.88rem}
.form__status.is-ok{color:var(--mint)}
.form__status.is-err{color:var(--ember)}
button:disabled{opacity:.6}
@media (max-width:900px){.contact__layout{grid-template-columns:1fr}}
@media (max-width:560px){.form__row{grid-template-columns:1fr}}

/* ---------- footer ---------- */
.footer{padding:72px 0 28px;border-top:1px solid var(--line);position:relative;overflow:hidden;z-index:1}
.footer__mark{font-family:var(--font-display);font-weight:700;font-size:clamp(4.6rem,21vw,19rem);line-height:.8;letter-spacing:-.05em;text-transform:uppercase;margin:0 0 44px -.04em;user-select:none;color:transparent;-webkit-text-stroke:1px rgba(233,235,241,.14);background:var(--grad);-webkit-background-clip:text;background-clip:text;background-size:200% 100%;background-repeat:no-repeat;background-position:var(--fill,100%) 0}
.footer__mark{background-image:linear-gradient(90deg,#ff6a3d 0%,#ffb547 50%,rgba(255,181,71,0) 50.1%)}
.footer__grid{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap}
.footer__tag{font-size:.95rem;color:var(--ink-2);max-width:36ch;line-height:1.5}
.footer__links{display:flex;gap:20px;flex-wrap:wrap}
.footer__links a{font-size:.9rem;color:var(--ink-2);transition:color .3s}
.footer__links a:hover{color:var(--ink)}
.footer__meta{margin-top:36px;padding-top:20px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-family:var(--font-mono);font-size:.68rem;letter-spacing:.08em;color:var(--mute)}
.footer__meta button{font:inherit;color:inherit;letter-spacing:inherit;text-decoration:underline;text-underline-offset:3px}
@media (max-width:900px){.footer__grid{flex-direction:column;align-items:flex-start}}

/* ---------- mobile menu ---------- */
.menu{position:fixed;inset:0;z-index:99;background:rgba(7,8,12,.94);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);display:flex;flex-direction:column;justify-content:center;padding:var(--gutter);opacity:0;visibility:hidden;transition:opacity .45s,visibility .45s}
.menu.is-open{opacity:1;visibility:visible}
.menu a{font-family:var(--font-display);font-weight:700;font-size:clamp(2.4rem,11vw,4rem);line-height:1.1;letter-spacing:-.03em;padding:.08em 0;transform:translateY(28px);opacity:0;transition:transform .7s var(--ease-out),opacity .6s}
.menu.is-open a{transform:none;opacity:1}
.menu.is-open a:nth-child(1){transition-delay:.05s}
.menu.is-open a:nth-child(2){transition-delay:.11s}
.menu.is-open a:nth-child(3){transition-delay:.17s}
.menu.is-open a:nth-child(4){transition-delay:.23s}
.menu.is-open a:nth-child(5){transition-delay:.29s}
.menu.is-open a:nth-child(6){transition-delay:.35s}
.menu a.grad{-webkit-text-fill-color:transparent}
.menu__foot{margin-top:40px;font-family:var(--font-mono);font-size:.7rem;letter-spacing:.1em;color:var(--mute)}

/* ---------- motion toggle ---------- */
.motion-btn{width:40px;height:40px;border-radius:50%;border:1px solid var(--line-2);display:grid;place-items:center;color:var(--ink-2);background:rgba(255,255,255,.03);transition:color .3s,border-color .3s}
.motion-btn:hover{color:var(--ink);border-color:rgba(233,235,241,.34)}
.motion-btn svg{width:16px;height:16px}
.motion-btn .ico-play{display:none}
html.motion-off .motion-btn .ico-pause{display:none}
html.motion-off .motion-btn .ico-play{display:block}
html.motion-off .motion-btn{color:var(--amber);border-color:rgba(255,181,71,.5)}

/* ---------- reveals (only when JS is running; content is visible without it) ---------- */
html.js [data-reveal]{opacity:0;transform:translateY(28px);transition:opacity .9s var(--ease-out),transform .9s var(--ease-out)}
html.js [data-reveal].is-in{opacity:1;transform:none}
html.js [data-reveal-group]>.rv{opacity:0;transform:translateY(28px);transition:opacity .9s var(--ease-out),transform .9s var(--ease-out);transition-delay:calc(var(--i,0)*80ms)}
html.js [data-reveal-group]>.rv.is-in{opacity:1;transform:none;transition-delay:calc(var(--i,0)*80ms)}
html.js [data-reveal-group]>.principle.rv.is-in:hover{transform:translateY(-4px);transition-delay:0s}

/* ---------- motion off (user toggle) and low-fx (slow device) ---------- */
html.motion-off .marquee__track,html.motion-off .aurora span,html.motion-off .grain,html.motion-off .scroll-cue i::after,
html.motion-off .chip__pulse::after,html.motion-off .room__bar .live::before,html.motion-off .pillar__art *{animation-play-state:paused!important}
html.motion-off .cursor,html.motion-off .cursor-ring{display:none}
html.motion-off body.has-cursor,html.motion-off body.has-cursor a,html.motion-off body.has-cursor button{cursor:auto}
html.low-fx .grain{animation:none;opacity:.035}
html.low-fx .aurora span{filter:blur(50px);opacity:.26}
html.low-fx .nav.is-scrolled .nav__pill,html.low-fx .form,html.low-fx .chip,html.low-fx .btn--ghost{backdrop-filter:none;-webkit-backdrop-filter:none;background:rgba(11,13,20,.9)}

@media (prefers-reduced-motion:reduce){
  .marquee__track{animation:none}
  html.js [data-reveal],html.js [data-reveal-group]>.rv{opacity:1;transform:none;transition:none}
}
