:root{
  --primary:#16a34a;--primary-dark:#15803d;--primary-soft:#ecfdf3;--accent:#ff5a1f;--accent-soft:#fff1eb;
  --bg:#f7f8fb;--surface:#fff;--surface-2:#f3f4f6;--text:#141a23;--muted:#727b88;--line:#e8eaf0;
  --danger:#dc2626;--success:#16a34a;--warning:#f59e0b;--blue:#2563eb;--violet:#7c3aed;--cyan:#0891b2;--pink:#db2777;
  --shadow-sm:0 8px 24px rgba(15,23,42,.06);--shadow:0 18px 45px rgba(15,23,42,.10);--radius:22px;--safe-bottom:env(safe-area-inset-bottom,0px)
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;background:var(--bg);color:var(--text);font-family:var(--font-fa),system-ui,-apple-system,"Segoe UI",sans-serif;font-feature-settings:"ss01";padding-bottom:calc(84px + var(--safe-bottom))}body.no-nav{padding-bottom:24px}a{text-decoration:none;color:inherit}button,input,textarea,select{font:inherit}button{cursor:pointer}.hidden{display:none!important}
.app-shell{width:min(100%,1120px);margin:0 auto;padding:0 16px}.app-header{position:sticky;top:0;z-index:60;background:rgba(247,248,251,.88);backdrop-filter:blur(18px) saturate(140%);border-bottom:1px solid rgba(232,234,240,.78)}.header-inner{width:min(100%,1120px);margin:0 auto;height:72px;padding:0 16px;display:flex;align-items:center;gap:12px}.app-brand{display:flex;align-items:center;gap:10px;min-width:0}.brand-mark{width:43px;height:43px;border-radius:15px;display:grid;place-items:center;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-sm);overflow:hidden;flex:0 0 auto}.brand-mark img{width:100%;height:100%;object-fit:cover}.brand-copy{min-width:0}.brand-copy b{display:block;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brand-copy small{display:block;color:var(--muted);font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-space{flex:1}.round-btn{width:43px;height:43px;display:grid;place-items:center;border-radius:15px;border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-sm);color:#374151}.round-btn svg{width:21px;height:21px}.back-btn{transform:scaleX(-1)}
.home{padding-top:14px}.greeting{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin:4px 2px 14px}.greeting small{color:var(--muted);font-size:11px}.greeting h1{font-size:20px;margin:2px 0 0;letter-spacing:-.3px}.online-badge{display:flex;align-items:center;gap:6px;font-size:10.5px;color:#166534;background:#ecfdf3;border:1px solid #bbf7d0;padding:7px 9px;border-radius:999px}.online-dot{width:7px;height:7px;border-radius:50%;background:#22c55e;box-shadow:0 0 0 4px rgba(34,197,94,.12)}
.search-box{height:52px;border:1px solid var(--line);background:#fff;border-radius:18px;display:flex;align-items:center;gap:10px;padding:0 14px;box-shadow:var(--shadow-sm);margin-bottom:14px}.search-box svg{width:20px;color:#9ca3af}.search-box input{flex:1;border:0;outline:0;background:transparent;color:var(--text);font-size:13px;min-width:0}.search-box button{border:0;background:transparent;color:var(--muted);padding:4px;display:grid;place-items:center}
.image-slider{position:relative;margin-bottom:2px;border-radius:26px;overflow:hidden;background:#eef1f5;box-shadow:0 18px 45px rgba(15,23,42,.10)}
.slider-viewport{overflow:hidden;direction:ltr}
.slider-track{display:flex;transition:transform .42s cubic-bezier(.22,.61,.36,1);will-change:transform}
.slider-slide{flex:0 0 100%;aspect-ratio:2.35/1;min-height:150px;background:#e9edf2;overflow:hidden}
.slider-slide a,.slider-slide>span{display:block;width:100%;height:100%}
.slider-slide img{display:block;width:100%;height:100%;object-fit:cover}
.slider-dots{position:absolute;left:0;right:0;bottom:9px;display:flex;gap:5px;justify-content:center;z-index:3;direction:ltr}
.slider-dot{width:6px;height:6px;border:0;border-radius:999px;background:rgba(255,255,255,.62);box-shadow:0 1px 5px rgba(0,0,0,.18);padding:0;transition:.2s}
.slider-dot.active{width:18px;background:#fff}
.announcement{margin-top:13px;border-radius:18px;border:1px solid #fed7aa;background:#fff7ed;padding:11px 12px;display:flex;align-items:flex-start;gap:10px;box-shadow:var(--shadow-sm)}.announcement-icon{width:35px;height:35px;border-radius:12px;background:#ffedd5;color:#ea580c;display:grid;place-items:center;flex:0 0 auto}.announcement-icon svg{width:18px}.announcement-copy{flex:1;min-width:0}.announcement-copy b{font-size:11.5px;display:block}.announcement-copy p{font-size:10.5px;color:#7c2d12;margin:2px 0 0;line-height:1.7}.announcement-close{border:0;background:transparent;color:#9a3412;display:grid;place-items:center;padding:4px}.announcement-close svg{width:16px}
.section{margin-top:20px}.section-head{display:flex;align-items:end;justify-content:space-between;gap:12px;margin:0 2px 11px}.section-head h2{font-size:15px;margin:0}.section-head p{font-size:10.5px;color:var(--muted);margin:3px 0 0}.section-link{color:var(--primary);font-size:11px;font-weight:700;white-space:nowrap}.services-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.service-tile{background:#fff;border:1px solid var(--line);border-radius:20px;padding:13px 8px 12px;text-align:center;min-height:112px;box-shadow:var(--shadow-sm);transition:.18s ease;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px}.service-tile:active{transform:scale(.98)}.service-icon{width:49px;height:49px;border-radius:17px;display:grid;place-items:center;background:#ecfdf3;color:var(--primary)}.service-icon svg{width:23px;height:23px;stroke-width:1.8}.service-icon.has-image{background:#fff!important;color:inherit!important;overflow:hidden;border:1px solid #eef0f3}.service-icon.has-image img{width:100%;height:100%;display:block;object-fit:contain;padding:5px}.service-tile[data-accent="orange"] .service-icon{background:#fff1eb;color:#f4511e}.service-tile[data-accent="blue"] .service-icon{background:#eff6ff;color:#2563eb}.service-tile[data-accent="violet"] .service-icon{background:#f5f3ff;color:#7c3aed}.service-tile[data-accent="cyan"] .service-icon{background:#ecfeff;color:#0891b2}.service-tile[data-accent="amber"] .service-icon{background:#fffbeb;color:#d97706}.service-tile[data-accent="red"] .service-icon{background:#fef2f2;color:#dc2626}.service-tile[data-accent="pink"] .service-icon{background:#fdf2f8;color:#db2777}.service-tile b{font-size:11.5px;line-height:1.4}.service-tile small{font-size:9.5px;color:var(--muted);line-height:1.45;display:block}
.quick-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.quick-card{border-radius:20px;border:1px solid var(--line);background:#fff;box-shadow:var(--shadow-sm);padding:14px;display:flex;align-items:center;gap:11px;min-height:88px}.quick-icon{width:43px;height:43px;border-radius:15px;display:grid;place-items:center;background:var(--surface-2);color:#374151;flex:0 0 auto}.quick-icon svg{width:20px}.quick-card b{font-size:11.5px;display:block}.quick-card small{display:block;color:var(--muted);font-size:9.5px;margin-top:3px}.quick-card .chev{margin-right:auto;color:#c0c6d0}.quick-card .chev svg{width:16px;transform:scaleX(-1)}
.install-card{border-radius:22px;padding:15px 16px;border:1px solid #dbeafe;background:linear-gradient(135deg,#eff6ff,#fff);display:flex;align-items:center;gap:12px;box-shadow:var(--shadow-sm)}.install-card .icon{width:46px;height:46px;border-radius:15px;background:#dbeafe;color:#2563eb;display:grid;place-items:center}.install-card .icon svg{width:22px}.install-card .copy{flex:1}.install-card b{font-size:11.5px}.install-card p{font-size:9.5px;color:var(--muted);margin:3px 0 0}.mini-btn{border:0;background:#2563eb;color:#fff;height:34px;padding:0 11px;border-radius:11px;font-size:10.5px;font-weight:700}
.bottom-nav{position:fixed;z-index:70;left:0;right:0;bottom:0;padding:7px 12px calc(7px + var(--safe-bottom));background:rgba(255,255,255,.93);backdrop-filter:blur(18px) saturate(140%);border-top:1px solid rgba(229,231,235,.9)}.nav-inner{width:min(100%,600px);margin:0 auto;display:grid;grid-template-columns:repeat(5,1fr);align-items:center}.nav-item{height:57px;color:#89919d;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:9.5px;position:relative}.nav-item svg{width:21px;height:21px}.nav-item.active{color:var(--primary);font-weight:700}.nav-item.center{transform:translateY(-15px)}.nav-item.center .nav-main-icon{width:50px;height:50px;border-radius:17px;background:var(--primary);color:#fff;display:grid;place-items:center;box-shadow:0 12px 30px rgba(22,163,74,.3);border:4px solid #fff}.nav-item.center svg{width:22px}.nav-item.center span:last-child{margin-top:1px;color:#667085}
.page{padding:14px 0 20px}.page-title{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin:4px 2px 14px}.page-title h1{font-size:19px;margin:0}.page-title p{margin:4px 0 0;color:var(--muted);font-size:11px;line-height:1.8}.card{background:#fff;border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow-sm);padding:16px}.card+.card{margin-top:12px}.card-title{display:flex;align-items:center;gap:10px;margin-bottom:12px}.card-title-icon{width:42px;height:42px;border-radius:14px;background:var(--primary-soft);color:var(--primary);display:grid;place-items:center}.card-title-icon svg{width:20px}.card-title h2,.card-title h3{margin:0;font-size:14px}.card-title p{margin:2px 0 0;color:var(--muted);font-size:10.5px}.form-grid{display:grid;gap:11px}.field{display:grid;gap:6px}.field label{font-size:10.5px;font-weight:700;color:#4b5563}.input,.textarea,.select{width:100%;border:1px solid var(--line);background:#fff;color:var(--text);border-radius:15px;outline:0;font-size:12.5px;padding:0 12px;transition:.15s}.input,.select{height:48px}.textarea{padding:11px 12px;min-height:120px;resize:vertical}.input:focus,.textarea:focus,.select:focus{border-color:#86efac;box-shadow:0 0 0 3px rgba(34,197,94,.09)}.submit-btn{height:49px;border:0;border-radius:15px;background:var(--primary);color:#fff;font-size:12.5px;font-weight:800;display:flex;align-items:center;justify-content:center;gap:7px}.submit-btn.accent{background:var(--accent)}.submit-btn svg{width:18px}.form-note{font-size:9.5px;color:var(--muted);line-height:1.8}.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.status-box{border-radius:18px;padding:14px;background:#f9fafb;border:1px solid var(--line)}.status-row{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px dashed var(--line);font-size:11px}.status-row:last-child{border:0}.status-row span{color:var(--muted)}.status-pill{display:inline-flex;padding:5px 9px;border-radius:999px;background:#ffedd5;color:#9a3412;font-size:10px;font-weight:700}.status-pill.closed{background:#dcfce7;color:#166534}.status-pill.in_progress{background:#dbeafe;color:#1d4ed8}
.phone-list{display:grid;gap:10px}.phone-card{display:flex;align-items:center;gap:11px;background:#fff;border:1px solid var(--line);border-radius:19px;padding:13px;box-shadow:var(--shadow-sm)}.phone-icon{width:45px;height:45px;border-radius:15px;background:#eff6ff;color:#2563eb;display:grid;place-items:center;flex:0 0 auto}.phone-icon svg{width:20px}.phone-card .copy{flex:1;min-width:0}.phone-card b{font-size:11.5px}.phone-card p{font-size:9.5px;color:var(--muted);margin:2px 0 0}.phone-card .number{direction:ltr;text-align:right;font-size:10px;color:#64748b}.call-btn{width:38px;height:38px;border-radius:13px;background:var(--primary);color:#fff;display:grid;place-items:center}.call-btn svg{width:18px}
.map-frame{width:100%;height:62vh;border:0;border-radius:18px;background:#f3f4f6}.action-row{display:flex;gap:8px;flex-wrap:wrap}.action-btn{height:40px;border-radius:13px;padding:0 12px;border:1px solid var(--line);background:#fff;font-size:11px;font-weight:700;display:inline-flex;align-items:center;gap:6px}.action-btn.primary{background:var(--primary);color:#fff;border-color:var(--primary)}.action-btn svg{width:17px}
.factory-toolbar{display:grid;grid-template-columns:minmax(0,1fr) 170px auto;gap:8px;margin-bottom:10px}.factory-meta{font-size:10.5px;color:var(--muted);margin:8px 2px 10px}.factory-table-wrap{background:#fff;border:1px solid var(--line);border-radius:20px;overflow:auto;box-shadow:var(--shadow-sm)}.factTable{width:100%;border-collapse:collapse;font-size:11.5px;min-width:760px}.factTable th{background:#f9fafb;color:#4b5563;position:sticky;top:0;z-index:2;padding:11px;text-align:right;border-bottom:1px solid var(--line);white-space:nowrap}.factTable td{padding:11px;border-bottom:1px solid #f0f1f4;vertical-align:top}.factTable tr:last-child td{border-bottom:0}.factory-mobile{display:none;gap:9px}.factory-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:13px;box-shadow:var(--shadow-sm)}.factory-card h3{font-size:12.5px;margin:0 0 3px}.factory-card .owner{font-size:10px;color:var(--muted)}.factory-card .activity{font-size:10.5px;margin:9px 0;color:#374151}.factory-card .factory-row{display:flex;gap:7px;align-items:flex-start;font-size:9.8px;color:var(--muted);margin-top:6px}.factory-card .factory-row svg{width:15px;flex:0 0 auto;margin-top:1px}.pager{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:10px}.pager-info{font-size:10.5px;color:var(--muted)}.pager-actions{display:flex;gap:6px}.pager button{height:36px;padding:0 11px;border:1px solid var(--line);background:#fff;border-radius:12px;font-size:10.5px}.pager button:disabled{opacity:.45}
.services-full{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.service-row{background:#fff;border:1px solid var(--line);border-radius:20px;padding:13px;display:flex;align-items:center;gap:11px;box-shadow:var(--shadow-sm)}.service-row .service-icon{width:46px;height:46px;flex:0 0 auto}.service-row .service-icon.has-image img{padding:4px}.service-row .copy{flex:1}.service-row b{font-size:11.5px}.service-row p{font-size:9.5px;color:var(--muted);margin:3px 0 0}.service-row .arrow svg{width:17px;color:#c2c8d1;transform:scaleX(-1)}
.profile-card{background:linear-gradient(135deg,#151c29,#202a3a);color:#fff;border-radius:24px;padding:17px;display:flex;align-items:center;gap:12px;box-shadow:0 20px 45px rgba(15,23,42,.2)}.avatar{width:52px;height:52px;border-radius:17px;background:rgba(255,255,255,.1);display:grid;place-items:center}.avatar svg{width:25px}.profile-card b{font-size:14px}.profile-card p{font-size:10px;color:#cdd3dd;margin:3px 0 0}.menu-list{margin-top:12px;display:grid;gap:8px}.menu-row{display:flex;align-items:center;gap:11px;background:#fff;border:1px solid var(--line);border-radius:18px;padding:12px 13px;box-shadow:var(--shadow-sm)}.menu-row .mi{width:40px;height:40px;border-radius:13px;background:#f3f4f6;display:grid;place-items:center;color:#4b5563}.menu-row .mi svg{width:18px}.menu-row .copy{flex:1}.menu-row b{font-size:11.5px}.menu-row p{font-size:9.5px;color:var(--muted);margin:2px 0 0}.menu-row .arrow svg{width:16px;transform:scaleX(-1);color:#c2c8d1}
.toast{position:fixed;z-index:100;right:50%;transform:translateX(50%) translateY(20px);bottom:calc(90px + var(--safe-bottom));width:min(90%,420px);background:#111827;color:#fff;border-radius:15px;padding:11px 13px;font-size:11px;box-shadow:0 18px 40px rgba(0,0,0,.25);opacity:0;pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:translateX(50%) translateY(0)}.skeleton{animation:pulse 1.3s ease-in-out infinite;background:linear-gradient(90deg,#f3f4f6,#e9ecf1,#f3f4f6);background-size:200% 100%}@keyframes pulse{0%{background-position:100% 0}100%{background-position:-100% 0}}
.empty-state{text-align:center;padding:30px 16px;color:var(--muted)}.empty-state .ei{width:54px;height:54px;border-radius:18px;background:#f3f4f6;display:grid;place-items:center;margin:0 auto 8px}.empty-state svg{width:24px}.empty-state b{display:block;color:#374151;font-size:12px}.empty-state p{font-size:10px;margin:4px 0 0}
@media(min-width:780px){.home{padding-top:24px}.services-grid{grid-template-columns:repeat(8,minmax(0,1fr))}.service-tile{min-height:126px}.quick-cards{grid-template-columns:repeat(3,1fr)}.image-slider{border-radius:28px}.slider-slide{aspect-ratio:2.55/1}.services-full{grid-template-columns:repeat(3,1fr)}.page{padding-top:24px}.form-two{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.app-shell,.header-inner{padding-left:12px;padding-right:12px}.header-inner{height:64px}.brand-copy b{font-size:12.5px}.brand-copy small{font-size:9.5px}.round-btn,.brand-mark{width:40px;height:40px;border-radius:14px}.greeting h1{font-size:18px}.search-box{height:48px;border-radius:16px}.image-slider{border-radius:22px}.slider-slide{aspect-ratio:1.9/1;min-height:165px}.services-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.service-tile{padding:11px 5px;min-height:108px;border-radius:18px}.service-icon{width:46px;height:46px}.service-tile small{display:none}.quick-cards{grid-template-columns:1fr}.services-full{grid-template-columns:1fr}.factory-toolbar{grid-template-columns:1fr 1fr}.factory-toolbar .download{grid-column:1/-1}.factory-table-wrap{display:none}.factory-mobile{display:grid}.pager{align-items:flex-start}.map-frame{height:58vh}}
@media(max-width:390px){.services-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.service-tile:nth-child(n+7){display:none}.slider-slide{aspect-ratio:1.72/1}.nav-item{font-size:8.8px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* === v3.2.0 ROOT UI / readability / visual polish === */
:root{
  --bg:#f5f7fb;
  --shadow-sm:0 10px 28px rgba(15,23,42,.08);
  --shadow:0 20px 55px rgba(15,23,42,.12)
}
body{
  font-size:15px;
  background:
    radial-gradient(circle at 88% 5%,rgba(34,197,94,.10),transparent 28%),
    radial-gradient(circle at 8% 22%,rgba(255,90,31,.08),transparent 24%),
    linear-gradient(180deg,#f9fbfd 0,#f5f7fb 42%,#f7f8fb 100%);
}
.app-shell{width:min(100%,1180px);padding-left:20px;padding-right:20px}
.app-header{
  background:rgba(255,255,255,.90);
  border-bottom:1px solid rgba(226,232,240,.9);
  box-shadow:0 7px 28px rgba(15,23,42,.06)
}
.centered-header{
  height:88px;
  display:grid;
  grid-template-columns:1fr auto 1fr;
  align-items:center;
  gap:16px
}
.header-side{display:flex;align-items:center;justify-content:flex-start;min-width:0}
.header-side-end{justify-content:flex-end}
.header-logo{display:flex;align-items:center;justify-content:center;min-width:0}
.header-logo img{display:block;width:220px;max-width:42vw;height:66px;object-fit:contain}
.round-btn{width:48px;height:48px;border-radius:17px;background:rgba(255,255,255,.96);box-shadow:0 8px 24px rgba(15,23,42,.09);color:#334155}
.round-btn svg{width:23px;height:23px}
.home{padding-top:22px}
.greeting{margin:8px 2px 18px;align-items:center}
.greeting small{font-size:13px;font-weight:600;color:#64748b}
.greeting h1{font-size:27px;line-height:1.5;margin-top:3px;letter-spacing:-.5px}
.online-badge{font-size:12px;font-weight:700;padding:9px 12px;box-shadow:0 6px 18px rgba(34,197,94,.08)}
.search-box{height:60px;border-radius:21px;padding:0 17px;gap:12px;margin-bottom:18px;box-shadow:0 12px 30px rgba(15,23,42,.08);border-color:#e2e8f0}
.search-box input{font-size:15px}
.search-box svg{width:23px}
.image-slider{border-radius:30px;border:1px solid rgba(255,255,255,.9);box-shadow:0 22px 60px rgba(15,23,42,.16),0 0 0 1px rgba(34,197,94,.04)}
.slider-dot{width:8px;height:8px}.slider-dot.active{width:24px}
.announcement{padding:14px 15px;border-radius:21px;gap:12px;box-shadow:0 10px 28px rgba(234,88,12,.08)}
.announcement-icon{width:42px;height:42px;border-radius:14px}.announcement-icon svg{width:20px}
.announcement-copy b{font-size:14px}.announcement-copy p{font-size:12.5px;line-height:1.9}
.section{margin-top:28px}.section-head{margin-bottom:14px}.section-head h2{font-size:19px;letter-spacing:-.2px}.section-head p{font-size:12.5px;margin-top:5px}.section-link{font-size:13px}
.services-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:14px}
.service-tile{
  min-height:154px;
  padding:17px 10px 15px;
  border-radius:25px;
  gap:11px;
  border-color:#e5e7eb;
  box-shadow:0 12px 34px rgba(15,23,42,.075);
  overflow:hidden;
  position:relative
}
.service-tile::after{content:"";position:absolute;inset:auto -28px -38px auto;width:90px;height:90px;border-radius:50%;background:currentColor;opacity:.035;pointer-events:none}
.service-tile:hover{transform:translateY(-3px);box-shadow:0 18px 42px rgba(15,23,42,.12)}
.service-icon{width:68px;height:68px;border-radius:22px}.service-icon svg{width:30px;height:30px;stroke-width:1.9}
.service-icon.has-image{width:76px;height:76px;background:transparent!important;border:0!important;box-shadow:none!important}
.service-icon.has-image img{width:100%;height:100%;padding:0;object-fit:contain}
.service-tile b{font-size:15px;line-height:1.55;font-weight:800}.service-tile small{font-size:11.5px;line-height:1.65;margin-top:2px}
.service-tile[data-accent="green"]{background:linear-gradient(155deg,#fff 35%,#f0fdf4);border-color:#dcfce7}
.service-tile[data-accent="orange"]{background:linear-gradient(155deg,#fff 35%,#fff7ed);border-color:#ffedd5}
.service-tile[data-accent="blue"]{background:linear-gradient(155deg,#fff 35%,#eff6ff);border-color:#dbeafe}
.service-tile[data-accent="violet"]{background:linear-gradient(155deg,#fff 35%,#f5f3ff);border-color:#ede9fe}
.service-tile[data-accent="cyan"]{background:linear-gradient(155deg,#fff 35%,#ecfeff);border-color:#cffafe}
.service-tile[data-accent="amber"]{background:linear-gradient(155deg,#fff 35%,#fffbeb);border-color:#fef3c7}
.service-tile[data-accent="red"]{background:linear-gradient(155deg,#fff 35%,#fef2f2);border-color:#fee2e2}
.service-tile[data-accent="pink"]{background:linear-gradient(155deg,#fff 35%,#fdf2f8);border-color:#fce7f3}
.quick-cards{gap:14px}.quick-card{min-height:104px;border-radius:23px;padding:17px;box-shadow:0 11px 32px rgba(15,23,42,.07);background:linear-gradient(145deg,#fff,#fbfdff)}
.quick-icon{width:52px;height:52px;border-radius:17px}.quick-icon svg{width:24px}.quick-card b{font-size:14px}.quick-card small{font-size:12px;margin-top:4px;line-height:1.6}.quick-card .chev svg{width:19px}
.install-card{padding:18px;border-radius:24px}.install-card b{font-size:14px}.install-card p{font-size:11.5px}.mini-btn{height:40px;font-size:12px;padding:0 15px}
.bottom-nav{padding-top:8px}.nav-item{height:62px;font-size:11.5px;gap:4px}.nav-item svg{width:24px;height:24px}.nav-item.center .nav-main-icon{width:57px;height:57px;border-radius:19px;box-shadow:0 14px 34px rgba(22,163,74,.34)}
.page{padding-top:22px}.page-title h1{font-size:24px}.page-title p{font-size:13px}.card{padding:20px;border-radius:25px}.card-title-icon{width:48px;height:48px;border-radius:16px}.card-title-icon svg{width:23px}.card-title h2,.card-title h3{font-size:16px}.card-title p{font-size:12px}
.field label{font-size:13px}.input,.textarea,.select{font-size:14px}.input,.select{height:54px}.submit-btn{height:54px;font-size:14px}.form-note{font-size:11.5px}
.status-row{font-size:13px}.status-pill{font-size:11.5px}
.phone-card{padding:16px;border-radius:22px}.phone-icon{width:52px;height:52px}.phone-card b{font-size:14px}.phone-card p{font-size:11.5px}.phone-card .number{font-size:12px}.call-btn{width:44px;height:44px}
.action-btn{height:46px;font-size:13px;padding:0 15px}
.factory-meta{font-size:12px}.factTable{font-size:13px}.factory-card h3{font-size:15px}.factory-card .owner{font-size:11.5px}.factory-card .activity{font-size:12px}.factory-card .factory-row{font-size:11.5px}.pager-info,.pager button{font-size:12px}
.services-full{gap:14px}.service-row{padding:16px;border-radius:22px}.service-row .service-icon{width:58px;height:58px}.service-row b{font-size:14px}.service-row p{font-size:11.5px}
.profile-card{padding:21px;border-radius:27px}.avatar{width:60px;height:60px}.profile-card b{font-size:16px}.profile-card p{font-size:12px}.menu-row{padding:15px;border-radius:21px}.menu-row .mi{width:47px;height:47px}.menu-row b{font-size:14px}.menu-row p{font-size:11.5px}
.toast{font-size:13px;padding:13px 15px}
.empty-state b{font-size:14px}.empty-state p{font-size:12px}
@media(min-width:780px){
  .services-grid{grid-template-columns:repeat(5,minmax(0,1fr))}
  .service-tile{min-height:158px}
  .slider-slide{aspect-ratio:2.55/1}
}
@media(max-width:779px){
  .services-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:620px){
  .app-shell,.header-inner{padding-left:14px;padding-right:14px}
  .centered-header{height:76px;grid-template-columns:48px minmax(0,1fr) 48px;gap:8px}
  .header-logo img{width:174px;max-width:100%;height:56px}
  .round-btn{width:44px;height:44px}
  .home{padding-top:18px}
  .greeting h1{font-size:22px}.greeting small{font-size:12px}.online-badge{font-size:11px;padding:8px 10px}
  .search-box{height:56px;border-radius:19px}.search-box input{font-size:14px}
  .image-slider{border-radius:24px}.slider-slide{aspect-ratio:1.9/1;min-height:170px}
  .section{margin-top:24px}.section-head h2{font-size:17px}.section-head p{font-size:11.5px}.section-link{font-size:12px}
  .services-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}
  .service-tile{min-height:143px;padding:14px 7px;border-radius:22px}.service-icon.has-image{width:68px;height:68px}.service-tile b{font-size:14px}.service-tile small{display:block;font-size:10.5px}
  .quick-card{min-height:96px}.quick-card b{font-size:13.5px}.quick-card small{font-size:11.5px}
  .nav-item{font-size:10.5px}
  .page-title h1{font-size:21px}.page-title p{font-size:12px}
}
@media(max-width:390px){
  .services-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .service-tile:nth-child(n){display:flex}
  .header-logo img{width:158px}
}

/* === v3.2.2 Mobile viewport lock / Android responsive fix === */
html,body{
  width:100%;
  max-width:100%;
  overflow-x:hidden;
}
body{position:relative}
.app-shell,.header-inner,.page,.home,main,section,article,nav,.nav-inner,
.card,.page-title,.factory-toolbar,.factory-meta,.factory-mobile,.factory-card,
.services-grid,.services-full,.quick-cards,.phone-list,.menu-list,.image-slider,
.slider-viewport,.slider-track,.announcement{
  min-width:0;
  max-width:100%;
}
img,video,canvas,iframe,svg{max-width:100%}
.search-box,.search-box input,.input,.textarea,.select{
  min-width:0;
  max-width:100%;
}
.factory-toolbar>*{min-width:0;max-width:100%}
.factory-toolbar .search-box,.factory-toolbar .select,.factory-toolbar .download{width:100%}
.factory-card,.factory-card *{min-width:0}
.factory-card h3,.factory-card .owner,.factory-card .activity,
.factory-card .factory-row,.factory-card .factory-row span:last-child{
  max-width:100%;
  overflow-wrap:anywhere;
  word-break:break-word;
}
.factory-card .factory-row{width:100%}
.factory-card .factory-row span:last-child{flex:1}
.page-title>div{min-width:0;max-width:100%}
.action-row>*{max-width:100%}

@media(max-width:820px){
  .factory-toolbar{
    grid-template-columns:1fr!important;
    width:100%;
    gap:10px;
  }
  .factory-toolbar .download{
    grid-column:auto!important;
    justify-content:center;
  }
  .factory-table-wrap{display:none!important}
  .factory-mobile{
    display:grid!important;
    width:100%;
    grid-template-columns:minmax(0,1fr);
    gap:10px;
  }
  .factory-card{width:100%;overflow:hidden}
  .pager{
    width:100%;
    flex-direction:column;
    align-items:stretch!important;
  }
  .pager-info{text-align:center}
  .pager-actions{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    width:100%;
  }
  .pager button{width:100%}
}

@media(max-width:620px){
  .app-shell,.header-inner{
    width:100%;
    max-width:100%;
    padding-left:14px;
    padding-right:14px;
  }
  .centered-header{width:100%;max-width:100%}
  .header-logo{min-width:0;overflow:hidden}
  .header-logo img{max-width:100%;height:auto;max-height:56px}
  .page-title{width:100%}
  .search-box{width:100%}
  .bottom-nav,.nav-inner{max-width:100%;overflow:hidden}
  .nav-item{min-width:0}
  .nav-item span:last-child{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
}

/* === v3.2.3 iOS Safari input focus zoom fix === */
html{
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
}
input,select,textarea{
  font-size:16px!important;
}
@media(max-width:820px){
  .search-box input,
  .input,
  .textarea,
  .select,
  input[type="text"],
  input[type="search"],
  input[type="tel"],
  input[type="email"],
  input[type="number"],
  input[type="password"],
  input:not([type]){
    font-size:16px!important;
    line-height:1.45;
  }
  .search-box{transform:none!important}
  input:focus,select:focus,textarea:focus{
    font-size:16px!important;
  }
}
