:root{--primary:#43c6c2;--primary-dark:#35aaa7;--ink:#17252a;--text:#4b5b60;--muted:#819096;--bg:#f7fafa;--line:#e5eeee;--white:#fff;--blue:#4f8ef7;--orange:#ffb86b;--pink:#f7a9b8}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,"PingFang SC","Microsoft YaHei",Arial,sans-serif;color:var(--ink);background:var(--bg);line-height:1.65}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}.container{width:min(1180px,calc(100% - 40px));margin:auto}
.site-header{height:68px;background:rgba(255,255,255,.93);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:50;backdrop-filter:blur(14px)}.nav-wrap{height:100%;display:flex;align-items:center;gap:28px}.brand{display:flex;align-items:center;gap:11px;font-weight:800;font-size:20px;white-space:nowrap}.brand-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;color:#fff;background:linear-gradient(135deg,var(--primary),#62d9d5);font-size:16px}.nav{margin-left:auto;display:flex;gap:30px;font-size:14px}.nav a:hover{color:var(--primary-dark)}.nav-cta{margin-left:8px}.nav-toggle{display:none;border:0;background:transparent;font-size:22px}
.btn{display:inline-flex;align-items:center;justify-content:center;height:48px;padding:0 24px;border-radius:13px;border:1px solid transparent;font-weight:700;transition:.2s}.btn-primary{background:linear-gradient(135deg,var(--primary),#2fb7b3);color:#fff;box-shadow:0 10px 26px rgba(67,198,194,.24)}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 14px 34px rgba(67,198,194,.3)}.btn-ghost{background:#fff;border-color:#cfe6e5}
.hero{background:linear-gradient(135deg,#fbfefe 0%,#edf9f8 50%,#f5fbff 100%);overflow:hidden;border-bottom:1px solid #edf4f4}.hero-grid{min-height:525px;display:grid;grid-template-columns:1.02fr .98fr;align-items:center;gap:44px;padding:68px 0}.eyebrow{font-size:12px;letter-spacing:.18em;color:var(--primary-dark);font-weight:800;text-transform:uppercase}.hero h1,.page-hero h1,.case-detail-hero h1{font-size:54px;line-height:1.1;margin:14px 0 22px;letter-spacing:-.035em}.hero p{font-size:18px;color:var(--text);max-width:690px}.hero-actions{display:flex;gap:14px;margin:28px 0}.hero-points{display:flex;flex-wrap:wrap;gap:18px;color:var(--text);font-size:14px}.hero-visual{position:relative;height:410px}.mock-window{position:absolute;background:#fff;border:1px solid #dbe8e8;border-radius:18px;box-shadow:0 28px 60px rgba(37,79,82,.16);overflow:hidden}.mock-window.main{width:500px;height:312px;right:22px;top:34px;transform:rotate(2.5deg)}.mock-top{height:42px;background:#f8fbfb;border-bottom:1px solid #edf3f3;display:flex;align-items:center;gap:7px;padding:0 15px;font-size:11px;color:#6e7e83}.mock-top i{width:8px;height:8px;border-radius:50%;background:#dbe5e7}.mock-top span{margin-left:8px}.mock-layout{display:grid;grid-template-columns:105px 1fr;height:calc(100% - 42px)}.mock-layout aside{border-right:1px solid #edf3f3;background:linear-gradient(#fbfdfd,#f8fbfb)}.mock-layout section{padding:22px}.mock-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.mock-cards b{height:62px;background:#f2f8f8;border-radius:10px;border:1px solid #eaf1f1}.mock-chart{height:130px;margin-top:18px;border-radius:12px;background:linear-gradient(180deg,#f6fbff,#eef8f8);position:relative}.mock-chart:after{content:"";position:absolute;left:22px;right:22px;bottom:36px;height:3px;background:linear-gradient(90deg,#78d1e5 10%,#43c6c2 45%,#4f8ef7 70%,#78d1e5);transform:skewY(-9deg);border-radius:4px}.mock-phone{position:absolute;right:-8px;bottom:7px;width:145px;height:265px;background:#fff;border:8px solid #17252a;border-radius:28px;box-shadow:0 18px 40px rgba(29,55,57,.18);padding:16px 10px}.mock-phone div{height:80px;border-radius:12px;background:linear-gradient(145deg,#49c9c5,#8ce1dd);margin-bottom:13px}.mock-phone b{font-size:13px}.mock-phone span{display:block;height:30px;margin-top:9px;border-radius:8px;background:#f1f7f7}.floating-note{position:absolute;right:0;top:0;color:#76a1a3;font-family:cursive;font-size:20px;transform:rotate(-7deg)}
.section{padding:66px 0}.section-head{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:24px}.section-head h2{font-size:30px;margin:0}.section-head p{margin:3px 0 0;color:var(--muted)}.section-head>a{color:var(--primary-dark);font-weight:700}.section-kicker{width:5px;height:25px;background:var(--primary);border-radius:4px;float:left;margin-right:13px;margin-top:8px}.chips{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:24px}.chip{padding:8px 17px;background:#fff;border:1px solid var(--line);border-radius:999px;color:#637479;font-size:13px}.chip.active,.chip:hover{background:var(--primary);border-color:var(--primary);color:#fff}
.case-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}.case-card{background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden;transition:.22s;min-width:0}.case-card:hover{transform:translateY(-3px);box-shadow:0 18px 40px rgba(36,65,68,.09);border-color:#cbe7e5}.case-cover{height:178px}.cover-art{height:100%;display:flex;align-items:flex-end;padding:22px;font-size:23px;font-weight:800;color:#fff}.demo-1 .cover-art{background:linear-gradient(145deg,#142835,#24586c)}.demo-2 .cover-art{background:linear-gradient(145deg,#d9ecff,#5e96e7)}.demo-3 .cover-art{background:linear-gradient(145deg,#ffd8d6,#f7a9b8)}.demo-4 .cover-art{background:linear-gradient(145deg,#d9f6f2,#43c6c2)}.case-cover-img{width:100%;height:178px;object-fit:cover;background:#eef8f7}.case-body{padding:18px}.case-body h3{font-size:18px;margin:0 0 8px}.case-body p{font-size:13px;color:var(--text);min-height:44px;margin:0 0 18px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.case-foot{display:flex;align-items:center;justify-content:space-between}.tag{display:inline-flex;padding:5px 11px;border-radius:999px;background:#eaf8f7;color:#279c98;font-size:12px}.circle-arrow{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;border:1px solid #d7e9e8;color:var(--primary-dark)}.services{background:#fff;border-top:1px solid #edf3f3;border-bottom:1px solid #edf3f3}.service-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:14px}.service-card{border:1px solid var(--line);border-radius:15px;padding:19px;background:linear-gradient(180deg,#fff 0%,#fdfefe 100%);transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}.service-card:hover{transform:translateY(-2px);border-color:#d2e8e7;box-shadow:0 12px 28px rgba(36,65,68,.07)}.service-icon{display:grid;place-items:center;width:44px;height:44px;border-radius:14px;color:var(--primary-dark);background:linear-gradient(145deg,#edfafa,#dcf4f2);box-shadow:inset 0 1px 0 rgba(255,255,255,.8),0 5px 13px rgba(54,130,129,.08)}.service-icon svg{width:29px;height:29px;display:block}.service-mini .service-icon{color:#50b866;background:linear-gradient(145deg,#f0fbf2,#e3f7e7)}.service-windows .service-icon{color:#4f8ef7;background:linear-gradient(145deg,#f1f5ff,#e4ecff)}.service-iot .service-icon{color:#e99735;background:linear-gradient(145deg,#fff7ec,#ffead0)}.service-integration .service-icon{color:#39aaa7;background:linear-gradient(145deg,#effafa,#dff4f3)}.service-code .service-icon{color:#e46f8a;background:linear-gradient(145deg,#fff4f6,#fde5eb)}.service-card h3{font-size:15px;margin:14px 0 6px}.service-card p{font-size:12px;color:var(--muted);margin:0;line-height:1.65}.about-box{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center;padding:48px;border:1px solid var(--line);background:linear-gradient(135deg,#fff,#f0fbfa);border-radius:20px}.about-box h2{font-size:34px;line-height:1.25;margin:8px 0}.about-box p{color:var(--text);font-size:17px}.contact-section{background:#173a3d;color:#fff}.contact-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:60px;align-items:start}.contact-grid h2{font-size:38px;margin:10px 0}.contact-grid p{color:#c7d7d8}.contact-form{background:#fff;border-radius:18px;padding:24px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.contact-form input,.contact-form textarea{width:100%;padding:13px 14px;border:1px solid #dce8e8;border-radius:10px;margin-bottom:12px;font:inherit}.site-footer{background:#fff;border-top:1px solid var(--line);padding:34px 0 18px;color:var(--text)}.footer-grid{display:flex;justify-content:space-between;gap:30px;align-items:center}.footer-brand{font-size:17px}.footer-meta{display:flex;gap:28px;color:var(--muted);font-size:13px}.copyright{border-top:1px solid #eff3f3;margin-top:24px;padding-top:16px;color:#92a0a4;font-size:12px}.page-hero{padding:74px 0 44px;background:linear-gradient(135deg,#f8fdfd,#edf9f8)}.page-hero h1{font-size:44px}.page-hero p{color:var(--text);max-width:760px}.case-grid-list{grid-template-columns:repeat(3,1fr)}.empty{padding:50px;background:#fff;border:1px dashed #ccdcdc;border-radius:14px;color:var(--muted)}
.case-detail-hero{padding:48px 0;background:linear-gradient(135deg,#f8fdfd,#eef9f8)}.back-link{color:var(--muted);font-size:14px}.detail-head{display:flex;justify-content:space-between;align-items:end;gap:30px;margin:28px 0}.case-detail-hero h1{font-size:48px;margin-bottom:10px}.detail-head p{font-size:18px;color:var(--text)}.tags{display:flex;gap:8px;flex-wrap:wrap}.detail-cover{width:100%;height:520px;object-fit:cover;border-radius:20px;border:1px solid var(--line);background:#fff}.detail-grid{display:grid;grid-template-columns:1fr 300px;gap:50px}.content-block{margin-bottom:54px}.content-block h2{font-size:28px}.richtext{font-size:16px;color:var(--text);line-height:1.9}.info-card{position:sticky;top:98px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px}.info-card h3{margin-top:0}.info-card dl{margin:0}.info-card dt{font-size:12px;color:var(--muted);margin-top:16px}.info-card dd{margin:3px 0 0;font-size:14px}.gallery{display:grid;gap:20px}.gallery figure{margin:0}.gallery img{border-radius:14px;border:1px solid var(--line)}.gallery figcaption{font-size:12px;color:var(--muted);margin-top:6px}
@media(max-width:980px){.hero-grid{grid-template-columns:1fr}.hero-visual{height:360px}.case-grid{grid-template-columns:repeat(2,1fr)}.service-grid{grid-template-columns:repeat(3,1fr)}.contact-grid,.detail-grid,.about-box{grid-template-columns:1fr}.detail-cover{height:auto}.info-card{position:static}}
@media(max-width:720px){.container{width:min(100% - 26px,1180px)}.site-header{height:auto}.nav-wrap{min-height:64px;flex-wrap:wrap}.nav-toggle{display:block;margin-left:auto}.nav{display:none;width:100%;flex-direction:column;gap:0;padding-bottom:12px}.nav.open{display:flex}.nav a{padding:10px 0}.nav-cta{display:none}.hero-grid{padding:45px 0}.hero h1{font-size:38px}.hero-visual{height:280px}.mock-window.main{width:90%;height:240px}.mock-phone{width:110px;height:210px}.case-grid,.case-grid-list{grid-template-columns:1fr}.service-grid{grid-template-columns:repeat(2,1fr)}.form-row{grid-template-columns:1fr}.footer-grid,.footer-meta,.detail-head{align-items:flex-start;flex-direction:column}.detail-head{display:flex}.case-detail-hero h1{font-size:38px}}

.brand-logo-wrap{display:grid;place-items:center;width:42px;height:42px;border-radius:10px;overflow:hidden;background:transparent}.brand-logo-img{width:100%;height:100%;object-fit:contain}.featured-empty{grid-column:1/-1}.footer-brand .brand-logo-wrap{width:32px;height:32px}

/* v0.2.5: custom-logo hard size guard */
.brand-logo-wrap{box-sizing:border-box;overflow:hidden;flex:none}
.brand-logo-img{display:block!important;max-width:100%!important;max-height:100%!important;object-fit:contain!important}
.logo-preview img{display:block!important;max-width:100%!important;max-height:100%!important;object-fit:contain!important}


/* v0.2.6 public inquiry form */
.hp-field{position:absolute!important;left:-9999px!important;width:1px!important;height:1px!important;overflow:hidden!important;opacity:0!important;pointer-events:none!important}
.contact-success{grid-column:2;background:#eaf9f1;color:#177b4d;border:1px solid #cceedd;border-radius:12px;padding:12px 14px;margin-bottom:-44px;position:relative;z-index:2;font-size:14px;font-weight:700}
@media(max-width:980px){.contact-success{grid-column:1;margin-bottom:0}}


/* v0.3.3 contact privacy */
.protected-contact-card{margin-top:18px;padding:14px;border:1px solid var(--border,#e5eeee);border-radius:14px;background:#fff;display:grid;gap:10px}
.protected-contact-item{padding:11px 12px;background:#f7fafa;border-radius:10px}.protected-contact-item span{display:block;font-size:11px;color:#819096;margin-bottom:3px}.protected-contact-item strong{font-size:15px;color:#17252a}
.contact-request-btn{height:36px;padding:0 14px;border:0;border-radius:9px;background:#43c6c2;color:#fff;font-weight:700;cursor:pointer}.protected-contact-card>small{color:#819096;font-size:11px}
.contact-request-toast{margin-top:14px;padding:10px 12px;border-radius:10px;font-size:12px}.contact-request-toast.success{background:#e9f8f2;color:#187d54}.contact-request-toast.error{background:#fff0f0;color:#bd4444}
.contact-request-modal{position:fixed;inset:0;z-index:9999;display:none;align-items:center;justify-content:center;padding:20px}.contact-request-modal.show{display:flex}
.contact-request-backdrop{position:absolute;inset:0;background:rgba(16,30,32,.46);backdrop-filter:blur(4px)}
.contact-request-dialog{position:relative;z-index:1;width:min(520px,100%);max-height:90vh;overflow:auto;background:#fff;border-radius:20px;padding:24px;box-shadow:0 26px 80px rgba(13,31,34,.22)}
.contact-request-close{position:absolute;right:14px;top:12px;border:0;background:#f1f6f6;width:32px;height:32px;border-radius:50%;font-size:20px;cursor:pointer}
.contact-request-dialog h3{margin:6px 0}.contact-request-dialog>p{color:#819096;font-size:13px;margin:0 0 18px}
.contact-request-form{display:grid;gap:12px}.contact-request-form label span{display:block;font-size:12px;color:#66777b;margin-bottom:5px}
.contact-request-form input,.contact-request-form textarea{width:100%;box-sizing:border-box;border:1px solid #dfeaea;border-radius:10px;padding:10px 11px;font:inherit}.contact-request-form textarea{resize:vertical}
.contact-request-checks{display:flex;gap:18px;padding:4px 0}.contact-request-checks label{display:flex;align-items:center;gap:7px;font-size:13px}.contact-request-checks input{width:auto}
.contact-request-form small{color:#819096;line-height:1.6}


/* v0.3.4 lightweight inline contact */
.protected-contact-card{display:none!important}
.contact-inline-list{margin-top:22px;max-width:500px;border-top:1px solid rgba(255,255,255,.14)}
.contact-inline-row{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:15px 0;border-bottom:1px solid rgba(255,255,255,.10)}
.contact-inline-main{min-width:0}
.contact-inline-label{display:block;margin-bottom:4px;font-size:11px;letter-spacing:.04em;color:rgba(255,255,255,.56)}
.contact-inline-main strong{font-size:16px;color:#fff;font-weight:700;letter-spacing:.01em}
.contact-inline-action{flex:0 0 auto;border:0;background:transparent;color:#67d7d3;font-weight:700;font-size:12px;cursor:pointer;padding:6px 0}
.contact-inline-action:hover{color:#93e7e4}
.contact-inline-foot{padding-top:10px;font-size:11px;color:rgba(255,255,255,.48)}
.footer-grid{grid-template-columns:1fr!important}
.footer-meta{display:none!important}
@media(max-width:640px){
  .contact-inline-row{align-items:flex-end}
  .contact-inline-main strong{font-size:15px}
}
