diff --git a/.screenshots/about-full.png b/.screenshots/about-full.png new file mode 100644 index 0000000..5b11a65 Binary files /dev/null and b/.screenshots/about-full.png differ diff --git a/.screenshots/about-leaders.png b/.screenshots/about-leaders.png new file mode 100644 index 0000000..d3f4100 Binary files /dev/null and b/.screenshots/about-leaders.png differ diff --git a/.screenshots/case-studies-full.png b/.screenshots/case-studies-full.png new file mode 100644 index 0000000..c67d8a3 Binary files /dev/null and b/.screenshots/case-studies-full.png differ diff --git a/.screenshots/contact-full.png b/.screenshots/contact-full.png new file mode 100644 index 0000000..16dc555 Binary files /dev/null and b/.screenshots/contact-full.png differ diff --git a/.screenshots/home-above-fold.png b/.screenshots/home-above-fold.png new file mode 100644 index 0000000..d092431 Binary files /dev/null and b/.screenshots/home-above-fold.png differ diff --git a/.screenshots/home-full.png b/.screenshots/home-full.png new file mode 100644 index 0000000..cc2cc9c Binary files /dev/null and b/.screenshots/home-full.png differ diff --git a/.screenshots/home-mobile.png b/.screenshots/home-mobile.png new file mode 100644 index 0000000..0e3e51a Binary files /dev/null and b/.screenshots/home-mobile.png differ diff --git a/.screenshots/industries-full.png b/.screenshots/industries-full.png new file mode 100644 index 0000000..6f81dd5 Binary files /dev/null and b/.screenshots/industries-full.png differ diff --git a/.screenshots/insights-full.png b/.screenshots/insights-full.png new file mode 100644 index 0000000..24488b2 Binary files /dev/null and b/.screenshots/insights-full.png differ diff --git a/.screenshots/leadership-full.png b/.screenshots/leadership-full.png new file mode 100644 index 0000000..5289ff1 Binary files /dev/null and b/.screenshots/leadership-full.png differ diff --git a/.screenshots/privacy-full.png b/.screenshots/privacy-full.png new file mode 100644 index 0000000..0e8fd6d Binary files /dev/null and b/.screenshots/privacy-full.png differ diff --git a/.screenshots/services-full.png b/.screenshots/services-full.png new file mode 100644 index 0000000..b68830b Binary files /dev/null and b/.screenshots/services-full.png differ diff --git a/.screenshots/sustainability-full.png b/.screenshots/sustainability-full.png new file mode 100644 index 0000000..6d62da5 Binary files /dev/null and b/.screenshots/sustainability-full.png differ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..2ea20cb --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,168 @@ +# Contributing + +Thanks for your interest in improving this site. This document explains how to set up the project locally, how the code is organized, and the conventions we follow so changes stay consistent. + +## What this is + +A static marketing site for Trion Consultancy Services. Plain HTML, CSS, and vanilla JavaScript, with no runtime build step. A Python script generates pages from a shared chrome template so the header, nav, and footer stay in sync across the site. + +## Prerequisites + +- Python 3.9+ (for the generator and the local server) +- A modern browser (Chrome, Firefox, Safari, or Edge - all current) +- Git + +No npm, no bundler, no framework runtime. + +## Run it locally + +```bash +git clone +cd platform +python3 -m http.server 8765 --directory site +``` + +Open `http://localhost:8765/` in your browser. + +You can also open any `site/*.html` directly from the filesystem (`file://`), but a few features (the Inter web font, intra-page anchors) work better over HTTP. + +## Project layout + +``` +platform/ +├── site/ The production output - HTML, CSS, JS, assets +│ ├── index.html Home +│ ├── about.html Page-specific content lives in
+│ ├── services.html ... +│ ├── ... (20 pages total) +│ ├── css/ +│ │ ├── base.css Reset, design tokens, typography, layout primitives +│ │ └── components.css Buttons, cards, header, footer, forms, etc. +│ ├── js/ +│ │ └── main.js Sticky header, mega-menu, mobile menu, reveal-on-scroll, form handlers +│ ├── assets/ Logo, imagery +│ └── favicon.svg +│ +├── scripts/ +│ └── generate-site.py Single source of truth for shared chrome + page configs +│ +├── docs/ Design specs, internal notes +├── .github/workflows/ CI for GitHub Pages deployment +└── CONTRIBUTING.md This file +``` + +## Making changes + +### Editing existing page content + +Each page's unique content lives between `
` and `
` in the corresponding `site/*.html`. Edit the file directly. + +The generator preserves whatever is inside `
` when it re-emits a page, so direct edits to a page's body are safe across regenerations. + +### Changing the header, footer, nav, or any chrome + +These live in `scripts/generate-site.py` (in `CHROME_TOP` and `CHROME_BOTTOM`). After editing the template: + +```bash +python3 scripts/generate-site.py +``` + +This re-emits all 20 pages with the new chrome while preserving each page's `
`. Commit the regenerated HTML alongside the generator change. + +### Adding a new page + +1. Add a config entry to `STUB_PAGES` in `scripts/generate-site.py` with `title`, `description`, and `main_html` (or write a `*_main()` helper that returns the body markup). +2. Add a link to the new page wherever it belongs: primary nav, mega menu, footer columns, footer legal row, mobile menu - all in `CHROME_TOP` / `CHROME_BOTTOM`. +3. Run the generator. +4. Open the new page in the browser and verify it loads cleanly. + +### Styling + +- Design tokens (colors, spacing, type scale, motion timing, breakpoints) live as CSS custom properties on `:root` in `site/css/base.css`. Add new tokens there; don't hardcode values in components. +- Component styles live in `site/css/components.css`, grouped by component with header comments. +- Mobile-first - default rules target the smallest viewport, then `@media (min-width: ...)` adds desktop styles. +- BEM-ish naming: `.block`, `.block__element`, `.block--modifier`. Stick to it for new components. +- Avoid `!important` unless documenting why in a comment. + +### JavaScript + +- Vanilla, no dependencies. +- Everything runs inside the IIFE in `site/js/main.js`. +- Feature-detect (`'IntersectionObserver' in window`) and degrade gracefully when an API is missing. +- Respect `prefers-reduced-motion` for any animation. + +## Conventions + +### HTML + +- Use semantic landmarks: `
`, `
+ + + +""" + +CHROME_BOTTOM = """ + + + + + +""" + + +def page_hero(eyebrow: str, title: str, lead: str) -> str: + return f""" +
+
+ {eyebrow} +

{title}

+

{lead}

+
+
+""" + + +def cta_strip(headline: str, btn_text: str, btn_href: str) -> str: + return f""" +
+
+

{headline}

+ {btn_text} + {ARROW} + +
+
+""" + + +# -- New stub pages --------------------------------------------------------- + +LEADERSHIP_LEADERS = [ + ("Anand Krishnan", "AK", "media--neon", "Chief Executive Officer & Managing Director"), + ("Priya Iyer", "PI", "media--ocean", "Chief Operating Officer"), + ("Marcus Hale", "MH", "media--sunset", "President, Banking & Financial Services"), + ("Yuki Tanaka", "YT", "media--forest", "Chief Technology Officer"), + ("Sofia Reyes", "SR", "media--ember", "President, Europe"), + ("Rohan Mehta", "RM", "media--steel", "Chief Financial Officer"), + ("Aisha Patel", "AP", "media--neon", "Chief Human Resources Officer"), + ("David Okonkwo", "DO", "media--ocean", "Global Head, AI & Data"), + ("Helena Bauer", "HB", "media--sunset", "President, Insurance"), + ("Kenji Sato", "KS", "media--forest", "President, Manufacturing"), + ("Lara Schmidt", "LS", "media--ember", "President, Retail & Consumer Products"), + ("Naila Rahman", "NR", "media--steel", "President, Healthcare & Life Sciences"), +] + + +def leadership_main() -> str: + cards = "\n".join( + f"""
+
{initials}
+
{name}
+
{role}
+
""" + for (name, initials, variant, role) in LEADERSHIP_LEADERS + ) + return ( + page_hero( + "Leadership", + "The people who run Trion.", + "An operating committee of practitioners. Most of our leaders spent decades inside the disciplines they now oversee - building, delivering, and learning the hard way before stepping into leadership.", + ) + + f""" +
+
+
+
+ Operating committee +

Twelve leaders, one P&L.

+
+
+
+{cards} +
+
+
+ +
+
+
+
"
+
+ The role of leadership here is to make the next generation of leaders look obvious in hindsight. +
+ Anand Krishnan - Chief Executive Officer +
+
+
+""" + + cta_strip("Want to meet the team?", "Get in touch", "contact.html") + ) + + +CAREERS_REASONS = [ + ("Build for scale that matters", "Your code, your designs, your decisions - touching tens of millions of people, often within months of joining."), + ("Decades-long mentorship", "Average tenure of our principal engineers is 18 years. The people teaching you have done the work."), + ("Learn-by-doing, paid for", "$2,400 a year per employee for learning, plus full sponsorship for certifications that map to your career path."), + ("Move with the work", "Internal mobility is the default. Forty-one percent of our consultants change role or geography every three years."), + ("Flexible by default", "Hybrid where it works, remote where it makes sense, on-site where the client needs us. We hire for outcomes."), + ("Health for the long game", "Comprehensive health, family, mental-health, and retirement benefits - in every country we operate."), +] + + +def careers_main() -> str: + tiles = "\n".join( + f"""
+

{title}

+

{body}

+
""" + for (title, body) in CAREERS_REASONS + ) + return ( + page_hero( + "Careers", + "Come build something people will still be using in twenty years.", + "We hire engineers, designers, researchers, consultants, and operators across 55 countries. We're not for everyone. We're for people who'd rather ship the boring, durable thing than the flashy short-lived thing.", + ) + + """ +
+
+
+ By the numbers +

Hiring at scale, hiring with care.

+
+
+
615K+
People worldwide
+
152
Nationalities
+
39.5%
Women in workforce
+
~80K
New hires last fiscal year
+
+
+
+ +
+
+
+ Why join +

Six things you'd tell a friend after a year.

+
+
+""" + tiles + """ +
+
+
+ +
+ +
+""" + cta_strip("Don't see your role? Send us your CV anyway.", "Send a note", "contact.html")) + + +INVESTORS_HIGHLIGHTS = [ + ("FY25 revenue", "$29.1B", "+8.4% YoY in constant currency"), + ("Operating margin", "24.6%", "Sustained Tier-1 IT services band"), + ("Net new TCV signed", "$42.7B", "Across 1,200+ active enterprise relationships"), + ("Cash conversion", "112%", "Free cash flow / net income, trailing twelve months"), +] + + +def investors_main() -> str: + stats = "\n".join( + f"""
+
{value}
+
{label}
{detail}
+
""" + for (label, value, detail) in INVESTORS_HIGHLIGHTS + ) + return ( + page_hero( + "Investors", + "A durable business, built to compound.", + "Long-running client relationships, a global delivery model that's hard to replicate, and a balance sheet that funds growth from operating cash flow - not financing.", + ) + + f""" +
+
+
+ Latest results - FY25 +

Headlines from our most recent fiscal year.

+
+
+{stats} +
+
+
+ +
+ +
+ +
+
+
+
+ Talk to IR +

Direct line to the team.

+

For analyst inquiries, shareholder questions, or scheduled briefings, reach our investor relations team directly.

+ ir@trion.example + {ARROW} + +
+
+
+
+
+""" + ) + + +NEWSROOM_RELEASES = [ + ("media--ocean", "May 14, 2026", "Press release", "Trion expands European delivery footprint with new Madrid campus.", "Three thousand engineers, designers, and consultants will be based in the new center by 2028."), + ("media--neon", "Apr 28, 2026", "Press release", "Q4 FY25 results: revenue up 8.4% YoY, margin holds at 24.6%.", "Annual revenue crosses $29B; record TCV bookings driven by AI and cloud engagements."), + ("media--sunset", "Apr 02, 2026", "Announcement", "Trion joins UN Climate Action Compact.", "Commits to net-zero across owned operations by 2030, full supply chain by 2040."), + ("media--forest", "Mar 18, 2026", "Press release", "Strategic alliance with a leading hyperscaler expands managed AI services.", "Joint go-to-market across financial services, manufacturing, and healthcare."), + ("media--ember", "Feb 24, 2026", "Award", "Recognized as a Leader in the 2026 Cloud Services Magic Quadrant.", "Sixth consecutive year in the Leaders quadrant."), + ("media--steel", "Jan 30, 2026", "Press release", "Trion to acquire a specialist healthcare data engineering firm.", "Strengthens life sciences delivery in North America and Europe."), +] + + +def newsroom_main() -> str: + cards = "\n".join( + f""" """ + for (variant, date, kind, title, excerpt) in NEWSROOM_RELEASES + ) + return ( + page_hero( + "Newsroom", + "Announcements, releases, and recognitions.", + "Where we share the things we're saying publicly - results, partnerships, awards, and the occasional point of view we feel strongly enough to put a name on.", + ) + + f""" +
+
+
+
+ Recent +

Latest announcements.

+
+ Archive + {ARROW} + +
+
+{cards} +
+
+
+ +
+
+
+
+ Media inquiries +

Working on a story?

+

For journalist or analyst inquiries, briefings, or interview requests, our global communications team responds within one business day.

+ press@trion.example + {ARROW} + +
+
+
+
+
+""" + ) + + +FIND_OFFICE_LIST = [ + ("Mumbai - Global HQ", "Trion House
N. M. Marg, Apollo Bunder
Mumbai 400001, India", "+91 22 6666 7777", "+912266667777"), + ("Bengaluru", "Trion Park, Whitefield Main Road
Whitefield, Bengaluru 560066
India", "+91 80 2222 1234", "+918022221234"), + ("Delhi NCR", "Trion Tower, DLF Cyber City Phase III
Gurugram 122002
India", "+91 124 444 5555", "+911244445555"), + ("New York", "101 Park Avenue, 26th Floor
New York, NY 10178
United States", "+1 212 555 0100", "+12125550100"), + ("Toronto", "199 Bay Street, 30th Floor
Toronto, ON M5L 1G9
Canada", "+1 416 555 0150", "+14165550150"), + ("London", "17 Old Bailey
London EC4M 7EG
United Kingdom", "+44 20 7220 0800", "+442072200800"), + ("Frankfurt", "Trianon, Mainzer Landstraße 16
60325 Frankfurt am Main
Germany", "+49 69 2222 0700", "+496922220700"), + ("Amsterdam", "Vinoly Building, Claude Debussylaan 80
1082 MD Amsterdam
Netherlands", "+31 20 521 0500", "+31205210500"), + ("Singapore", "Marina Bay Financial Centre, Tower 3
12 Marina Boulevard
Singapore 018982", "+65 6222 0222", "+6562220222"), + ("Tokyo", "Marunouchi Building, 21F
2-4-1 Marunouchi, Chiyoda-ku
Tokyo 100-6321, Japan", "+81 3 5222 0900", "+81352220900"), + ("Sydney", "Tower One, International Towers
100 Barangaroo Avenue, Sydney NSW 2000
Australia", "+61 2 8224 0900", "+61282240900"), + ("São Paulo", "Avenida Paulista, 1842
Bela Vista, São Paulo - SP
Brazil 01310-200", "+55 11 3000 0400", "+551130000400"), +] + + +def find_office_main() -> str: + cards = "\n".join( + f"""
+

{name}

+
{addr}
+ {tel_display} +
""" + for (name, addr, tel_display, tel_e164) in FIND_OFFICE_LIST + ) + return ( + page_hero( + "Find an office", + "A presence in 55 countries.", + "Twelve of our largest hubs are listed below. Whether you want to drop by, ship a contract, or hire a team near you - this is where to start.", + ) + + f""" +
+
+
+{cards} +
+
+
+""" + + cta_strip("Need a region we don't list?", "Talk to us", "contact.html") + ) + + +PARTNER_LIST = [ + ("media--neon", "Hyperscale alliance", "Cloud platforms", "Co-engineering, joint go-to-market, and shared customer success across the three largest public-cloud providers."), + ("media--ocean", "Strategic alliance", "Core enterprise software", "Deep delivery practices around SAP, Oracle, Microsoft, Salesforce, ServiceNow, and Workday - implementation, migration, and managed run."), + ("media--sunset", "Technology partner", "Data & AI", "Joint capabilities with Databricks, Snowflake, Confluent, and the leading model providers - to put AI into production, not pilots."), + ("media--forest", "Innovation network", "Startups & ventures", "Trion Ventures invests in and co-builds with 80+ enterprise startups. We bring them into client engagements when their tech is ready."), + ("media--ember", "Academic partnership", "Research & talent", "Joint research centers with 30+ universities globally. Sponsored chairs, applied research, and a steady pipeline of graduate hires."), + ("media--steel", "Industry consortia", "Standards & advocacy", "Active participation in cloud, AI safety, cybersecurity, and sustainability standards bodies - shaping the rules of the road."), +] + + +def partners_main() -> str: + cards = "\n".join( + f""" """ + for (variant, tag, title, body) in PARTNER_LIST + ) + return ( + page_hero( + "Partners", + "Strong on our own. Stronger together.", + "We bring 615,000 people. Our partners bring the platforms, the products, the science, and the standards. Clients get the union of both - not the seams.", + ) + + f""" +
+
+
+{cards} +
+
+
+ +
+
+
+
"
+
+ Partnerships aren't a logo wall. They're a way of jointly being accountable for an outcome - which is harder, slower, and almost always worth it. +
+ Yuki Tanaka - Chief Technology Officer +
+
+
+""" + + cta_strip("Become a Trion partner.", "Start the conversation", "contact.html") + ) + + +def alumni_main() -> str: + return ( + page_hero( + "Alumni", + "Once Trion. Always Trion.", + "Over 850,000 people have been part of Trion across our history. The network you joined when you walked in is yours for life - whether you're still here or building somewhere new.", + ) + + f""" +
+
+
+ The network in numbers +

A community that keeps showing up for itself.

+
+
+
850K+
Alumni globally
+
140+
Local chapters in 60 countries
+
2,400+
Boomerang rehires per year
+
180+
Alumni-led events annually
+
+
+
+ +
+
+
+
+ Stay connected +

Join the alumni network.

+

Verify your alumnus status to unlock the directory, local events, mentoring, and access to internal job postings during boomerang season.

+

If you left within the last five years, your verification is automatic from your last-known work email.

+ Verify and join + {ARROW} + +
+
+
+
+
+ +
+
+
+ What you get +

Membership benefits.

+
+
+
+

Global directory

+

Search 850,000+ members by skill, geography, employer, or graduation cohort.

+
+
+

Local chapters

+

Quarterly meetups, monthly socials, and chapter-led mentorship in your city.

+
+
+

Mentoring

+

Volunteer to mentor or get matched - both sides report it as the highest-value benefit.

+
+
+

Boomerang priority

+

Internal job postings, fast-track interviews, and credited tenure for returning alumni.

+
+
+

Continuing education

+

Free access to a subset of our internal learning platform across cloud, AI, and consulting.

+
+
+

Newsletter

+

A quarterly digest of what's changing - in Trion and in the industry.

+
+
+
+
+""" + + cta_strip("Lost touch? Find your way back in.", "Reach the alumni team", "contact.html") + ) + + +def vendors_main() -> str: + return ( + page_hero( + "Vendors & suppliers", + "Working with Trion procurement.", + "We work with thousands of suppliers globally, from hyperscalers to local hospitality vendors. This is how to register, get paid, and stay compliant.", + ) + + f""" +
+ +
+ +
+
+
+ Policies & standards +

What we expect from suppliers.

+
+
+
+

Code of conduct

+

Human rights, labor practices, anti-bribery, and environmental responsibility.

+
+
+

Information security

+

Baseline controls aligned to ISO 27001 / SOC 2; elevated controls for processors of client data.

+
+
+

Sustainability

+

Scope 1, 2, and material Scope 3 reporting for suppliers above $1M annual spend.

+
+
+
+
+ +
+
+
+
+ Procurement team +

Talk to a buyer.

+

For questions on category strategy, RFP timing, payment terms, or onboarding status, reach the regional procurement team.

+ procurement@trion.example + {ARROW} + +
+
+
+
+
+""" + ) + + +INSIGHTS_ARTICLES = [ + ("media--forest", "Annual study - 1,200 CEOs", "The AI Premium: where leaders are seeing returns, and where they aren't.", "Our 12th annual CEO study tracks how AI value is concentrating - and what separates the 14% pulling away."), + ("media--ember", "Perspective", "Beyond the pilot: what it actually takes to put GenAI into production.", "A field guide drawn from 340 enterprise GenAI deployments - what worked, what stalled, what we learned."), + ("media--steel", "Point of view", "The next operating model: small teams, large autonomy, AI in the loop.", "A framework for re-organizing IT and operations around outcomes - not towers, not tickets, not handoffs."), + ("media--neon", "Research note", "The cloud bill came due. Now what?", "Why 62% of enterprises are returning to disciplined unit-economics conversations - and the playbook that's working."), + ("media--ocean", "Industry brief - Banking", "Core modernization in 24 months: a comparison of four playbooks.", "Strangler, big-bang, sidecar, greenfield - the trade-offs that determine which approach actually finishes."), + ("media--sunset", "Industry brief - Retail", "Unified commerce: the data plumbing nobody warned you about.", "Why retail platforms break in the integration layer first - and the patterns that hold up under Black Friday."), + ("media--forest", "Workforce study", "What 8,400 frontline workers told us about AI augmentation.", "The largest survey of its kind reveals a surprising consensus on where AI helps - and where it gets in the way."), + ("media--ember", "ESG & sustainability", "Scope 3 reporting: the data engineering challenge nobody is talking about.", "Most carbon disclosure tools assume data you don't have. Here's how four clients built the pipeline that actually works."), + ("media--steel", "Cybersecurity", "Zero trust is a posture, not a product. Five enterprises explain why.", "Architecture, identity, segmentation, telemetry, and culture - the five layers that actually have to move together."), +] + + +def insights_main() -> str: + cards = "\n".join( + f""" """ + for (variant, tag, title, excerpt) in INSIGHTS_ARTICLES + ) + return ( + page_hero( + "Insights", + "Research and perspectives from the front line.", + "Our researchers and practitioners publish what they're learning from the engagements we actually run. No hot takes; just patterns that hold up after the second client.", + ) + + f""" +
+
+
+
+ Featured +

Reports, briefings, and points of view.

+
+ Subscribe to our newsletter + {ARROW} + +
+
+{cards} +
+
+
+ +
+
+
+
"
+
+ We won't publish a finding until we've seen it work - or fail - at three clients. That's a slow rhythm. It's also why people keep reading us. +
+ David Okonkwo - Global Head, AI & Data +
+
+
+""" + + cta_strip("Have a question we should be researching?", "Suggest a topic", "contact.html") + ) + + +SUSTAINABILITY_STATS = [ + ("47%", "Reduction in Scope 1 + 2 emissions since 2018", ), + ("100%", "Renewable electricity across owned operations by 2027"), + ("39.5%", "Women in workforce; 38% in middle management" ), + ("$2.4K", "Per-employee annual learning budget, all geographies"), +] + + +def sustainability_main() -> str: + stats = "\n".join( + f"""
+
{n}
+
{label}
+
""" + for (n, label) in SUSTAINABILITY_STATS + ) + return ( + page_hero( + "Sustainability", + "A better tomorrow, built deliberately.", + "We've made specific, dated commitments across planet, people, and governance. They're measured, reported externally, and reviewed by the board every quarter.", + ) + + f""" +
+
+
+ Where we're focused +

Three pillars. Twenty-six commitments. One number we report against every quarter.

+
+
+
+
+
+ Planet +

Net-zero across owned operations by 2030.

+

Renewable electricity in all owned facilities by 2027; full Scope 3 reporting by 2028; net-zero across the supply chain by 2040.

+
+
+
+
+
+ People +

Equal opportunity by design.

+

45% women across global workforce by 2030; pay equity audited annually; mental health resources in all countries we operate.

+
+
+
+
+
+ Governance +

Trust as an operating discipline.

+

Independent board majority; third-party ethics audits annually; supplier code of conduct enforced through procurement.

+
+
+
+
+
+ +
+
+
+ Progress so far +

Numbers we're held to.

+
+
+{stats} +
+
+
+ +
+ +
+""" + + cta_strip("Partner with us on what's next.", "Talk to the ESG team", "contact.html") + ) + + +CASE_STUDIES = [ + ("media--ocean", "Banking - Europe", "Modernizing a 220M-account retail bank to cloud-native in 18 months.", "70% faster time-to-market on new products; 60% reduction in run cost; zero customer-facing incidents during cutover."), + ("media--neon", "Manufacturing - Global OEM", "Connected factory across 40 plants on 18 countries' production lines.", "Real-time supplier and quality data; 23% drop in unplanned downtime; $180M annualized inventory release."), + ("media--sunset", "Retail - 150-year-old chain", "From quarterly waterfalls to a release every three minutes - 1,800 stores.", "Continuous delivery across e-commerce + physical; 8x deployment frequency; 95% reduction in change-failure rate."), + ("media--ember", "Insurance - Top-10 carrier", "Claims automated end-to-end for property & casualty.", "Average resolution time 14 days → 38 hours; 91% straight-through processing; +18 NPS in 12 months."), + ("media--forest", "Healthcare - National payer", "Member experience platform serving 22M lives.", "Consolidated 36 legacy portals into one digital front door; 4.7-star app store rating; 200K calls/month diverted."), + ("media--steel", "Public sector - National", "Citizen identity and a single front door for 65M people.", "40 legacy systems retired behind it; 24M monthly active users; cost-per-transaction down 82%."), + ("media--ocean", "Energy - European utility", "Grid-edge intelligence across 9 countries.", "Outage detection sub-90s on average; renewables integration 38% faster; customer-facing outage minutes down 41%."), + ("media--neon", "Comms - Tier-1 telco", "5G core launch and BSS modernization in parallel.", "First 5G slice live in 9 months; OSS migration with zero net-new tickets to support; 2x faster new-product launches."), + ("media--sunset", "Travel - Global airline", "Loyalty platform unified across 9 sub-brands.", "Single member view across the group; +24% repeat booking; +$310M incremental revenue in year one."), +] + + +def case_studies_main() -> str: + cards = "\n".join( + f""" """ + for (variant, tag, title, excerpt) in CASE_STUDIES + ) + return ( + page_hero( + "Case studies", + "Outcomes our clients are most proud of.", + "Anonymized where it matters, named where the client wants to be named. Each story walks through the problem, the approach, the obstacles, and the measurable result twelve months later.", + ) + + f""" +
+
+
+{cards} +
+
+
+""" + + cta_strip("Want to read a case from your industry?", "Request the deeper dive", "contact.html") + ) + + +def legal_main(eyebrow: str, title: str, lead: str, sections: list) -> str: + body = "" + for s in sections: + head, paras = s + para_html = "\n".join(f'

{p}

' for p in paras) + body += f""" + +""" + return ( + page_hero(eyebrow, title, lead) + + f""" +
+
+ +
+
+""" + ) + + +def privacy_main() -> str: + return legal_main( + "Legal", + "Privacy notice.", + "This notice describes how Trion Consultancy Services collects, uses, shares, and safeguards personal information when you visit our websites, contact us, or use services we provide.", + [ + ("Information we collect", [ + "We collect information you give us directly - such as your name, work email, employer, and the contents of any message you send via a contact form.", + "We collect technical information automatically, including IP address, device and browser identifiers, and pages viewed.", + "We do not collect special-category data (health, biometric, political opinion, etc.) through this site.", + ]), + ("How we use it", [ + "To respond to your inquiries and route them to the right team.", + "To send you information you have requested (e.g., newsletters or reports).", + "To maintain and improve the website, including measuring aggregate usage patterns.", + "To meet legal, regulatory, and contractual obligations.", + ]), + ("How we share it", [ + "With members of the Trion group and with vendors who process information on our behalf under written contract.", + "When required by law, regulation, court order, or to protect the rights, property, or safety of Trion, our clients, or others.", + "We do not sell personal information.", + ]), + ("Your rights", [ + "Depending on where you live, you may have the right to access, correct, delete, restrict, or object to the processing of personal information we hold about you, and to data portability.", + "To exercise any of these rights, contact our privacy team at privacy@trion.example.", + "You may also lodge a complaint with the data protection authority in your country.", + ]), + ("Retention", [ + "We retain personal information only as long as needed to fulfil the purposes for which it was collected, including legal, accounting, or reporting requirements.", + ]), + ("Contact", [ + "Trion Consultancy Services - Data Privacy Office. Email: privacy@trion.example.", + ]), + ], + ) + + +def cookies_main() -> str: + return legal_main( + "Legal", + "Cookies.", + "We use a small set of cookies to make this site work and to understand how it is used. You can choose which categories to enable below.", + [ + ("What cookies are", [ + "Cookies are small text files placed on your device by websites you visit. They are widely used to make sites work or work more efficiently, and to provide information to site owners.", + ]), + ("Categories we use", [ + "Strictly necessary. Required for the site to function. These cannot be turned off in our system.", + "Analytics. Help us understand how visitors interact with the site by collecting and reporting information anonymously.", + "Functional. Remember choices you make (such as your country or language).", + "Marketing. Used to deliver more relevant marketing on third-party sites. Off by default.", + ]), + ("Managing cookies", [ + "Most browsers let you refuse or delete cookies. Doing so may prevent some features of this site from working as intended.", + "You can update your preferences at any time via the cookie banner.", + ]), + ("Contact", [ + "Questions about cookies? Email privacy@trion.example.", + ]), + ], + ) + + +def terms_main() -> str: + return legal_main( + "Legal", + "Terms of use.", + "These terms govern your use of this website. By using the site you agree to them; if you do not, please stop using the site.", + [ + ("Use of materials", [ + "Content on this site is provided for general information. You may view, download, and print pages for your personal, non-commercial use, provided that you do not modify the content and that you retain all copyright and other proprietary notices.", + ]), + ("Intellectual property", [ + "All trademarks, service marks, logos, and trade names used on this site are the property of Trion Consultancy Services or their respective owners. Nothing on the site grants any license or right to use any such mark.", + ]), + ("No warranty", [ + "The site is provided on an \"as-is\" and \"as-available\" basis. To the fullest extent permitted by applicable law, Trion disclaims all warranties, express or implied, including warranties of merchantability, fitness for a particular purpose, and non-infringement.", + ]), + ("Limitation of liability", [ + "To the fullest extent permitted by law, Trion will not be liable for any indirect, incidental, special, consequential, or punitive damages, including lost profits, arising out of or related to your use of the site.", + ]), + ("Governing law", [ + "These terms are governed by the laws of England and Wales, without regard to conflict-of-laws principles. Any dispute will be brought in the courts of London, England.", + ]), + ("Contact", [ + "Questions about these terms? Email legal@trion.example.", + ]), + ], + ) + + +def accessibility_main() -> str: + return legal_main( + "Legal", + "Accessibility.", + "Trion is committed to making this site usable by the widest possible audience, regardless of ability, technology, or context.", + [ + ("Standards we aim for", [ + "We target conformance with the Web Content Accessibility Guidelines (WCAG) 2.2 at Level AA.", + "Pages are built with semantic HTML, full keyboard support, visible focus states, sufficient colour contrast, and respect for the user's prefers-reduced-motion setting.", + ]), + ("Known limitations", [ + "Some embedded third-party content (charts, videos, maps) may not yet meet our internal standards. Where we are aware of issues we are working on remediations.", + ]), + ("Assistive technology compatibility", [ + "We test against current versions of NVDA, JAWS, VoiceOver (macOS, iOS), and TalkBack with the latest stable versions of Chrome, Edge, Firefox, and Safari.", + ]), + ("Feedback", [ + "If you encounter an accessibility barrier on this site, please contact accessibility@trion.example. We aim to respond within five working days.", + ]), + ], + ) + + +STUB_PAGES = { + "leadership.html": { + "title": "Leadership - Trion Consultancy Services", + "description": "Meet the operating committee of Trion Consultancy Services - twelve practitioners who lead one of the world's largest professional services firms.", + "main_html": leadership_main(), + }, + "careers.html": { + "title": "Careers - Trion Consultancy Services", + "description": "Build a long-term career at Trion - engineering, design, research, consulting, and operations roles across 55 countries.", + "main_html": careers_main(), + }, + "investors.html": { + "title": "Investors - Trion Consultancy Services", + "description": "Financial performance, reports, filings, and investor relations for Trion Consultancy Services.", + "main_html": investors_main(), + }, + "newsroom.html": { + "title": "Newsroom - Trion Consultancy Services", + "description": "Press releases, announcements, awards, and media resources from Trion Consultancy Services.", + "main_html": newsroom_main(), + }, + "find-office.html": { + "title": "Find an office - Trion Consultancy Services", + "description": "Trion office locations across India, the Americas, Europe, Asia-Pacific, and the Middle East.", + "main_html": find_office_main(), + }, + "partners.html": { + "title": "Partners - Trion Consultancy Services", + "description": "Hyperscale alliances, strategic alliances, technology partners, the Trion Ventures network, and academic partnerships.", + "main_html": partners_main(), + }, + "alumni.html": { + "title": "Alumni - Trion Consultancy Services", + "description": "Stay connected through the Trion alumni network - 850,000+ members, 140+ local chapters, mentoring, events, and boomerang priority.", + "main_html": alumni_main(), + }, + "vendors.html": { + "title": "Vendors & suppliers - Trion Consultancy Services", + "description": "How to register, onboard, and work with Trion procurement as a supplier or vendor.", + "main_html": vendors_main(), + }, + "insights.html": { + "title": "Insights - Trion Consultancy Services", + "description": "Research, perspectives, and points of view from Trion practitioners across AI, cloud, cybersecurity, industry, and the future of work.", + "main_html": insights_main(), + }, + "sustainability.html": { + "title": "Sustainability - Trion Consultancy Services", + "description": "Trion's commitments and progress on climate, people, and governance - reported quarterly and audited externally.", + "main_html": sustainability_main(), + }, + "case-studies.html": { + "title": "Case studies - Trion Consultancy Services", + "description": "Outcomes our clients are most proud of - across banking, manufacturing, retail, insurance, healthcare, public sector, energy, communications, and travel.", + "main_html": case_studies_main(), + }, + "privacy.html": { + "title": "Privacy notice - Trion Consultancy Services", + "description": "How Trion collects, uses, shares, and safeguards personal information.", + "main_html": privacy_main(), + }, + "cookies.html": { + "title": "Cookies - Trion Consultancy Services", + "description": "Information about the cookies this website uses and how to manage your preferences.", + "main_html": cookies_main(), + }, + "terms.html": { + "title": "Terms of use - Trion Consultancy Services", + "description": "Terms governing your use of the Trion Consultancy Services website.", + "main_html": terms_main(), + }, + "accessibility.html": { + "title": "Accessibility - Trion Consultancy Services", + "description": "Trion's commitment to accessibility, the standards we target, known limitations, and how to give us feedback.", + "main_html": accessibility_main(), + }, +} + + +# -- Re-emit existing pages with updated chrome ----------------------------- + +EXISTING_PAGES = { + "index.html": ("Trion Consultancy Services - Building on belief", + "Trion Consultancy Services partners with the world's largest enterprises to design and run their digital transformation - across cloud, AI, cybersecurity, and operations."), + "about.html": ("About - Trion Consultancy Services", + "For 56 years we have helped the world's largest organizations transform. Get to know the people, the purpose, and the philosophy behind Trion Consultancy Services."), + "services.html": ("What we do - Trion Consultancy Services", + "From cloud and AI to cybersecurity, engineering, and managed operations - explore the full set of services Trion delivers to the world's largest enterprises."), + "industries.html":("Industries - Trion Consultancy Services", + "Trion brings deep industry knowledge to banking, insurance, manufacturing, retail, healthcare, public services, communications, and energy."), + "contact.html": ("Contact - Trion Consultancy Services", + "Start a conversation with Trion Consultancy Services. Find an office near you, or send us a note and we will respond within two business days."), +} + +MAIN_RE = re.compile(r"]*>(.*?)
", re.DOTALL) + + +def emit_page(path: Path, title: str, description: str, main_inner: str) -> None: + main_inner = main_inner.strip("\n") + body = f'
\n{main_inner}\n
\n' + full = CHROME_TOP.format(title=title, description=description) + body + CHROME_BOTTOM + path.write_text(full, encoding="utf-8") + + +def main() -> int: + written = [] + + # Regenerate existing pages, preserving their
bodies. + for filename, (title, description) in EXISTING_PAGES.items(): + path = SITE_DIR / filename + if not path.exists(): + raise SystemExit(f"missing source page: {path}") + old = path.read_text(encoding="utf-8") + m = MAIN_RE.search(old) + if not m: + raise SystemExit(f"no
block in {path}") + main_inner = m.group(1) + emit_page(path, title, description, main_inner) + written.append(filename) + + # Generate new stub pages. + for filename, cfg in STUB_PAGES.items(): + path = SITE_DIR / filename + emit_page(path, cfg["title"], cfg["description"], cfg["main_html"]) + written.append(filename) + + print(f"Wrote {len(written)} pages:") + for name in written: + print(f" - {name}") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/site/about.html b/site/about.html new file mode 100644 index 0000000..cdaaefa --- /dev/null +++ b/site/about.html @@ -0,0 +1,375 @@ + + + + + + About - Trion Consultancy Services + + + + + + + + + + + + + + + + + + +
+ +
+
+ About us +

Fifty-six years of building on belief.

+

What started in 1968 as a small group inside an Indian conglomerate is now one of the largest professional services firms in the world. The mission hasn't changed: help organizations build a better future, by doing the hard, durable work of transforming how they actually run.

+
+
+ + +
+
+
+
+ Who we are +

A partner that's still here in year twenty-five.

+

We aren't a firm that arrives with a deck and leaves with a check. We embed. We train. We run. We hand back. The average tenure of our top 100 client relationships is over 17 years - not because contracts are sticky, but because outcomes are.

+

That's what "building on belief" means: a belief that the engine of progress is patient, long-running partnership - the kind that survives strategy resets, leadership turnover, and the next wave of technology.

+ Talk to us + + +
+
+
+
+
+ + +
+
+
+ By the numbers +

Global scale, local depth.

+
+ +
+
+
615K+
+
Employees in 55 countries
+
+
+
152
+
Nationalities represented
+
+
+
$29B
+
Annual revenue, FY25
+
+
+
39.5%
+
Women in the workforce
+
+
+
+
+ + +
+
+
+
+ Leadership +

People who've spent careers building, not selling.

+
+ Full board + + +
+ +
+
+
AK
+
Anand Krishnan
+
Chief Executive Officer & Managing Director
+
+
+
PI
+
Priya Iyer
+
Chief Operating Officer
+
+
+
MH
+
Marcus Hale
+
President, Banking & Financial Services
+
+
+
YT
+
Yuki Tanaka
+
Chief Technology Officer
+
+
+
SR
+
Sofia Reyes
+
President, Europe
+
+
+
RM
+
Rohan Mehta
+
Chief Financial Officer
+
+
+
AP
+
Aisha Patel
+
Chief Human Resources Officer
+
+
+
DO
+
David Okonkwo
+
Global Head, AI & Data
+
+
+
+
+ + +
+
+
+ What we believe +

Six commitments that show up in every engagement.

+
+ +
+
+

Long term, not next quarter

+

We measure success in decades. So do our most successful clients.

+
+
+

Outcomes over output

+

We're paid to make a difference, not to deliver a deliverable.

+
+
+

Engineers, not consultants

+

Three in four of our people write code, run systems, or design products.

+
+
+

One global team

+

Talent flows to the work, regardless of borders.

+
+
+

Hand back stronger

+

Our job ends when yours can keep going without us.

+
+
+

Do less, finish more

+

Ruthless prioritization beats heroic effort, every time.

+
+
+
+
+ +
+
+

56 years in. Just getting started.

+ Partner with us + + +
+
+ + +
+ + + + + + diff --git a/site/accessibility.html b/site/accessibility.html new file mode 100644 index 0000000..bd27d29 --- /dev/null +++ b/site/accessibility.html @@ -0,0 +1,251 @@ + + + + + + Accessibility - Trion Consultancy Services + + + + + + + + + + + + + + + + + + +
+
+
+ Legal +

Accessibility.

+

Trion is committed to making this site usable by the widest possible audience, regardless of ability, technology, or context.

+
+
+ +
+
+ +
+
+
+ + + + + + diff --git a/site/alumni.html b/site/alumni.html new file mode 100644 index 0000000..b9067ca --- /dev/null +++ b/site/alumni.html @@ -0,0 +1,297 @@ + + + + + + Alumni - Trion Consultancy Services + + + + + + + + + + + + + + + + + + +
+
+
+ Alumni +

Once Trion. Always Trion.

+

Over 850,000 people have been part of Trion across our history. The network you joined when you walked in is yours for life - whether you're still here or building somewhere new.

+
+
+ +
+
+
+ The network in numbers +

A community that keeps showing up for itself.

+
+
+
850K+
Alumni globally
+
140+
Local chapters in 60 countries
+
2,400+
Boomerang rehires per year
+
180+
Alumni-led events annually
+
+
+
+ +
+
+
+
+ Stay connected +

Join the alumni network.

+

Verify your alumnus status to unlock the directory, local events, mentoring, and access to internal job postings during boomerang season.

+

If you left within the last five years, your verification is automatic from your last-known work email.

+ Verify and join + + +
+
+
+
+
+ +
+
+
+ What you get +

Membership benefits.

+
+
+
+

Global directory

+

Search 850,000+ members by skill, geography, employer, or graduation cohort.

+
+
+

Local chapters

+

Quarterly meetups, monthly socials, and chapter-led mentorship in your city.

+
+
+

Mentoring

+

Volunteer to mentor or get matched - both sides report it as the highest-value benefit.

+
+
+

Boomerang priority

+

Internal job postings, fast-track interviews, and credited tenure for returning alumni.

+
+
+

Continuing education

+

Free access to a subset of our internal learning platform across cloud, AI, and consulting.

+
+
+

Newsletter

+

A quarterly digest of what's changing - in Trion and in the industry.

+
+
+
+
+ +
+
+

Lost touch? Find your way back in.

+ Reach the alumni team + + +
+
+
+ + + + + + diff --git a/site/assets/logo/wordmark.svg b/site/assets/logo/wordmark.svg new file mode 100644 index 0000000..af6015a --- /dev/null +++ b/site/assets/logo/wordmark.svg @@ -0,0 +1,8 @@ + + + + + + + Consultancy + diff --git a/site/careers.html b/site/careers.html new file mode 100644 index 0000000..ff2c175 --- /dev/null +++ b/site/careers.html @@ -0,0 +1,320 @@ + + + + + + Careers - Trion Consultancy Services + + + + + + + + + + + + + + + + + + +
+
+
+ Careers +

Come build something people will still be using in twenty years.

+

We hire engineers, designers, researchers, consultants, and operators across 55 countries. We're not for everyone. We're for people who'd rather ship the boring, durable thing than the flashy short-lived thing.

+
+
+ +
+
+
+ By the numbers +

Hiring at scale, hiring with care.

+
+
+
615K+
People worldwide
+
152
Nationalities
+
39.5%
Women in workforce
+
~80K
New hires last fiscal year
+
+
+
+ +
+
+
+ Why join +

Six things you'd tell a friend after a year.

+
+
+
+

Build for scale that matters

+

Your code, your designs, your decisions - touching tens of millions of people, often within months of joining.

+
+
+

Decades-long mentorship

+

Average tenure of our principal engineers is 18 years. The people teaching you have done the work.

+
+
+

Learn-by-doing, paid for

+

$2,400 a year per employee for learning, plus full sponsorship for certifications that map to your career path.

+
+
+

Move with the work

+

Internal mobility is the default. Forty-one percent of our consultants change role or geography every three years.

+
+
+

Flexible by default

+

Hybrid where it works, remote where it makes sense, on-site where the client needs us. We hire for outcomes.

+
+
+

Health for the long game

+

Comprehensive health, family, mental-health, and retirement benefits - in every country we operate.

+
+
+
+
+ +
+ +
+ +
+
+

Don't see your role? Send us your CV anyway.

+ Send a note + + +
+
+
+ + + + + + diff --git a/site/case-studies.html b/site/case-studies.html new file mode 100644 index 0000000..b9d1581 --- /dev/null +++ b/site/case-studies.html @@ -0,0 +1,354 @@ + + + + + + Case studies - Trion Consultancy Services + + + + + + + + + + + + + + + + + + +
+
+
+ Case studies +

Outcomes our clients are most proud of.

+

Anonymized where it matters, named where the client wants to be named. Each story walks through the problem, the approach, the obstacles, and the measurable result twelve months later.

+
+
+ +
+
+
+
+
+
+ Banking - Europe +

Modernizing a 220M-account retail bank to cloud-native in 18 months.

+

70% faster time-to-market on new products; 60% reduction in run cost; zero customer-facing incidents during cutover.

+
+ Read the case + + +
+
+
+
+
+
+ Manufacturing - Global OEM +

Connected factory across 40 plants on 18 countries' production lines.

+

Real-time supplier and quality data; 23% drop in unplanned downtime; $180M annualized inventory release.

+
+ Read the case + + +
+
+
+
+
+
+ Retail - 150-year-old chain +

From quarterly waterfalls to a release every three minutes - 1,800 stores.

+

Continuous delivery across e-commerce + physical; 8x deployment frequency; 95% reduction in change-failure rate.

+
+ Read the case + + +
+
+
+
+
+
+ Insurance - Top-10 carrier +

Claims automated end-to-end for property & casualty.

+

Average resolution time 14 days → 38 hours; 91% straight-through processing; +18 NPS in 12 months.

+
+ Read the case + + +
+
+
+
+
+
+ Healthcare - National payer +

Member experience platform serving 22M lives.

+

Consolidated 36 legacy portals into one digital front door; 4.7-star app store rating; 200K calls/month diverted.

+
+ Read the case + + +
+
+
+
+
+
+ Public sector - National +

Citizen identity and a single front door for 65M people.

+

40 legacy systems retired behind it; 24M monthly active users; cost-per-transaction down 82%.

+
+ Read the case + + +
+
+
+
+
+
+ Energy - European utility +

Grid-edge intelligence across 9 countries.

+

Outage detection sub-90s on average; renewables integration 38% faster; customer-facing outage minutes down 41%.

+
+ Read the case + + +
+
+
+
+
+
+ Comms - Tier-1 telco +

5G core launch and BSS modernization in parallel.

+

First 5G slice live in 9 months; OSS migration with zero net-new tickets to support; 2x faster new-product launches.

+
+ Read the case + + +
+
+
+
+
+
+ Travel - Global airline +

Loyalty platform unified across 9 sub-brands.

+

Single member view across the group; +24% repeat booking; +$310M incremental revenue in year one.

+
+ Read the case + + +
+
+
+
+
+
+ +
+
+

Want to read a case from your industry?

+ Request the deeper dive + + +
+
+
+ + + + + + diff --git a/site/contact.html b/site/contact.html new file mode 100644 index 0000000..0786b50 --- /dev/null +++ b/site/contact.html @@ -0,0 +1,369 @@ + + + + + + Contact - Trion Consultancy Services + + + + + + + + + + + + + + + + + + +
+
+
+ Contact +

Let's get to work.

+

Tell us where you're stuck, where you're going, or just who we should know. The right person will respond within two business days - no funnels, no demo bots.

+
+
+ + +
+
+
+
+ Send us a note +

A few details to help us route it to the right team.

+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ +
+
+
+ +
+ Or skip the form +

Talk to a human, directly.

+

If you already know which team you need, here is how to reach them.

+ +
+
+ General inquiries + hello@trion.example +
+
+ Media & analysts + press@trion.example +
+
+ Investor relations + ir@trion.example +
+
+ Careers + careers@trion.example +
+
+
+
+
+
+ + +
+
+
+ Offices +

A presence in 55 countries. Here are the largest.

+
+ +
+
+

Mumbai - Global HQ

+
+ Trion House
+ N. M. Marg, Apollo Bunder
+ Mumbai 400001, India +
+ +91 22 6666 7777 +
+
+

New York

+
+ 101 Park Avenue, 26th Floor
+ New York, NY 10178
+ United States +
+ +1 212 555 0100 +
+
+

London

+
+ 17 Old Bailey
+ London EC4M 7EG
+ United Kingdom +
+ +44 20 7220 0800 +
+
+

Singapore

+
+ Marina Bay Financial Centre, Tower 3
+ 12 Marina Boulevard
+ Singapore 018982 +
+ +65 6222 0222 +
+
+

São Paulo

+
+ Avenida Paulista, 1842
+ Bela Vista, São Paulo - SP
+ Brazil 01310-200 +
+ +55 11 3000 0400 +
+
+

Tokyo

+
+ Marunouchi Building, 21F
+ 2-4-1 Marunouchi, Chiyoda-ku
+ Tokyo 100-6321, Japan +
+ +81 3 5222 0900 +
+
+
+
+ + +
+ + + + + + diff --git a/site/cookies.html b/site/cookies.html new file mode 100644 index 0000000..eac321b --- /dev/null +++ b/site/cookies.html @@ -0,0 +1,254 @@ + + + + + + Cookies - Trion Consultancy Services + + + + + + + + + + + + + + + + + + +
+
+
+ Legal +

Cookies.

+

We use a small set of cookies to make this site work and to understand how it is used. You can choose which categories to enable below.

+
+
+ +
+
+ +
+
+
+ + + + + + diff --git a/site/css/base.css b/site/css/base.css new file mode 100644 index 0000000..b9a67ad --- /dev/null +++ b/site/css/base.css @@ -0,0 +1,301 @@ +/* ============================================================ + base.css - reset, tokens, typography, layout primitives + ============================================================ */ + +*, +*::before, +*::after { + box-sizing: border-box; +} + +html { + -webkit-text-size-adjust: 100%; + scroll-behavior: smooth; +} + +body { + margin: 0; + font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif; + font-size: 1rem; + line-height: 1.6; + color: var(--text-strong); + background: var(--surface); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +img, +svg, +video { + display: block; + max-width: 100%; + height: auto; +} + +button { + font: inherit; + cursor: pointer; + border: 0; + background: none; + color: inherit; +} + +a { + color: inherit; + text-decoration: none; +} + +h1, h2, h3, h4, h5, h6, p { + margin: 0; +} + +ul, ol { + margin: 0; + padding: 0; + list-style: none; +} + +input, +textarea, +select { + font: inherit; + color: inherit; +} + +:root { + /* Brand */ + --brand-primary: #5F249F; + --brand-deep: #1A0033; + --brand-accent: #8A4FFF; + + /* Text */ + --text-strong: #0E0E14; + --text-muted: #4A4A55; + --text-on-dark: #F5F4F8; + --text-on-dark-muted: #B5B0C5; + + /* Surfaces */ + --surface: #FFFFFF; + --surface-muted: #F5F4F8; + --surface-dark: #1A0033; + + /* Lines */ + --hairline: #E4E2EC; + --hairline-dark: rgba(255, 255, 255, 0.12); + + /* Spacing scale (4px base) */ + --s-1: 4px; + --s-2: 8px; + --s-3: 12px; + --s-4: 16px; + --s-5: 20px; + --s-6: 24px; + --s-8: 32px; + --s-10: 40px; + --s-12: 48px; + --s-14: 56px; + --s-16: 64px; + --s-20: 80px; + --s-24: 96px; + --s-32: 128px; + + /* Layout */ + --container-max: 1280px; + --container-pad: clamp(20px, 4vw, 48px); + + /* Motion */ + --ease: cubic-bezier(0.4, 0, 0.2, 1); + --t-fast: 150ms; + --t-med: 250ms; + --t-slow: 400ms; + + /* Radii */ + --r-sm: 4px; + --r-md: 8px; + --r-lg: 16px; + + /* Z */ + --z-header: 100; + --z-overlay: 200; +} + +/* Typography ------------------------------------------------- */ + +.display-1 { + font-size: clamp(2.5rem, 5vw, 4.5rem); + font-weight: 800; + line-height: 1.05; + letter-spacing: -0.02em; +} + +h1, .h1 { + font-size: clamp(2.25rem, 4vw, 3.5rem); + font-weight: 800; + line-height: 1.08; + letter-spacing: -0.02em; +} + +h2, .h2 { + font-size: clamp(1.875rem, 3vw, 3rem); + font-weight: 700; + line-height: 1.12; + letter-spacing: -0.015em; +} + +h3, .h3 { + font-size: 1.5rem; + font-weight: 700; + line-height: 1.25; + letter-spacing: -0.01em; +} + +h4, .h4 { + font-size: 1.125rem; + font-weight: 600; + line-height: 1.35; +} + +.eyebrow { + font-size: 0.8125rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.08em; + color: var(--brand-primary); +} + +.lead { + font-size: 1.25rem; + line-height: 1.5; + color: var(--text-muted); +} + +.muted { + color: var(--text-muted); +} + +/* Layout primitives ----------------------------------------- */ + +.container { + width: 100%; + max-width: var(--container-max); + margin-inline: auto; + padding-inline: var(--container-pad); +} + +.section { + padding-block: clamp(64px, 8vw, 112px); +} + +.section--tight { + padding-block: clamp(48px, 5vw, 72px); +} + +.section--dark { + background: var(--surface-dark); + color: var(--text-on-dark); +} + +.section--muted { + background: var(--surface-muted); +} + +.section-head { + display: flex; + align-items: flex-end; + justify-content: space-between; + gap: var(--s-8); + margin-bottom: var(--s-12); + flex-wrap: wrap; +} + +.section-head__title { + max-width: 720px; +} + +.section-head__title .eyebrow { + display: block; + margin-bottom: var(--s-3); +} + +.grid { + display: grid; + gap: var(--s-6); +} + +.grid--2 { grid-template-columns: 1fr; } +.grid--3 { grid-template-columns: 1fr; } +.grid--4 { grid-template-columns: 1fr; } + +@media (min-width: 640px) { + .grid--2 { grid-template-columns: repeat(2, 1fr); } + .grid--3 { grid-template-columns: repeat(2, 1fr); } + .grid--4 { grid-template-columns: repeat(2, 1fr); } +} + +@media (min-width: 1024px) { + .grid--3 { grid-template-columns: repeat(3, 1fr); } + .grid--4 { grid-template-columns: repeat(4, 1fr); } +} + +/* Reveal-on-scroll ------------------------------------------ + Only hidden when JS is available - prevents a permanently-blank + page for crawlers, no-JS users, or capture tools that don't trip + IntersectionObserver. Each page sets `.js` on inline. */ + +.js .reveal { + opacity: 0; + transform: translateY(16px); + transition: opacity var(--t-slow) var(--ease), transform var(--t-slow) var(--ease); +} + +.js .reveal.is-visible { + opacity: 1; + transform: none; +} + +@media (prefers-reduced-motion: reduce) { + *, + *::before, + *::after { + transition-duration: 0.01ms !important; + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + scroll-behavior: auto !important; + } + .js .reveal { + opacity: 1; + transform: none; + } +} + +/* Visually hidden ------------------------------------------- */ + +.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; +} + +/* Skip link ------------------------------------------------- */ + +.skip-link { + position: absolute; + top: -100px; + left: 16px; + background: var(--brand-deep); + color: #fff; + padding: 12px 16px; + z-index: 1000; + border-radius: var(--r-sm); + transition: top var(--t-fast) var(--ease); +} + +.skip-link:focus { + top: 16px; +} diff --git a/site/css/components.css b/site/css/components.css new file mode 100644 index 0000000..b5d7f29 --- /dev/null +++ b/site/css/components.css @@ -0,0 +1,1386 @@ +/* ============================================================ + components.css - header, footer, hero, cards, buttons, forms + ============================================================ */ + +/* Buttons --------------------------------------------------- */ + +.btn { + display: inline-flex; + align-items: center; + gap: var(--s-2); + padding: 14px 28px; + border-radius: 999px; + font-weight: 600; + font-size: 0.9375rem; + letter-spacing: 0.005em; + transition: background var(--t-med) var(--ease), + color var(--t-med) var(--ease), + border-color var(--t-med) var(--ease), + transform var(--t-fast) var(--ease); + border: 1.5px solid transparent; + white-space: nowrap; +} + +.btn:active { + transform: scale(0.98); +} + +.btn--primary { + background: var(--brand-primary); + color: #fff; +} +.btn--primary:hover, +.btn--primary:focus-visible { + background: var(--brand-accent); +} + +.btn--ghost { + background: transparent; + color: var(--text-strong); + border-color: var(--text-strong); +} +.btn--ghost:hover, +.btn--ghost:focus-visible { + background: var(--text-strong); + color: #fff; +} + +.btn--ghost-light { + background: transparent; + color: #fff; + border-color: rgba(255,255,255,0.6); +} +.btn--ghost-light:hover, +.btn--ghost-light:focus-visible { + background: #fff; + color: var(--brand-deep); + border-color: #fff; +} + +.btn .arrow { + transition: transform var(--t-med) var(--ease); +} +.btn:hover .arrow, +.btn:focus-visible .arrow { + transform: translateX(4px); +} + +/* Inline arrow link */ +.arrow-link { + display: inline-flex; + align-items: center; + gap: var(--s-2); + color: var(--brand-primary); + font-weight: 600; + font-size: 0.9375rem; + transition: color var(--t-fast) var(--ease); +} +.arrow-link .arrow { + transition: transform var(--t-med) var(--ease); +} +.arrow-link:hover, +.arrow-link:focus-visible { + color: var(--brand-accent); +} +.arrow-link:hover .arrow, +.arrow-link:focus-visible .arrow { + transform: translateX(4px); +} + +.arrow-link--light { + color: #fff; +} +.arrow-link--light:hover, +.arrow-link--light:focus-visible { + color: var(--brand-accent); +} + +/* Utility bar ----------------------------------------------- */ + +.utility-bar { + background: var(--brand-deep); + color: var(--text-on-dark-muted); + font-size: 0.8125rem; +} + +.utility-bar__inner { + display: flex; + align-items: center; + justify-content: flex-end; + gap: var(--s-6); + height: 36px; +} + +.utility-bar a { + display: inline-flex; + align-items: center; + gap: 6px; + transition: color var(--t-fast) var(--ease); +} +.utility-bar a:hover, +.utility-bar a:focus-visible { + color: #fff; +} + +@media (max-width: 767px) { + .utility-bar { + display: none; + } +} + +/* Header ---------------------------------------------------- */ + +.site-header { + position: sticky; + top: 0; + z-index: var(--z-header); + background: rgba(255,255,255,0.96); + backdrop-filter: saturate(180%) blur(12px); + -webkit-backdrop-filter: saturate(180%) blur(12px); + border-bottom: 1px solid transparent; + transition: border-color var(--t-med) var(--ease), + background var(--t-med) var(--ease); +} + +.site-header.is-scrolled { + border-bottom-color: var(--hairline); +} + +.site-header__inner { + display: flex; + align-items: center; + gap: var(--s-8); + height: 72px; +} + +.site-header__logo { + display: inline-flex; + align-items: center; + flex-shrink: 0; +} + +.site-header__logo svg { + height: 28px; + width: auto; +} + +.primary-nav { + display: none; + flex: 1; +} + +@media (min-width: 1024px) { + .primary-nav { + display: flex; + align-items: center; + gap: var(--s-6); + } +} + +.primary-nav__list { + display: flex; + align-items: center; + gap: var(--s-2); +} + +.primary-nav__item { + position: relative; +} + +.primary-nav__link { + display: inline-flex; + align-items: center; + gap: 6px; + padding: 12px 14px; + font-weight: 500; + font-size: 0.9375rem; + color: var(--text-strong); + border-radius: var(--r-sm); + transition: color var(--t-fast) var(--ease), + background var(--t-fast) var(--ease); +} + +.primary-nav__link:hover, +.primary-nav__link:focus-visible, +.primary-nav__item.is-open .primary-nav__link { + color: var(--brand-primary); +} + +.primary-nav__caret { + width: 10px; + height: 10px; + transition: transform var(--t-fast) var(--ease); +} + +.primary-nav__item.is-open .primary-nav__caret { + transform: rotate(180deg); +} + +.header-cta { + display: none; + margin-left: auto; + align-items: center; + gap: var(--s-3); +} + +@media (min-width: 1024px) { + .header-cta { + display: flex; + } +} + +.header-icon-btn { + width: 40px; + height: 40px; + display: inline-flex; + align-items: center; + justify-content: center; + border-radius: 999px; + color: var(--text-strong); + transition: background var(--t-fast) var(--ease); +} +.header-icon-btn:hover, +.header-icon-btn:focus-visible { + background: var(--surface-muted); +} +.header-icon-btn svg { + width: 20px; + height: 20px; +} + +/* Mega menu ------------------------------------------------- */ + +.mega { + position: absolute; + top: calc(100% + 8px); + left: 50%; + transform: translateX(-50%) translateY(8px); + width: min(960px, 92vw); + background: #fff; + border: 1px solid var(--hairline); + border-radius: var(--r-lg); + box-shadow: 0 20px 60px rgba(26, 0, 51, 0.12); + padding: var(--s-10); + opacity: 0; + pointer-events: none; + transition: opacity var(--t-med) var(--ease), + transform var(--t-med) var(--ease); +} + +.primary-nav__item.is-open .mega { + opacity: 1; + pointer-events: auto; + transform: translateX(-50%) translateY(0); +} + +.mega__grid { + display: grid; + grid-template-columns: 1fr 1fr 1fr; + gap: var(--s-10); +} + +.mega__col h4 { + font-size: 0.8125rem; + font-weight: 600; + color: var(--text-muted); + text-transform: uppercase; + letter-spacing: 0.08em; + margin-bottom: var(--s-4); +} + +.mega__col ul { + display: flex; + flex-direction: column; + gap: var(--s-3); +} + +.mega__col a { + font-size: 0.9375rem; + color: var(--text-strong); + font-weight: 500; + transition: color var(--t-fast) var(--ease); +} + +.mega__col a:hover, +.mega__col a:focus-visible { + color: var(--brand-primary); +} + +/* Mobile menu ---------------------------------------------- */ + +.mobile-toggle { + display: inline-flex; + margin-left: auto; + width: 44px; + height: 44px; + align-items: center; + justify-content: center; + border-radius: var(--r-sm); +} + +@media (min-width: 1024px) { + .mobile-toggle { + display: none; + } +} + +.mobile-toggle__bars { + position: relative; + width: 22px; + height: 16px; +} +.mobile-toggle__bars span { + position: absolute; + left: 0; + width: 100%; + height: 2px; + background: var(--text-strong); + transition: transform var(--t-med) var(--ease), + opacity var(--t-med) var(--ease), + top var(--t-med) var(--ease); +} +.mobile-toggle__bars span:nth-child(1) { top: 0; } +.mobile-toggle__bars span:nth-child(2) { top: 7px; } +.mobile-toggle__bars span:nth-child(3) { top: 14px; } + +.mobile-toggle[aria-expanded="true"] .mobile-toggle__bars span:nth-child(1) { + top: 7px; + transform: rotate(45deg); +} +.mobile-toggle[aria-expanded="true"] .mobile-toggle__bars span:nth-child(2) { + opacity: 0; +} +.mobile-toggle[aria-expanded="true"] .mobile-toggle__bars span:nth-child(3) { + top: 7px; + transform: rotate(-45deg); +} + +.mobile-menu { + position: fixed; + inset: 72px 0 0 0; + background: #fff; + z-index: 90; + padding: var(--s-8) var(--container-pad) var(--s-12); + overflow-y: auto; + transform: translateY(-8px); + opacity: 0; + pointer-events: none; + transition: opacity var(--t-med) var(--ease), + transform var(--t-med) var(--ease); +} + +.mobile-menu.is-open { + opacity: 1; + pointer-events: auto; + transform: none; +} + +.mobile-menu ul { + display: flex; + flex-direction: column; + gap: var(--s-1); +} + +.mobile-menu a { + display: block; + padding: var(--s-4) 0; + font-size: 1.25rem; + font-weight: 600; + color: var(--text-strong); + border-bottom: 1px solid var(--hairline); +} + +.mobile-menu .btn { + margin-top: var(--s-8); + width: 100%; + justify-content: center; +} + +@media (min-width: 1024px) { + .mobile-menu { + display: none !important; + } +} + +/* Hero ------------------------------------------------------ */ + +.hero { + position: relative; + min-height: clamp(520px, 75vh, 760px); + display: flex; + align-items: flex-end; + overflow: hidden; + background: linear-gradient(135deg, #1A0033 0%, #4B1A8A 45%, #5F249F 100%); + color: #fff; +} + +.hero::before { + content: ""; + position: absolute; + inset: 0; + background: + radial-gradient(ellipse at 80% 20%, rgba(138, 79, 255, 0.4), transparent 50%), + radial-gradient(ellipse at 10% 90%, rgba(95, 36, 159, 0.5), transparent 60%); + pointer-events: none; +} + +.hero::after { + content: ""; + position: absolute; + inset: 0; + background-image: + linear-gradient(rgba(255,255,255,0.04) 1px, transparent 1px), + linear-gradient(90deg, rgba(255,255,255,0.04) 1px, transparent 1px); + background-size: 64px 64px; + pointer-events: none; + opacity: 0.6; +} + +.hero__inner { + position: relative; + z-index: 1; + padding-block: clamp(80px, 12vw, 144px); + max-width: 880px; +} + +.hero__eyebrow { + display: inline-block; + font-size: 0.8125rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.12em; + color: rgba(255,255,255,0.85); + margin-bottom: var(--s-6); + padding-bottom: var(--s-3); + border-bottom: 1px solid rgba(255,255,255,0.3); +} + +.hero__title { + font-size: clamp(2.5rem, 5.5vw, 5rem); + font-weight: 800; + line-height: 1.04; + letter-spacing: -0.025em; + margin-bottom: var(--s-8); +} + +.hero__subtitle { + font-size: clamp(1.0625rem, 1.5vw, 1.25rem); + line-height: 1.5; + color: rgba(255,255,255,0.85); + max-width: 640px; + margin-bottom: var(--s-10); +} + +.hero__cta { + display: flex; + flex-wrap: wrap; + gap: var(--s-3); +} + +/* Page hero (smaller) -------------------------------------- */ + +.page-hero { + background: linear-gradient(135deg, #1A0033 0%, #3B0F72 60%, #5F249F 100%); + color: #fff; + padding-block: clamp(80px, 10vw, 144px); + position: relative; + overflow: hidden; +} + +.page-hero::before { + content: ""; + position: absolute; + inset: 0; + background: radial-gradient(ellipse at 90% 30%, rgba(138, 79, 255, 0.35), transparent 60%); +} + +.page-hero__inner { + position: relative; + z-index: 1; + max-width: 880px; +} + +.page-hero .eyebrow { + color: rgba(255,255,255,0.85); + display: inline-block; + margin-bottom: var(--s-5); + padding-bottom: var(--s-2); + border-bottom: 1px solid rgba(255,255,255,0.3); +} + +.page-hero h1 { + font-size: clamp(2.25rem, 4.5vw, 4rem); + font-weight: 800; + line-height: 1.05; + letter-spacing: -0.02em; + margin-bottom: var(--s-6); +} + +.page-hero p { + font-size: 1.125rem; + line-height: 1.5; + color: rgba(255,255,255,0.85); + max-width: 720px; +} + +/* Story card (featured) ------------------------------------ */ + +.story-card { + display: flex; + flex-direction: column; + background: var(--surface); + border: 1px solid var(--hairline); + border-radius: var(--r-lg); + overflow: hidden; + transition: transform var(--t-med) var(--ease), + box-shadow var(--t-med) var(--ease), + border-color var(--t-med) var(--ease); +} + +.story-card:hover, +.story-card:focus-within { + transform: translateY(-4px); + border-color: transparent; + box-shadow: 0 20px 40px rgba(26, 0, 51, 0.12); +} + +.story-card__media { + aspect-ratio: 16 / 10; + background: var(--surface-muted); + position: relative; + overflow: hidden; +} + +.story-card__media::after { + content: ""; + position: absolute; + inset: 0; + background: linear-gradient(180deg, transparent 50%, rgba(26, 0, 51, 0.4) 100%); +} + +.story-card__body { + padding: var(--s-8); + display: flex; + flex-direction: column; + gap: var(--s-4); + flex: 1; +} + +.story-card__tag { + font-size: 0.75rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.08em; + color: var(--brand-primary); +} + +.story-card__title { + font-size: 1.375rem; + font-weight: 700; + line-height: 1.25; + color: var(--text-strong); + letter-spacing: -0.01em; +} + +.story-card__excerpt { + color: var(--text-muted); + font-size: 0.9375rem; + line-height: 1.55; + flex: 1; +} + +.story-card__footer { + margin-top: var(--s-2); +} + +/* Decorative media variants -- use as background "images" */ +.media--neon { + background: + radial-gradient(ellipse at 30% 30%, #8A4FFF 0%, transparent 50%), + radial-gradient(ellipse at 70% 60%, #FF4FBE 0%, transparent 55%), + linear-gradient(135deg, #1A0033, #4B1A8A); +} +.media--ocean { + background: + radial-gradient(ellipse at 20% 40%, #4FB8FF 0%, transparent 55%), + radial-gradient(ellipse at 80% 60%, #5F249F 0%, transparent 50%), + linear-gradient(135deg, #0A1F4D, #1A0033); +} +.media--sunset { + background: + radial-gradient(ellipse at 30% 70%, #FF8A4F 0%, transparent 55%), + radial-gradient(ellipse at 70% 30%, #FF4F8A 0%, transparent 50%), + linear-gradient(135deg, #2A0B33, #5F1A4B); +} +.media--forest { + background: + radial-gradient(ellipse at 30% 30%, #4FFFAE 0%, transparent 55%), + radial-gradient(ellipse at 80% 70%, #5F249F 0%, transparent 50%), + linear-gradient(135deg, #0B2A1F, #1A0033); +} +.media--ember { + background: + radial-gradient(ellipse at 70% 30%, #FFD24F 0%, transparent 50%), + radial-gradient(ellipse at 30% 70%, #FF4F4F 0%, transparent 50%), + linear-gradient(135deg, #2A0B0B, #4B1A1A); +} +.media--steel { + background: + radial-gradient(ellipse at 50% 50%, #B5C0D0 0%, transparent 60%), + linear-gradient(135deg, #2A2F3A, #4A5060); +} + +/* Service tile --------------------------------------------- */ + +.service-tile { + display: flex; + flex-direction: column; + justify-content: space-between; + gap: var(--s-12); + padding: var(--s-8); + background: var(--surface); + border: 1px solid var(--hairline); + border-radius: var(--r-md); + min-height: 240px; + transition: background var(--t-med) var(--ease), + color var(--t-med) var(--ease), + border-color var(--t-med) var(--ease), + transform var(--t-med) var(--ease); +} + +.service-tile:hover, +.service-tile:focus-within { + background: var(--brand-deep); + color: #fff; + border-color: var(--brand-deep); + transform: translateY(-4px); +} + +.section--dark .service-tile { + background: transparent; + color: #fff; + border-color: var(--hairline-dark); +} + +.section--dark .service-tile:hover, +.section--dark .service-tile:focus-within { + background: var(--brand-primary); + border-color: var(--brand-primary); +} + +.service-tile h3 { + font-size: 1.25rem; + font-weight: 700; + line-height: 1.25; + letter-spacing: -0.01em; +} + +.service-tile__icon { + width: 36px; + height: 36px; + color: var(--brand-primary); + margin-bottom: var(--s-2); + transition: color var(--t-med) var(--ease); +} + +.service-tile:hover .service-tile__icon, +.service-tile:focus-within .service-tile__icon { + color: var(--brand-accent); +} + +.section--dark .service-tile__icon { + color: var(--brand-accent); +} + +.service-tile__footer { + display: flex; + align-items: center; + justify-content: space-between; + gap: var(--s-3); +} + +.service-tile__num { + font-size: 0.8125rem; + font-weight: 600; + opacity: 0.5; + letter-spacing: 0.05em; +} + +.service-tile .arrow { + transition: transform var(--t-med) var(--ease); +} +.service-tile:hover .arrow { + transform: translateX(4px); +} + +/* Industry strip ------------------------------------------- */ + +.industry-strip { + display: grid; + grid-template-columns: 1fr; + border-top: 1px solid var(--hairline); +} + +@media (min-width: 640px) { + .industry-strip { grid-template-columns: repeat(2, 1fr); } +} +@media (min-width: 1024px) { + .industry-strip { grid-template-columns: repeat(4, 1fr); } +} + +.industry-strip__item { + padding: var(--s-8) var(--s-6); + border-bottom: 1px solid var(--hairline); + border-right: 1px solid var(--hairline); + display: flex; + flex-direction: column; + gap: var(--s-3); + transition: background var(--t-fast) var(--ease); +} + +.industry-strip__item:hover { + background: var(--surface-muted); +} + +.industry-strip__item h4 { + font-size: 1.125rem; + font-weight: 700; + letter-spacing: -0.005em; +} + +.industry-strip__item p { + font-size: 0.9375rem; + color: var(--text-muted); + line-height: 1.5; +} + +.industry-strip__icon { + width: 32px; + height: 32px; + color: var(--brand-primary); +} + +/* CTA strip ------------------------------------------------ */ + +.cta-strip { + background: var(--brand-deep); + color: #fff; + position: relative; + overflow: hidden; +} + +.cta-strip::before { + content: ""; + position: absolute; + inset: 0; + background: + radial-gradient(ellipse at 90% 30%, rgba(138, 79, 255, 0.4), transparent 50%), + radial-gradient(ellipse at 10% 80%, rgba(95, 36, 159, 0.5), transparent 50%); + pointer-events: none; +} + +.cta-strip__inner { + position: relative; + display: flex; + align-items: center; + justify-content: space-between; + gap: var(--s-8); + padding-block: var(--s-20); + flex-wrap: wrap; +} + +.cta-strip h2 { + max-width: 720px; + font-size: clamp(1.75rem, 3vw, 2.5rem); + font-weight: 800; + line-height: 1.1; + letter-spacing: -0.02em; +} + +/* Footer --------------------------------------------------- */ + +.site-footer { + background: var(--brand-deep); + color: var(--text-on-dark); + padding-block: var(--s-16) var(--s-8); + font-size: 0.9375rem; +} + +.site-footer__grid { + display: grid; + grid-template-columns: 1fr; + gap: var(--s-12); + padding-block: var(--s-16); + border-bottom: 1px solid var(--hairline-dark); +} + +@media (min-width: 640px) { + .site-footer__grid { + grid-template-columns: repeat(2, 1fr); + } +} + +@media (min-width: 1024px) { + .site-footer__grid { + grid-template-columns: 1.4fr repeat(4, 1fr); + } +} + +.site-footer__brand h3 { + font-size: 1.125rem; + font-weight: 700; + margin-bottom: var(--s-4); + letter-spacing: -0.005em; +} + +.site-footer__brand p { + color: var(--text-on-dark-muted); + max-width: 320px; + line-height: 1.5; +} + +.site-footer__brand svg { + height: 28px; + width: auto; + margin-bottom: var(--s-6); +} + +.site-footer__col h4 { + font-size: 0.8125rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.08em; + color: rgba(255,255,255,0.85); + margin-bottom: var(--s-5); +} + +.site-footer__col ul { + display: flex; + flex-direction: column; + gap: var(--s-3); +} + +.site-footer__col a { + color: var(--text-on-dark-muted); + transition: color var(--t-fast) var(--ease); +} + +.site-footer__col a:hover, +.site-footer__col a:focus-visible { + color: #fff; +} + +.site-footer__legal { + padding-block: var(--s-8); + border-bottom: 1px solid var(--hairline-dark); +} + +.site-footer__legal ul { + display: flex; + flex-wrap: wrap; + gap: var(--s-8); + list-style: none; + padding: 0; + margin: 0; +} + +.site-footer__legal a { + color: var(--text-on-dark-muted); + font-size: 0.8125rem; + transition: color var(--t-fast) var(--ease); +} + +.site-footer__legal a:hover, +.site-footer__legal a:focus-visible { + color: #fff; +} + +.site-footer__bottom { + display: flex; + justify-content: space-between; + align-items: center; + gap: var(--s-6); + flex-wrap: wrap; + padding-top: var(--s-8); + color: var(--text-on-dark-muted); + font-size: 0.8125rem; +} + +.site-footer__social { + display: flex; + gap: var(--s-4); +} + +.site-footer__social a { + width: 36px; + height: 36px; + border-radius: 999px; + border: 1px solid var(--hairline-dark); + display: inline-flex; + align-items: center; + justify-content: center; + transition: background var(--t-fast) var(--ease), + border-color var(--t-fast) var(--ease); +} + +.site-footer__social a:hover, +.site-footer__social a:focus-visible { + background: var(--brand-primary); + border-color: var(--brand-primary); + color: #fff; +} + +.site-footer__social svg { + width: 16px; + height: 16px; +} + +/* Stat block ----------------------------------------------- */ + +.stats { + display: grid; + grid-template-columns: 1fr 1fr; + gap: var(--s-8); +} + +@media (min-width: 768px) { + .stats { grid-template-columns: repeat(4, 1fr); } +} + +.stat__num { + font-size: clamp(2.25rem, 4vw, 3.5rem); + font-weight: 800; + line-height: 1; + letter-spacing: -0.02em; + color: var(--brand-primary); + margin-bottom: var(--s-3); +} + +.stat__label { + font-size: 0.9375rem; + color: var(--text-muted); + line-height: 1.45; + max-width: 220px; +} + +.section--dark .stat__num { + color: var(--brand-accent); +} +.section--dark .stat__label { + color: var(--text-on-dark-muted); +} + +/* Two-col text + media ------------------------------------- */ + +.split { + display: grid; + grid-template-columns: 1fr; + gap: var(--s-12); + align-items: center; +} + +@media (min-width: 1024px) { + .split { grid-template-columns: 1fr 1fr; } + .split--media-left .split__media { order: -1; } +} + +.split__media { + aspect-ratio: 4 / 3; + border-radius: var(--r-lg); + overflow: hidden; +} + +.split__body h2 { + margin-bottom: var(--s-6); +} + +.split__body p { + color: var(--text-muted); + font-size: 1.0625rem; + line-height: 1.6; + margin-bottom: var(--s-6); +} + +.split__body p:last-of-type { + margin-bottom: var(--s-8); +} + +/* Leadership grid ------------------------------------------ */ + +.leader-card { + display: flex; + flex-direction: column; + gap: var(--s-4); +} + +.leader-card__photo { + aspect-ratio: 1 / 1; + border-radius: var(--r-lg); + overflow: hidden; + position: relative; + display: flex; + align-items: center; + justify-content: center; +} + +.leader-card__photo::before { + content: ""; + position: absolute; + inset: 0; + background: linear-gradient(180deg, transparent 40%, rgba(26, 0, 51, 0.45) 100%); +} + +.leader-card__initials { + position: relative; + z-index: 1; + font-size: clamp(2.5rem, 6vw, 3.5rem); + font-weight: 800; + letter-spacing: -0.04em; + color: rgba(255, 255, 255, 0.92); + text-shadow: 0 4px 24px rgba(26, 0, 51, 0.3); + font-feature-settings: "ss01"; +} + +.leader-card__name { + font-size: 1.125rem; + font-weight: 700; + letter-spacing: -0.005em; +} + +.leader-card__role { + font-size: 0.875rem; + color: var(--text-muted); +} + +/* Form ------------------------------------------------------ */ + +.contact-form { + display: grid; + grid-template-columns: 1fr; + gap: var(--s-6); +} + +@media (min-width: 640px) { + .contact-form { grid-template-columns: 1fr 1fr; } + .contact-form .form-field--full { grid-column: 1 / -1; } +} + +.form-field label { + display: block; + font-size: 0.8125rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.06em; + margin-bottom: var(--s-2); + color: var(--text-strong); +} + +.form-field input, +.form-field select, +.form-field textarea { + width: 100%; + padding: 14px 16px; + border: 1.5px solid var(--hairline); + border-radius: var(--r-sm); + background: #fff; + font-size: 1rem; + transition: border-color var(--t-fast) var(--ease), + box-shadow var(--t-fast) var(--ease); +} + +.form-field textarea { + min-height: 140px; + resize: vertical; + font-family: inherit; +} + +.form-field input:focus, +.form-field select:focus, +.form-field textarea:focus { + outline: none; + border-color: var(--brand-primary); + box-shadow: 0 0 0 4px rgba(95, 36, 159, 0.12); +} + +.form-actions { + grid-column: 1 / -1; + display: flex; + justify-content: flex-end; + margin-top: var(--s-4); +} + +/* Address card --------------------------------------------- */ + +.office-card { + padding: var(--s-8); + border: 1px solid var(--hairline); + border-radius: var(--r-md); + background: var(--surface); + display: flex; + flex-direction: column; + gap: var(--s-3); +} + +.office-card h3 { + font-size: 1.125rem; + font-weight: 700; +} + +.office-card address { + font-style: normal; + color: var(--text-muted); + font-size: 0.9375rem; + line-height: 1.55; +} + +.office-card a { + color: var(--brand-primary); + font-weight: 500; + font-size: 0.9375rem; +} + +/* Quote ----------------------------------------------------- */ + +.quote { + max-width: 920px; + margin-inline: auto; + text-align: center; +} + +.quote__mark { + font-size: 3rem; + line-height: 1; + color: var(--brand-primary); + margin-bottom: var(--s-4); + font-weight: 700; +} + +.quote blockquote { + margin: 0; + font-size: clamp(1.375rem, 2.5vw, 1.875rem); + font-weight: 600; + line-height: 1.35; + letter-spacing: -0.01em; + color: var(--text-strong); + margin-bottom: var(--s-6); +} + +.quote cite { + font-style: normal; + font-size: 0.9375rem; + color: var(--text-muted); +} + +.quote cite strong { + color: var(--text-strong); + font-weight: 600; +} + +.section--dark .quote blockquote { + color: #fff; +} + +.section--dark .quote cite { + color: var(--text-on-dark-muted); +} + +.section--dark .quote cite strong { + color: #fff; +} + +.section--dark .quote__mark { + color: var(--brand-accent); +} + +/* Legal documents ------------------------------------------ */ + +.legal-doc { + max-width: 760px; +} + +.legal-section { + margin-bottom: var(--s-12); +} + +.legal-section h2 { + font-size: 1.5rem; + font-weight: 700; + letter-spacing: -0.01em; + margin-bottom: var(--s-5); + padding-bottom: var(--s-3); + border-bottom: 2px solid var(--brand-primary); +} + +.legal-section p { + font-size: 1.0625rem; + line-height: 1.7; + color: var(--text-strong); + margin-bottom: var(--s-4); +} + +.legal-section a { + color: var(--brand-primary); + text-decoration: underline; + text-underline-offset: 3px; + text-decoration-thickness: 1.5px; + font-weight: 500; +} + +.legal-section a:hover, +.legal-section a:focus-visible { + color: var(--brand-accent); +} + +.legal-section code { + background: var(--surface-muted); + padding: 2px 6px; + border-radius: var(--r-sm); + font-size: 0.95em; + font-family: ui-monospace, "SF Mono", Menlo, monospace; +} + +/* Awards / recognition band ---------------------------------- */ + +.awards { + padding-block: var(--s-12); + border-top: 1px solid var(--hairline); + border-bottom: 1px solid var(--hairline); +} + +.awards__head { + display: flex; + align-items: center; + justify-content: space-between; + gap: var(--s-6); + margin-bottom: var(--s-8); +} + +.awards__head p { + font-size: 0.8125rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.08em; + color: var(--text-muted); +} + +.awards__row { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: var(--s-8); +} + +@media (min-width: 640px) { + .awards__row { grid-template-columns: repeat(3, 1fr); } +} + +@media (min-width: 1024px) { + .awards__row { grid-template-columns: repeat(5, 1fr); } +} + +.award { + display: flex; + align-items: center; + justify-content: center; + min-height: 64px; + font-weight: 700; + font-size: 0.9375rem; + color: var(--text-muted); + letter-spacing: -0.005em; + text-align: center; + filter: grayscale(1); + opacity: 0.7; + transition: filter var(--t-med) var(--ease), opacity var(--t-med) var(--ease); +} + +.award:hover { + filter: none; + opacity: 1; +} + +.award__rank { + display: inline-block; + font-size: 0.6875rem; + font-weight: 700; + letter-spacing: 0.08em; + text-transform: uppercase; + padding: 4px 8px; + border-radius: 4px; + background: var(--surface-muted); + margin-right: var(--s-2); +} + +/* Newsletter (in footer) ------------------------------------- */ + +.newsletter { + padding-block: var(--s-12); + border-bottom: 1px solid var(--hairline-dark); + display: grid; + grid-template-columns: 1fr; + gap: var(--s-8); + align-items: center; +} + +@media (min-width: 768px) { + .newsletter { grid-template-columns: 1.2fr 1fr; } +} + +.newsletter__copy h3 { + font-size: 1.5rem; + font-weight: 700; + letter-spacing: -0.01em; + margin-bottom: var(--s-3); +} + +.newsletter__copy p { + color: var(--text-on-dark-muted); + font-size: 0.9375rem; + line-height: 1.5; + max-width: 460px; +} + +.newsletter__form { + display: flex; + gap: var(--s-3); + flex-wrap: wrap; +} + +.newsletter__form input { + flex: 1; + min-width: 200px; + padding: 14px 16px; + border: 1.5px solid var(--hairline-dark); + background: rgba(255, 255, 255, 0.04); + border-radius: var(--r-sm); + color: #fff; + font-size: 1rem; +} + +.newsletter__form input::placeholder { + color: var(--text-on-dark-muted); +} + +.newsletter__form input:focus { + outline: none; + border-color: var(--brand-accent); + background: rgba(255, 255, 255, 0.08); +} + +.newsletter__form button { + background: #fff; + color: var(--brand-deep); + font-weight: 600; + padding: 14px 22px; + border-radius: var(--r-sm); + transition: background var(--t-fast) var(--ease); +} + +.newsletter__form button:hover, +.newsletter__form button:focus-visible { + background: var(--brand-accent); + color: #fff; +} + +/* Body lock when mobile menu open --------------------------- */ +body.menu-open { + overflow: hidden; +} diff --git a/site/favicon.svg b/site/favicon.svg new file mode 100644 index 0000000..6239409 --- /dev/null +++ b/site/favicon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/site/find-office.html b/site/find-office.html new file mode 100644 index 0000000..46ccb36 --- /dev/null +++ b/site/find-office.html @@ -0,0 +1,297 @@ + + + + + + Find an office - Trion Consultancy Services + + + + + + + + + + + + + + + + + + +
+
+
+ Find an office +

A presence in 55 countries.

+

Twelve of our largest hubs are listed below. Whether you want to drop by, ship a contract, or hire a team near you - this is where to start.

+
+
+ +
+
+
+
+

Mumbai - Global HQ

+
Trion House
N. M. Marg, Apollo Bunder
Mumbai 400001, India
+ +91 22 6666 7777 +
+
+

Bengaluru

+
Trion Park, Whitefield Main Road
Whitefield, Bengaluru 560066
India
+ +91 80 2222 1234 +
+
+

Delhi NCR

+
Trion Tower, DLF Cyber City Phase III
Gurugram 122002
India
+ +91 124 444 5555 +
+
+

New York

+
101 Park Avenue, 26th Floor
New York, NY 10178
United States
+ +1 212 555 0100 +
+
+

Toronto

+
199 Bay Street, 30th Floor
Toronto, ON M5L 1G9
Canada
+ +1 416 555 0150 +
+
+

London

+
17 Old Bailey
London EC4M 7EG
United Kingdom
+ +44 20 7220 0800 +
+
+

Frankfurt

+
Trianon, Mainzer Landstraße 16
60325 Frankfurt am Main
Germany
+ +49 69 2222 0700 +
+
+

Amsterdam

+
Vinoly Building, Claude Debussylaan 80
1082 MD Amsterdam
Netherlands
+ +31 20 521 0500 +
+
+

Singapore

+
Marina Bay Financial Centre, Tower 3
12 Marina Boulevard
Singapore 018982
+ +65 6222 0222 +
+
+

Tokyo

+
Marunouchi Building, 21F
2-4-1 Marunouchi, Chiyoda-ku
Tokyo 100-6321, Japan
+ +81 3 5222 0900 +
+
+

Sydney

+
Tower One, International Towers
100 Barangaroo Avenue, Sydney NSW 2000
Australia
+ +61 2 8224 0900 +
+
+

São Paulo

+
Avenida Paulista, 1842
Bela Vista, São Paulo - SP
Brazil 01310-200
+ +55 11 3000 0400 +
+
+
+
+ +
+
+

Need a region we don't list?

+ Talk to us + + +
+
+
+ + + + + + diff --git a/site/index.html b/site/index.html new file mode 100644 index 0000000..af98d5d --- /dev/null +++ b/site/index.html @@ -0,0 +1,546 @@ + + + + + + Trion Consultancy Services - Building on belief + + + + + + + + + + + + + + + + + + +
+ +
+
+

Featured story - Banking

+

Reimagining the bank of tomorrow, today.

+

We helped one of Europe's largest retail banks modernize 220 million customer accounts onto a cloud-native core in 18 months - cutting time-to-market for new products by 70%.

+ +
+
+ + +
+
+
+

Recognized by

+
+
+
Leader Gartner Cloud Services
+
Leader Forrester Wave: AI Services
+
Top 10 Fortune World's Most Admired
+
A CDP Climate Disclosure
+
Best Top Employer Institute, EMEA
+
+
+
+ + +
+
+
+
+ Featured stories +

Outcomes our clients are most proud of.

+
+ All stories + + +
+ +
+
+
+
+ Manufacturing +

A global automaker rebuilt its supplier network on real-time data.

+

Forty plants, eighteen countries, one operating picture - and a 23% drop in unplanned downtime.

+
+ Read story + + +
+
+
+ +
+
+
+ Public sector +

Modernizing the citizen experience for a national health service.

+

A single digital front door for 65 million people - with 40 legacy systems retired behind it.

+
+ Read story + + +
+
+
+ +
+
+
+ Retail +

A 150-year-old retailer learned to ship a release every three minutes.

+

From quarterly waterfalls to continuous delivery across 1,800 stores - without skipping a single weekend.

+
+ Read story + + +
+
+
+
+
+
+ + +
+ +
+ + +
+
+
+
"
+
+ We don't deliver projects - we partner for decades. Five out of every ten clients have worked with us for more than 25 years. +
+ Priya Iyer - Chief Operating Officer +
+ +
+
+
615K+
+
Consultants in 55 countries
+
+
+
$29B
+
Annual revenue, FY25
+
+
+
1,200+
+
Active enterprise clients
+
+
+
56
+
Years building on belief
+
+
+
+
+ + +
+ +
+ + +
+
+
+
+ Insights +

Research and perspectives from the front line.

+
+ All research + + +
+ +
+
+
+
+ Annual study - 1,200 CEOs +

The AI Premium: where leaders are seeing returns, and where they aren't.

+

Our 12th annual CEO study tracks how AI value is concentrating - and what separates the 14% pulling away.

+
+ Download + + +
+
+
+ +
+
+
+ Perspective +

Beyond the pilot: what it actually takes to put GenAI into production.

+

A field guide drawn from 340 enterprise GenAI deployments - what worked, what stalled, what we learned.

+
+ Read + + +
+
+
+ +
+
+
+ Point of view +

The next operating model: small teams, large autonomy, AI in the loop.

+

A framework for re-organizing IT and operations around outcomes - not towers, not tickets, not handoffs.

+
+ Read + + +
+
+
+
+
+
+ + +
+
+

Let's build what's next, together.

+ Start a conversation + + +
+
+ + +
+ + + + + + diff --git a/site/industries.html b/site/industries.html new file mode 100644 index 0000000..48cf408 --- /dev/null +++ b/site/industries.html @@ -0,0 +1,397 @@ + + + + + + Industries - Trion Consultancy Services + + + + + + + + + + + + + + + + + + +
+
+
+ Industries +

The deepest industry benches in the business.

+

Every industry runs on its own rules - regulatory, operational, cultural. We bring teams that have lived inside the industry, not just studied it. Below: where we go deepest.

+
+
+ + +
+
+
+
+
+
+ Sector lead - Marcus Hale +

Banking & financial services

+

Core modernization, payments, capital markets, and digital onboarding for 9 of the world's 10 largest banks.

+
+ Talk to banking + + +
+
+
+ +
+
+
+ Sector lead - Helena Bauer +

Insurance

+

Policy administration, claims automation, AI-driven underwriting, and customer experience for top-25 carriers globally.

+
+ Talk to insurance + + +
+
+
+ +
+
+
+ Sector lead - Kenji Sato +

Manufacturing

+

Smart factory, connected products, PLM, and supply chain resilience for automotive, aerospace, and industrial OEMs.

+
+ Talk to manufacturing + + +
+
+
+ +
+
+
+ Sector lead - Lara Schmidt +

Retail & consumer products

+

Unified commerce, AI-driven merchandising, supply chain visibility, and direct-to-consumer platforms.

+
+ Talk to retail + + +
+
+
+ +
+
+
+ Sector lead - Dr. Naila Rahman +

Healthcare & life sciences

+

Care delivery platforms, real-world evidence, drug discovery, and connected clinical trials - across providers, payers, and pharma.

+
+ Talk to healthcare + + +
+
+
+ +
+
+
+ Sector lead - James Whitfield +

Public services

+

Digital identity, tax modernization, citizen platforms, and defense systems for federal, state, and supra-national agencies.

+
+ Talk to public sector + + +
+
+
+ +
+
+
+ Sector lead - Ravi Subramanian +

Communications & media

+

5G core, BSS/OSS modernization, OTT platforms, and content delivery - for the world's largest telcos and broadcasters.

+
+ Talk to comms + + +
+
+
+ +
+
+
+ Sector lead - Elena Cortes +

Energy & utilities

+

Renewables integration, grid edge intelligence, customer platforms, and asset performance management for utilities and oil & gas majors.

+
+ Talk to energy + + +
+
+
+ +
+
+
+ Sector lead - Sara Olafsson +

Travel, transportation & hospitality

+

Loyalty, distribution, operations, and customer experience for airlines, hospitality groups, and logistics providers.

+
+ Talk to travel + + +
+
+
+
+
+
+ + +
+
+
+
"
+
+ You cannot consult your way into knowing an industry. You have to live there. We have - for half a century. +
+ Anand Krishnan - Chief Executive Officer +
+ +
+
+
9 of 10
+
Of the world's largest banks are clients
+
+
+
14
+
Industry vertical practices
+
+
+
$2T+
+
Of insurance premiums processed annually on our platforms
+
+
+
40+
+
National government clients
+
+
+
+
+ +
+
+

Tell us about your industry. We've probably been there.

+ Start a conversation + + +
+
+ + +
+ + + + + + diff --git a/site/insights.html b/site/insights.html new file mode 100644 index 0000000..adf8fc7 --- /dev/null +++ b/site/insights.html @@ -0,0 +1,375 @@ + + + + + + Insights - Trion Consultancy Services + + + + + + + + + + + + + + + + + + +
+
+
+ Insights +

Research and perspectives from the front line.

+

Our researchers and practitioners publish what they're learning from the engagements we actually run. No hot takes; just patterns that hold up after the second client.

+
+
+ +
+
+
+
+ Featured +

Reports, briefings, and points of view.

+
+ Subscribe to our newsletter + + +
+
+
+
+
+ Annual study - 1,200 CEOs +

The AI Premium: where leaders are seeing returns, and where they aren't.

+

Our 12th annual CEO study tracks how AI value is concentrating - and what separates the 14% pulling away.

+
+ Read + + +
+
+
+
+
+
+ Perspective +

Beyond the pilot: what it actually takes to put GenAI into production.

+

A field guide drawn from 340 enterprise GenAI deployments - what worked, what stalled, what we learned.

+
+ Read + + +
+
+
+
+
+
+ Point of view +

The next operating model: small teams, large autonomy, AI in the loop.

+

A framework for re-organizing IT and operations around outcomes - not towers, not tickets, not handoffs.

+
+ Read + + +
+
+
+
+
+
+ Research note +

The cloud bill came due. Now what?

+

Why 62% of enterprises are returning to disciplined unit-economics conversations - and the playbook that's working.

+
+ Read + + +
+
+
+
+
+
+ Industry brief - Banking +

Core modernization in 24 months: a comparison of four playbooks.

+

Strangler, big-bang, sidecar, greenfield - the trade-offs that determine which approach actually finishes.

+
+ Read + + +
+
+
+
+
+
+ Industry brief - Retail +

Unified commerce: the data plumbing nobody warned you about.

+

Why retail platforms break in the integration layer first - and the patterns that hold up under Black Friday.

+
+ Read + + +
+
+
+
+
+
+ Workforce study +

What 8,400 frontline workers told us about AI augmentation.

+

The largest survey of its kind reveals a surprising consensus on where AI helps - and where it gets in the way.

+
+ Read + + +
+
+
+
+
+
+ ESG & sustainability +

Scope 3 reporting: the data engineering challenge nobody is talking about.

+

Most carbon disclosure tools assume data you don't have. Here's how four clients built the pipeline that actually works.

+
+ Read + + +
+
+
+
+
+
+ Cybersecurity +

Zero trust is a posture, not a product. Five enterprises explain why.

+

Architecture, identity, segmentation, telemetry, and culture - the five layers that actually have to move together.

+
+ Read + + +
+
+
+
+
+
+ +
+
+
+
"
+
+ We won't publish a finding until we've seen it work - or fail - at three clients. That's a slow rhythm. It's also why people keep reading us. +
+ David Okonkwo - Global Head, AI & Data +
+
+
+ +
+
+

Have a question we should be researching?

+ Suggest a topic + + +
+
+
+ + + + + + diff --git a/site/investors.html b/site/investors.html new file mode 100644 index 0000000..33f65cc --- /dev/null +++ b/site/investors.html @@ -0,0 +1,304 @@ + + + + + + Investors - Trion Consultancy Services + + + + + + + + + + + + + + + + + + +
+
+
+ Investors +

A durable business, built to compound.

+

Long-running client relationships, a global delivery model that's hard to replicate, and a balance sheet that funds growth from operating cash flow - not financing.

+
+
+ +
+
+
+ Latest results - FY25 +

Headlines from our most recent fiscal year.

+
+
+
+
$29.1B
+
FY25 revenue
+8.4% YoY in constant currency
+
+
+
24.6%
+
Operating margin
Sustained Tier-1 IT services band
+
+
+
$42.7B
+
Net new TCV signed
Across 1,200+ active enterprise relationships
+
+
+
112%
+
Cash conversion
Free cash flow / net income, trailing twelve months
+
+
+
+
+ +
+ +
+ +
+
+
+
+ Talk to IR +

Direct line to the team.

+

For analyst inquiries, shareholder questions, or scheduled briefings, reach our investor relations team directly.

+ ir@trion.example + + +
+
+
+
+
+
+ + + + + + diff --git a/site/js/main.js b/site/js/main.js new file mode 100644 index 0000000..3868aab --- /dev/null +++ b/site/js/main.js @@ -0,0 +1,171 @@ +(() => { + 'use strict'; + + /* ------------------------------------------------------------------ + Sticky header shadow on scroll + ------------------------------------------------------------------ */ + const header = document.querySelector('.site-header'); + if (header) { + const onScroll = () => { + header.classList.toggle('is-scrolled', window.scrollY > 4); + }; + onScroll(); + window.addEventListener('scroll', onScroll, { passive: true }); + } + + /* ------------------------------------------------------------------ + Mega menu - hover on desktop, click/keyboard on touch + ------------------------------------------------------------------ */ + const navItems = document.querySelectorAll('.primary-nav__item--has-mega'); + + navItems.forEach((item) => { + const trigger = item.querySelector('.primary-nav__link'); + if (!trigger) return; + + const open = () => { + navItems.forEach((other) => { + if (other !== item) other.classList.remove('is-open'); + }); + item.classList.add('is-open'); + trigger.setAttribute('aria-expanded', 'true'); + }; + const close = () => { + item.classList.remove('is-open'); + trigger.setAttribute('aria-expanded', 'false'); + }; + const toggle = () => { + item.classList.contains('is-open') ? close() : open(); + }; + + item.addEventListener('mouseenter', open); + item.addEventListener('mouseleave', close); + + trigger.addEventListener('click', (e) => { + e.preventDefault(); + toggle(); + }); + + trigger.addEventListener('keydown', (e) => { + if (e.key === 'Escape') close(); + }); + }); + + // Close mega on outside click / Escape + document.addEventListener('click', (e) => { + navItems.forEach((item) => { + if (!item.contains(e.target)) { + item.classList.remove('is-open'); + const trigger = item.querySelector('.primary-nav__link'); + if (trigger) trigger.setAttribute('aria-expanded', 'false'); + } + }); + }); + + document.addEventListener('keydown', (e) => { + if (e.key === 'Escape') { + navItems.forEach((item) => { + item.classList.remove('is-open'); + const trigger = item.querySelector('.primary-nav__link'); + if (trigger) trigger.setAttribute('aria-expanded', 'false'); + }); + } + }); + + /* ------------------------------------------------------------------ + Mobile menu + ------------------------------------------------------------------ */ + const mobileToggle = document.querySelector('.mobile-toggle'); + const mobileMenu = document.querySelector('.mobile-menu'); + + if (mobileToggle && mobileMenu) { + const closeMobile = () => { + mobileToggle.setAttribute('aria-expanded', 'false'); + mobileMenu.classList.remove('is-open'); + document.body.classList.remove('menu-open'); + }; + const openMobile = () => { + mobileToggle.setAttribute('aria-expanded', 'true'); + mobileMenu.classList.add('is-open'); + document.body.classList.add('menu-open'); + }; + mobileToggle.addEventListener('click', () => { + mobileToggle.getAttribute('aria-expanded') === 'true' ? closeMobile() : openMobile(); + }); + // Close on link click + mobileMenu.querySelectorAll('a').forEach((a) => { + a.addEventListener('click', closeMobile); + }); + // Close on resize to desktop + window.addEventListener('resize', () => { + if (window.innerWidth >= 1024) closeMobile(); + }); + // Close on Escape + document.addEventListener('keydown', (e) => { + if (e.key === 'Escape') closeMobile(); + }); + } + + /* ------------------------------------------------------------------ + Reveal on scroll + ------------------------------------------------------------------ */ + const reveals = document.querySelectorAll('.reveal'); + if (reveals.length && 'IntersectionObserver' in window) { + const io = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + entry.target.classList.add('is-visible'); + io.unobserve(entry.target); + } + }); + }, + { threshold: 0.12, rootMargin: '0px 0px -40px 0px' } + ); + reveals.forEach((el) => io.observe(el)); + } else { + reveals.forEach((el) => el.classList.add('is-visible')); + } + + /* ------------------------------------------------------------------ + Footer year + ------------------------------------------------------------------ */ + const yearEl = document.querySelector('[data-year]'); + if (yearEl) yearEl.textContent = String(new Date().getFullYear()); + + /* ------------------------------------------------------------------ + Contact form - prevent actual submit, give feedback + ------------------------------------------------------------------ */ + const form = document.querySelector('.contact-form'); + if (form) { + form.addEventListener('submit', (e) => { + e.preventDefault(); + const status = form.querySelector('[data-form-status]'); + if (status) { + status.textContent = 'Thanks - we will reach out within two business days.'; + status.hidden = false; + } + form.reset(); + }); + } + + /* ------------------------------------------------------------------ + Newsletter form - prevent submit, brief feedback + ------------------------------------------------------------------ */ + const newsletter = document.querySelector('.newsletter__form'); + if (newsletter) { + newsletter.addEventListener('submit', (e) => { + e.preventDefault(); + const btn = newsletter.querySelector('button'); + if (btn) { + const original = btn.textContent; + btn.textContent = 'Thanks - check your inbox.'; + btn.disabled = true; + setTimeout(() => { + btn.textContent = original; + btn.disabled = false; + }, 4000); + } + newsletter.reset(); + }); + } +})(); diff --git a/site/leadership.html b/site/leadership.html new file mode 100644 index 0000000..e949881 --- /dev/null +++ b/site/leadership.html @@ -0,0 +1,315 @@ + + + + + + Leadership - Trion Consultancy Services + + + + + + + + + + + + + + + + + + +
+
+
+ Leadership +

The people who run Trion.

+

An operating committee of practitioners. Most of our leaders spent decades inside the disciplines they now oversee - building, delivering, and learning the hard way before stepping into leadership.

+
+
+ +
+
+
+
+ Operating committee +

Twelve leaders, one P&L.

+
+
+
+
+
AK
+
Anand Krishnan
+
Chief Executive Officer & Managing Director
+
+
+
PI
+
Priya Iyer
+
Chief Operating Officer
+
+
+
MH
+
Marcus Hale
+
President, Banking & Financial Services
+
+
+
YT
+
Yuki Tanaka
+
Chief Technology Officer
+
+
+
SR
+
Sofia Reyes
+
President, Europe
+
+
+
RM
+
Rohan Mehta
+
Chief Financial Officer
+
+
+
AP
+
Aisha Patel
+
Chief Human Resources Officer
+
+
+
DO
+
David Okonkwo
+
Global Head, AI & Data
+
+
+
HB
+
Helena Bauer
+
President, Insurance
+
+
+
KS
+
Kenji Sato
+
President, Manufacturing
+
+
+
LS
+
Lara Schmidt
+
President, Retail & Consumer Products
+
+
+
NR
+
Naila Rahman
+
President, Healthcare & Life Sciences
+
+
+
+
+ +
+
+
+
"
+
+ The role of leadership here is to make the next generation of leaders look obvious in hindsight. +
+ Anand Krishnan - Chief Executive Officer +
+
+
+ +
+
+

Want to meet the team?

+ Get in touch + + +
+
+
+ + + + + + diff --git a/site/newsroom.html b/site/newsroom.html new file mode 100644 index 0000000..fe60b2b --- /dev/null +++ b/site/newsroom.html @@ -0,0 +1,331 @@ + + + + + + Newsroom - Trion Consultancy Services + + + + + + + + + + + + + + + + + + +
+
+
+ Newsroom +

Announcements, releases, and recognitions.

+

Where we share the things we're saying publicly - results, partnerships, awards, and the occasional point of view we feel strongly enough to put a name on.

+
+
+ +
+
+
+
+ Recent +

Latest announcements.

+
+ Archive + + +
+
+
+
+
+ May 14, 2026 - Press release +

Trion expands European delivery footprint with new Madrid campus.

+

Three thousand engineers, designers, and consultants will be based in the new center by 2028.

+
+ Read release + + +
+
+
+
+
+
+ Apr 28, 2026 - Press release +

Q4 FY25 results: revenue up 8.4% YoY, margin holds at 24.6%.

+

Annual revenue crosses $29B; record TCV bookings driven by AI and cloud engagements.

+
+ Read release + + +
+
+
+
+
+
+ Apr 02, 2026 - Announcement +

Trion joins UN Climate Action Compact.

+

Commits to net-zero across owned operations by 2030, full supply chain by 2040.

+
+ Read release + + +
+
+
+
+
+
+ Mar 18, 2026 - Press release +

Strategic alliance with a leading hyperscaler expands managed AI services.

+

Joint go-to-market across financial services, manufacturing, and healthcare.

+
+ Read release + + +
+
+
+
+
+
+ Feb 24, 2026 - Award +

Recognized as a Leader in the 2026 Cloud Services Magic Quadrant.

+

Sixth consecutive year in the Leaders quadrant.

+
+ Read release + + +
+
+
+
+
+
+ Jan 30, 2026 - Press release +

Trion to acquire a specialist healthcare data engineering firm.

+

Strengthens life sciences delivery in North America and Europe.

+
+ Read release + + +
+
+
+
+
+
+ +
+
+
+
+ Media inquiries +

Working on a story?

+

For journalist or analyst inquiries, briefings, or interview requests, our global communications team responds within one business day.

+ press@trion.example + + +
+
+
+
+
+
+ + + + + + diff --git a/site/partners.html b/site/partners.html new file mode 100644 index 0000000..57ec088 --- /dev/null +++ b/site/partners.html @@ -0,0 +1,327 @@ + + + + + + Partners - Trion Consultancy Services + + + + + + + + + + + + + + + + + + +
+
+
+ Partners +

Strong on our own. Stronger together.

+

We bring 615,000 people. Our partners bring the platforms, the products, the science, and the standards. Clients get the union of both - not the seams.

+
+
+ +
+
+
+
+
+
+ Hyperscale alliance +

Cloud platforms

+

Co-engineering, joint go-to-market, and shared customer success across the three largest public-cloud providers.

+
+ Explore partnership + + +
+
+
+
+
+
+ Strategic alliance +

Core enterprise software

+

Deep delivery practices around SAP, Oracle, Microsoft, Salesforce, ServiceNow, and Workday - implementation, migration, and managed run.

+
+ Explore partnership + + +
+
+
+
+
+
+ Technology partner +

Data & AI

+

Joint capabilities with Databricks, Snowflake, Confluent, and the leading model providers - to put AI into production, not pilots.

+
+ Explore partnership + + +
+
+
+
+
+
+ Innovation network +

Startups & ventures

+

Trion Ventures invests in and co-builds with 80+ enterprise startups. We bring them into client engagements when their tech is ready.

+
+ Explore partnership + + +
+
+
+
+
+
+ Academic partnership +

Research & talent

+

Joint research centers with 30+ universities globally. Sponsored chairs, applied research, and a steady pipeline of graduate hires.

+
+ Explore partnership + + +
+
+
+
+
+
+ Industry consortia +

Standards & advocacy

+

Active participation in cloud, AI safety, cybersecurity, and sustainability standards bodies - shaping the rules of the road.

+
+ Explore partnership + + +
+
+
+
+
+
+ +
+
+
+
"
+
+ Partnerships aren't a logo wall. They're a way of jointly being accountable for an outcome - which is harder, slower, and almost always worth it. +
+ Yuki Tanaka - Chief Technology Officer +
+
+
+ +
+
+

Become a Trion partner.

+ Start the conversation + + +
+
+
+ + + + + + diff --git a/site/privacy.html b/site/privacy.html new file mode 100644 index 0000000..b7c8eb9 --- /dev/null +++ b/site/privacy.html @@ -0,0 +1,269 @@ + + + + + + Privacy notice - Trion Consultancy Services + + + + + + + + + + + + + + + + + + +
+
+
+ Legal +

Privacy notice.

+

This notice describes how Trion Consultancy Services collects, uses, shares, and safeguards personal information when you visit our websites, contact us, or use services we provide.

+
+
+ +
+
+ +
+
+
+ + + + + + diff --git a/site/services.html b/site/services.html new file mode 100644 index 0000000..ea89fb8 --- /dev/null +++ b/site/services.html @@ -0,0 +1,413 @@ + + + + + + What we do - Trion Consultancy Services + + + + + + + + + + + + + + + + + + +
+
+
+ What we do +

The full stack of services. One accountable partner.

+

Twelve disciplines, one operating model. We build, run, and transform the enterprise systems that the largest organizations in the world depend on - delivered as a single, integrated practice.

+
+
+ + +
+
+
+ Build +

Engineering the systems of record - and the systems of intelligence.

+
+ +
+
+
+
+ 01 / Build +

Cloud transformation

+

Migrate, re-platform, and modernize on AWS, Azure, and Google Cloud. We have moved more than 18,000 enterprise workloads to public cloud since 2018 - and run most of them after we moved them.

+
+ Talk to a cloud lead + + +
+
+
+ +
+
+
+ 02 / Build +

AI & data

+

Data platforms, MLOps, and applied generative AI - delivered into production, not parked in pilots. Three out of four engagements include a measurable P&L commitment.

+
+ See AI in production + + +
+
+
+ +
+
+
+ 03 / Build +

Cybersecurity

+

Zero-trust architectures, identity modernization, 24x7 SOC operations, and breach response - protecting trillions of dollars of assets across regulated industries.

+
+ Assess your posture + + +
+
+
+ +
+
+
+ 04 / Build +

Engineering & R&D

+

Embedded software, connected products, simulation, and digital twin work for automotive, aerospace, medtech, and industrial OEMs. 78 R&D centers globally.

+
+ Co-engineer with us + + +
+
+
+
+
+
+ + +
+ +
+ + +
+
+
+ Transform +

Reshaping the operating model, not just the tech stack.

+
+ +
+
+
+
+ 09 / Transform +

Strategy & consulting

+

Where to play, how to win, and - most importantly - how to actually get the organization there. Strategy that comes with the team to deliver it.

+
+ Start with strategy + + +
+
+
+ +
+
+
+ 10 / Transform +

Experience design

+

Research, design, and product engineering for customer and employee experiences that move the needle on retention, satisfaction, and lifetime value.

+
+ See our design work + + +
+
+
+ +
+
+
+ 11 / Transform +

Sustainability

+

From Scope 3 measurement and circular supply chains to grid-edge optimization for utilities. Sustainability that's bookable as line items, not press releases.

+
+ Build a roadmap + + +
+
+
+ +
+
+
+ 12 / Transform +

Industry platforms

+

Pre-built, configurable platforms for banking core, claims, manufacturing operations, and citizen services - cutting time-to-value from years to months.

+
+ Browse platforms + + +
+
+
+
+
+
+ +
+
+

Bring us the problem you can't get past.

+ Start a conversation + + +
+
+ + +
+ + + + + + diff --git a/site/sustainability.html b/site/sustainability.html new file mode 100644 index 0000000..8c42c78 --- /dev/null +++ b/site/sustainability.html @@ -0,0 +1,320 @@ + + + + + + Sustainability - Trion Consultancy Services + + + + + + + + + + + + + + + + + + +
+
+
+ Sustainability +

A better tomorrow, built deliberately.

+

We've made specific, dated commitments across planet, people, and governance. They're measured, reported externally, and reviewed by the board every quarter.

+
+
+ +
+
+
+ Where we're focused +

Three pillars. Twenty-six commitments. One number we report against every quarter.

+
+
+
+
+
+ Planet +

Net-zero across owned operations by 2030.

+

Renewable electricity in all owned facilities by 2027; full Scope 3 reporting by 2028; net-zero across the supply chain by 2040.

+
+
+
+
+
+ People +

Equal opportunity by design.

+

45% women across global workforce by 2030; pay equity audited annually; mental health resources in all countries we operate.

+
+
+
+
+
+ Governance +

Trust as an operating discipline.

+

Independent board majority; third-party ethics audits annually; supplier code of conduct enforced through procurement.

+
+
+
+
+
+ +
+
+
+ Progress so far +

Numbers we're held to.

+
+
+
+
47%
+
Reduction in Scope 1 + 2 emissions since 2018
+
+
+
100%
+
Renewable electricity across owned operations by 2027
+
+
+
39.5%
+
Women in workforce; 38% in middle management
+
+
+
$2.4K
+
Per-employee annual learning budget, all geographies
+
+
+
+
+ +
+ +
+ +
+
+

Partner with us on what's next.

+ Talk to the ESG team + + +
+
+
+ + + + + + diff --git a/site/terms.html b/site/terms.html new file mode 100644 index 0000000..797d32a --- /dev/null +++ b/site/terms.html @@ -0,0 +1,260 @@ + + + + + + Terms of use - Trion Consultancy Services + + + + + + + + + + + + + + + + + + +
+
+
+ Legal +

Terms of use.

+

These terms govern your use of this website. By using the site you agree to them; if you do not, please stop using the site.

+
+
+ +
+
+ +
+
+
+ + + + + + diff --git a/site/vendors.html b/site/vendors.html new file mode 100644 index 0000000..0cdefaa --- /dev/null +++ b/site/vendors.html @@ -0,0 +1,299 @@ + + + + + + Vendors & suppliers - Trion Consultancy Services + + + + + + + + + + + + + + + + + + +
+
+
+ Vendors & suppliers +

Working with Trion procurement.

+

We work with thousands of suppliers globally, from hyperscalers to local hospitality vendors. This is how to register, get paid, and stay compliant.

+
+
+ +
+ +
+ +
+
+
+ Policies & standards +

What we expect from suppliers.

+
+
+
+

Code of conduct

+

Human rights, labor practices, anti-bribery, and environmental responsibility.

+
+
+

Information security

+

Baseline controls aligned to ISO 27001 / SOC 2; elevated controls for processors of client data.

+
+
+

Sustainability

+

Scope 1, 2, and material Scope 3 reporting for suppliers above $1M annual spend.

+
+
+
+
+ +
+
+
+
+ Procurement team +

Talk to a buyer.

+

For questions on category strategy, RFP timing, payment terms, or onboarding status, reach the regional procurement team.

+ procurement@trion.example + + +
+
+
+
+
+
+ + + + + +