/* =========================================================
   PIUS — One-page site
   Tokens
   ========================================================= */
:root{
  --logo-mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%22103.914 199.402 189.59 194.9%22%3E%3Cg fill=%22%23fff%22%3E%3Cpath d=%22M 169.63 275.55 L 191.73 284.03 L 191.73 358.21 C 191.73 383.19 174.09 393.10 147.79 383.00 C 121.34 372.85 103.91 349.48 103.91 324.5 L 103.91 250.32 L 125.96 258.78 L 125.96 330.95 C 125.96 344.22 134.62 357.03 147.79 362.09 C 161.02 367.16 169.63 360.99 169.63 347.71 Z M 169.63 275.55%22/%3E%3Cpath d=%22M 293.50 234.70 L 202.68 279.00 L 184.33 271.59 L 275.16 227.29 Z M 293.50 234.70%22/%3E%3Cpath d=%22M 270.44 286.02 C 269.68 277.41 263.58 275.92 253.75 282.07 C 243.58 288.42 237.90 297.49 237.90 305.02 C 237.76 313.47 245 312.63 253.37 309.69 L 262.12 306.73 C 278.67 300.79 291.01 303.06 291.11 322.07 C 291.01 343 277.20 364.95 253.60 379.70 C 230.24 394.30 215.29 390.87 214.73 366.80 L 234.26 354.59 C 234.92 365.66 242.67 366.56 253.37 359.88 C 263.91 353.29 270.73 343.29 270.77 334.67 C 270.73 326.95 264.76 327.05 254.22 330.57 L 243.62 334.12 C 227.30 339.64 217.23 336.34 217.28 319.46 C 217.18 298.83 232.75 275.33 253.89 262.12 C 275.36 248.71 289.50 253.87 289.78 273.94 Z M 270.44 286.02%22/%3E%3Cpath d=%22M 169.65 227.05 L 183.37 232.32 C 194.93 236.76 206.98 236.17 216.37 232.18 C 225.80 228.18 226.47 223.37 214.86 218.91 L 201.19 213.67 Z M 103.91 239.19 L 197.67 199.40 L 234.46 213.52 C 255.84 221.73 254.96 232.01 236.41 239.88 C 217.78 247.79 192.44 248.5 170.83 240.20 L 153.94 233.72 L 123.41 246.68 Z M 103.91 239.19%22/%3E%3C/g%3E%3C/svg%3E");
  --logo-line:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%22103.914 199.402 189.59 194.9%22%3E%3Cg fill=%22none%22 stroke=%22%23fff%22 stroke-width=%22.7%22%3E%3Cpath d=%22M 169.63 275.55 L 191.73 284.03 L 191.73 358.21 C 191.73 383.19 174.09 393.10 147.79 383.00 C 121.34 372.85 103.91 349.48 103.91 324.5 L 103.91 250.32 L 125.96 258.78 L 125.96 330.95 C 125.96 344.22 134.62 357.03 147.79 362.09 C 161.02 367.16 169.63 360.99 169.63 347.71 Z M 169.63 275.55%22/%3E%3Cpath d=%22M 293.50 234.70 L 202.68 279.00 L 184.33 271.59 L 275.16 227.29 Z M 293.50 234.70%22/%3E%3Cpath d=%22M 270.44 286.02 C 269.68 277.41 263.58 275.92 253.75 282.07 C 243.58 288.42 237.90 297.49 237.90 305.02 C 237.76 313.47 245 312.63 253.37 309.69 L 262.12 306.73 C 278.67 300.79 291.01 303.06 291.11 322.07 C 291.01 343 277.20 364.95 253.60 379.70 C 230.24 394.30 215.29 390.87 214.73 366.80 L 234.26 354.59 C 234.92 365.66 242.67 366.56 253.37 359.88 C 263.91 353.29 270.73 343.29 270.77 334.67 C 270.73 326.95 264.76 327.05 254.22 330.57 L 243.62 334.12 C 227.30 339.64 217.23 336.34 217.28 319.46 C 217.18 298.83 232.75 275.33 253.89 262.12 C 275.36 248.71 289.50 253.87 289.78 273.94 Z M 270.44 286.02%22/%3E%3Cpath d=%22M 169.65 227.05 L 183.37 232.32 C 194.93 236.76 206.98 236.17 216.37 232.18 C 225.80 228.18 226.47 223.37 214.86 218.91 L 201.19 213.67 Z M 103.91 239.19 L 197.67 199.40 L 234.46 213.52 C 255.84 221.73 254.96 232.01 236.41 239.88 C 217.78 247.79 192.44 248.5 170.83 240.20 L 153.94 233.72 L 123.41 246.68 Z M 103.91 239.19%22/%3E%3C/g%3E%3C/svg%3E");
  --black:#000000;
  --graphite:#07090c;
  --ink:#eef1f5;
  --ink-2:rgba(238,241,245,.72);
  --ink-3:rgba(238,241,245,.48);
  --ink-4:rgba(238,241,245,.24);
  --line:rgba(238,241,245,.10);
  --line-2:rgba(238,241,245,.18);
  --ice:#bfd6ff;
  --ice-rgb:191,214,255;
  --glass:rgba(255,255,255,.035);
  --glass-2:rgba(255,255,255,.065);

  --f-disp:"Unbounded","IBM Plex Sans KR","Apple SD Gothic Neo","Malgun Gothic",system-ui,sans-serif;
  --f-body:"IBM Plex Sans KR","Apple SD Gothic Neo","Malgun Gothic",system-ui,sans-serif;

  --t-hero:clamp(2.9rem,1.1rem + 8.4vw,10.5rem);
  --t-d1:clamp(1.9rem,.9rem + 4.4vw,5.4rem);
  --t-d2:clamp(1.55rem,.95rem + 2.5vw,3.3rem);
  --t-h3:clamp(1.3rem,1rem + 1.1vw,2rem);
  --t-body:clamp(.98rem,.93rem + .22vw,1.12rem);
  --t-sm:.84rem;
  --t-xs:.74rem;

  --gut:clamp(20px,5.2vw,84px);
  --maxw:1480px;
  --hdr:64px;
  --e-out:cubic-bezier(.16,1,.3,1);
  --e-io:cubic-bezier(.65,0,.35,1);

  color-scheme:dark only;
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
  background:var(--black);
}
@media (max-width:899px){ :root{ --hdr:56px; } }

