/* roulang page: index */
:root{
  --ice:#0f8f86;--ice-dark:#0b6f69;--amber:#e07a2f;--ink:#1b1f24;--steel:#2c333c;
  --paper:#f3f6f5;--mist:#e6edeb;--alum:#d7dedc;--text:#253038;--muted:#657277;
  --line:#cbd6d3;--white:#fff;--radius:10px;--shadow:0 8px 24px rgba(27,31,36,.08);
  --max:1220px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:"Noto Sans SC","Source Han Sans SC","Microsoft YaHei",sans-serif;background:var(--paper);color:var(--text);font-size:16px;line-height:1.78;overflow-x:hidden}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
button,input,textarea,select{font:inherit}
button{cursor:pointer;border:0}
.container{width:min(var(--max),calc(100% - 48px));margin:auto}
.skip-link{position:absolute;left:-999px}.skip-link:focus{left:12px;top:12px;background:var(--ice);color:#fff;padding:8px 14px;z-index:100}
.topbar{height:42px;background:var(--steel);color:#dce6e4;font-size:13px}
.topbar .container{height:100%;display:flex;align-items:center;justify-content:space-between;gap:24px}
.topbar span{white-space:nowrap}.topbar strong{color:#fff;font-weight:600}
.top-call{display:flex;align-items:center;gap:15px}.top-call a{color:#fff}
.top-book{background:var(--amber);color:#fff;border-radius:5px;padding:3px 12px;font-weight:600;transition:.2s}
.top-book:hover{background:#c96522}
.main-header{height:78px;background:rgba(243,246,245,.97);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:30;box-shadow:0 2px 12px rgba(27,31,36,.04)}
.nav-wrap{height:100%;display:flex;align-items:center;gap:30px}
.logo{display:flex;align-items:center;gap:10px;min-width:245px;color:var(--ink);font-weight:800;font-size:20px;letter-spacing:.02em}
.logo-mark{width:32px;height:32px;border:2px solid var(--ice);position:relative;background:repeating-linear-gradient(135deg,transparent 0 4px,rgba(15,143,134,.25) 4px 6px);border-radius:6px}
.logo-mark:after{content:"";position:absolute;right:-5px;bottom:-5px;width:12px;height:12px;background:var(--amber);border-radius:2px}
.nav-links{display:flex;align-items:stretch;gap:3px;height:100%;flex:1}
.nav-links a{display:flex;align-items:center;padding:0 10px;font-size:14px;font-weight:600;color:#455158;position:relative;white-space:nowrap;transition:.2s}
.nav-links a:after{content:"";position:absolute;bottom:0;left:10px;right:10px;height:3px;background:var(--ice);transform:scaleX(0);transition:.2s}
.nav-links a:hover,.nav-links a.active{color:var(--ice-dark)}
.nav-links a:hover:after,.nav-links a.active:after{transform:scaleX(1)}
.nav-cta,.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:0 21px;border-radius:7px;font-size:15px;font-weight:700;letter-spacing:.04em;transition:transform .2s,background .2s,box-shadow .2s}
.nav-cta,.btn-primary{background:var(--ice);color:#fff;box-shadow:0 5px 12px rgba(15,143,134,.18)}
.nav-cta:hover,.btn-primary:hover{background:var(--ice-dark);transform:translateX(2px);box-shadow:0 8px 17px rgba(15,143,134,.25)}
.btn-secondary{border:1px solid #85918f;color:var(--ink);background:transparent}
.btn-secondary:hover{border-color:var(--ice);color:var(--ice-dark);transform:translateX(2px)}
.btn-amber{background:var(--amber);color:#fff}.btn-amber:hover{background:#c96522;transform:translateX(2px)}
button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--ice);outline-offset:3px}
.menu-toggle{display:none;background:none;color:var(--ink);font-size:25px;width:46px;height:46px}
.hero{height:clamp(550px,74vh,760px);position:relative;background:var(--ink);overflow:hidden}
.hero-slides,.hero-slide{height:100%}.hero-slide{position:absolute;inset:0;opacity:0;visibility:hidden;background-size:cover;background-position:center;transition:opacity .7s}
.hero-slide.active{opacity:1;visibility:visible}
.hero-slide:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(20,25,29,.86) 0%,rgba(20,25,29,.62) 45%,rgba(20,25,29,.12) 100%)}
.hero-content{position:relative;z-index:2;height:100%;display:flex;align-items:center}
.hero-copy{max-width:690px;color:#fff;padding-bottom:20px}
.eyebrow,.badge{display:inline-flex;align-items:center;border-radius:5px;font-size:12px;line-height:1;padding:8px 10px;font-weight:700;letter-spacing:.08em}
.eyebrow{background:var(--ice);color:#fff;margin-bottom:22px}.badge{background:rgba(15,143,134,.12);border:1px solid rgba(15,143,134,.35);color:var(--ice-dark)}
.hero h1{font-size:clamp(36px,5vw,66px);line-height:1.18;letter-spacing:-.045em;font-weight:800;margin-bottom:22px}
.hero p{font-size:18px;line-height:1.85;color:#e6eeec;max-width:630px;margin-bottom:30px}
.hero-actions{display:flex;flex-wrap:wrap;gap:13px}
.hero-actions .btn-secondary{color:#fff;border-color:#c5d2d0}.hero-actions .btn-secondary:hover{border-color:#fff;color:#fff}
.slider-controls{position:absolute;z-index:4;bottom:35px;right:max(24px,calc((100% - var(--max))/2));display:flex;align-items:center;gap:12px}
.slider-arrow{width:44px;height:44px;border:1px solid rgba(255,255,255,.5);color:#fff;background:rgba(27,31,36,.35);border-radius:5px;font-size:22px}
.slider-arrow:hover{background:var(--ice);border-color:var(--ice)}
.dots{display:flex;gap:7px;margin:0 8px}.dot{width:26px;height:5px;background:rgba(255,255,255,.4);border-radius:3px}.dot.active{background:var(--amber);width:42px}
.section{padding:88px 0;position:relative}.section.alt{background:var(--mist)}.section.dark{background:var(--ink);color:#eef4f2}
.section-head{max-width:730px;margin-bottom:38px}.section-head.split{display:flex;justify-content:space-between;align-items:end;max-width:none;gap:30px}
.kicker{color:var(--ice-dark);font-size:13px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;margin-bottom:8px}
.dark .kicker{color:#5ed3ca}.section h2{font-size:clamp(27px,3.3vw,42px);line-height:1.25;letter-spacing:-.035em;color:var(--ink);font-weight:800;margin-bottom:13px}
.dark h2{color:#fff}.section-head p{color:var(--muted);max-width:700px}.dark .section-head p{color:#c2cfcd}
.ticket-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:15px}
.ticket{background:#fff;border:1px solid var(--line);border-left:5px solid var(--amber);padding:22px 19px;min-height:185px;box-shadow:var(--shadow);position:relative;transition:.25s}
.ticket:nth-child(2n){border-left-color:var(--ice)}.ticket:nth-child(1),.ticket:nth-child(4){grid-column:span 2}.ticket:nth-child(2),.ticket:nth-child(3),.ticket:nth-child(5),.ticket:nth-child(6){grid-column:span 2}
.ticket:hover,.adv-card:hover,.review:hover,.news-card:hover{transform:translateY(-4px);box-shadow:0 13px 28px rgba(27,31,36,.12)}
.ticket h3,.adv-card h3,.project h3,.audience-card h3,.news-card h3{font-size:19px;line-height:1.4;color:var(--ink);margin:12px 0 8px}
.ticket p,.adv-card p,.project p,.audience-card p,.news-card p{font-size:14px;color:var(--muted);line-height:1.7}
.ticket small{color:var(--amber);font-weight:700}.ticket-arrow{position:absolute;right:17px;top:19px;color:var(--ice);font-size:20px}
.solution-grid{display:grid;grid-template-columns:1fr 1fr;gap:58px;align-items:center}
.media-frame{position:relative;border:10px solid var(--alum);box-shadow:var(--shadow);background:var(--steel)}
.media-frame img{width:100%;height:420px;object-fit:cover}
.media-note{position:absolute;bottom:18px;left:18px;background:var(--ink);color:#fff;padding:10px 14px;border-left:4px solid var(--amber);font-size:13px}
.solution-copy p{color:var(--muted);margin-bottom:20px}
.spec-list{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line);margin-top:25px}
.spec{padding:17px 13px 15px 0;border-bottom:1px solid var(--line)}.spec strong{display:block;font-size:18px;color:var(--ice-dark)}.spec span{font-size:13px;color:var(--muted)}
.bento{display:grid;grid-template-columns:1.35fr 1fr 1fr;grid-template-rows:1fr 1fr;gap:15px}
.adv-card{background:#fff;border:1px solid var(--line);padding:24px;min-height:160px;transition:.25s}
.adv-card:first-child{grid-row:span 2;background:var(--steel);color:#fff}.adv-card:first-child h3{font-size:27px;color:#fff}.adv-card:first-child p{color:#d2dfdc}.adv-card:first-child .badge{color:#8be1d8;border-color:#438d87}
.adv-card .index{font-family:monospace;color:var(--amber);font-weight:700}.adv-card:not(:first-child):nth-child(3){border-top:4px solid var(--ice)}
.steps{display:grid;grid-template-columns:repeat(5,1fr);gap:0;border-top:2px solid var(--alum);margin-top:52px}
.step{position:relative;padding:27px 19px 10px;border-right:1px dashed #aebdb9;min-height:205px}.step:last-child{border:0}
.step:before{content:"";position:absolute;top:-10px;left:18px;width:17px;height:17px;background:var(--amber);border:4px solid var(--paper);border-radius:50%}
.step-num{font-family:monospace;font-size:13px;color:var(--ice-dark);font-weight:700}.step h3{font-size:18px;color:var(--ink);margin:8px 0}.step p{font-size:14px;color:var(--muted);line-height:1.65}.step em{font-style:normal;color:var(--amber);font-size:13px;font-weight:700;display:block;margin-top:11px}
.projects{display:grid;grid-template-columns:1.45fr 1fr;grid-template-rows:1fr 1fr;gap:16px}.project{background:#fff;border:1px solid var(--line);display:grid;grid-template-columns:42% 1fr;overflow:hidden;transition:.25s}.project:first-child{grid-row:span 2;display:block}.project:hover{box-shadow:var(--shadow);border-color:#a9c4c0}.project img{width:100%;height:100%;min-height:170px;object-fit:cover}.project:first-child img{height:245px}.project-body{padding:20px}.project-body h3{margin:7px 0 8px}.project-meta{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:11px;margin-top:13px;color:var(--muted);font-size:13px}.project .btn{min-height:40px;margin-top:15px;padding:0 14px;font-size:13px}
.case-layout{display:grid;grid-template-columns:1.2fr .8fr;gap:48px;align-items:center}.case-photo{border:1px solid #465159;padding:8px;background:#20272d}.case-photo img{height:440px;width:100%;object-fit:cover}.case-list{display:grid;gap:14px}.case-item{border-left:3px solid var(--ice);padding:15px 17px;background:#252d33}.case-item h3{color:#fff;font-size:18px;margin-bottom:5px}.case-item p{color:#c3d0ce;font-size:14px}.case-result{color:#65d4ca;font-weight:700;font-size:13px}
.audience-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.audience-card{background:#fff;border:1px solid var(--line);padding:24px 20px;min-height:215px}.tag-wall{display:flex;flex-wrap:wrap;gap:7px;margin:17px 0}.tag{font-size:12px;color:var(--ice-dark);border:1px solid #a8cbc6;background:#edf8f6;padding:4px 8px;border-radius:4px}
.story-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.story{background:#fff;border:1px solid var(--line);box-shadow:var(--shadow)}.story img{height:180px;width:100%;object-fit:cover}.story-body{padding:21px}.work-id{color:var(--amber);font:700 12px monospace;letter-spacing:.08em}.story h3{font-size:19px;line-height:1.45;margin:8px 0}.story p{font-size:14px;color:var(--muted);line-height:1.75}
.results{display:grid;grid-template-columns:repeat(4,1fr);background:#fff;border:1px solid var(--line);box-shadow:var(--shadow)}.result{padding:29px 24px;border-right:1px dashed var(--line)}.result:last-child{border:0}.result strong{font:800 45px/1.1 monospace;color:var(--ice-dark);letter-spacing:-.05em}.result b{font-size:14px;color:var(--amber);margin-left:5px}.result span{display:block;color:var(--muted);font-size:14px;margin-top:8px}
.review-wall{display:grid;grid-template-columns:repeat(6,1fr);gap:14px;align-items:start}.review{background:#fff;border:1px solid var(--line);padding:19px;transition:.25s}.review:nth-child(2),.review:nth-child(5){margin-top:26px}.stars{color:var(--amber);letter-spacing:2px;font-size:14px}.review h3{font-size:15px;margin:10px 0 4px}.review p{color:var(--muted);font-size:14px;line-height:1.7}.review .tag{display:inline-block;margin-top:10px}
.compressor-grid{display:grid;grid-template-columns:1fr 1fr;gap:45px;align-items:center}.compressor-grid img{height:360px;width:100%;object-fit:cover;border:8px solid var(--alum)}.check-list{list-style:none;display:grid;gap:11px;margin-top:20px}.check-list li{padding:12px 14px 12px 38px;background:#fff;border-left:4px solid var(--ice);position:relative;color:#4e5d60}.check-list li:before{content:"✓";position:absolute;left:13px;color:var(--ice);font-weight:800}.compare{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:20px}.compare div{padding:16px;background:var(--steel);color:#fff;border-top:3px solid var(--amber)}.compare strong{display:block;color:#8be1d8;font-size:23px}.season-strip{display:flex;gap:0;border:1px solid var(--line);background:#fff;margin-bottom:22px}.season{flex:1;padding:17px;border-right:1px solid var(--line)}.season:last-child{border:0}.season b{display:block;color:var(--amber);font-size:13px}.season span{font-weight:700;color:var(--ink)}.maintain-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.maintain-card{background:var(--steel);color:#fff;padding:23px;border-left:4px solid var(--ice)}.maintain-card h3{font-size:18px;margin-bottom:7px}.maintain-card p{font-size:14px;color:#cdd9d7}
.news-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.news-card{background:#fff;border:1px solid var(--line);transition:.25s}.news-card img{height:145px;width:100%;object-fit:cover}.news-body{padding:17px}.news-card h3{font-size:17px;margin:8px 0}.news-card time{font-size:12px;color:var(--amber);font-family:monospace}.news-card p{font-size:13px}
.dashboard{display:grid;grid-template-columns:1.15fr .85fr;gap:18px}.dash-panel{background:#fff;border:1px solid var(--line);padding:27px;box-shadow:var(--shadow)}.gauge-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.gauge{padding:17px;background:#edf3f1;border-left:4px solid var(--ice)}.gauge b{display:block;font-size:28px;font-family:monospace;color:var(--ice-dark)}.gauge span{font-size:13px;color:var(--muted)}.meter{height:9px;background:var(--alum);margin-top:12px;position:relative}.meter i{display:block;height:100%;background:var(--ice);width:72%}.meter.amber i{background:var(--amber);width:54%}.boundary{display:grid;gap:13px}.boundary div{border-bottom:1px dashed var(--line);padding-bottom:12px}.boundary strong{display:block;color:var(--ink)}.boundary span{font-size:13px;color:var(--muted)}
.faq-list{max-width:900px;border-top:1px solid var(--line)}.faq-item{border-bottom:1px solid var(--line)}.faq-question{width:100%;min-height:60px;background:none;text-align:left;display:flex;justify-content:space-between;align-items:center;color:var(--ink);font-weight:700;font-size:16px;padding:13px 0}.faq-question span{color:var(--ice);font-size:24px;transition:.2s}.faq-question[aria-expanded=true] span{transform:rotate(45deg)}.faq-answer{display:none;color:var(--muted);font-size:14px;padding:0 40px 18px 0}.faq-answer.open{display:block}
.book-section{background:linear-gradient(120deg,#192228,#0d5d59);color:#fff}.book-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:55px}.book-section h2{color:#fff}.book-section .section-head p{color:#cde0dc}.form-box{background:#f4f8f6;color:var(--text);padding:28px;border-top:5px solid var(--amber);box-shadow:var(--shadow);border-radius:8px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.field{display:flex;flex-direction:column;gap:6px}.field.full{grid-column:1/-1}.field label{font-size:13px;font-weight:700;color:#49565a}.field input,.field select,.field textarea{width:100%;border:1px solid #bdc9c6;background:#fff;border-radius:5px;padding:11px 12px;color:var(--text);min-height:45px}.field textarea{min-height:80px;resize:vertical}.chips{display:flex;flex-wrap:wrap;gap:7px}.chip input{display:none}.chip label{display:block;padding:7px 10px;border:1px solid #b8c8c4;border-radius:5px;background:#fff;font-weight:500;cursor:pointer;min-height:38px}.chip input:checked+label{border-color:var(--ice);background:#dff2ef;color:var(--ice-dark)}.form-error{font-size:12px;color:#b95722;min-height:18px}.form-submit{width:100%;margin-top:5px}.form-success{display:none;background:#e0f3ee;border-left:4px solid var(--ice);padding:15px;margin-top:15px;color:var(--ice-dark);font-size:14px}.contact-panel{padding-top:18px}.contact-panel h3{font-size:22px;margin-bottom:22px}.contact-line{padding:17px 0;border-bottom:1px solid rgba(220,240,236,.2)}.contact-line small{display:block;color:#8ad8cf;font-size:12px;font-weight:700}.contact-line a,.contact-line strong{font-size:19px;color:#fff}.contact-panel .btn{margin-top:22px}
footer{background:var(--steel);color:#d5e0de;padding:53px 0 22px}.footer-grid{display:grid;grid-template-columns:1.35fr 1fr 1fr 1.2fr;gap:30px;padding-bottom:40px}.footer-brand{font-size:20px;font-weight:800;color:#fff;margin-bottom:12px}.footer-col h3{color:#fff;font-size:15px;margin-bottom:14px}.footer-col p,.footer-col a{font-size:13px;color:#b8c8c5;line-height:2;display:block}.footer-col a:hover{color:#69d4ca}.footer-bottom{border-top:1px solid #465159;padding-top:18px;color:#9eafac;font-size:12px;display:flex;justify-content:space-between;gap:15px;flex-wrap:wrap}
@media(max-width:1024px){.nav-wrap{gap:13px}.logo{min-width:205px;font-size:17px}.nav-links a{padding:0 6px;font-size:13px}.nav-cta{padding:0 13px;font-size:13px}.ticket-grid{grid-template-columns:repeat(3,1fr)}.ticket,.ticket:nth-child(n){grid-column:span 1}.ticket:nth-child(1){grid-column:span 2}.bento{grid-template-columns:1fr 1fr}.adv-card:first-child{grid-row:span 1}.review-wall{grid-template-columns:repeat(3,1fr)}.news-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:768px){.container{width:min(var(--max),calc(100% - 32px))}.topbar{height:auto;min-height:39px}.topbar .container{padding:7px 0;gap:8px;flex-wrap:wrap}.topbar .container>span:nth-child(2){display:none}.main-header{height:68px}.nav-links{position:fixed;inset:68px 0 0;background:var(--paper);height:auto;display:none;flex-direction:column;padding:18px 24px;gap:2px;box-shadow:0 15px 30px rgba(0,0,0,.15);overflow-y:auto}.nav-links.open{display:flex}.nav-links a{min-height:50px;border-bottom:1px solid var(--line);font-size:16px}.nav-links a:after{left:0;right:auto;width:4px;height:25px;top:13px;bottom:auto}.nav-cta{display:none}.menu-toggle{display:block;margin-left:auto}.logo{min-width:0;font-size:16px}.logo-mark{width:29px;height:29px}.hero{height:56vh;min-height:480px}.hero-slide:before{background:linear-gradient(90deg,rgba(20,25,29,.84),rgba(20,25,29,.35))}.hero h1{font-size:38px}.hero p{font-size:16px}.slider-controls{right:16px;bottom:18px}.section{padding:62px 0}.section-head.split{display:block}.solution-grid,.case-layout,.compressor-grid,.dashboard,.book-grid{grid-template-columns:1fr;gap:28px}.media-frame img{height:300px}.steps{display:block;border-top:0;border-left:2px solid var(--alum);margin:25px 0 0 12px}.step{border-right:0;border-bottom:1px dashed #aebdb9;padding:12px 12px 20px 28px;min-height:0}.step:before{top:16px;left:-10px}.projects{display:block}.project,.project:first-child{display:grid;grid-template-columns:38% 1fr;margin-bottom:15px}.project:first-child img{height:100%;min-height:190px}.audience-grid{grid-template-columns:1fr 1fr}.story-grid,.maintain-cards{grid-template-columns:1fr}.results{grid-template-columns:1fr 1fr}.result:nth-child(2){border-right:0}.result:nth-child(-n+2){border-bottom:1px dashed var(--line)}.review-wall{grid-template-columns:1fr 1fr}.review:nth-child(2),.review:nth-child(5){margin-top:0}.footer-grid{grid-template-columns:1fr 1fr}.season-strip{overflow-x:auto}.season{min-width:145px}.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}}
@media(max-width:520px){.topbar{font-size:11px}.top-call{gap:7px}.top-book{padding:3px 7px}.hero h1{font-size:33px}.hero-copy{padding-bottom:35px}.hero-actions{display:grid;grid-template-columns:1fr}.hero-actions .btn{width:100%}.section{padding:52px 0}.section h2{font-size:28px}.ticket-grid,.bento,.audience-grid,.review-wall,.news-grid,.results{grid-template-columns:1fr}.ticket:nth-child(1){grid-column:auto}.adv-card{min-height:0}.project,.project:first-child{display:block}.project img,.project:first-child img{height:190px}.case-photo img{height:280px}.gauge-row,.compare{grid-template-columns:1fr}.result,.result:nth-child(2){border-right:0;border-bottom:1px dashed var(--line)!important}.result:last-child{border-bottom:0!important}.footer-grid{grid-template-columns:1fr}.form-box{padding:20px 16px}.logo{font-size:14px}.logo-mark{width:26px;height:26px}.contact-line a,.contact-line strong{font-size:17px}}
@media(max-width:375px){.container{width:calc(100% - 24px)}.hero h1{font-size:30px}.topbar .container{font-size:10px}.slider-arrow{width:42px;height:42px}.section h2{font-size:26px}}
