/* ---- fonts.css ---- */
/* Self-hosted Google Fonts (Be Vietnam Pro, DM Mono) — SIL Open Font License */
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/be-vietnam-pro-400-vietnamese.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/be-vietnam-pro-400-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/be-vietnam-pro-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/be-vietnam-pro-500-vietnamese.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/be-vietnam-pro-500-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/be-vietnam-pro-500-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/be-vietnam-pro-600-vietnamese.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/be-vietnam-pro-600-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/be-vietnam-pro-600-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/be-vietnam-pro-700-vietnamese.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/be-vietnam-pro-700-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/be-vietnam-pro-700-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url(/fonts/be-vietnam-pro-800-vietnamese.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url(/fonts/be-vietnam-pro-800-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url(/fonts/be-vietnam-pro-800-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'DM Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/dm-mono-400-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'DM Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/dm-mono-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'DM Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/dm-mono-500-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'DM Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/dm-mono-500-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ---- styles.css ---- */
:root{--ink:#252b25;--paper:#f5f7f8;--white:#fff;--muted:#717970;--line:#e5e9e3;--darkline:#dfe4dd;--mint:#87bfdf;--lime:#447c9b;--max:1240px;--pad:clamp(22px,6vw,92px);--font:"Be Vietnam Pro",sans-serif;--mono:"DM Mono",monospace}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:84px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font);font-size:15px;line-height:1.7}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}button{cursor:pointer}.skip{position:absolute;z-index:40;top:-80px;left:20px;background:var(--mint);padding:10px 18px}.skip:focus{top:12px}.topbar{height:78px;padding:0 var(--pad);display:flex;align-items:center;justify-content:space-between;background:rgba(255,255,255,.94);color:var(--ink);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;backdrop-filter:blur(12px)}.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:16px;letter-spacing:.08em;line-height:1.15}.brand-mark{width:36px;height:36px;display:grid;place-items:center;border:1px solid var(--lime);border-radius:50%;font-size:15px;color:var(--lime);letter-spacing:-.12em}.brand-mark span{color:var(--ink)}.brand small{display:block;font:9px var(--mono);letter-spacing:.12em;color:#747c72;margin-top:4px}.mint{color:var(--lime)}.nav{display:flex;gap:34px;font-size:12px;color:#535c53}.nav a:hover,.nav a:focus-visible{color:#375e74}.nav-actions{display:flex;align-items:center;gap:18px}.text-button{border:0;background:none;color:#424a42;font-size:12px}.button{min-height:48px;padding:0 22px;display:inline-flex;align-items:center;justify-content:center;gap:28px;background:#87bfdf;color:#1f292e;border:1px solid #87bfdf;font-weight:700;font-size:12px;transition:transform .25s,background .25s,color .25s}.button:hover{transform:translateY(-2px);background:#a9d3eb}.button-small{min-height:38px;padding:0 14px;gap:13px}.button-outline{background:transparent;border-color:#737d70;color:white}.button-outline:hover{color:var(--ink)}.menu-toggle{display:none;background:none;color:var(--ink);border:0;font-size:24px}.hero{position:relative;min-height:640px;background:#fafbfc;color:var(--ink);padding:90px var(--pad) 44px;display:grid;grid-template-columns:1fr .94fr;align-items:center;gap:7vw;overflow:hidden}.hero-bg{position:absolute;inset:0;background:radial-gradient(ellipse at 78% 43%,rgba(76,143,186,.16),transparent 37%),linear-gradient(115deg,#fafbfc 35%,#eef2f4)}.hero-copy,.hero-art,.hero-index{position:relative}.eyebrow{font:10px var(--mono);letter-spacing:.1em;color:#687267;margin:0 0 22px}.hero .eyebrow{color:#505f67}.eyebrow i,.status i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#49809f;margin-right:8px;box-shadow:0 0 10px #49809f66}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(42px,5.8vw,82px);line-height:1.12;letter-spacing:-.055em;margin:0 0 26px;font-weight:600}h1 em,h2 em{font-style:normal;color:#436c83}.hero-lede{max-width:510px;color:#5d665d;font-size:15px;line-height:1.9}.hero-actions{display:flex;align-items:center;gap:27px;margin-top:34px}.quiet-link{font-size:12px;color:#414941}.quiet-link span{margin-left:10px;color:#436c83}.hero-proof{display:flex;gap:20px;margin-top:68px;border-top:1px solid var(--darkline);padding-top:17px;color:#596359;font-size:9px}.hero-proof b{font:10px var(--mono);color:#436c83;margin-right:5px}.hero-art{height:min(400px,38vw);min-height:310px;border:1px solid #d5dfe4;background:radial-gradient(circle at 50% 50%,#fff,#ebf1f4 61%,#e5ebef);display:grid;place-items:center;overflow:hidden;box-shadow:0 20px 60px #2c3a420b}.hero-art:after{content:"";position:absolute;inset:0;background-image:linear-gradient(#7291a214 1px,transparent 1px),linear-gradient(90deg,#7291a214 1px,transparent 1px);background-size:34px 34px;mask-image:linear-gradient(transparent,#000 18%,#000 80%,transparent)}.art-top,.art-bottom{position:absolute;z-index:2;left:20px;right:20px;display:flex;justify-content:space-between;color:#64715e;font:8px var(--mono);letter-spacing:.06em}.art-top{top:18px}.art-bottom{bottom:16px}.status{color:#4b5860}.orbit{position:absolute;border:1px solid #7393a550;border-radius:50%;z-index:1}.orbit-a{width:235px;height:235px;animation:spin 32s linear infinite}.orbit-b{width:325px;height:170px;transform:rotate(-35deg);animation:spin 45s linear infinite reverse}.orbit-a:before,.orbit-b:before{content:"";position:absolute;width:8px;height:8px;border-radius:50%;background:#588dab;box-shadow:0 0 12px #588dab88;top:12%;left:19%}.orbit-b:before{top:85%;left:73%;width:5px;height:5px}.core-card{position:relative;z-index:2;width:168px;height:154px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:#ffffffd9;border:1px solid #95aebc;box-shadow:0 14px 40px #2c3a4212}.core-icon{font:32px var(--mono);color:#456d83}.core-card strong{font-size:10px;letter-spacing:.1em}.core-card small{font:7px var(--mono);color:#707c6b}.float-tag{position:absolute;z-index:3;padding:8px 11px;background:#fff;border:1px solid #d6dde1;color:#424e3d;font:8px var(--mono);letter-spacing:.04em;box-shadow:0 5px 18px #1f2c330d;animation:float 5s ease-in-out infinite}.tag-code{top:26%;left:10%}.tag-ai{top:34%;right:9%;animation-delay:-1s}.tag-discord{bottom:25%;left:14%;animation-delay:-2s}.hero-index{position:absolute;right:var(--pad);bottom:17px;color:#737e71;font:10px var(--mono)}.ticker{overflow:hidden;background:#dfe9ef;color:#394c56;white-space:nowrap;padding:11px 0;font:10px var(--mono);letter-spacing:.1em;border-block:1px solid #d5dfe5}.ticker div{width:max-content;animation:ticker 38s linear infinite}.ticker b{padding:0 28px;color:#5f889f}.section{max-width:var(--max);margin:0 auto;padding:108px var(--pad)}.section-head{display:flex;justify-content:space-between;align-items:end;gap:40px;margin-bottom:49px}.section-head h2,.contact-intro h2{font-size:clamp(36px,4.5vw,60px);line-height:1.15;letter-spacing:-.05em;margin:0}.section-head h2 em,.contact-intro h2 em{color:#436c83}.section-note{max-width:370px;color:#626b61;font-size:13px;line-height:1.9;margin:0 0 4px}.service-list{border-top:1px solid var(--darkline)}.service-row{display:grid;grid-template-columns:55px minmax(250px,1fr) 180px 44px;gap:25px;align-items:center;padding:27px 4px;border-bottom:1px solid var(--darkline);transition:padding .25s,background .25s}.service-row:hover{padding-left:14px;padding-right:14px;background:#fff9}.service-no{font:12px var(--mono);color:#63747d;align-self:start;padding-top:9px}.service-row h3{font-size:20px;letter-spacing:-.03em;margin:0 0 4px}.service-row p{font-size:12px;color:#626b61;margin:0 0 8px}.service-tags{font:8px var(--mono);letter-spacing:.06em;color:#687365}.service-tags i{color:#6f8ea0;font-style:normal;padding:0 5px}.price{color:#3a5e72;font-weight:700;font-size:13px}.price small{display:block;font-size:9px;font-weight:500;color:#737b70}.row-arrow{width:40px;height:40px;border:1px solid var(--darkline);border-radius:50%;display:grid;place-items:center;font-size:18px;transition:background .2s}.row-arrow:hover{background:var(--mint)}.price-note{font-size:10px;color:#737b70;margin-top:17px}.work-section{background:#eaeef0;color:var(--ink);border-block:1px solid #dde3e7}.work-inner{padding-top:99px;padding-bottom:110px}.work-section .section-head h2 em{color:#436c83}.work-section .section-note{color:#596359}.work-grid{display:grid;grid-template-columns:1.13fr .87fr;gap:23px;align-items:start}.work-card{min-width:0;background:#fff;border:1px solid #e0e4e6;padding:10px}.work-card:nth-child(2){margin-top:60px}.work-image{height:310px;position:relative;overflow:hidden;background:#e0e5e8}.work-card:nth-child(2) .work-image{height:245px}.work-image img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .65s cubic-bezier(.2,.7,.2,1)}.work-card:hover .work-image img{transform:scale(1.035)}.image-label{position:absolute;left:13px;top:13px;padding:6px 8px;background:#fff;color:#3a4247;font:8px var(--mono);letter-spacing:.06em}.image-open{position:absolute;right:13px;bottom:13px;border:0;width:42px;height:42px;border-radius:50%;background:var(--mint);color:#1f292e;font-size:18px}.work-caption{display:flex;justify-content:space-between;gap:18px;align-items:center;padding:15px 5px 4px}.work-caption .eyebrow{color:#65715f;font-size:8px;margin-bottom:6px}.work-caption h3{font-size:16px;letter-spacing:-.02em;margin:0}.pill{border:1px solid #d7dfe3;padding:5px 8px;color:#4c5961;font:7px var(--mono);white-space:nowrap}.campaign{position:relative;min-height:430px;background:#343d42;color:white;overflow:hidden}.campaign>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 48%;opacity:.65}.campaign-shade{position:absolute;inset:0;background:linear-gradient(90deg,#242c31ed,#242c31b8 43%,#242c3112)}.campaign-copy{position:relative;width:min(600px,80%);padding:82px 0 70px var(--pad);margin-left:max(0px,calc((100vw - var(--max))/2))}.campaign-copy .eyebrow{color:#d6e0e5}.campaign-copy h2{font-size:clamp(38px,5vw,66px);letter-spacing:-.05em;line-height:1.12;margin:0 0 16px}.campaign-copy h2 em{color:var(--mint);font-style:normal}.campaign-copy p:not(.eyebrow){max-width:385px;color:#dfe4e7;font-size:13px}.campaign-copy .button{margin-top:12px}.campaign-caption{position:absolute;bottom:14px;right:var(--pad);font:8px var(--mono);color:#e0e6e9;letter-spacing:.08em}.process{padding-top:105px;padding-bottom:105px}.steps{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--darkline)}.step{padding:20px 22px 0 0;min-height:174px;border-right:1px solid var(--darkline);margin-right:22px}.step:last-child{border:0;margin:0}.step>span{font:11px var(--mono);color:#3c667d}.step h3{font-size:16px;margin:21px 0 7px;letter-spacing:-.02em}.step p{font-size:11px;line-height:1.85;color:#616a60;max-width:220px}.contact-section{background:#eaeef0;border-block:1px solid #dde3e7}.contact-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:9vw;align-items:start}.contact-intro p:not(.eyebrow){margin:23px 0 16px;max-width:400px;color:#596359;font-size:12px;line-height:1.9}.email-link{font:11px var(--mono);border-bottom:1px solid #8a987b;padding-bottom:4px}.contact-form{display:grid;grid-template-columns:1fr 1fr;gap:17px}.contact-form label{font-size:11px;font-weight:600;color:#424a41}.contact-form label:nth-child(3),.contact-form label:nth-child(4),.contact-form button,.form-status,.contact-form small{grid-column:1/-1}.contact-form input,.contact-form select,.contact-form textarea{display:block;width:100%;margin-top:7px;border:1px solid #c8ced2;background:#fff;padding:12px;color:#252b25;font-size:12px;border-radius:2px}.contact-form textarea{resize:vertical;min-height:110px}.contact-form input:focus,.contact-form select:focus,.contact-form textarea:focus{outline:2px solid #426e86;outline-offset:1px}.contact-form .button{justify-self:start}.contact-form small,.form-status{font-size:10px;color:#596359;margin:0}.policy-section{background:#fafbfc}.policy-grid{border-top:1px solid var(--darkline)}.policy{border-bottom:1px solid var(--darkline)}.policy summary{list-style:none;padding:20px 3px;display:flex;justify-content:space-between;cursor:pointer;font-size:14px;font-weight:600}.policy summary::-webkit-details-marker{display:none}.policy summary span{font:19px var(--mono);color:#3c667d}.policy[open] summary span{transform:rotate(45deg)}.policy>div{max-width:760px;color:#596359;font-size:11px;line-height:1.95;padding:0 25px 17px 3px}.footer{background:#eaeef0;color:var(--ink);padding:47px var(--pad) 20px;border-top:1px solid var(--darkline)}.footer-top{max-width:var(--max);margin:auto;display:flex;align-items:center;justify-content:space-between;padding-bottom:34px;border-bottom:1px solid var(--darkline)}.footer-top>p{font-size:12px;color:#596359;margin:0}.footer-bottom{max-width:var(--max);margin:16px auto 0;display:flex;justify-content:space-between;gap:16px;color:#596359;font:8px var(--mono)}.image-modal{width:min(1000px,calc(100% - 32px));padding:15px;background:#fff;border:1px solid #c8ced2}.image-modal::backdrop{background:#1f2427cc;backdrop-filter:blur(5px)}.image-modal img{width:100%;height:auto;display:block}.modal-close{float:right;border:0;background:none;font-size:25px}.reveal{opacity:0;transform:translateY(20px);transition:opacity .7s,transform .7s}.reveal.in-view{opacity:1;transform:none}@keyframes spin{to{transform:rotate(360deg)}}@keyframes float{0%,100%{translate:0 0}50%{translate:0 -7px}}@keyframes ticker{to{transform:translateX(-50%)}}@media(max-width:900px){.nav{gap:17px}.hero{gap:4vw;grid-template-columns:1fr 1fr}.hero-proof{gap:9px}.hero-proof span{font-size:8px}.service-row{grid-template-columns:35px minmax(200px,1fr) 145px 38px;gap:14px}.work-image{height:250px}.steps{grid-template-columns:repeat(2,1fr);row-gap:24px}.step:nth-child(2){border-right:0}.contact-grid{gap:5vw}}@media(max-width:680px){.topbar{height:66px}.nav-actions .button{display:none}.menu-toggle{display:block;margin-left:auto;margin-right:13px}.nav{display:none;position:absolute;top:65px;left:0;right:0;padding:20px var(--pad);background:#fff;border-top:1px solid var(--line);flex-direction:column;gap:18px}.nav.open{display:flex}.nav-actions{margin-left:0}.hero{grid-template-columns:1fr;padding-top:66px;gap:45px}.hero h1{font-size:clamp(43px,12vw,68px)}.hero-art{height:340px}.hero-proof{margin-top:46px;flex-wrap:wrap}.hero-index{bottom:8px}.section{padding:75px 23px}.section-head{display:block;margin-bottom:32px}.section-note{margin-top:19px}.service-row{grid-template-columns:32px 1fr 42px;gap:12px;padding:21px 0}.service-row>div{grid-column:2}.service-row .price{grid-column:2;grid-row:2}.service-row .row-arrow{grid-column:3;grid-row:1/3}.service-row h3{font-size:17px}.service-row p{font-size:11px}.service-tags{font-size:7px}.work-inner{padding-top:75px;padding-bottom:80px}.work-grid{grid-template-columns:1fr;gap:30px}.work-card:nth-child(2){margin-top:0}.work-image,.work-card:nth-child(2) .work-image{height:auto;aspect-ratio:1.45}.work-caption h3{font-size:14px}.campaign{min-height:400px}.campaign-copy{width:90%;padding:68px 23px;margin:0}.campaign>img{object-position:60% center}.steps{grid-template-columns:1fr 1fr;gap:0}.step{min-height:165px;margin-right:13px;padding-right:12px}.step:nth-child(2){margin-right:0}.step:nth-child(3){border-right:1px solid var(--darkline)}.step h3{font-size:14px}.step p{font-size:10px}.contact-grid{grid-template-columns:1fr;gap:35px}.contact-form{grid-template-columns:1fr}.contact-form label,.contact-form label:nth-child(3),.contact-form label:nth-child(4){grid-column:1}.footer{padding:36px 23px 18px}.footer-top{align-items:flex-start;gap:20px;flex-wrap:wrap}.footer-top>p{order:3;width:100%}.footer-bottom{flex-direction:column;gap:9px}.art-top,.art-bottom{font-size:7px}.status{font-size:0}.status i{font-size:7px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.reveal{opacity:1;transform:none}}



.language-toggle{min-width:42px;height:36px;border:1px solid #c5d8df;border-radius:999px;background:transparent;color:var(--ink,#252b25);font:10px var(--mono,monospace);letter-spacing:.04em}.language-toggle:hover,.language-toggle:focus-visible{border-color:#8fb5c4;background:#f0f6f8}:root[data-theme="dark"] .language-toggle{color:#e6ede9;border-color:#435660}:root[data-theme="dark"] .language-toggle:hover{background:#252e31}

.forms-roadmap{max-width:var(--max);margin:0 auto;padding:90px var(--pad);display:grid;grid-template-columns:.8fr 1.2fr;gap:7vw}.roadmap-heading h2,.tracking-heading h2{font-size:clamp(32px,4vw,52px);letter-spacing:-.05em;line-height:1.15}.roadmap-heading p:not(.eyebrow),.tracking-heading p:not(.eyebrow){color:#5e6d75;line-height:1.9;font-size:13px}.roadmap-list{border-top:1px solid var(--darkline)}.roadmap-phase{display:grid;grid-template-columns:48px 1fr;gap:17px;padding:23px 0;border-bottom:1px solid var(--darkline)}.roadmap-number{font:12px var(--mono);color:#397493}.roadmap-phase h3{margin:0;font-size:17px}.roadmap-phase p,.roadmap-phase small{font-size:12px;line-height:1.8;color:#63717a}.roadmap-phase-top{display:flex;justify-content:space-between;gap:12px;align-items:center}.roadmap-phase .status-pill,.status-pill{border:1px solid #c1d4df;background:#f1f7fa;color:#386b88;border-radius:99px;padding:6px 10px;font:8px var(--mono)}.project-tracking{background:#edf3f6;border-block:1px solid #dce7ed;padding:90px max(var(--pad),calc((100vw - var(--max))/2));display:grid;grid-template-columns:1fr 1fr;gap:7vw;align-items:center}.tracking-preview{border:1px solid #cfdee6;background:white;border-radius:22px;padding:23px;box-shadow:0 14px 45px #31566b12}.tracking-preview-top{display:flex;justify-content:space-between;align-items:center;font:9px var(--mono);color:#4c6472}.tracking-empty{text-align:center;padding:37px 24px}.tracking-icon{display:grid;place-items:center;width:48px;height:48px;margin:0 auto 14px;border-radius:50%;background:#eaf3f8;color:#327aa0}.tracking-empty h3{margin:0}.tracking-empty p{font-size:12px;line-height:1.8;color:#61727c}.tracking-steps{display:flex;flex-wrap:wrap;gap:8px}.tracking-steps span{padding:8px 10px;border-radius:999px;background:#f0f5f8;color:#546c79;font-size:10px}.tracking-steps i{font:9px var(--mono);margin-right:6px;color:#3982a6}.forms-product{max-width:var(--max);margin:0 auto}.request-form .button:disabled{opacity:.6;cursor:wait}:root[data-theme="dark"] .project-tracking{background:#1c252a;border-color:#34434a}:root[data-theme="dark"] .tracking-preview{background:#222a2f;border-color:#3b4a51}:root[data-theme="dark"] .tracking-empty p,:root[data-theme="dark"] .roadmap-phase p,:root[data-theme="dark"] .roadmap-phase small,:root[data-theme="dark"] .tracking-heading p:not(.eyebrow),:root[data-theme="dark"] .roadmap-heading p:not(.eyebrow){color:#c1ccd1}:root[data-theme="dark"] .tracking-steps span,:root[data-theme="dark"] .roadmap-phase .status-pill{background:#26353d;color:#c3d6df;border-color:#435c69}@media(max-width:760px){.forms-roadmap,.project-tracking{grid-template-columns:1fr;padding:68px 23px;gap:25px}.roadmap-phase-top{align-items:flex-start;flex-direction:column}}

@media(max-width:980px){.topbar{gap:12px}.menu-toggle{display:block;margin-left:auto;margin-right:4px}.nav{display:none;position:absolute;top:100%;left:0;right:0;padding:19px var(--pad);background:var(--white);border-top:1px solid var(--line);box-shadow:0 18px 32px #162e3a12;flex-direction:column;gap:15px}.nav.open{display:flex}.nav-actions{gap:9px}.nav-actions .button{display:none}}
.button,.button-small,.button-outline,.theme-toggle,.language-toggle,.row-arrow{transition:transform .22s ease,box-shadow .22s ease,background-color .22s ease,color .22s ease}.button:hover,.button-small:hover,.button-outline:hover{transform:translateY(-2px);box-shadow:0 10px 25px #396f871b}.button:active,.button-small:active,.button-outline:active{transform:translateY(0) scale(.98)}.home-orbit{animation:orbit-drift 22s linear infinite}.home-visual{animation:soft-arrive .75s .12s both}.home-copy{animation:soft-arrive .65s both}@keyframes soft-arrive{from{opacity:0;translate:0 14px}to{opacity:1;translate:0 0}}@keyframes orbit-drift{to{rotate:360deg}}@media(prefers-reduced-motion:reduce){.home-orbit,.home-visual,.home-copy{animation:none!important}}
.account-shell{position:relative;flex:none}.account-toggle{position:relative;display:grid;place-items:center;width:44px;height:44px;border:1px solid #b9d3e0;border-radius:50%;background:#eaf4f8;color:#305f77;cursor:pointer;transition:transform .2s,background .2s,box-shadow .2s}.account-toggle svg{width:23px;height:23px}.account-toggle i{position:absolute;right:1px;bottom:1px;width:10px;height:10px;border:2px solid var(--white);border-radius:50%;background:#47a781}.account-toggle:hover{transform:translateY(-2px);background:#dcecf4;box-shadow:0 6px 20px #2d789329}.account-toggle:focus-visible,.account-menu :focus-visible{outline:3px solid #55849e;outline-offset:3px}.account-menu[hidden],.account-password[hidden],.account-google-note[hidden]{display:none!important}.account-menu{position:absolute;z-index:50;right:0;top:calc(100% + 12px);width:min(320px,calc(100vw - 28px));padding:14px;border:1px solid var(--darkline);border-radius:20px;background:var(--white);color:var(--ink);box-shadow:0 20px 50px #20344028;animation:account-in .2s ease both}.account-identity{display:grid;gap:4px;padding:10px 10px 14px;border-bottom:1px solid var(--darkline);overflow-wrap:anywhere}.account-identity strong{font-size:14px}.account-identity small{color:var(--muted);font-size:11px}.account-role{justify-self:start;margin-top:5px;padding:5px 9px;border-radius:99px;background:#e7f2f7;color:#376d89;font-size:10px}.account-link{display:flex;align-items:center;justify-content:space-between;width:100%;padding:12px 10px;border:0;border-radius:10px;background:transparent;color:var(--ink);font-size:12px;font-weight:600;font-family:inherit;text-decoration:none;text-align:left;cursor:pointer}.account-link:hover{background:#edf5f8}.account-signout{border-top:1px solid var(--darkline);border-radius:0;margin-top:8px;color:#9a3d43}.account-password{display:grid;gap:10px;padding:10px;border:1px solid var(--darkline);border-radius:14px;background:var(--paper)}.account-password label{display:grid;gap:5px;font-size:11px;font-weight:600;color:var(--muted)}.account-password input{width:100%;min-height:42px;padding:9px 10px;border:1px solid var(--darkline);border-radius:9px;background:var(--white);color:var(--ink)}.account-password small,.account-google-note{font-size:10px;color:var(--muted);line-height:1.5}.account-save{min-height:42px;border:0;border-radius:99px;background:#87bfdf;color:#1f292e;font-weight:700;cursor:pointer}.account-save:disabled{opacity:.6;cursor:wait}.account-feedback{margin:6px 10px 0;font-size:11px;line-height:1.5;color:#a33c43}.account-feedback:empty{display:none}.account-google-note{margin:8px 10px}.account-menu .account-link span{font-family:inherit}@keyframes account-in{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}:root[data-theme='dark'] .account-toggle{background:#263941;color:#a9d2e4;border-color:#486978}:root[data-theme='dark'] .account-menu{background:#222b30;border-color:#3b4a51}:root[data-theme='dark'] .account-link:hover{background:#2e414a}:root[data-theme='dark'] .account-role{background:#2d4754;color:#c0e2f0}@media(max-width:680px){.nav-actions{gap:6px}.account-menu{right:-2px}}@media(prefers-reduced-motion:reduce){.account-toggle,.account-menu{animation:none;transition:none}}
@media(max-width:480px){.topbar{gap:8px!important}.topbar .brand-word{display:none}.topbar .menu-toggle{margin-right:2px}.topbar .nav-actions{gap:4px}}

/* ---- theme.css ---- */
:root[data-theme="dark"]{color-scheme:dark;--ink:#eaeef0;--paper:#171b16;--white:#20251f;--muted:#a7b0a2;--line:#343b32;--darkline:#394137;--mint:#86bcdb;--lime:#76aac7}
:root[data-theme="dark"] body,:root[data-theme="dark"] .policy-section{background:#171b16;color:#eaeef0}
:root[data-theme="dark"] .topbar{background:#191e18f2;color:#eaeef0;border-color:#343b32}
:root[data-theme="dark"] .brand-mark{background:#242c31;border-color:#455a66}
:root[data-theme="dark"] .brand small,:root[data-theme="dark"] .nav,:root[data-theme="dark"] .text-button{color:#c1c9bd}
:root[data-theme="dark"] .hero{background:#191e18;color:#eaeef0}
:root[data-theme="dark"] .hero-bg{background:radial-gradient(ellipse at 78% 43%,#638aa020,transparent 37%),linear-gradient(115deg,#191e18 35%,#1e2427)}
:root[data-theme="dark"] .hero .eyebrow,:root[data-theme="dark"] .hero-lede,:root[data-theme="dark"] .quiet-link,:root[data-theme="dark"] .hero-proof{color:#bbc5b5}
:root[data-theme="dark"] .hero-art{background:radial-gradient(circle at 50% 50%,#2a3034,#1f2326 61%,#191e18);border-color:#45555e}
:root[data-theme="dark"] .art-top,:root[data-theme="dark"] .art-bottom,:root[data-theme="dark"] .status,:root[data-theme="dark"] .hero-index{color:#b1bec5}
:root[data-theme="dark"] .hero-art:after{background-image:linear-gradient(#86bcdb12 1px,transparent 1px),linear-gradient(90deg,#86bcdb12 1px,transparent 1px)}
:root[data-theme="dark"] .orbit{border-color:#86bcdb3b}
:root[data-theme="dark"] .core-card{background:#1a1e20e8;border-color:#516875}
:root[data-theme="dark"] .core-card small{color:#abb8c0}
:root[data-theme="dark"] .float-tag{background:#212629;border-color:#424c52;color:#dae3e8}
:root[data-theme="dark"] .ticker{background:#232c31;color:#d2dfe6;border-color:#344047}
:root[data-theme="dark"] .section-note,:root[data-theme="dark"] .service-row p,:root[data-theme="dark"] .price-note,:root[data-theme="dark"] .step p{color:#bbc4b7}
:root[data-theme="dark"] .service-row:hover{background:#ffffff08}
:root[data-theme="dark"] .work-section,:root[data-theme="dark"] .contact-section,:root[data-theme="dark"] .footer{background:#1b1f21;color:#eaeef0;border-color:#343d30}
:root[data-theme="dark"] .work-card{background:#20261e;border-color:#394336}
:root[data-theme="dark"] .work-image{background:#30382c}
:root[data-theme="dark"] .work-caption .eyebrow,:root[data-theme="dark"] .work-section .section-note,:root[data-theme="dark"] .contact-intro p:not(.eyebrow),:root[data-theme="dark"] .footer-top>p,:root[data-theme="dark"] .footer-bottom{color:#bdc7b8}
:root[data-theme="dark"] .image-label{background:#20261e;color:#e1e7eb}
:root[data-theme="dark"] .pill{border-color:#4b5945;color:#c0cdd4}
:root[data-theme="dark"] .contact-form label{color:#cfd5d9}
:root[data-theme="dark"] .contact-form input,:root[data-theme="dark"] .contact-form select,:root[data-theme="dark"] .contact-form textarea{background:#20261e;color:#eaeef0;border-color:#4a5546}
:root[data-theme="dark"] .contact-form input::placeholder,:root[data-theme="dark"] .contact-form textarea::placeholder{color:#9da997}
:root[data-theme="dark"] .contact-form small,:root[data-theme="dark"] .form-status{color:#bcc4c8}
:root[data-theme="dark"] .policy>div{color:#bcc4c8}
:root[data-theme="dark"] .nav.open{background:#191e18}
.theme-toggle{width:42px;height:42px;border:1px solid var(--darkline);border-radius:50%;background:transparent;color:var(--ink);font-size:19px;display:grid;place-items:center;transition:background .2s,transform .2s}
.theme-toggle:hover{background:#7392a320;transform:rotate(-8deg)}
.theme-toggle:focus-visible,.menu-toggle:focus-visible,.button:focus-visible,a:focus-visible,.image-open:focus-visible{outline:3px solid #55849e;outline-offset:3px}
.brand{gap:12px;letter-spacing:0}
.brand-mark{position:relative;width:46px;height:46px;flex:0 0 46px;border:0;border-radius:47% 53% 50% 50%;background:#e9eff3;display:grid;place-items:center;transform:rotate(-5deg)}
.brand-mark:before{content:"";position:absolute;inset:3px;border:1px solid #c4d2da;border-radius:50%;transform:rotate(13deg)}
.brand-mark svg{position:relative;width:35px;height:35px;transform:rotate(5deg);fill:none;stroke:#436c83;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.brand-mark i{position:absolute;right:8px;top:9px;width:4px;height:4px;border-radius:50%;background:#689dbb}
.brand-word{font-size:16px;font-weight:700;letter-spacing:-.045em;color:var(--ink)}
.brand-word .mint{color:#436c83}
.brand-word small{font-weight:400;letter-spacing:.09em}
.button,.button-small,.button-outline{border-radius:999px}
.hero-art{border-radius:30px;box-shadow:0 22px 70px #2c3a4212}
.core-card{border-radius:26px}
.float-tag{border-radius:999px}
.service-list{border:0;display:grid;gap:10px}
.service-row{border:1px solid var(--darkline);border-radius:18px;background:#fff;padding:20px 22px;box-shadow:0 3px 12px #1e292f06}
.service-row:hover{padding-left:26px;padding-right:18px;background:#fff;box-shadow:0 10px 30px #1e292f0c}
.row-arrow{border-radius:50%}
.work-card{border-radius:22px;padding:9px;box-shadow:0 8px 30px #1e292f08}
.work-image,.image-modal{border-radius:15px;overflow:hidden}
.image-label{border-radius:999px}
.image-open{border-radius:50%}
.pill{border-radius:999px}
.contact-form input,.contact-form select,.contact-form textarea{border-radius:12px}
.contact-form .button{border-radius:999px}
.policy summary{border-radius:12px;transition:background .2s,padding .2s}
.policy summary:hover{background:#3d6e8a11;padding-inline:12px}
:root[data-theme="dark"] .brand-word{color:#eaeef0}
:root[data-theme="dark"] .brand-word .mint{color:#86bcdb}
:root[data-theme="dark"] .service-row{background:#1b1f21}
:root[data-theme="dark"] .service-row:hover{background:#202629}
:root[data-theme="dark"] .policy summary:hover{background:#86bcdb12}
@media(max-width:680px){.nav-actions{gap:10px}.theme-toggle{width:40px;height:40px}.nav-actions .text-button{font-size:11px}}

.language-toggle{min-width:42px;height:36px;border:1px solid #c5d8df;border-radius:999px;background:transparent;color:var(--ink,#252b25);font:10px var(--mono,monospace);letter-spacing:.04em}.language-toggle:hover,.language-toggle:focus-visible{border-color:#8fb5c4;background:#f0f6f8}:root[data-theme="dark"] .language-toggle{color:#e6ede9;border-color:#435660}:root[data-theme="dark"] .language-toggle:hover{background:#252e31}

/* ---- pages.css ---- */
.nav a[aria-current="page"]{color:#3a5e72;font-weight:700}
.page-main{min-height:65vh}
.home-hero{max-width:1440px;margin:0 auto;padding:74px var(--pad) 65px;display:grid;grid-template-columns:1fr .95fr;gap:7vw;align-items:center;min-height:590px;background:radial-gradient(ellipse at 80% 45%,#d2e0e875,transparent 38%)}
.home-copy h1,.page-intro h1{font-size:clamp(45px,6.1vw,82px);line-height:1.08;letter-spacing:-.06em;margin:0 0 22px;font-weight:650}
.home-copy h1{font-size:clamp(45px,5vw,66px)}
.home-copy h1 em,.page-intro h1 em{font-style:normal;color:#436c83}
.home-copy>p:not(.eyebrow){max-width:550px;color:#5d665d;font-size:15px;line-height:1.9}
.home-price{display:flex;align-items:center;gap:10px;margin-top:43px;padding-top:17px;border-top:1px solid var(--darkline);font-size:11px;color:#626b61}
.home-price strong{color:#3a5e72;font-size:13px}.home-price small{margin-left:auto;border:1px solid #d4dee4;border-radius:99px;padding:6px 10px;color:#485b66;font-size:9px}
.home-visual{height:400px;position:relative;overflow:hidden;border:1px solid #d5dfe4;border-radius:32px;background:radial-gradient(circle at 50% 50%,#fff,#ebf1f4 63%,#e5ebef);box-shadow:0 24px 70px #2c3a4212}
.home-visual:before{content:"";position:absolute;inset:0;background-image:linear-gradient(#7291a214 1px,transparent 1px),linear-gradient(90deg,#7291a214 1px,transparent 1px);background-size:32px 32px;mask-image:linear-gradient(transparent,#000 15%,#000 85%,transparent)}
.home-visual-top,.home-visual-bottom{position:absolute;z-index:2;left:22px;right:22px;display:flex;justify-content:space-between;color:#64715e;font:9px var(--mono);letter-spacing:.06em}.home-visual-top{top:20px}.home-visual-bottom{bottom:19px}
.home-orbit{position:absolute;width:230px;height:230px;border:1px solid #7393a555;border-radius:50%;top:50%;left:50%;transform:translate(-50%,-50%);display:grid;place-items:center}
.home-orbit:before,.home-orbit:after{content:"";position:absolute;inset:24px;border:1px solid #7393a555;border-radius:50%;transform:rotate(55deg) scaleX(1.45)}.home-orbit:after{transform:rotate(-55deg) scaleX(1.45)}
.home-orbit span{width:112px;height:112px;border:1px solid #a2b8c4;border-radius:28px;background:#fff;display:grid;place-items:center;color:#436c83;font:30px var(--mono);box-shadow:0 12px 40px #2c3a4212;z-index:1}
.home-orbit i,.home-orbit b{position:absolute;width:8px;height:8px;border-radius:50%;background:#5489a7;box-shadow:0 0 12px #5489a788}.home-orbit i{top:12%;left:20%}.home-orbit b{bottom:17%;right:15%}
.home-label{position:absolute;z-index:2;padding:9px 13px;border:1px solid #d6dde1;border-radius:99px;background:#fff;color:#424e3d;font:9px var(--mono);box-shadow:0 5px 18px #1f2c330d}.label-web{top:30%;left:8%}.label-auto{right:8%;top:35%}.label-ai{bottom:27%;left:12%}
.home-offers{background:#ebeff1;padding:74px var(--pad) 88px;border-block:1px solid #dde3e7}.home-offers>.section-head,.offer-grid{max-width:1240px;margin-left:auto;margin-right:auto}.home-offers .section-head{margin-bottom:32px}.home-offers h2,.forms-teaser h2,.home-close h2,.page-cta h2{font-size:clamp(32px,4.4vw,54px);line-height:1.15;letter-spacing:-.05em;margin:0}.home-offers h2 em,.home-close h2 em{font-style:normal;color:#436c83}
.offer-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.offer-card{min-height:236px;padding:23px 22px;border-radius:20px;background:#fff;border:1px solid #dde3e6;box-shadow:0 7px 24px #1d293008;transition:transform .2s,box-shadow .2s}.offer-card:hover{transform:translateY(-4px);box-shadow:0 15px 35px #1d293012}.offer-card>span{font:9px var(--mono);color:#5d717d;letter-spacing:.06em}.offer-card h3{margin:24px 0 9px;font-size:19px;letter-spacing:-.035em}.offer-card p{min-height:57px;margin:0 0 18px;color:#626b61;font-size:11px;line-height:1.8}.offer-card strong{font-size:12px;color:#3a5e72}
.forms-teaser{display:grid;grid-template-columns:.7fr 1.3fr;gap:6vw;align-items:center;padding:90px var(--pad);max-width:1440px;margin:auto}.forms-teaser-copy>p:not(.eyebrow){max-width:390px;color:#626b61;font-size:13px;line-height:1.9;margin:18px 0}.forms-teaser-image{position:relative;display:block;border-radius:24px;overflow:hidden;border:1px solid var(--darkline);box-shadow:0 14px 48px #171d2012}.forms-teaser-image img{display:block;width:100%;height:auto}.forms-teaser-image span,.service-product-visual>span,.forms-product-image>span{position:absolute;left:14px;bottom:14px;border-radius:99px;background:#191d1fe8;color:white;padding:8px 12px;font:9px var(--mono);letter-spacing:.04em}
.home-close{text-align:center;padding:88px var(--pad);background:#edf1f4;border-block:1px solid #dee4e7}.home-close>p:not(.eyebrow),.page-cta>p{max-width:590px;margin:16px auto 24px;color:#60695f;font-size:13px;line-height:1.9}.home-close .eyebrow{margin-bottom:15px}
.page-intro{max-width:1240px;margin:auto;padding:68px var(--pad) 55px}.page-intro>p:not(.eyebrow){max-width:720px;color:#60695f;font-size:14px;line-height:1.9}.page-intro h1{font-size:clamp(40px,5.6vw,72px)}
.service-catalog{max-width:1440px;margin:0 auto;padding:0 var(--pad)}.service-product{display:grid;grid-template-columns:1.05fr .95fr;gap:6vw;align-items:center;padding:45px 0;border-top:1px solid var(--darkline);scroll-margin-top:95px}.service-product.reverse .service-product-visual{order:2}.service-product.reverse .service-product-copy{order:1}
.service-product-visual{position:relative;overflow:hidden;border:1px solid var(--darkline);border-radius:22px;background:#e5eaed;box-shadow:0 14px 42px #1d292f0c}.service-product-visual img{display:block;width:100%;aspect-ratio:1.48;object-fit:cover}.service-product-copy h2{font-size:clamp(28px,3.5vw,43px);letter-spacing:-.05em;margin:0 0 12px}.service-product-copy>p:not(.eyebrow){max-width:520px;color:#616a60;font-size:13px;line-height:1.85}.service-product-copy h3{font-size:13px;margin:22px 0 8px}.price-line{display:flex;align-items:baseline;gap:6px;margin:18px 0;color:#3b5f74;font-size:13px}.price-line strong{font-size:21px}.price-line span{color:#687166;font-size:11px}.service-product-copy ul{padding-left:18px;margin:0;color:#4e584d;font-size:11px;line-height:2}.scope-note{border-left:2px solid #95afbe;padding:8px 0 8px 12px;color:#727a70!important;font-size:10px!important;line-height:1.75!important}.service-product-copy .button{margin-top:8px}
.service-priority{vertical-align:middle;display:inline-block;border-radius:99px;background:#e9eff3;padding:6px 9px;color:#395d72;font:8px var(--mono);letter-spacing:0}
.forms-product{max-width:1300px;margin:64px auto 80px;padding:30px;display:grid;grid-template-columns:.85fr 1.15fr;gap:38px;align-items:center;background:#ebeff1;border:1px solid #dce2e6;border-radius:28px;scroll-margin-top:95px}.forms-product-copy h2{font-size:clamp(30px,4vw,46px);letter-spacing:-.05em;margin:0 0 12px}.forms-product-copy>p:not(.eyebrow){color:#5f685d;font-size:12px;line-height:1.9}.status-pill{display:inline-flex;margin:6px 0 8px;padding:7px 11px;border:1px solid #cfd9df;border-radius:99px;color:#4b5a63;font:9px var(--mono)}.forms-product-copy h3{font-size:13px;margin:16px 0 8px}.feature-list{padding-left:18px;color:#4d574c;font-size:11px;line-height:1.9}.forms-product-image{position:relative;overflow:hidden;border-radius:18px;border:1px solid #d3d9dd}.forms-product-image img{display:block;width:100%;height:auto}
.project-tracking{max-width:1300px;margin:0 auto 80px;padding:0 30px;display:grid;grid-template-columns:.8fr 1.2fr;gap:7vw;align-items:center;scroll-margin-top:95px}.tracking-heading h2{font-size:clamp(28px,4vw,44px);letter-spacing:-.05em;line-height:1.2}.tracking-heading>p:not(.eyebrow){color:#60695f;font-size:12px;line-height:1.9;margin:16px 0 22px}.tracking-preview{padding:22px;border:1px solid var(--darkline);border-radius:22px;background:var(--surface,#fff);box-shadow:0 14px 42px #1d292f0c}.tracking-preview-top{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--darkline);padding-bottom:14px;font:9px var(--mono);letter-spacing:.04em}.tracking-preview-top .status-pill{margin:0}.tracking-empty{text-align:center;padding:28px 16px 24px}.tracking-icon{display:inline-grid;place-items:center;width:42px;height:42px;border-radius:14px;background:#e9eff3;color:#42687d;font-size:19px}.tracking-empty h3{font-size:17px;margin:13px 0 6px}.tracking-empty p{max-width:430px;margin:0 auto;color:#6b7469;font-size:11px;line-height:1.8}.tracking-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;border-top:1px solid var(--darkline);padding-top:15px}.tracking-steps span{display:flex;flex-direction:column;gap:8px;color:#60695f;font-size:9px}.tracking-steps i{display:grid;place-items:center;width:25px;height:25px;border:1px solid #d5dce0;border-radius:50%;font:9px var(--mono);font-style:normal;color:#4e6d7f}
::root[data-theme="dark"] .tracking-preview{background:#1b1f21;border-color:#343d30}::root[data-theme="dark"] .tracking-preview-top,:root[data-theme="dark"] .tracking-steps{border-color:#394137}::root[data-theme="dark"] .tracking-heading>p:not(.eyebrow),:root[data-theme="dark"] .tracking-empty p,:root[data-theme="dark"] .tracking-steps span{color:#bbc5b5}::root[data-theme="dark"] .tracking-icon{background:#232c31;color:#ccdbe4}
.page-cta{text-align:center;padding:70px var(--pad) 82px;background:#edf1f3;border-top:1px solid #dce2e6}.page-cta h2{font-size:clamp(28px,4vw,42px)}
.request-layout{max-width:1300px;margin:0 auto;padding:10px var(--pad) 90px;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(260px,.65fr);gap:45px;align-items:start}.contact-intro-wide{padding-bottom:35px}
.request-form{border:1px solid var(--darkline);border-radius:24px;background:#fff;overflow:hidden;box-shadow:0 12px 45px #19262d08}.form-section{padding:27px 30px;border-bottom:1px solid var(--line);display:grid;grid-template-columns:40px 1fr;column-gap:14px;row-gap:20px}.form-section:last-child{border-bottom:0}.form-step{grid-row:1/4;width:36px;height:36px;display:grid;place-items:center;border-radius:50%;background:#e9eff3;color:#436c83;font:11px var(--mono)}.form-section h2{font-size:18px;letter-spacing:-.03em;margin:0 0 3px}.form-section>div:nth-child(2)>p{font-size:10px;color:#70786e;margin:0}.form-two,.wide{grid-column:2}.form-two{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-two label,.request-form>label{font-size:10px;font-weight:600;color:#495248}.form-two label.wide{grid-column:1/-1}.request-form input,.request-form select,.request-form textarea{width:100%;display:block;margin-top:7px;padding:12px 13px;border:1px solid #d2d8db;border-radius:11px;background:#fff;color:#252b25;font-size:12px}.request-form textarea{resize:vertical;min-height:125px}.request-form input:focus,.request-form select:focus,.request-form textarea:focus{outline:2px solid #53819b;outline-offset:2px}.request-form small{font-weight:400;color:#778074}.service-select-label{font-size:10px;font-weight:600;color:#495248}.selection-price{grid-column:2;display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-radius:12px;background:#edf1f4;color:#586552;font-size:10px}.selection-price strong{color:#3a5e72;font-size:14px}.request-form fieldset{grid-column:2;border:0;padding:0;margin:0}.request-form legend{font-size:10px;font-weight:700;margin-bottom:9px}.choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.choice-option{display:flex;align-items:flex-start;gap:9px;padding:11px;border:1px solid #dde2e5;border-radius:11px;background:#fafbfc;color:#4d574c;font-size:10px;line-height:1.55;cursor:pointer}.choice-option:has(input:checked){border-color:#779aae;background:#ebf1f4}.choice-option input{width:auto;margin:2px 0 0;accent-color:#4b7892}.choice-hint{grid-column:1/-1;color:#737b70;font-size:10px;margin:0}.form-submit{grid-column:2}.form-submit .button{margin:0 0 12px}.form-submit small,.form-status{display:block;color:#697367;font-size:10px;line-height:1.7}.form-status{min-height:16px;margin:0 0 6px}.request-aside{position:sticky;top:100px}.quote-card{padding:23px;border:1px solid #d7dfe3;border-radius:20px;background:#ecf1f4}.quote-card h2{font-size:22px;letter-spacing:-.04em;margin:0 0 8px}.quote-card>p:not(.eyebrow){font-size:11px;line-height:1.8;color:#616a5e}.quote-price{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #d7dee2;padding-top:14px;margin-top:15px}.quote-price span,.quote-card>small{font-size:9px;color:#687264}.quote-price strong{font-size:16px;color:#3a5e72}.quote-card>small{display:block;line-height:1.8;margin-top:12px}.quote-trust{display:flex;gap:12px;padding:18px 4px;border-bottom:1px solid var(--darkline)}.trust-mark{width:30px;height:30px;flex:0 0 30px;border-radius:50%;background:#e2eaee;color:#436c83;display:grid;place-items:center;font:9px var(--mono)}.quote-trust b{font-size:11px}.quote-trust p{font-size:10px;color:#697267;line-height:1.7;margin:4px 0 0}.aside-link{display:inline-block;margin-top:16px;color:#3d5f72;font-size:10px}
.policy-document{max-width:1050px;margin:0 auto;padding:0 var(--pad) 75px}.policy-block{display:grid;grid-template-columns:52px 1fr;gap:18px;padding:26px 0;border-top:1px solid var(--darkline)}.policy-block>span:first-child{font:11px var(--mono);color:#436c83}.policy-block h2{font-size:20px;letter-spacing:-.03em;margin:0 0 10px}.policy-block p:not(.status-pill){max-width:850px;color:#596359;font-size:12px;line-height:1.9;margin:0 0 10px}.policy-block.draft{padding-left:15px;padding-right:15px;background:#f3f5f7}.policy-block .status-pill{margin-top:0}
:root[data-theme="dark"] .nav a[aria-current="page"]{color:#86bcdb}
:root[data-theme="dark"] .home-hero{background:radial-gradient(ellipse at 80% 45%,#638aa020,transparent 38%)}
:root[data-theme="dark"] .home-copy>p:not(.eyebrow),:root[data-theme="dark"] .home-price,:root[data-theme="dark"] .forms-teaser-copy>p:not(.eyebrow),:root[data-theme="dark"] .home-close>p:not(.eyebrow),:root[data-theme="dark"] .page-intro>p:not(.eyebrow){color:#bbc5b5}
:root[data-theme="dark"] .home-price{border-color:#394137}:root[data-theme="dark"] .home-price small{border-color:#414b50;color:#bac7cf}
:root[data-theme="dark"] .home-visual{background:radial-gradient(circle at 50% 50%,#2a3034,#1f2326 63%,#191e18);border-color:#45555e}
:root[data-theme="dark"] .home-visual:before{background-image:linear-gradient(#86bcdb12 1px,transparent 1px),linear-gradient(90deg,#86bcdb12 1px,transparent 1px)}
:root[data-theme="dark"] .home-visual-top,:root[data-theme="dark"] .home-visual-bottom{color:#b1bec5}
:root[data-theme="dark"] .home-orbit{border-color:#86bcdb55}:root[data-theme="dark"] .home-orbit:before,:root[data-theme="dark"] .home-orbit:after{border-color:#86bcdb55}:root[data-theme="dark"] .home-orbit span{background:#1a1e20;border-color:#516875}
:root[data-theme="dark"] .home-label{background:#212629;border-color:#424c52;color:#dae3e8}
:root[data-theme="dark"] .home-offers,:root[data-theme="dark"] .page-cta{background:#1b1f21;border-color:#343d30}
:root[data-theme="dark"] .offer-card,:root[data-theme="dark"] .request-form{background:#20261e;border-color:#394336}
:root[data-theme="dark"] .offer-card p,:root[data-theme="dark"] .forms-teaser-copy>p:not(.eyebrow),:root[data-theme="dark"] .page-cta>p,:root[data-theme="dark"] .service-product-copy>p:not(.eyebrow),:root[data-theme="dark"] .service-product-copy ul,:root[data-theme="dark"] .scope-note,:root[data-theme="dark"] .forms-product-copy>p:not(.eyebrow),:root[data-theme="dark"] .feature-list{color:#bbc5b5}
:root[data-theme="dark"] .service-product,:root[data-theme="dark"] .form-section{border-color:#394137}
:root[data-theme="dark"] .service-product-visual,:root[data-theme="dark"] .forms-product-image{border-color:#394336;background:#20261e}
:root[data-theme="dark"] .service-priority,:root[data-theme="dark"] .status-pill{background:#232c31;border-color:#414b50;color:#ccdbe4}
:root[data-theme="dark"] .forms-product{background:#1b1f21;border-color:#343d30}
:root[data-theme="dark"] .form-section>div:nth-child(2)>p,:root[data-theme="dark"] .form-two label,:root[data-theme="dark"] .request-form legend,:root[data-theme="dark"] .service-select-label{color:#bfc7cb}
:root[data-theme="dark"] .request-form input,:root[data-theme="dark"] .request-form select,:root[data-theme="dark"] .request-form textarea{background:#1a2019;border-color:#465240;color:#eaeef0}
:root[data-theme="dark"] .selection-price,:root[data-theme="dark"] .quote-card{background:#232b2f;border-color:#374147;color:#ccd6db}
:root[data-theme="dark"] .selection-price,:root[data-theme="dark"] .quote-card>p:not(.eyebrow),:root[data-theme="dark"] .quote-card>small,:root[data-theme="dark"] .quote-price span,:root[data-theme="dark"] .quote-trust p,:root[data-theme="dark"] .aside-link{color:#bbc4c9}
:root[data-theme="dark"] .choice-option{background:#1b211a;border-color:#373f43;color:#d2d9dd}
:root[data-theme="dark"] .choice-option:has(input:checked){background:#232c31;border-color:#556f7e}
:root[data-theme="dark"] .form-submit small,:root[data-theme="dark"] .form-status{color:#bbc4c9}
:root[data-theme="dark"] .quote-trust{border-color:#394137}
:root[data-theme="dark"] .policy-block p:not(.status-pill){color:#bcc4c8}:root[data-theme="dark"] .policy-block.draft{background:#1d231b}
@media(max-width:1000px){.offer-grid{grid-template-columns:repeat(2,1fr)}.service-product{gap:35px}.request-layout{grid-template-columns:minmax(0,1.2fr) minmax(240px,.8fr);gap:25px}}
@media(max-width:680px){.home-hero{grid-template-columns:1fr;padding-top:52px;gap:35px}.home-copy h1,.page-intro h1{font-size:clamp(42px,12vw,64px)}.home-visual{height:320px}.home-offers{padding:60px 23px}.home-offers .section-head{display:block}.home-offers .section-head>.quiet-link{display:inline-block;margin-top:18px}.offer-grid{grid-template-columns:1fr;gap:10px}.offer-card{min-height:0}.offer-card h3{margin:14px 0 6px}.offer-card p{min-height:0;margin-bottom:10px}.forms-teaser{grid-template-columns:1fr;padding:65px 23px;gap:22px}.home-close{padding:64px 23px}.page-intro{padding:52px 23px 35px}.service-catalog{padding:0 23px}.service-product{grid-template-columns:1fr;gap:23px;padding:30px 0}.service-product.reverse .service-product-visual,.service-product.reverse .service-product-copy{order:initial}.service-product-copy h2{font-size:31px}.service-product-visual img{aspect-ratio:1.35}.forms-product{margin:40px 23px 55px;padding:17px;grid-template-columns:1fr;gap:20px;border-radius:21px}.project-tracking{grid-template-columns:1fr;gap:22px;margin:0 0 55px;padding:0 23px}.tracking-preview{padding:16px}.tracking-steps{grid-template-columns:repeat(2,1fr);row-gap:15px}.page-cta{padding:55px 23px}.request-layout{display:flex;flex-direction:column;padding:0 16px 60px;gap:25px}.request-form{width:100%;border-radius:19px}.form-section{padding:22px 16px;grid-template-columns:30px 1fr;column-gap:10px;row-gap:16px}.form-step{width:28px;height:28px}.form-two,.wide,.selection-price,.request-form fieldset,.form-submit{grid-column:2}.form-two{grid-template-columns:1fr}.form-two label.wide{grid-column:1}.choice-grid{grid-template-columns:1fr}.request-aside{position:static;width:100%;order:-1}.quote-trust{padding:13px 4px}.contact-intro-wide{padding-bottom:25px}.policy-document{padding:0 23px 55px}.policy-block{grid-template-columns:32px 1fr;gap:10px}.policy-block.draft{padding-left:9px;padding-right:9px}.footer-bottom{font-size:9px}}
@media(prefers-reduced-motion:reduce){.offer-card{transition:none}.home-orbit{animation:none}}



.language-toggle{min-width:42px;height:36px;border:1px solid #c5d8df;border-radius:999px;background:transparent;color:var(--ink,#252b25);font:10px var(--mono,monospace);letter-spacing:.04em}.language-toggle:hover,.language-toggle:focus-visible{border-color:#8fb5c4;background:#f0f6f8}:root[data-theme="dark"] .language-toggle{color:#e6ede9;border-color:#435660}:root[data-theme="dark"] .language-toggle:hover{background:#252e31}

/* FAQ (home) */
.faq{max-width:var(--max);margin:auto;padding:clamp(56px,8vw,104px) var(--pad)}
.faq-list{display:grid;gap:10px;margin-top:26px}
.faq details{border:1px solid var(--darkline);border-radius:16px;background:var(--white);padding:0 22px;transition:box-shadow .2s}
.faq details[open]{box-shadow:0 12px 34px #2034400d}
.faq summary{cursor:pointer;padding:18px 0;font-weight:600;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:16px}
.faq summary::-webkit-details-marker{display:none}
.faq summary:after{content:"+";font:22px var(--mono);color:var(--lime);transition:transform .2s;flex:none}
.faq details[open] summary:after{transform:rotate(45deg)}
.faq details p{margin:0 0 20px;color:var(--muted);font-size:14px;max-width:760px}
.faq summary:focus-visible{outline:3px solid #55849e;outline-offset:3px;border-radius:8px}
:where(img[width][height]){height:auto}
.form-status a{display:inline;text-decoration:underline;text-underline-offset:3px;font-weight:600}

/* ---- enhance.css ---- */
/* MinhVuTech motion + widgets layer. Loaded after the base styles on every page.
   Motion rules: transform/opacity only, custom ease-out, <=300ms for UI feedback,
   longer only for one-time reveals; everything disabled under prefers-reduced-motion. */
:root{--ease-out:cubic-bezier(.23,1,.32,1);--ease-in-out:cubic-bezier(.77,0,.175,1);--zalo:#0068ff}

/* ---------- page-to-page transitions (Chrome/Edge; others ignore) ---------- */
@view-transition{navigation:auto}
::view-transition-old(root){animation:vt-out .18s var(--ease-out) both}
::view-transition-new(root){animation:vt-in .32s var(--ease-out) both}
@keyframes vt-out{to{opacity:0;transform:translateY(-6px)}}
@keyframes vt-in{from{opacity:0;transform:translateY(10px)}}

/* ---------- scroll progress (CSS scroll timeline, no JS) ---------- */
.mv-progress{position:fixed;inset:0 0 auto 0;height:3px;z-index:70;pointer-events:none;transform-origin:0 50%;transform:scaleX(0);background:linear-gradient(90deg,#87bfdf,#447c9b)}
@supports (animation-timeline:scroll()){.mv-progress{animation:mv-grow linear both;animation-timeline:scroll(root)}}
@supports not (animation-timeline:scroll()){.mv-progress{display:none}}
@keyframes mv-grow{to{transform:scaleX(1)}}

/* ---------- reveal on scroll (classes added by JS only, so no-JS shows everything) ---------- */
.mv-reveal{opacity:0;transform:translateY(22px);transition:opacity .7s var(--ease-out),transform .7s var(--ease-out);transition-delay:calc(var(--i,0) * 70ms)}
.mv-reveal.is-in{opacity:1;transform:none}
.mv-reveal-scale{transform:translateY(14px) scale(.97)}

/* ---------- hero entrance ---------- */
.mv-hero-line{display:inline-block;opacity:0;transform:translateY(.45em);animation:mv-line .8s var(--ease-out) forwards;animation-delay:calc(120ms + var(--i,0) * 110ms)}
@keyframes mv-line{to{opacity:1;transform:none}}

/* ---------- buttons: shine, press, arrow nudge, ripple, magnetic ---------- */
.button,.btn-primary{position:relative;overflow:hidden;isolation:isolate}
.button::after,.btn-primary::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(105deg,transparent 35%,#ffffff8c 50%,transparent 65%);transform:translateX(-120%);transition:transform .7s var(--ease-out);pointer-events:none}
@media (hover:hover) and (pointer:fine){.button:hover::after,.btn-primary:hover::after{transform:translateX(120%)}}
.button-outline::after,.button-ghost::after{background:linear-gradient(105deg,transparent 35%,#87bfdf33 50%,transparent 65%)}
.button:active,.btn-primary:active,.mv-dock a:active,.mv-dock button:active,.theme-toggle:active,.language-toggle:active{transform:scale(.97);transition-duration:.12s}
.button span,.quiet-link span,.btn-primary span{display:inline-block;transition:transform .25s var(--ease-out)}
@media (hover:hover){.button:hover span,.quiet-link:hover span{transform:translate(3px,-2px)}}
.mv-ripple{position:absolute;border-radius:50%;pointer-events:none;background:currentColor;opacity:.22;transform:scale(0);animation:mv-ripple .55s var(--ease-out) forwards}
@keyframes mv-ripple{to{transform:scale(1);opacity:0}}
.mv-magnetic{transition:translate .35s var(--ease-out)}

/* ---------- cards: spotlight + lift ---------- */
.offer-card,.service-product,.roadmap-phase,.quote-card,.project-card,.stat{--mx:50%;--my:50%}
.offer-card,.roadmap-phase,.quote-card{position:relative;overflow:hidden}
.offer-card::before,.roadmap-phase::before,.quote-card::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .3s ease;background:radial-gradient(280px circle at var(--mx) var(--my),#87bfdf2e,transparent 70%)}
@media (hover:hover){.offer-card:hover::before,.roadmap-phase:hover::before,.quote-card:hover::before{opacity:1}}
.offer-card{transition:transform .35s var(--ease-out),box-shadow .35s var(--ease-out),border-color .35s ease}
@media (hover:hover){.offer-card:hover{transform:translateY(-6px);border-color:#87bfdf}}
.faq details{transition:box-shadow .3s ease,border-color .3s ease}
.faq details:hover{border-color:#87bfdf}
.faq details[open] p{animation:mv-drop .35s var(--ease-out)}
@keyframes mv-drop{from{opacity:0;transform:translateY(-6px)}}
img{transition:opacity .4s ease}

/* ---------- floating contact dock ---------- */
.mv-dock{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));z-index:65;display:flex;flex-direction:column-reverse;align-items:flex-end;gap:10px}
.mv-dock-list{display:flex;flex-direction:column;align-items:flex-end;gap:10px;margin:0;padding:0;list-style:none}
.mv-dock a,.mv-dock button{display:inline-flex;align-items:center;gap:10px;min-height:48px;border:0;border-radius:999px;padding:0 16px 0 6px;font:600 13px var(--font,sans-serif);text-decoration:none;cursor:pointer;box-shadow:0 10px 30px #1a2a3533;transition:transform .2s var(--ease-out),box-shadow .2s ease}
.mv-dock a:hover,.mv-dock button:hover{transform:translateY(-2px);box-shadow:0 16px 36px #1a2a3540}
.mv-dock .ico{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;flex:none}
.mv-dock .ico svg{width:20px;height:20px}
.mv-zalo{background:var(--zalo);color:#fff}
.mv-zalo .ico{background:#fff;color:var(--zalo);font:800 11px/1 var(--font,sans-serif);letter-spacing:-.02em}
.mv-call{background:#1f9d5b;color:#fff}.mv-call .ico{background:#ffffff26}
.mv-mail{background:var(--white,#fff);color:var(--ink,#252b25)}.mv-mail .ico{background:#87bfdf33}
.mv-dock-toggle{background:var(--ink,#252b25)!important;color:var(--paper,#fff)!important;padding:0!important;width:56px;height:56px;justify-content:center}
.mv-dock-toggle .ico{width:56px;height:56px}
.mv-dock-toggle .ico{grid-area:1/1;transition:opacity .2s var(--ease-out),transform .25s var(--ease-out)}
.mv-dock-toggle{display:grid!important;place-items:center}
.mv-dock-toggle .ico-close{opacity:0;transform:rotate(-90deg) scale(.6)}
.mv-dock[data-open=true] .ico-open{opacity:0;transform:rotate(90deg) scale(.6)}
.mv-dock[data-open=true] .ico-close{opacity:1;transform:none}
.mv-dock-toggle::before{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid var(--zalo);animation:mv-ping 2.2s var(--ease-out) 3 1.5s;opacity:0;pointer-events:none}
.mv-dock-toggle{position:relative}
@keyframes mv-ping{0%{transform:scale(1);opacity:.7}100%{transform:scale(1.6);opacity:0}}
.mv-dock-list li{opacity:0;transform:translateY(10px) scale(.95);transform-origin:right bottom;pointer-events:none;transition:opacity .22s var(--ease-out),transform .22s var(--ease-out);transition-delay:calc((3 - var(--i,0)) * 35ms)}
.mv-dock[data-open=true] .mv-dock-list li{opacity:1;transform:none;pointer-events:auto;transition-delay:calc(var(--i,0) * 40ms)}
.mv-top{position:fixed;left:max(16px,env(safe-area-inset-left));bottom:max(16px,env(safe-area-inset-bottom));z-index:64;width:44px;height:44px;border-radius:50%;border:1px solid var(--darkline,#dfe4dd);background:var(--white,#fff);color:var(--ink,#252b25);display:grid;place-items:center;cursor:pointer;box-shadow:0 8px 24px #1a2a3522;opacity:0;transform:translateY(12px);pointer-events:none;transition:opacity .25s var(--ease-out),transform .25s var(--ease-out)}
.mv-top.is-visible{opacity:1;transform:none;pointer-events:auto}
.mv-top svg{width:18px;height:18px}
.mv-dock :focus-visible,.mv-top:focus-visible{outline:3px solid #55849e;outline-offset:3px}
@media (max-width:680px){.mv-dock a:not(.mv-dock-toggle) .label{font-size:12px}}

/* ---------- account badge, char counter, zalo card ---------- */
.mv-badge{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 5px;border-radius:99px;background:#d9534f;color:#fff;font:600 10px/18px var(--mono,monospace);text-align:center;animation:mv-pop .4s var(--ease-out)}
@keyframes mv-pop{from{transform:scale(.4);opacity:0}}
.account-toggle{position:relative}
.mv-counter{display:block;text-align:right;font:11px var(--mono,monospace);color:var(--muted,#717970);margin-top:4px}
.mv-counter.is-near{color:#b0701a}
.mv-draft-note{font-size:12px;color:var(--muted,#717970);margin:6px 0 0}
.mv-zalo-card{display:flex;gap:14px;align-items:center;padding:16px;border-radius:18px;background:linear-gradient(135deg,#e8f1ff,#f4f8ff);border:1px solid #c9dcff;color:#12335f;text-decoration:none;margin-bottom:12px;transition:transform .25s var(--ease-out),box-shadow .25s ease}
.mv-zalo-card:hover{transform:translateY(-3px);box-shadow:0 14px 30px #0068ff1f}
.mv-zalo-card b{display:block;font-size:14px}
.mv-zalo-card small{color:#3d5b85}
.mv-zalo-card .ico{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:var(--zalo);color:#fff;font:800 12px var(--font,sans-serif);flex:none}
:root[data-theme=dark] .mv-zalo-card{background:linear-gradient(135deg,#132840,#17263a);border-color:#24456e;color:#dbe8ff}
:root[data-theme=dark] .mv-zalo-card small{color:#9fb8da}
:root[data-theme=dark] .mv-mail{background:#2a3230;color:#eaeef0}

@media (prefers-reduced-motion:reduce){
  @view-transition{navigation:none}
  .mv-reveal,.mv-hero-line{opacity:1!important;transform:none!important;transition:none!important;animation:none!important}
  .button::after,.btn-primary::after,.mv-dock-toggle::before,.mv-ripple,.mv-progress{display:none}
  .mv-dock-list li,.mv-top,.mv-magnetic{transition:none}
}
@media print{.mv-dock,.mv-top,.mv-progress{display:none}}
.nowrap{white-space:nowrap}
/* guideline fixes: balanced headings, stable digits while counting, touch behaviour */
h1,h2,h3{text-wrap:balance}
.home-price strong,.offer-card strong,.price-line strong,.stat strong,.mv-counter,.mv-badge{font-variant-numeric:tabular-nums}
.button,.btn-primary,.mv-dock a,.mv-dock button,.mv-top,.theme-toggle,.language-toggle,.menu-toggle,.tabs button,.admin-tabs button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.admin-dialog,.chat,.mv-dock-list{overscroll-behavior:contain}
[id]{scroll-margin-top:90px}

/* ---------- AI assistant chat panel ---------- */
.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}
.mv-ai{background:linear-gradient(135deg,#87bfdf,#447c9b);color:#fff}
.mv-ai .ico{background:#ffffff2e}
.mv-chat{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:max(88px,calc(env(safe-area-inset-bottom) + 88px));z-index:66;width:min(380px,calc(100vw - 32px));height:min(560px,calc(100dvh - 120px));display:flex;flex-direction:column;border-radius:22px;background:var(--white,#fff);color:var(--ink,#252b25);border:1px solid var(--darkline,#dfe4dd);box-shadow:0 28px 80px #12202a3d;overflow:hidden;opacity:0;transform:translateY(14px) scale(.97);transform-origin:right bottom;transition:opacity .22s var(--ease-out),transform .22s var(--ease-out)}
.mv-chat.is-open{opacity:1;transform:none}
.mv-chat-head{display:flex;align-items:center;gap:10px;padding:14px 12px 14px 16px;background:linear-gradient(135deg,#e6f0f5,var(--white,#fff));border-bottom:1px solid var(--darkline,#dfe4dd)}
.mv-chat-head>div{flex:1;min-width:0}
.mv-chat-head h2{margin:0;font-size:15px;letter-spacing:-.02em}
.mv-chat-head small{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--muted,#717970)}
.mv-online{width:7px;height:7px;border-radius:50%;background:#2fa866;box-shadow:0 0 0 3px #2fa86626}
.mv-chat-avatar{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:linear-gradient(135deg,#87bfdf,#447c9b);color:#fff;flex:none}
.mv-chat-avatar svg{width:20px;height:20px}
.mv-chat-icon{display:grid;place-items:center;width:34px;height:34px;border:0;border-radius:10px;background:transparent;color:var(--muted,#717970);cursor:pointer;transition:background-color .15s ease,color .15s ease}
.mv-chat-icon:hover{background:#87bfdf26;color:var(--ink,#252b25)}
.mv-chat-icon svg{width:17px;height:17px}
.mv-chat-log{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:16px;display:flex;flex-direction:column;gap:10px;background:var(--paper,#f5f7f8)}
.mv-msg{max-width:86%;padding:10px 13px;border-radius:16px;font-size:14px;line-height:1.55;overflow-wrap:anywhere;animation:mv-msg-in .28s var(--ease-out)}
.mv-msg a{color:inherit;text-decoration:underline;text-underline-offset:2px;font-weight:600}
.mv-msg-bot{align-self:flex-start;background:var(--white,#fff);border:1px solid var(--darkline,#dfe4dd);border-bottom-left-radius:5px}
.mv-msg-me{align-self:flex-end;background:#447c9b;color:#fff;border-bottom-right-radius:5px}
@keyframes mv-msg-in{from{opacity:0;transform:translateY(6px)}}
.mv-typing{display:flex;gap:4px;padding:13px 14px}
.mv-typing i{width:7px;height:7px;border-radius:50%;background:var(--muted,#717970);animation:mv-dot 1s ease-in-out infinite}
.mv-typing i:nth-child(2){animation-delay:.15s}.mv-typing i:nth-child(3){animation-delay:.3s}
@keyframes mv-dot{0%,60%,100%{transform:translateY(0);opacity:.4}30%{transform:translateY(-4px);opacity:1}}
.mv-chat-chips{display:flex;gap:6px;flex-wrap:wrap;padding:10px 14px 0;background:var(--paper,#f5f7f8)}
.mv-chat-chips button{border:1px solid #87bfdf88;background:var(--white,#fff);color:var(--ink,#252b25);border-radius:999px;padding:6px 11px;font:600 12px var(--font,sans-serif);cursor:pointer;transition:background-color .15s ease,transform .15s var(--ease-out)}
.mv-chat-chips button:hover{background:#87bfdf26}
.mv-chat-chips button:active{transform:scale(.96)}
.mv-chat-form{display:flex;gap:8px;align-items:flex-end;padding:12px 14px;background:var(--paper,#f5f7f8)}
.mv-chat-form textarea{flex:1;min-width:0;resize:none;max-height:120px;border:1px solid var(--darkline,#dfe4dd);border-radius:14px;background:var(--white,#fff);color:var(--ink,#252b25);padding:10px 12px;font:14px/1.45 var(--font,sans-serif)}
.mv-chat-form textarea:focus{outline:2px solid #55849e;outline-offset:1px;border-color:transparent}
.mv-chat-form button{display:grid;place-items:center;width:42px;height:42px;flex:none;border:0;border-radius:50%;background:#447c9b;color:#fff;cursor:pointer;transition:transform .15s var(--ease-out),background-color .15s ease}
.mv-chat-form button:hover{background:#36677f}
.mv-chat-form button:active{transform:scale(.92)}
.mv-chat-form button svg{width:18px;height:18px}
.mv-chat-note{margin:0;padding:0 14px 12px;font-size:11px;color:var(--muted,#717970);background:var(--paper,#f5f7f8)}
.mv-chat-note a{color:var(--zalo);font-weight:600}
.mv-chat :focus-visible{outline:3px solid #55849e;outline-offset:2px}
:root[data-theme=dark] .mv-chat-head{background:linear-gradient(135deg,#1f3340,var(--white))}
:root[data-theme=dark] .mv-msg-me{background:#2f6a88}
@media (max-width:520px){.mv-chat{right:8px;left:8px;width:auto;bottom:max(80px,calc(env(safe-area-inset-bottom) + 80px));height:min(70dvh,560px)}}
@media (prefers-reduced-motion:reduce){.mv-chat,.mv-msg{transition:none;animation:none}.mv-typing i{animation:none;opacity:.7}}
/* [hidden] must win over the display values above (panel would otherwise stay in the layout, invisible) */
.mv-chat[hidden],.mv-chat-chips[hidden],.mv-dock [hidden],.mv-badge[hidden]{display:none!important}
/* readable footer + comfortable tap targets (PageSpeed: tap targets) */
.footer-bottom{font-size:11px!important;letter-spacing:.02em}
.footer-bottom a,.footer-bottom span{display:inline-flex;align-items:center;min-height:32px}
@media (max-width:680px){.footer-bottom{gap:2px!important}.footer-bottom a{min-height:40px}}