*,*::before,*::after{ box-sizing:border-box; }
html[lang="ja"]{
  --f-body:"IBM Plex Sans JP","Hiragino Sans","Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,system-ui,sans-serif;
  --f-disp:"Unbounded","IBM Plex Sans JP","Hiragino Sans","Yu Gothic",system-ui,sans-serif;
}
html[lang="ja"] body{ word-break:normal; line-break:strict; overflow-wrap:break-word; }
html[lang="ja"] :is(h1,h2,h3,p,li,label,b,span,small,dd){ word-break:auto-phrase; }
h2,h3,.biz__title,.und__title .rv > span{ text-wrap:balance; }
html[lang="en"] body{ word-break:normal; }
html[lang="en"] .pl__lbl em{ display:none; }
html{
  scroll-padding-top:calc(env(safe-area-inset-top,0px) + var(--hdr));
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
  background:var(--black);
  overflow-x:clip;
}
html.is-locked{ overflow:hidden; }
body{
  margin:0;
  background:var(--black);
  color:var(--ink);
  font-family:var(--f-body);
  font-size:var(--t-body);
  line-height:1.7;
  font-weight:400;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  overflow-x:clip;
  word-break:keep-all;
  overflow-wrap:break-word;
}
img,svg,canvas{ display:block; max-width:100%; }
a{ color:inherit; text-decoration:none; }
button{ font:inherit; color:inherit; background:none; border:0; padding:0; cursor:pointer; }
p{ margin:0; }
h1,h2,h3,h4{ margin:0; font-weight:inherit; }
ol,ul{ margin:0; padding:0; list-style:none; }
::selection{ background:rgba(var(--ice-rgb),.28); color:#fff; }
:focus-visible{ outline:1.5px solid var(--ice); outline-offset:3px; border-radius:6px; }
.sr{ position:absolute!important; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
.skip{ position:fixed; left:12px; top:-60px; z-index:200; padding:10px 16px; background:#fff; color:#000; border-radius:8px; }
.skip:focus{ top:12px; }

.wrap{ width:100%; max-width:var(--maxw); margin-inline:auto; padding-inline:var(--gut); }
.disp{ font-family:var(--f-disp); font-weight:300; letter-spacing:-.035em; line-height:1.02; }

/* =========================================================
   Atmosphere (fixed, scroll-tinted) + cursor light + grain
   ========================================================= */
.atmos{ position:fixed; inset:0; z-index:0; pointer-events:none; background:var(--black); }
.atmos__glow{
  position:absolute; inset:-20%;
  background:
    radial-gradient(40% 36% at var(--ax,70%) var(--ay,30%), rgba(var(--ice-rgb),var(--ai,.05)), transparent 70%),
    radial-gradient(50% 40% at var(--bx,20%) var(--by,90%), rgba(255,255,255,var(--bi,.025)), transparent 70%),
    linear-gradient(180deg, var(--black), var(--tone,#000));
  transition:background .2s linear;
}
.atmos__grain{
  position:absolute; inset:0; opacity:.07; mix-blend-mode:screen;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .55 0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");
}
.cursor-light{
  position:fixed; left:0; top:0; z-index:1; pointer-events:none;
  width:560px; height:560px; margin:-280px 0 0 -280px; border-radius:50%;
  background:radial-gradient(circle, rgba(var(--ice-rgb),.07), rgba(var(--ice-rgb),.02) 40%, transparent 68%);
  opacity:0; transition:opacity .6s; will-change:transform;
}
@media (hover:hover) and (pointer:fine){ .cursor-light.on{ opacity:1; } }
main,.ftr{ position:relative; z-index:2; }

/* =========================================================
   Splash
   ========================================================= */
.splash{
  position:fixed; inset:0; z-index:120;
  display:grid; place-items:center; pointer-events:auto;
}
.splash::before{ content:""; position:absolute; inset:0; background:#000; transition:opacity 1s var(--e-io); }
.splash.is-out{ pointer-events:none; }
.splash.is-out::before{ opacity:0; }
.splash.is-gone{ visibility:hidden; }
.splash.is-out .splash__word{ opacity:0; transform:translateX(-12px); }
.splash__stage{ position:relative; display:flex; align-items:center; gap:clamp(18px,3.4vw,44px); }
.splash__mark{ width:clamp(120px,20vw,220px); height:auto; overflow:visible; transform-origin:50% 50%; will-change:transform; }
.splash__mark .sp{ transform-box:fill-box; transform-origin:center; }
.splash__mark .sp__fill{ fill:#fff; opacity:0; }
.splash__mark .sp__line{ fill:none; stroke:rgba(255,255,255,.9); stroke-width:.9; stroke-dasharray:1 1; stroke-dashoffset:1; vector-effect:non-scaling-stroke; }
.splash__word{ display:flex; flex-direction:column; gap:12px; transition:opacity .5s, transform .6s var(--e-out); }
.splash__wm{ width:clamp(120px,19vw,220px); height:auto; fill:#fff; clip-path:inset(0 100% 0 0); }
.splash__tag{ width:clamp(120px,19.6vw,228px); height:auto; color:#fff; opacity:0; }
.splash__skip{ position:absolute; right:var(--gut); bottom:calc(24px + env(safe-area-inset-bottom,0px)); font-size:var(--t-xs); color:var(--ink-3); letter-spacing:.04em; padding:8px 4px; }
@media (max-width:599px){
  .splash__stage{ flex-direction:column; gap:22px; }
  .splash__word{ align-items:center; }
  .splash.is-out .splash__word{ transform:translateY(8px); }
}

/* =========================================================
   Header
   ========================================================= */
.hdr{
  position:fixed; left:0; right:0; top:0; z-index:90;
  padding-top:env(safe-area-inset-top,0px);
  background:#000;
  transform:translateY(-110%);
  transition:transform .9s var(--e-out), box-shadow .4s;
}
.hdr.is-in{ transform:none; }
.hdr.is-scrolled{ box-shadow:0 1px 0 var(--line), 0 20px 40px -20px rgba(0,0,0,.9); }
.hdr__in{
  height:var(--hdr); max-width:var(--maxw); margin-inline:auto; padding-inline:var(--gut);
  display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:16px;
}
.hdr__logo{ justify-self:start; display:flex; align-items:center; height:100%; }
.hdr__logo svg{ height:34px; width:auto; fill:#fff; }
.hdr__nav{ position:relative; display:flex; gap:4px; padding:4px; border-radius:999px; border:1px solid var(--line); background:rgba(255,255,255,.02); }
.hdr__nav a{
  position:relative; z-index:1; padding:7px 16px; border-radius:999px;
  font-family:var(--f-disp); font-size:.78rem; letter-spacing:.01em; color:var(--ink-3);
  transition:color .35s;
}
.hdr__nav a:hover,.hdr__nav a.is-active{ color:var(--ink); }
.hdr__pill{
  position:absolute; top:4px; bottom:4px; left:0; width:0; border-radius:999px; z-index:0;
  background:linear-gradient(180deg, rgba(255,255,255,.12), rgba(255,255,255,.04));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18), inset 0 0 0 1px rgba(255,255,255,.06);
  opacity:0; transition:transform .6s var(--e-out), width .6s var(--e-out), opacity .4s;
}
.hdr__act{ justify-self:end; display:flex; align-items:center; gap:14px; }
.btn-cta{
  position:relative; overflow:hidden; isolation:isolate;
  display:inline-flex; align-items:center; height:36px; padding:0 18px; border-radius:999px;
  font-size:.84rem; font-weight:500; color:#000; background:var(--ink);
  transition:transform .4s var(--e-out);
}
.btn-cta::after{
  content:""; position:absolute; inset:0; z-index:-1;
  background:linear-gradient(110deg, transparent 30%, rgba(var(--ice-rgb),.9) 50%, transparent 70%);
  transform:translateX(-120%); transition:transform .9s var(--e-out);
}
.btn-cta:hover::after{ transform:translateX(120%); }
.btn-cta:active{ transform:scale(.97); }
.lang{ display:flex; align-items:center; gap:2px; font-family:var(--f-disp); font-size:.72rem; color:var(--ink-4); }
.lang button{ padding:8px 6px; color:var(--ink-3); transition:color .3s; }
.lang button:hover{ color:var(--ink); }
.lang button.is-on{ color:var(--ink); }
.lang button{ position:relative; }
.lang button.is-on::after{ content:""; position:absolute; left:6px; right:6px; bottom:3px; height:1px; background:var(--ice); }
.hdr__menu{ display:none; width:40px; height:40px; border-radius:50%; border:1px solid var(--line-2); position:relative; }
.hdr__menu span:not(.sr){ position:absolute; left:12px; right:12px; height:1.5px; background:var(--ink); border-radius:2px; transition:transform .5s var(--e-out); }
.hdr__menu span:nth-child(1){ top:16px; } .hdr__menu span:nth-child(2){ top:22px; }
.hdr__menu[aria-expanded="true"] span:nth-child(1){ transform:translateY(3px) rotate(45deg); }
.hdr__menu[aria-expanded="true"] span:nth-child(2){ transform:translateY(-3px) rotate(-45deg); }
.hdr__progress{ position:absolute; left:0; right:0; bottom:0; height:1px; overflow:hidden; }
.hdr__progress i{ display:block; height:100%; width:100%; transform-origin:0 50%; transform:scaleX(0); background:linear-gradient(90deg, transparent, rgba(var(--ice-rgb),.9)); }

.mnav{
  position:fixed; inset:0; z-index:85; background:rgba(0,0,0,.94);
  -webkit-backdrop-filter:blur(18px); backdrop-filter:blur(18px);
  padding:calc(var(--hdr) + env(safe-area-inset-top,0px) + 32px) var(--gut) calc(32px + env(safe-area-inset-bottom,0px));
  display:flex; flex-direction:column; justify-content:space-between;
  opacity:0; visibility:hidden; transition:opacity .5s var(--e-out), visibility 0s linear .5s;
}
.mnav.is-open{ opacity:1; visibility:visible; transition:opacity .5s var(--e-out); }
.mnav nav{ display:flex; flex-direction:column; }
.mnav nav a{
  font-family:var(--f-disp); font-weight:300; font-size:clamp(2rem,10vw,3.2rem); letter-spacing:-.03em; line-height:1.25;
  padding:6px 0; border-bottom:1px solid var(--line);
  transform:translateY(24px); opacity:0; transition:transform .7s var(--e-out), opacity .7s;
}
.mnav.is-open nav a{ transform:none; opacity:1; }
.mnav.is-open nav a:nth-child(2){ transition-delay:.05s } .mnav.is-open nav a:nth-child(3){ transition-delay:.1s } .mnav.is-open nav a:nth-child(4){ transition-delay:.15s }
.mnav__foot{ display:flex; justify-content:space-between; align-items:center; }
.mnav .lang{ font-size:.9rem; }

@media (max-width:899px){
  .hdr__in{ grid-template-columns:1fr auto; }
  .hdr__nav,.hdr__act .lang{ display:none; }
  .hdr__menu{ display:block; }
  .hdr__logo svg{ height:28px; }
  .btn-cta{ height:34px; padding:0 14px; font-size:.8rem; }
  .hdr__act{ gap:10px; }
}

.toast{
  position:fixed; left:50%; bottom:calc(28px + env(safe-area-inset-bottom,0px)); z-index:130;
  transform:translate(-50%,20px); opacity:0; pointer-events:none;
  padding:12px 20px; border-radius:999px; font-size:.86rem; white-space:nowrap;
  background:rgba(20,22,26,.8); border:1px solid var(--line-2);
  -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px);
  transition:transform .6s var(--e-out), opacity .4s;
}
.toast.is-on{ transform:translate(-50%,0); opacity:1; }

/* =========================================================
   Buttons
   ========================================================= */
.btn{
  position:relative; isolation:isolate; overflow:hidden;
  display:inline-flex; align-items:center; gap:12px; height:52px; padding:0 26px; border-radius:999px;
  font-size:.95rem; font-weight:500; letter-spacing:-.01em;
  transition:transform .5s var(--e-out), background .4s, border-color .4s;
}
.btn--solid{ background:var(--ink); color:#000; }
.btn--glass{
  color:var(--ink); border:1px solid var(--line-2);
  background:linear-gradient(180deg, rgba(255,255,255,.08), rgba(255,255,255,.02));
  -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.14);
}
.btn::before{
  content:""; position:absolute; z-index:-1; width:180px; height:180px; border-radius:50%;
  left:var(--mx,50%); top:var(--my,50%); transform:translate(-50%,-50%) scale(0);
  background:radial-gradient(circle, rgba(var(--ice-rgb),.55), transparent 65%);
  transition:transform .5s var(--e-out);
}
.btn:hover::before{ transform:translate(-50%,-50%) scale(1); }
.btn:active{ transform:scale(.97); }
.btn__arr{ width:18px; height:18px; transition:transform .5s var(--e-out); }
.btn:hover .btn__arr{ transform:translateX(3px); }

/* =========================================================
   HERO
   ========================================================= */
.hero{ position:relative; height:100svh; min-height:560px; overflow:hidden; }
.hero__gl{ position:absolute; left:0; top:0; width:100%; height:100svh; min-height:560px; z-index:1; pointer-events:none; opacity:0; transition:opacity 1.2s var(--e-io); }
.hero__gl.is-on{ opacity:1; }
.bg3d{ position:fixed; inset:0; width:100%; height:100%; z-index:1; pointer-events:none; opacity:0; transition:opacity .8s var(--e-io); }
.bg3d.is-on{ opacity:1; }
.bg3d.is-off{ opacity:0; visibility:hidden; }
.hero__fallback{ position:absolute; display:none; z-index:0; }
.hero.no-gl .hero__fallback{ display:block; }
.hero__shade{
  position:absolute; inset:0; pointer-events:none;
  background:
    linear-gradient(90deg, rgba(0,0,0,.72) 0%, rgba(0,0,0,.35) 38%, transparent 60%),
    linear-gradient(0deg, rgba(0,0,0,.85) 0%, transparent 32%);
}
.hero__content{
  position:absolute; inset:0; margin-inline:auto;
  display:flex; flex-direction:column; justify-content:flex-end;
  padding-top:calc(var(--hdr) + 24px); padding-bottom:clamp(96px,16svh,160px);
  pointer-events:none;
}
.hero__content > *{ pointer-events:auto; }
.hero__title{ font-size:var(--t-hero); max-width:9.5em; text-shadow:0 2px 40px rgba(0,0,0,.6); }
.hero__title .ln{ display:block; overflow:hidden; padding-bottom:.06em; margin-bottom:-.06em; }
.hero__title .ln > span{ display:inline-block; transform:translateY(105%); transition:transform 1.3s var(--e-out); }
.hero.is-in .hero__title .ln > span{ transform:none; }
.hero.is-in .hero__title .ln:nth-child(2) > span{ transition-delay:.08s; }
.hero.is-in .hero__title .ln:nth-child(3) > span{ transition-delay:.16s; }
.hero__title .ln--inline{ display:inline-block; }
.hero__title .ch{ display:inline-block; transform-origin:50% 58%; will-change:transform; }
.hero.is-revealed .hero__title .ln{ overflow:visible; }
.hero__sub{
  margin-top:clamp(20px,3svh,32px); max-width:30em; color:var(--ink-2);
  opacity:0; transform:translateY(12px); transition:opacity 1s .45s, transform 1.2s .45s var(--e-out);
}
.hero__cta{ margin-top:clamp(22px,3.6svh,36px); display:flex; flex-wrap:wrap; gap:12px; opacity:0; transform:translateY(12px); transition:opacity 1s .6s, transform 1.2s .6s var(--e-out); }
.hero.is-in .hero__sub,.hero.is-in .hero__cta{ opacity:1; transform:none; }
.hero__foot{
  position:absolute; left:0; right:0; bottom:0; margin-inline:auto;
  display:flex; justify-content:space-between; align-items:flex-end; gap:20px;
  padding-bottom:clamp(20px,4svh,36px); font-size:var(--t-xs); color:var(--ink-3);
  opacity:0; transition:opacity 1.2s .9s;
}
.hero.is-in .hero__foot{ opacity:1; }
.hero__scroll{ display:flex; align-items:center; gap:12px; font-family:var(--f-disp); }
.hero__scroll i{ position:relative; display:block; width:1px; height:40px; background:var(--line-2); overflow:hidden; }
.hero__scroll i::after{ content:""; position:absolute; left:0; top:-40%; width:1px; height:40%; background:var(--ice); animation:drip 2.4s var(--e-io) infinite; }
@keyframes drip{ to{ top:100%; } }
.hero__now{ display:flex; gap:10px; align-items:baseline; font-family:var(--f-disp); }
.hero__now b{ font-weight:400; color:var(--ink); min-width:14ch; text-align:right; }
@media (max-width:899px){
  .hero__shade{ background:linear-gradient(0deg, rgba(0,0,0,.92) 0%, rgba(0,0,0,.72) 34%, rgba(0,0,0,0) 62%); }
  .hero__content{ padding-bottom:clamp(84px,13svh,120px); }
  .hero__title .ln--inline{ display:block; }
  .hero__now{ display:none; }
  .hero__sub{ font-size:.92rem; }
}
@media (max-width:899px) and (max-height:700px){
  .hero__title{ font-size:clamp(2.4rem,12.5vw,3.4rem); }
  .hero__cta .btn--glass{ display:none; }
  .hero__content{ padding-bottom:76px; }
  .hero__sub{ margin-top:14px; }
  .hero__cta{ margin-top:18px; }
}

/* =========================================================
   Section scaffolding
   ========================================================= */
.sec{ position:relative; }
.sec-head{ display:grid; gap:18px; }
.sec-idx{ display:flex; align-items:center; gap:14px; font-family:var(--f-disp); font-size:var(--t-xs); color:var(--ink-3); }
.sec-idx::before{ content:""; width:28px; height:1px; background:currentColor; }

/* ---------- ABOUT ---------- */
/* copy sitting over the moving 3D stage gets a soft dark halo — legibility first */
.about__copy,.about__id,.und__intro{ text-shadow:0 0 22px rgba(0,0,0,.95), 0 0 6px rgba(0,0,0,.8); }
.about{ padding-block:clamp(120px,22svh,240px) clamp(80px,14svh,160px); }
.about__grid{ display:grid; grid-template-columns:1.05fr .95fr; gap:clamp(40px,6vw,100px); align-items:center; }
.about__big{ font-size:var(--t-d1); max-width:8.5em; }
.about__big .w{ display:inline-block; opacity:.14; filter:blur(6px); transform:translateY(.12em); transition:opacity .5s, filter .6s, transform .8s var(--e-out); }
.about__big .w.on{ opacity:1; filter:none; transform:none; }
.about__sub{ margin-top:clamp(28px,5svh,52px); display:grid; gap:14px; max-width:31em; color:var(--ink-2); }
.about__stack{ position:relative; aspect-ratio:1/1.02; width:100%; max-width:560px; justify-self:end; }
.pl{ position:absolute; left:0; right:0; top:50%; height:0; transform:translateY(calc((var(--i) - 2) * var(--gap,10px) * -1)); transition:transform .1s linear; }
.about__stack{ --cx:40%; --fw:50%; }
.pl__face{
  position:absolute; left:var(--cx); top:0; width:var(--fw); aspect-ratio:1; margin-left:calc(var(--fw) / -2); margin-top:calc(var(--fw) / -2);
  transform:scaleY(.577) rotate(45deg); border-radius:14px;
  background:linear-gradient(135deg, rgba(255,255,255,.13), rgba(255,255,255,.015) 55%, rgba(var(--ice-rgb),.05));
  border:1px solid rgba(255,255,255,.22);
  box-shadow:inset 0 0 36px rgba(var(--ice-rgb),.07), 0 30px 60px -30px rgba(0,0,0,.9);
  overflow:hidden;
}
.pl__face::before{
  content:""; position:absolute; inset:-40%;
  background:linear-gradient(90deg, transparent 42%, rgba(var(--ice-rgb),.45) 50%, transparent 58%);
  transform:translateX(var(--sweep,-100%));
}
.pl__face svg{ position:absolute; inset:0; width:100%; height:100%; stroke:rgba(255,255,255,.28); fill:none; stroke-width:1; }
.pl--top .pl__face{ border-color:rgba(var(--ice-rgb),.55); box-shadow:inset 0 0 50px rgba(var(--ice-rgb),.16), 0 0 60px rgba(var(--ice-rgb),.12); }
.pl__lbl{
  position:absolute; left:calc(var(--cx) + var(--fw) * .72); top:0; transform:translate(calc((1 - var(--lo,0)) * 12px),-50%);
  display:flex; align-items:center; gap:10px; white-space:nowrap; font-size:var(--t-sm); line-height:1.35; color:var(--ink-2);
  opacity:var(--lo,0);
}
.pl__lbl::before{ content:""; width:22px; height:1px; background:var(--line-2); flex:none; }
.pl__lbl b{ font-weight:400; }
.pl__lbl em{ display:block; font-style:normal; font-family:var(--f-disp); font-size:.66rem; color:var(--ink-3); }
.about__id{ margin-top:clamp(80px,14svh,160px); display:grid; grid-template-columns:1fr 1fr; gap:clamp(24px,5vw,80px); border-top:1px solid var(--line); padding-top:clamp(28px,4svh,44px); }
.about__id p:first-child{ font-size:var(--t-h3); line-height:1.5; font-weight:500; letter-spacing:-.02em; }
.about__id p:last-child{ color:var(--ink-2); align-self:end; }
@media (max-width:899px){
  .about__grid{ grid-template-columns:1fr; }
  .about__stack{ justify-self:center; max-width:420px; margin-top:12px; }
  .about__stack{ --cx:38%; --fw:46%; }
  .pl__lbl{ font-size:.76rem; gap:8px; }
  .pl__lbl::before{ width:12px; }
  .about__id{ grid-template-columns:1fr; }
}

/* ---------- UNDERSTAND ---------- */
.und__intro{ padding-block:clamp(100px,18svh,200px) clamp(40px,8svh,80px); display:grid; grid-template-columns:1.25fr .75fr; gap:clamp(28px,5vw,80px); align-items:end; }
.und__title{ font-size:var(--t-d2); font-weight:500; line-height:1.28; letter-spacing:-.035em; }
.und__title .rv{ display:block; overflow:hidden; }
.und__title .rv > span{ display:block; transform:translateY(110%) rotate(2deg); transform-origin:0 100%; transition:transform 1.2s var(--e-out); }
.und__title.is-in .rv > span{ transform:none; }
.und__title.is-in .rv:nth-child(2) > span{ transition-delay:.1s; }
.und__title.is-in .rv:nth-child(3) > span{ transition-delay:.2s; }
.und__title .dim{ color:var(--ink-3); }
.und__lead{ color:var(--ink-2); max-width:26em; }
@media (max-width:899px){ .und__intro{ grid-template-columns:1fr; } }

.pin-scene{ position:relative; }
.pin{ position:sticky; top:0; height:100svh; overflow:hidden; }

/* industry */
.ind{ height:420svh; }
.ind .pin{ display:flex; align-items:center; padding-top:var(--hdr); }
.ind__grid{ display:grid; grid-template-columns:1.2fr minmax(260px,.8fr); gap:clamp(20px,4vw,64px); align-items:center; height:100%; max-height:820px; }
.ind__graph{ order:-1; }
.ind__side{ display:grid; gap:clamp(14px,2.4svh,26px); align-content:center; }
.ind__cap{ color:var(--ink-3); font-size:var(--t-sm); }
.ind__name{ position:relative; height:calc(var(--t-d2) * 1.25 + 1.8em); }
.ind__en{ display:block; font-family:var(--f-disp); font-weight:300; font-size:var(--t-d2); letter-spacing:-.035em; line-height:1.2; white-space:nowrap; }
.ind__ko{ display:block; margin-top:6px; color:var(--ink-2); font-size:var(--t-body); }
.ind__tabs{ display:flex; gap:6px; flex-wrap:wrap; }
.ind__tabs button{
  position:relative; padding:8px 14px 10px; border-radius:10px; font-size:var(--t-sm); color:var(--ink-3);
  border:1px solid transparent; transition:color .3s, border-color .3s, background .3s;
}
.ind__tabs button i{ position:absolute; left:14px; right:14px; bottom:5px; height:1px; background:var(--line-2); overflow:hidden; }
.ind__tabs button i::after{ content:""; position:absolute; inset:0; background:var(--ice); transform-origin:0 50%; transform:scaleX(var(--f,0)); }
.ind__tabs button.is-on{ color:var(--ink); border-color:var(--line); background:var(--glass); }
.ind__note{ color:var(--ink-2); max-width:24em; font-size:var(--t-sm); }
.ind__graph{ position:relative; width:100%; height:min(72svh,640px); }
.ind__bgword{
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center; pointer-events:none; overflow:hidden; line-height:1;
  font-family:var(--f-disp); font-weight:500; font-size:clamp(3rem,11vw,11rem); letter-spacing:-.05em;
  color:transparent; -webkit-text-stroke:1px rgba(255,255,255,.06); white-space:nowrap;
}
.ind__links{ position:absolute; inset:0; width:100%; height:100%; overflow:visible; }
.ind__links path{ fill:none; stroke:rgba(255,255,255,.16); stroke-width:1; }
.ind__links path.flow{ stroke:rgba(var(--ice-rgb),.75); stroke-width:1.2; stroke-dasharray:3 14; animation:flow 1.6s linear infinite; }
@keyframes flow{ to{ stroke-dashoffset:-34; } }
.ind__links circle{ fill:#fff; filter:drop-shadow(0 0 6px rgba(var(--ice-rgb),.9)); }
.node{
  position:absolute; left:0; top:0; will-change:transform;
  display:flex; flex-direction:column; align-items:flex-start; gap:2px;
  padding:12px 16px 12px 14px; border-radius:14px; min-width:120px;
  background:linear-gradient(160deg, rgba(255,255,255,.10), rgba(255,255,255,.02));
  border:1px solid rgba(255,255,255,.16);
  -webkit-backdrop-filter:blur(12px); backdrop-filter:blur(12px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.14), 0 20px 40px -20px rgba(0,0,0,.9);
}
.node::before{ content:""; position:absolute; left:-4px; top:50%; width:7px; height:7px; margin-top:-3.5px; border-radius:50%; background:#000; border:1px solid rgba(var(--ice-rgb),.8); box-shadow:0 0 10px rgba(var(--ice-rgb),.6); }
.node b{ font-family:var(--f-disp); font-weight:400; font-size:.8rem; letter-spacing:-.01em; white-space:nowrap; }
.node span{ font-size:.76rem; color:var(--ink-3); white-space:nowrap; }
.node.is-hub{ border-color:rgba(var(--ice-rgb),.5); box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 0 40px rgba(var(--ice-rgb),.15); }
@media (max-width:899px){
  .ind{ height:340svh; }
  .ind__grid{ display:flex; flex-direction:column; align-items:stretch; gap:8px; padding-top:16px; padding-bottom:16px; max-height:none; }
  .ind__side{ flex:none; gap:10px; }
  .ind__graph{ flex:1; height:auto; min-height:220px; order:0; }
  .ind__name{ height:auto; }
  .node{ padding:8px 11px 9px 11px; min-width:0; border-radius:11px; }
  .node b{ font-size:.7rem; } .node span{ font-size:.68rem; }
  .ind__tabs button{ padding:6px 10px 9px; font-size:.78rem; }
  .ind__tabs button i{ left:10px; right:10px; }
}
@media (max-width:899px) and (max-height:700px){ .ind__note{ display:none; } .ind__cap{ display:none; } }

/* morph */
.morph{ height:380svh; }
.morph .pin{ padding-top:var(--hdr); }
.morph__cv{ position:absolute; inset:0; width:100%; height:100%; }
.morph__grid{ position:relative; height:100%; display:flex; flex-direction:column; justify-content:center; pointer-events:none; }
.morph__steps{ display:grid; gap:clamp(10px,2.2svh,22px); max-width:360px; }
.morph__steps li{ display:grid; grid-template-columns:auto 1fr; column-gap:14px; align-items:baseline; color:var(--ink-4); transition:color .5s; }
.morph__steps li .n{ font-family:var(--f-disp); font-size:var(--t-xs); }
.morph__steps li .t{ font-family:var(--f-disp); font-weight:300; font-size:clamp(1.3rem,1rem + 1.6vw,2.4rem); letter-spacing:-.03em; line-height:1.2; }
.morph__steps li .d{ grid-column:2; font-size:var(--t-sm); max-height:0; overflow:hidden; opacity:0; transition:max-height .6s var(--e-out), opacity .5s; }
.morph__steps li.is-on{ color:var(--ink); }
.morph__steps li.is-on .d{ max-height:3em; opacity:1; color:var(--ink-2); }
.morph__steps li.is-past{ color:var(--ink-3); }
.morph__arrow{ display:block; width:1px; height:14px; margin-left:4px; background:var(--line-2); }
.morph__end{
  position:absolute; left:0; right:0; bottom:clamp(28px,7svh,64px); text-align:center; font-size:var(--t-h3); font-weight:500; letter-spacing:-.02em;
  opacity:0; transform:translateY(14px); transition:opacity .8s, transform 1s var(--e-out); padding-inline:var(--gut);
}
.morph__end.is-on{ opacity:1; transform:none; }
@media (max-width:899px){
  .morph{ height:320svh; }
  .morph__grid{ justify-content:flex-start; padding-top:24px; }
  .morph__steps{ grid-template-columns:repeat(4,auto); gap:4px 14px; max-width:none; }
  .morph__steps li{ grid-template-columns:1fr; }
  .morph__steps li .n{ display:none; }
  .morph__steps{ gap:4px 10px; justify-content:space-between; }
  .morph__steps li .t{ font-size:clamp(.74rem,3.4vw,.95rem); letter-spacing:-.02em; }
  .morph__steps li .d{ display:none; }
  .morph__mdesc{ display:block!important; margin-top:14px; color:var(--ink-2); font-size:var(--t-sm); min-height:1.7em; }
  .morph__end{ font-size:1.1rem; }
}
.morph__mdesc{ display:none; }

/* =========================================================
   WHAT WE BUILD
   ========================================================= */
.build{ padding-top:clamp(120px,20svh,220px); }
.build__head{ display:grid; grid-template-columns:1fr auto; align-items:end; gap:24px; padding-bottom:clamp(40px,8svh,90px); }
.build__title{ font-size:var(--t-d1); }
.build__title .ch{ display:inline-block; }
.build__lead{ color:var(--ink-2); max-width:22em; text-align:right; }
@media (max-width:899px){ .build__head{ grid-template-columns:1fr; } .build__lead{ text-align:left; } }

.biz{ position:relative; padding-block:clamp(60px,12svh,140px); }
.biz .wrap > *{ min-width:0; }
.biz + .biz{ border-top:1px solid var(--line); }
.biz__meta{ display:flex; gap:14px; align-items:baseline; font-family:var(--f-disp); font-size:var(--t-xs); color:var(--ink-3); }
.biz__meta b{ font-weight:400; color:var(--ice); }
.biz__title{ margin-top:18px; font-size:var(--t-d2); font-weight:500; letter-spacing:-.035em; line-height:1.2; }
.biz__en{ display:block; margin-top:8px; font-family:var(--f-disp); font-weight:300; font-size:var(--t-sm); color:var(--ink-3); letter-spacing:0; min-height:1.4em; }
.biz__desc{ margin-top:clamp(18px,3svh,28px); color:var(--ink-2); max-width:28em; }
.biz__tags{ margin-top:22px; display:flex; flex-wrap:wrap; gap:8px; }
.biz__tags li{ font-size:var(--t-xs); padding:6px 12px; border-radius:999px; border:1px solid var(--line); color:var(--ink-2); }

/* 01 ERP — split: copy left, dashboard right */
.biz--erp .wrap{ display:grid; grid-template-columns:.8fr 1.2fr; gap:clamp(32px,5vw,90px); align-items:center; }
.erp{ perspective:1600px; }
.erp__win{
  position:relative; border-radius:18px; overflow:hidden;
  background:linear-gradient(170deg, rgba(255,255,255,.075), rgba(255,255,255,.015));
  border:1px solid rgba(255,255,255,.14);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.12), 0 60px 120px -40px rgba(0,0,0,1), 0 0 0 1px rgba(0,0,0,.4);
  transform:rotateX(var(--rx,18deg)) rotateY(var(--ry,-8deg)); transform-style:preserve-3d; will-change:transform;
}
.erp__win::after{ content:""; position:absolute; inset:0; pointer-events:none; background:linear-gradient(115deg, transparent 35%, rgba(var(--ice-rgb),.08) 48%, transparent 60%); transform:translateX(var(--gl,-60%)); }
.erp__bar{ display:flex; align-items:center; gap:7px; padding:11px 16px; border-bottom:1px solid var(--line); font-size:var(--t-xs); color:var(--ink-3); }
.erp__bar > i{ width:8px; height:8px; border-radius:50%; background:rgba(255,255,255,.14); }
.erp__crumb{ margin-left:10px; font-family:var(--f-disp); font-size:.68rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.erp__crumb em{ font-style:normal; margin:0 4px; color:var(--ink-4); }
.erp__crumb b{ font-family:var(--f-body); font-weight:500; color:var(--ink); }
.erp__user{ margin-left:auto; display:flex; align-items:center; gap:7px; font-family:var(--f-disp); font-size:.62rem; }
.erp__user i{ width:18px; height:18px; border-radius:50%; background:linear-gradient(135deg, rgba(var(--ice-rgb),.6), rgba(255,255,255,.1)); }
.erp__body{ display:grid; grid-template-columns:136px 1fr; min-height:392px; }
.erp__mods{ border-right:1px solid var(--line); padding:12px 8px; display:grid; align-content:start; gap:2px; }
.erp__mods li{ position:relative; display:flex; align-items:center; gap:9px; font-size:.76rem; padding:7px 10px; border-radius:8px; color:var(--ink-3); transition:color .4s, background .4s; white-space:nowrap; }
.erp__mods svg{ width:14px; height:14px; flex:none; fill:none; stroke:currentColor; stroke-width:1.2; stroke-linecap:round; stroke-linejoin:round; }
.erp__mods li.is-on{ color:var(--ink); background:rgba(255,255,255,.07); box-shadow:inset 2px 0 0 var(--ice); }
.erp__main{ padding:14px 16px 12px; display:grid; gap:12px; align-content:start; min-width:0; transition:opacity .24s, transform .3s var(--e-out), filter .24s; }
.erp__main.is-out{ opacity:0; transform:translateY(6px); filter:blur(3px); }
.erp__head{ display:flex; justify-content:space-between; align-items:center; gap:10px; }
.erp__head b{ display:block; font-size:.92rem; font-weight:600; letter-spacing:-.01em; }
.erp__head span{ font-size:.68rem; color:var(--ink-3); }
.erp__tools{ display:flex; gap:6px; flex:none; }
.erp__pill,.erp__add{ font-size:.64rem; padding:4px 9px; border-radius:999px; border:1px solid var(--line-2); color:var(--ink-2); white-space:nowrap; }
.erp__head .erp__add{ background:var(--ink); color:#000; border-color:transparent; font-weight:500; }
.erp__head .erp__pill{ font-size:.64rem; color:var(--ink-2); }
.erp__kpis{ display:grid; grid-template-columns:repeat(3,1fr); gap:8px; }
.erp__kpis div{ padding:9px 11px; border-radius:10px; border:1px solid var(--line); background:rgba(255,255,255,.02); min-width:0; }
.erp__kpis span{ display:block; font-size:.64rem; color:var(--ink-3); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.erp__kpis b{ font-family:var(--f-disp); font-weight:300; font-size:clamp(.95rem,.8rem + .5vw,1.25rem); letter-spacing:-.02em; }
.erp__kpis small{ margin-left:4px; font-size:.6rem; color:var(--ink-3); }
.erp__panel{ position:relative; border-radius:10px; border:1px solid var(--line); background:rgba(255,255,255,.015); padding:10px 12px 6px; }
.erp__ptitle{ font-size:.66rem; color:var(--ink-3); margin-bottom:4px; }
.ec{ width:100%; height:auto; display:block; overflow:visible; }
.ec .g{ stroke:rgba(255,255,255,.06); }
.ec text{ font-family:var(--f-body); font-size:10px; fill:var(--ink-3); text-anchor:middle; }
.ec text.l{ text-anchor:start; }
.ec text.v{ fill:var(--ink-2); font-size:9.5px; }
.ec .b{ fill:rgba(255,255,255,.18); transform-box:fill-box; transform-origin:50% 100%; animation:ecUp .8s var(--e-out) both; }
.ec .b.hi,.ec .h.hi,.ec .gt.hi{ fill:var(--ice); }
.ec .b.warn{ fill:rgba(var(--ice-rgb),.85); }
.ec .h,.ec .gt{ fill:rgba(255,255,255,.2); transform-box:fill-box; transform-origin:0 50%; animation:ecRight .8s var(--e-out) both; }
.ec .th{ stroke:rgba(255,255,255,.55); stroke-dasharray:4 4; }
.ec .tht{ text-anchor:end; font-size:9px; fill:var(--ink-2); }
.ec .gb{ fill:none; stroke:rgba(255,255,255,.08); stroke-width:7; }
.ec .gf{ fill:none; stroke:var(--ice); stroke-width:7; stroke-linecap:round; stroke-dasharray:var(--c); stroke-dashoffset:var(--o); animation:ecGauge 1s var(--e-out) both; }
.ec .gv{ font-family:var(--f-disp); font-size:14px; fill:var(--ink); }
.ec .tr{ stroke:rgba(255,255,255,.1); stroke-width:2; }
.ec .tf{ stroke:var(--ice); stroke-width:2; stroke-dasharray:var(--len); stroke-dashoffset:0; animation:ecTrack .9s var(--e-out) both; }
.ec .td{ fill:#0b0e12; stroke:rgba(255,255,255,.25); }
.ec .td.on{ stroke:var(--ice); }
.ec .td.cur{ fill:var(--ice); filter:drop-shadow(0 0 5px rgba(var(--ice-rgb),.9)); }
.ec .today{ stroke:rgba(var(--ice-rgb),.8); stroke-dasharray:2 3; }
.ec .l1{ fill:none; stroke:var(--ice); stroke-width:1.5; }
.ec .l2{ fill:none; stroke:rgba(255,255,255,.35); stroke-width:1; stroke-dasharray:3 4; }
.ec-lg{ position:absolute; right:12px; top:9px; display:flex; gap:10px; font-size:.62rem; color:var(--ink-3); }
.ec-lg .lg::before{ content:""; display:inline-block; width:10px; height:2px; margin-right:5px; vertical-align:middle; background:var(--ice); }
.ec-lg .lg1::before{ background:rgba(255,255,255,.4); }
@keyframes ecUp{ from{ transform:scaleY(0); } }
@keyframes ecRight{ from{ transform:scaleX(0); } }
@keyframes ecGauge{ from{ stroke-dashoffset:var(--c); } }
@keyframes ecTrack{ from{ stroke-dashoffset:var(--len); } }
.erp__table{ display:grid; font-size:.72rem; }
.erp__row{ display:grid; grid-template-columns:1.1fr 1fr .9fr; gap:8px; align-items:center; padding:7px 4px; border-bottom:1px solid var(--line); color:var(--ink-2); animation:rowIn .7s var(--e-out) both; }
.erp__row > *{ min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.erp__row--h{ color:var(--ink-3); animation:none; font-size:.66rem; }
.erp__row .st{ font-style:normal; justify-self:start; padding:1px 8px; border-radius:999px; border:1px solid var(--line-2); font-size:.64rem; }
.erp__row .st.ok{ border-color:rgba(var(--ice-rgb),.55); color:var(--ice); }
.erp__row .st.wait{ color:var(--ink-3); }
.erp__row .st.low{ background:rgba(var(--ice-rgb),.16); border-color:rgba(var(--ice-rgb),.6); color:var(--ice); }
.erp__row .pg{ display:inline-block; width:56%; height:4px; border-radius:4px; background:rgba(255,255,255,.08); vertical-align:middle; overflow:hidden; }
.erp__row .pg i{ display:block; height:100%; width:var(--p); background:var(--ice); border-radius:4px; animation:ecRight .9s var(--e-out) both; transform-origin:0 50%; }
.erp__row small{ margin-left:6px; font-size:.64rem; color:var(--ink-3); }
@keyframes rowIn{ from{ opacity:0; transform:translateY(-6px); } }
@media (max-width:899px){
  .biz--erp .wrap{ grid-template-columns:1fr; }
  .erp__body{ grid-template-columns:1fr; min-height:0; }
  .erp__mods{ border-right:0; border-bottom:1px solid var(--line); display:flex; overflow:hidden; gap:4px; padding:10px; mask-image:linear-gradient(90deg,#000 80%,transparent); -webkit-mask-image:linear-gradient(90deg,#000 80%,transparent); }
  .erp__mods li{ flex:none; }
  .erp__mods li.is-on{ box-shadow:inset 0 -2px 0 var(--ice); }
  .erp__main{ min-height:410px; padding:12px; }
  .erp__row:nth-child(n+5){ display:none; }
  .erp__crumb{ display:none; }
  .erp__pill{ display:none; }
}

/* 02 PLATFORM — centered, orbital */
.biz--plat .wrap{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(24px,4vw,60px); align-items:end; }
.biz--plat .biz__right{ justify-self:end; max-width:28em; }
.plat{ grid-column:1/-1; position:relative; height:clamp(360px,62svh,620px); margin-top:clamp(20px,4svh,40px); }
.plat__sky{ position:absolute; inset:0; }
.plat__beams{ position:absolute; inset:0; width:100%; height:100%; overflow:visible; }
.plat__beams line{ stroke:rgba(var(--ice-rgb),.0); stroke-width:1; }
.plat__beams circle{ fill:#fff; }
.plat__ring{ fill:none; stroke:rgba(255,255,255,.12); stroke-width:1; }
.plat__ring.dash{ stroke-dasharray:2 6; stroke:rgba(255,255,255,.18); }
.plat__core{
  position:absolute; left:50%; top:50%; width:clamp(120px,16vw,190px); aspect-ratio:1; transform:translate(-50%,-50%);
  border-radius:50%; display:grid; place-items:center; text-align:center;
  background:radial-gradient(circle at 35% 30%, rgba(255,255,255,.2), rgba(255,255,255,.03) 50%, rgba(var(--ice-rgb),.08));
  border:1px solid rgba(255,255,255,.22);
  box-shadow:inset 0 0 40px rgba(var(--ice-rgb),.15), 0 0 80px rgba(var(--ice-rgb),.12);
  -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px);
}
.plat__core b{ display:block; font-family:var(--f-disp); font-weight:400; font-size:clamp(.8rem,.7rem + .4vw,1rem); }
.plat__core span{ font-size:.72rem; color:var(--ink-3); }
.actor{
  position:absolute; left:0; top:0; will-change:transform,opacity;
  padding:9px 14px; border-radius:999px; font-size:.8rem; white-space:nowrap;
  background:linear-gradient(180deg, rgba(255,255,255,.1), rgba(255,255,255,.02));
  border:1px solid rgba(255,255,255,.16);
  -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px);
}
.actor small{ margin-left:8px; font-family:var(--f-disp); font-size:.64rem; color:var(--ink-3); }
@media (max-width:899px){
  .biz--plat .wrap{ grid-template-columns:1fr; }
  .biz--plat .biz__right{ justify-self:start; }
  .plat{ height:clamp(340px,56svh,480px); }
  .actor{ font-size:.72rem; padding:7px 11px; }
  .plat__core{ width:92px; }
  .plat__core b{ font-size:.72rem; } .plat__core span{ font-size:.6rem; }
  .actor small{ display:none; }
}

/* 03 WEB — visual left, copy right */
.biz--web .wrap{ display:grid; grid-template-columns:1.25fr .75fr; gap:clamp(32px,5vw,90px); align-items:center; }
.web{ position:relative; height:clamp(320px,56svh,560px); perspective:1800px; }
.web__win{
  position:absolute; left:4%; top:8%; width:84%; aspect-ratio:16/10.4; border-radius:14px; overflow:hidden;
  background:linear-gradient(170deg, rgba(22,25,30,.92), rgba(8,10,13,.92));
  border:1px solid rgba(255,255,255,.14);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 50px 90px -40px rgba(0,0,0,1);
  transform-origin:50% 50%; will-change:transform,opacity;
  transition:transform 1.1s var(--e-out), opacity .9s, filter .9s;
}
.web__url{ display:flex; align-items:center; gap:10px; padding:9px 12px; border-bottom:1px solid var(--line); }
.web__url i{ width:7px; height:7px; border-radius:50%; background:rgba(255,255,255,.14); flex:none; }
.web__url span{ flex:1; min-width:0; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; margin-left:6px; padding:4px 10px; border-radius:6px; background:rgba(255,255,255,.05); font-size:.68rem; color:var(--ink-3); font-family:var(--f-disp); }
.web__ui{ position:absolute; inset:34px 0 0 0; padding:12px; display:flex; flex-direction:column; gap:9px; }
.web__ui .sk.ln{ display:block; }
.wb{ display:inline-flex; align-items:center; justify-content:center; flex:none; height:22px; padding:0 11px; border-radius:6px; font-size:.62rem; font-weight:500; white-space:nowrap;
  background:var(--ink); color:#0a0c10; box-shadow:0 4px 14px -4px rgba(var(--ice-rgb),.5); transition:transform .25s var(--e-out), background .25s, box-shadow .25s; }
.wb.is-press{ transform:scale(.92); background:var(--ice); box-shadow:0 0 0 4px rgba(var(--ice-rgb),.22), 0 0 22px rgba(var(--ice-rgb),.6); }
.web__win:not(.is-front) .wb{ box-shadow:none; }
.wu-nav{ display:flex; justify-content:space-between; align-items:center; }
.wu-links{ display:flex; gap:8px; width:40%; } .wu-links i{ flex:1; }
.wu-hero{ display:flex; justify-content:space-between; align-items:center; gap:12px; padding:14px 12px; border-radius:8px; background:rgba(255,255,255,.035); }
.wu-hero > div{ flex:1; }
.wu-cards{ display:grid; grid-template-columns:repeat(3,1fr); gap:8px; flex:1; }
.wu-cards .sk{ padding:10px; min-height:44px; }
.wu-admin{ display:grid; grid-template-columns:22% 1fr; gap:10px; height:100%; }
.wu-side{ display:grid; gap:7px; align-content:start; }
.wu-tbl{ display:grid; gap:6px; align-content:start; }
.wu-bar{ display:flex; justify-content:space-between; align-items:center; gap:10px; }
.wu-tr{ display:grid; grid-template-columns:10px 2fr 1fr 1fr; gap:8px; align-items:center; padding:3px 0; border-bottom:1px solid rgba(255,255,255,.04); }
.wu-tr .ck{ width:9px; height:9px; border-radius:3px; border:1px solid rgba(255,255,255,.3); }
.wu-kan{ display:grid; grid-template-columns:repeat(3,1fr); gap:8px; flex:1; }
.wu-col{ display:flex; flex-direction:column; gap:6px; padding:7px; border-radius:8px; background:rgba(255,255,255,.025); }
.wu-card{ display:grid; gap:5px; padding:7px; border-radius:6px; background:rgba(255,255,255,.05); }
.wu-form{ width:62%; margin:auto; display:grid; gap:8px; }
.wu-in{ height:18px; border-radius:5px; border:1px solid rgba(255,255,255,.1); background:rgba(255,255,255,.03); }
.wu-ta{ height:40px; }
.wu-right{ display:flex; justify-content:flex-end; }
.sk{ border-radius:6px; background:rgba(255,255,255,.06); }
.sk.hi{ background:rgba(var(--ice-rgb),.22); }
.sk.ln{ height:6px; }
.web__lbl{ position:absolute; right:12px; bottom:10px; font-family:var(--f-disp); font-size:.66rem; color:var(--ink-3); padding:4px 8px; border-radius:6px; background:rgba(0,0,0,.5); }
.web__cursor{ position:absolute; left:0; top:0; width:18px; height:18px; z-index:20; pointer-events:none; will-change:transform; transition:transform 1.2s var(--e-out); }
.web__cursor::after{ content:""; position:absolute; left:-10px; top:-10px; width:20px; height:20px; border-radius:50%; border:1px solid var(--ice); opacity:0; transform:scale(.3); }
.web__cursor.click::after{ animation:ripple .6s var(--e-out); }
@keyframes ripple{ 0%{ opacity:1; transform:scale(.3); } 100%{ opacity:0; transform:scale(1.8); } }
@media (max-width:899px){
  .biz--web .wrap{ grid-template-columns:1fr; }
  .biz--web .biz__copy{ order:-1; }
  .web{ height:clamp(260px,62vw,420px); }
  .web__win{ left:2%; width:90%; }
}

/* 04 MOBILE — phone centered with copy on the side */
.biz--mob .wrap{ display:grid; grid-template-columns:.9fr 1.1fr; gap:clamp(32px,5vw,90px); align-items:center; }
.mob{ position:relative; height:clamp(520px,80svh,720px); perspective:1400px; display:grid; place-items:center; }
.phone{
  position:relative; width:clamp(220px,20vw,286px); aspect-ratio:9/19.2; border-radius:44px; padding:10px;
  background:linear-gradient(150deg, rgba(255,255,255,.22), rgba(255,255,255,.04) 40%, rgba(255,255,255,.12));
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.25), 0 80px 120px -50px rgba(0,0,0,1), 0 0 90px -20px rgba(var(--ice-rgb),.18);
  transform:rotateX(var(--prx,0deg)) rotateY(var(--pry,0deg)) translateY(var(--pty,0px)); transform-style:preserve-3d; will-change:transform;
}
.phone--back{ position:absolute; transform:translate(-48%, 4%) rotateY(18deg) scale(.86) translateZ(-80px); filter:brightness(.7); opacity:var(--pbo,.0); }
.phone__scr{ position:relative; height:100%; border-radius:35px; overflow:hidden; background:#05070a; }
.phone__isl{ position:absolute; left:50%; top:10px; width:30%; height:22px; margin-left:-15%; border-radius:20px; background:#000; z-index:3; }
.phone__glare{ position:absolute; inset:0; z-index:4; pointer-events:none; background:linear-gradient(120deg, transparent 30%, rgba(255,255,255,.08) 45%, transparent 55%); transform:translateX(var(--pg,-40%)); }
.sbar{ position:absolute; left:0; right:0; top:0; height:40px; padding:14px 20px 0 22px; display:flex; justify-content:space-between; align-items:flex-start; z-index:3; font-size:.62rem; }
.sbar b{ font-weight:600; }
.sbar span{ display:flex; gap:5px; align-items:center; }
.sbar svg{ height:8px; width:auto; fill:currentColor; }
.app{ position:absolute; inset:0; padding:42px 12px 64px; display:flex; flex-direction:column; gap:9px; }
.app__top{ display:flex; justify-content:space-between; align-items:flex-end; }
.app__date{ display:block; font-size:.58rem; color:var(--ink-3); }
.app__ttl{ display:block; font-size:1.05rem; font-weight:600; letter-spacing:-.02em; line-height:1.3; }
.app__av{ width:26px; height:26px; border-radius:50%; display:grid; place-items:center; font-style:normal; font-family:var(--f-disp); font-size:.6rem; color:#000; background:linear-gradient(135deg, #fff, var(--ice)); }
.app__sum{ display:grid; grid-template-columns:40px 1fr auto; gap:10px; align-items:center; padding:10px 12px; border-radius:16px;
  background:linear-gradient(135deg, rgba(var(--ice-rgb),.16), rgba(255,255,255,.03)); border:1px solid rgba(var(--ice-rgb),.2); }
.app__ring{ width:40px; height:40px; }
.app__ring circle{ fill:none; stroke:rgba(255,255,255,.1); stroke-width:4; }
.app__ring circle.f{ stroke:var(--ice); stroke-linecap:round; transition:stroke-dashoffset .9s var(--e-out); }
.app__sum b{ display:block; font-size:.74rem; font-weight:600; }
.app__sum span{ font-size:.6rem; color:var(--ink-3); }
.app__pct{ font-family:var(--f-disp); font-size:.9rem; font-weight:300; }
.app__seg{ display:flex; gap:4px; padding:3px; border-radius:10px; background:rgba(255,255,255,.05); }
.app__seg span{ flex:1; text-align:center; padding:4px 0; border-radius:7px; font-size:.6rem; color:var(--ink-3); }
.app__seg span.on{ background:rgba(255,255,255,.12); color:var(--ink); }
.app__list{ position:relative; flex:1; overflow:hidden; -webkit-mask-image:linear-gradient(#000 85%, transparent); mask-image:linear-gradient(#000 85%, transparent); }
.app__track{ display:grid; gap:7px; will-change:transform; transition:transform .8s cubic-bezier(.16,1,.3,1); }
.task{ position:relative; display:grid; grid-template-columns:1fr 22px; grid-template-rows:auto auto auto; column-gap:8px; row-gap:3px; padding:9px 10px; border-radius:12px; background:rgba(255,255,255,.045); border:1px solid rgba(255,255,255,.06); transition:border-color .4s, background .4s; }
.task.next{ border-color:rgba(var(--ice-rgb),.4); background:rgba(var(--ice-rgb),.06); }
.task__tag{ justify-self:start; font-size:.52rem; padding:1px 7px; border-radius:999px; border:1px solid var(--line-2); color:var(--ink-2); }
.task__tag.dlv{ border-color:rgba(var(--ice-rgb),.5); color:var(--ice); }
.task__t{ grid-column:1; font-size:.68rem; font-weight:500; line-height:1.35; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.task__t em{ font-style:normal; font-weight:400; color:var(--ink-2); }
.task__m{ grid-column:1; display:flex; align-items:center; gap:4px; font-size:.56rem; color:var(--ink-3); white-space:nowrap; overflow:hidden; }
.task__m svg{ width:8px; height:10px; flex:none; fill:none; stroke:currentColor; stroke-width:1.2; }
.task__m i{ font-style:normal; margin-left:auto; font-family:var(--f-disp); }
.task__ck{ grid-column:2; grid-row:1 / 4; align-self:center; width:20px; height:20px; border-radius:50%; border:1.5px solid rgba(255,255,255,.3); display:grid; place-items:center; transition:background .4s, border-color .4s; }
.task__ck svg{ width:11px; height:11px; stroke:#000; stroke-width:2.5; fill:none; stroke-dasharray:20; stroke-dashoffset:20; transition:stroke-dashoffset .5s .1s; }
.task.done .task__ck{ background:var(--ice); border-color:var(--ice); }
.task.done .task__ck svg{ stroke-dashoffset:0; }
.task.done .task__t,.task.done .task__t em{ color:var(--ink-3); }
.app__tab{ position:absolute; left:10px; right:10px; bottom:10px; height:50px; border-radius:25px; background:rgba(20,23,28,.85); border:1px solid rgba(255,255,255,.08); display:flex; justify-content:space-around; align-items:center;
  -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px); }
.app__tab span{ display:flex; flex-direction:column; align-items:center; gap:2px; font-size:.5rem; color:var(--ink-3); }
.app__tab svg{ width:15px; height:15px; fill:none; stroke:currentColor; stroke-width:1.3; stroke-linecap:round; stroke-linejoin:round; }
.app__tab span.on{ color:var(--ice); }
.notif{
  position:absolute; left:8px; right:8px; top:8px; z-index:5; display:flex; gap:9px; align-items:center; padding:10px 12px; border-radius:18px;
  background:rgba(40,44,52,.82); -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px); border:1px solid rgba(255,255,255,.12);
  font-size:.62rem; line-height:1.4; transform:translateY(-140%); transition:transform .8s var(--e-out);
}
.notif__ic{ flex:none; width:22px; height:22px; border-radius:7px; background:linear-gradient(135deg, #fff, var(--ice)); }
.notif b{ display:block; font-size:.64rem; }
.notif.on{ transform:translateY(0); }
.route{ position:absolute; inset:0; background:#080a0e; }
.route svg{ width:100%; height:100%; }
.route .blk rect{ fill:rgba(255,255,255,.04); stroke:rgba(255,255,255,.05); }
.route .rt-base{ fill:none; stroke:rgba(255,255,255,.1); stroke-width:6; stroke-linecap:round; }
.route .rt{ fill:none; stroke:var(--ice); stroke-width:2.5; stroke-linecap:round; }
.sheet{ position:absolute; left:8px; right:8px; bottom:8px; padding:12px 14px 14px; border-radius:20px; background:rgba(22,25,31,.88); border:1px solid rgba(255,255,255,.1);
  -webkit-backdrop-filter:blur(12px); backdrop-filter:blur(12px); display:grid; gap:4px; }
.sheet__grab{ justify-self:center; width:28px; height:3px; border-radius:3px; background:rgba(255,255,255,.2); margin-bottom:4px; }
.sheet b{ font-size:.72rem; font-weight:600; }
.sheet span{ font-size:.62rem; color:var(--ice); }
.sheet__bar{ height:4px; border-radius:4px; background:rgba(255,255,255,.08); overflow:hidden; margin-top:4px; }
.sheet__bar i{ display:block; height:100%; width:0; background:var(--ice); border-radius:4px; }
.sheet small{ font-size:.56rem; color:var(--ink-3); }
.mob__side{ position:absolute; font-size:var(--t-xs); color:var(--ink-3); display:flex; align-items:center; gap:10px; font-family:var(--f-disp); }
.mob__side::before{ content:""; width:36px; height:1px; background:var(--line-2); }
@media (max-width:899px){
  .biz--mob .wrap{ grid-template-columns:1fr; }
  .mob{ height:clamp(480px,130vw,600px); }
  .phone{ width:min(58vw,250px); }
  .phone--back{ transform:translate(-36%,4%) rotateY(18deg) scale(.84) translateZ(-80px); }
  .mob__side{ display:none; }
  .app{ padding:40px 10px 62px; gap:7px; }
  .app__ttl{ font-size:.92rem; }
  .task{ padding:8px 9px; }
}

/* 05 INTEGRATION — full-width diagram */
.biz--int .wrap{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(24px,4vw,60px); align-items:end; }
.biz--int .biz__right{ justify-self:end; max-width:28em; }
.intg{ grid-column:1/-1; margin-top:clamp(28px,5svh,56px); position:relative; }
.intg svg{ width:100%; height:auto; overflow:visible; }
.intg .w{ display:block; } .intg .t{ display:none; }
.intg .p-base{ fill:none; stroke:rgba(255,255,255,.1); stroke-width:1; }
.intg .p-draw{ fill:none; stroke:rgba(var(--ice-rgb),.8); stroke-width:1.3; }
.intg .box{ fill:rgba(255,255,255,.035); stroke:rgba(255,255,255,.18); }
.intg .box.legacy{ stroke-dasharray:4 4; }
.intg .box.new{ fill:rgba(var(--ice-rgb),.06); stroke:rgba(var(--ice-rgb),.55); }
.intg text{ fill:var(--ink); font-family:var(--f-body); font-size:14px; }
.intg text.s{ fill:var(--ink-3); font-size:11px; font-family:var(--f-disp); }
.intg .pk{ fill:#fff; }
.intg .cube path{ fill:none; stroke:rgba(var(--ice-rgb),.8); stroke-width:1.2; stroke-linejoin:round; }
.intg .cube .f1{ fill:rgba(var(--ice-rgb),.10); } .intg .cube .f2{ fill:rgba(var(--ice-rgb),.05); } .intg .cube .f3{ fill:rgba(255,255,255,.02); }
.intg .db ellipse,.intg .db path{ fill:rgba(255,255,255,.04); stroke:rgba(255,255,255,.3); }
.intg .db.on ellipse,.intg .db.on path{ stroke:rgba(var(--ice-rgb),.9); fill:rgba(var(--ice-rgb),.08); }
.intg .hidein{ opacity:0; transition:opacity .8s; } .intg .hidein.on{ opacity:1; }
@media (max-width:899px){
  .biz--int .wrap{ grid-template-columns:1fr; }
  .biz--int .biz__right{ justify-self:start; }
  .intg .w{ display:none; } .intg .t{ display:block; max-width:420px; margin-inline:auto; }
}

/* =========================================================
   HOW WE WORK
   ========================================================= */
.proc__head{ padding-top:clamp(120px,20svh,220px); padding-bottom:clamp(20px,5svh,60px); }
.proc__title{ font-size:var(--t-d1); max-width:12em; }
.proc__title .ch{ display:inline-block; opacity:0; filter:blur(12px); transform:translateY(.2em) scale(1.1); transition:opacity .9s, filter 1s, transform 1.2s var(--e-out); }
.proc__title.is-in .ch{ opacity:1; filter:none; transform:none; }
.proc__lead{ margin-top:clamp(20px,3svh,32px); color:var(--ink-2); max-width:30em; }
.proc{ height:440svh; }
.proc .pin{ padding-top:var(--hdr); }
.proc__grid{ height:100%; display:grid; grid-template-columns:.8fr 1.2fr; gap:clamp(20px,4vw,64px); align-items:center; }
.proc__list{ display:grid; gap:4px; }
.proc__list li{ display:grid; grid-template-columns:28px 1fr; column-gap:12px; padding:10px 0; border-bottom:1px solid var(--line); color:var(--ink-4); transition:color .5s; }
.proc__list li .n{ font-family:var(--f-disp); font-size:var(--t-xs); padding-top:.35em; }
.proc__list li .t{ font-family:var(--f-disp); font-weight:300; font-size:clamp(1rem,.85rem + .6vw,1.35rem); letter-spacing:-.02em; }
.proc__list li .t small{ margin-left:10px; font-family:var(--f-body); font-size:.8rem; color:inherit; opacity:.8; letter-spacing:0; }
.proc__list li .d{ grid-column:2; font-size:var(--t-sm); max-height:0; opacity:0; overflow:hidden; transition:max-height .6s var(--e-out), opacity .5s; }
.proc__list li.is-past{ color:var(--ink-3); }
.proc__list li.is-on{ color:var(--ink); }
.proc__list li.is-on .d{ max-height:4em; opacity:1; color:var(--ink-2); margin-top:4px; }
.org{ position:relative; width:100%; max-width:min(680px,76svh); aspect-ratio:1; justify-self:center; }
.org svg{ width:100%; height:100%; overflow:visible; }
.org .mem{ fill:rgba(var(--ice-rgb),.03); stroke:rgba(var(--ice-rgb),.35); stroke-width:1; }
.org .mem2{ fill:none; stroke:rgba(255,255,255,.08); stroke-width:1; }
.org .orbit{ fill:none; stroke:rgba(255,255,255,.08); stroke-dasharray:2 6; }
.org .arc{ fill:none; stroke:rgba(var(--ice-rgb),.8); stroke-width:1.4; stroke-linecap:round; }
.org .mesh line{ stroke:rgba(255,255,255,.14); stroke-width:1; }
.org .spoke{ stroke:rgba(var(--ice-rgb),.4); stroke-width:1; }
.org .nd circle.b{ fill:#06080b; stroke:rgba(255,255,255,.35); stroke-width:1; }
.org .nd.on circle.b{ stroke:rgba(var(--ice-rgb),.95); fill:#0b0f15; }
.org .nd circle.h{ fill:rgba(var(--ice-rgb),.25); }
.org .nd text{ fill:var(--ink); font-family:var(--f-disp); font-size:13px; text-anchor:middle; }
.org .nd text.k{ fill:var(--ink-3); font-family:var(--f-body); font-size:11px; }
.org .role{ fill:var(--ink-3); font-size:11px; font-family:var(--f-body); text-anchor:middle; }
.org.is-m .nd text{ font-size:21px; }
.org.is-m .nd text.k,.org.no-k .nd text.k{ display:none; }
.org.no-k:not(.is-m) .nd text:not(.k){ transform:translateY(5px); }
.org.is-m .role{ font-size:17px; }
.org .core-glow{ fill:url(#coreG); }
.org .pulse{ fill:#fff; }
.proc__final{ margin-top:18px; font-size:var(--t-sm); color:var(--ice); opacity:0; transition:opacity .8s; }
.proc__final.on{ opacity:1; }
@media (max-width:899px){
  .proc{ height:380svh; }
  .proc__grid{ grid-template-columns:1fr; grid-template-rows:auto 1fr; align-content:start; gap:4px; padding-top:14px; }
  .proc__list{ grid-template-columns:repeat(3,1fr); gap:0 12px; }
  .proc__list li{ grid-template-columns:1fr; padding:6px 0; }
  .proc__list li .n{ display:none; }
  .proc__list li .t{ font-size:.82rem; }
  .proc__list li .t small{ display:none; }
  .proc__list li .d{ display:none; }
  .proc__mdesc{ display:block!important; margin-top:10px; font-size:var(--t-sm); color:var(--ink-2); min-height:3.4em; }
  .org{ max-width:min(100%,56svh); align-self:center; }
}
.proc__mdesc{ display:none; }

/* =========================================================
   CONTACT
   ========================================================= */
.contact{ position:relative; padding-block:clamp(120px,20svh,220px) clamp(80px,14svh,140px); overflow:hidden; }
.contact__glass{
  position:absolute; right:-8%; top:6%; width:min(62vw,820px); aspect-ratio:190/195; pointer-events:none; opacity:.9;
}
.contact__glass .gl{ position:absolute; inset:0; -webkit-mask:var(--logo-mask) center/contain no-repeat; mask:var(--logo-mask) center/contain no-repeat; }
.contact__glass .gl--body{ background:linear-gradient(160deg, rgba(255,255,255,.07), rgba(255,255,255,.01) 60%); }
.contact__glass .gl--sweep{ background:linear-gradient(105deg, transparent 38%, rgba(var(--ice-rgb),.55) 48%, rgba(255,255,255,.9) 50%, rgba(var(--ice-rgb),.4) 52%, transparent 62%); background-size:300% 100%; animation:sweep 7s var(--e-io) infinite; mix-blend-mode:screen; }
.contact__glass .gl--edge{ -webkit-mask:var(--logo-line) center/contain no-repeat; mask:var(--logo-line) center/contain no-repeat; background:linear-gradient(160deg, rgba(255,255,255,.4), rgba(255,255,255,.12) 60%); }
@keyframes sweep{ 0%{ background-position:120% 0; } 60%,100%{ background-position:-20% 0; } }
.contact__grid{ position:relative; display:grid; grid-template-columns:1fr minmax(0,560px); gap:clamp(40px,6vw,110px); align-items:start; }
.contact__title{ font-size:var(--t-d1); }
.contact__title .ch{ display:inline-block; color:rgba(238,241,245,.2); transition:color .6s; }
.contact__title .ch.lit{ color:var(--ink); text-shadow:0 0 30px rgba(var(--ice-rgb),.35); }
.contact__lead{ margin-top:clamp(22px,3.4svh,36px); color:var(--ink-2); max-width:24em; }
.contact__note{ margin-top:14px; font-size:var(--t-sm); color:var(--ink-3); }
.form{
  position:relative; padding:clamp(22px,3.4vw,40px); border-radius:24px;
  background:linear-gradient(165deg, rgba(255,255,255,.075), rgba(255,255,255,.015) 60%);
  border:1px solid rgba(255,255,255,.14);
  -webkit-backdrop-filter:blur(20px) saturate(1.2); backdrop-filter:blur(20px) saturate(1.2);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.14), 0 60px 120px -50px rgba(0,0,0,1);
  overflow:hidden;
}
.form::before{ content:""; position:absolute; width:420px; height:420px; border-radius:50%; left:var(--fx,50%); top:var(--fy,0%); transform:translate(-50%,-50%); background:radial-gradient(circle, rgba(var(--ice-rgb),.10), transparent 60%); pointer-events:none; transition:opacity .4s; }
.form__row{ display:grid; grid-template-columns:1fr 1fr; gap:0 18px; }
.fld{ position:relative; padding-top:18px; margin-bottom:12px; }
.fld input,.fld textarea{
  width:100%; display:block; appearance:none; -webkit-appearance:none;
  background:transparent; color:var(--ink); -webkit-text-fill-color:var(--ink); caret-color:var(--ice);
  border:0; border-bottom:1px solid var(--line-2); border-radius:0;
  padding:10px 0 10px; font:inherit; font-size:16px; line-height:1.5; outline:none;
  transition:border-color .3s;
}
.fld textarea{ resize:vertical; min-height:112px; }
.fld label{ position:absolute; left:0; top:28px; color:var(--ink-3); font-size:.95rem; pointer-events:none; transform-origin:0 0; transition:transform .45s var(--e-out), color .3s; }
.fld label i{ font-style:normal; color:var(--ice); margin-left:2px; }
.fld input:focus + label,.fld input:not(:placeholder-shown) + label,
.fld textarea:focus + label,.fld textarea:not(:placeholder-shown) + label{ transform:translateY(-22px) scale(.8); color:var(--ink-2); }
.fld .bar{ position:absolute; left:0; right:0; bottom:0; height:1px; background:linear-gradient(90deg, transparent, var(--ice), transparent); transform:scaleX(0); transition:transform .6s var(--e-out); }
.fld textarea ~ .bar{ bottom:6px; }
.fld input:focus ~ .bar,.fld textarea:focus ~ .bar{ transform:scaleX(1); }
.fld .err{ display:block; min-height:1.2em; font-size:.74rem; color:#ffb4a8; margin-top:4px; opacity:0; transition:opacity .3s; }
.fld.invalid .err{ opacity:1; }
.fld.invalid input,.fld.invalid textarea{ border-bottom-color:rgba(255,180,168,.6); }
.fld input:-webkit-autofill,.fld input:-webkit-autofill:hover,.fld input:-webkit-autofill:focus{
  -webkit-text-fill-color:var(--ink); caret-color:var(--ice);
  -webkit-box-shadow:0 0 0 1000px #0c0e12 inset; box-shadow:0 0 0 1000px #0c0e12 inset;
  transition:background-color 99999s ease-out 0s;
}
.agree{ display:flex; gap:12px; align-items:flex-start; margin:8px 0 22px; font-size:var(--t-sm); color:var(--ink-2); cursor:pointer; }
.agree input{ position:absolute; opacity:0; width:1px; height:1px; }
.agree .box{ flex:none; width:20px; height:20px; margin-top:2px; border-radius:6px; border:1px solid var(--line-2); display:grid; place-items:center; transition:background .3s, border-color .3s; }
.agree .box svg{ width:12px; height:12px; stroke:#000; stroke-width:2.5; fill:none; stroke-dasharray:20; stroke-dashoffset:20; transition:stroke-dashoffset .4s; }
.agree input:checked + .box{ background:var(--ice); border-color:var(--ice); }
.agree input:checked + .box svg{ stroke-dashoffset:0; }
.agree input:focus-visible + .box{ outline:1.5px solid var(--ice); outline-offset:3px; }
.agree.invalid .box{ border-color:rgba(255,180,168,.8); }
.form__send{ width:100%; justify-content:center; }
.form__send .spin{ display:none; width:18px; height:18px; border-radius:50%; border:1.5px solid rgba(0,0,0,.25); border-top-color:#000; animation:spin .8s linear infinite; }
.form.is-sending .form__send .spin{ display:block; }
.form.is-sending .form__send .lbl{ opacity:.6; }
@keyframes spin{ to{ transform:rotate(360deg); } }
.form__done{ position:absolute; inset:0; display:grid; place-items:center; text-align:center; padding:32px; opacity:0; visibility:hidden; transition:opacity .8s, visibility 0s linear .8s; }
.form.is-done .form__done{ opacity:1; visibility:visible; transition:opacity .8s .2s; }
.form.is-done .form__body{ opacity:0; transform:scale(.97); filter:blur(8px); pointer-events:none; }
.form__body{ transition:opacity .6s, transform .8s var(--e-out), filter .6s; }
.form__done svg{ width:64px; height:64px; margin:0 auto 18px; }
.form__done svg circle{ fill:none; stroke:rgba(var(--ice-rgb),.4); }
.form__done svg path{ fill:none; stroke:var(--ice); stroke-width:2; stroke-dasharray:40; stroke-dashoffset:40; }
.form.is-done .form__done svg path{ animation:dash .8s .5s var(--e-out) forwards; }
@keyframes dash{ to{ stroke-dashoffset:0; } }
.form__done b{ display:block; font-size:var(--t-h3); font-weight:500; letter-spacing:-.02em; }
.form__done p{ margin-top:10px; color:var(--ink-2); font-size:var(--t-sm); }
.form__done button{ margin-top:22px; font-size:var(--t-sm); color:var(--ink-3); text-decoration:underline; text-underline-offset:4px; }
@media (max-width:899px){
  .contact__grid{ grid-template-columns:1fr; }
  .contact__glass{ right:-24%; top:2%; width:92vw; opacity:.55; }
}
@media (max-width:519px){
  .form__row{ grid-template-columns:1fr; }
  .about__stack{ --cx:31%; --fw:42%; }
  .pl__lbl{ font-size:.7rem; gap:6px; }
  .pl__lbl::before{ width:8px; }
  .erp__kpis span{ white-space:normal; line-height:1.25; min-height:2.5em; }
  .erp__kpis small{ display:block; margin:0; }
}
@media (max-width:359px){ .app__seg{ display:none; } .app__sum{ padding:8px 10px; } }

/* =========================================================
   FOOTER
   ========================================================= */
.ftr{ position:relative; padding-top:clamp(40px,8svh,80px); overflow:hidden; border-top:1px solid var(--line); }
.ftr__top{ display:flex; justify-content:space-between; align-items:flex-start; gap:24px; flex-wrap:wrap; }
.ftr__logo svg{ height:44px; width:auto; fill:#fff; }
.ftr__info{ display:grid; grid-template-columns:repeat(4,auto); gap:10px clamp(20px,3vw,48px); font-size:var(--t-sm); }
.ftr__info dt{ color:var(--ink-3); font-size:var(--t-xs); }
.ftr__info dd{ margin:2px 0 0; color:var(--ink-2); }
.ftr__big{ position:relative; margin-top:clamp(40px,8svh,90px); }
.ftr__big svg{ width:100%; height:auto; overflow:visible; }
.ftr__big .face{ fill:url(#ftrFace); }
.ftr__big .o{ fill:none; stroke:rgba(255,255,255,.28); stroke-width:.22; }
.ftr__big .lit{ fill:url(#ftrG); mix-blend-mode:screen; }
.ftr__big #ftrExt use:last-child{ stroke:rgba(var(--ice-rgb),.18); stroke-width:.2; }
.ftr__bot{ display:flex; justify-content:space-between; align-items:center; gap:16px; padding-block:22px calc(22px + env(safe-area-inset-bottom,0px)); border-top:1px solid var(--line); font-size:var(--t-xs); color:var(--ink-3); flex-wrap:wrap; }
.ftr__up{ display:inline-flex; align-items:center; gap:8px; color:var(--ink-2); font-family:var(--f-disp); }
.ftr__up svg{ width:14px; height:14px; transition:transform .5s var(--e-out); }
.ftr__up:hover svg{ transform:translateY(-3px); }
@media (max-width:1023px){ .ftr__info{ grid-template-columns:repeat(2,auto); } }
@media (max-width:519px){ .ftr__info{ grid-template-columns:1fr; } }

/* reduced motion */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{ animation-duration:.001ms!important; animation-iteration-count:1!important; transition-duration:.001ms!important; }
}
