:root{
  --navy-950:#06101f;--navy-900:#0a1b31;--navy-850:#102743;--navy-800:#173553;
  --blue:#48a7ff;--cyan:#53d8ff;--teal:#41d8be;--violet:#a68cff;--amber:#ffd37a;
  --white:#ffffff;--text:#eef6ff;--muted:#b9cbe0;--line:rgba(255,255,255,.14);
  --panel:rgba(15,39,67,.82);--panel2:rgba(21,52,84,.82);--shadow:0 18px 55px rgba(0,0,0,.28)
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue",Arial,sans-serif;font-weight:400}a{text-decoration:none;color:inherit}.public-body{background:#071426;color:#fff}.glass-nav{position:fixed;z-index:50;top:0;left:0;right:0;height:76px;display:flex;align-items:center;padding:0 5vw;background:linear-gradient(180deg,rgba(4,13,26,.55),transparent);transition:.3s}.glass-nav.scrolled{height:66px;background:rgba(6,18,34,.84);backdrop-filter:blur(18px);border-bottom:1px solid rgba(255,255,255,.12)}.brand{display:flex;gap:10px;align-items:center;min-width:230px}.brand-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:11px;background:linear-gradient(135deg,#34dca2,#32a0ff 55%,#b463ff);font-weight:700}.brand b,.brand-mark{letter-spacing:.11em;font-weight:600}.brand small{display:block;font-size:9px;letter-spacing:.15em;color:#d2e1ef;font-weight:400}.nav-links{display:flex;justify-content:center;gap:30px;flex:1}.nav-links>a,.nav-drop>button{background:none;border:0;color:#fff;padding:24px 0;font-weight:500;font-size:14px;cursor:pointer}.nav-drop{position:relative}.dropdown{position:absolute;top:60px;left:50%;transform:translateX(-50%);min-width:310px;padding:10px;border-radius:14px;background:rgba(8,25,47,.96);border:1px solid rgba(255,255,255,.12);opacity:0;visibility:hidden;transition:.2s}.nav-drop:hover .dropdown{opacity:1;visibility:visible}.dropdown a{display:block;padding:12px;border-radius:9px;font-size:14px}.dropdown a:hover{background:rgba(66,217,255,.12)}.login-btn{border:1px solid rgba(255,255,255,.38);background:rgba(255,255,255,.08);color:white;border-radius:999px;padding:8px 16px;font-weight:500;font-size:14px;cursor:pointer}.login-popover{position:absolute;right:5vw;top:67px;width:320px;padding:20px;border-radius:16px;background:rgba(8,25,47,.98);border:1px solid rgba(255,255,255,.14);opacity:0;visibility:hidden;transition:.2s}.login-popover.open{opacity:1;visibility:visible}.login-popover label,.form-grid label{display:grid;gap:7px;font-size:14px;color:#d7e5f2;margin:10px 0;font-weight:400}.login-popover input,.form-grid input,.form-grid select{width:100%;padding:12px 13px;border-radius:9px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.075);color:white;font-size:14px}.hero{min-height:100vh;display:flex;align-items:center;position:relative;background:url('../img/singapore-skyline.png') center/cover no-repeat}.hero-overlay{position:absolute;inset:0;background:linear-gradient(90deg,rgba(4,13,27,.94),rgba(4,13,27,.62) 45%,rgba(4,13,27,.22)),linear-gradient(0deg,rgba(5,16,31,.96),transparent 35%)}.hero-content{position:relative;z-index:1;width:min(820px,88vw);margin-left:7vw}.eyebrow{font-size:12px;letter-spacing:.18em;color:#76e3ff;font-weight:600}.hero h1{font-size:clamp(48px,6.3vw,92px);line-height:.95;letter-spacing:-.045em;margin:20px 0;font-weight:500}.hero h1 span{background:linear-gradient(90deg,#fff,#74e0ff);-webkit-background-clip:text;color:transparent}.hero-copy{font-size:19px;line-height:1.6;color:#e4edf6;max-width:700px}.hero-actions{display:flex;gap:12px;margin-top:30px}.btn{display:inline-flex;justify-content:center;align-items:center;padding:11px 17px;border:0;border-radius:11px;font-weight:500;font-size:14px;cursor:pointer;transition:.2s}.btn:hover{transform:translateY(-1px)}.btn.primary{background:linear-gradient(135deg,#38c7ff,#4f75ff);color:white;box-shadow:0 8px 24px rgba(54,133,255,.24)}.btn.glass,.btn.ghost{background:rgba(255,255,255,.075);color:white;border:1px solid rgba(255,255,255,.18)}.btn.ghost:hover{background:rgba(255,255,255,.13);border-color:rgba(255,255,255,.28)}.btn.small{padding:8px 12px;font-size:13px}.btn.full{width:100%}.section{padding:100px 7vw}.about{background:#f5f8fc;color:#12223a}.section-heading{max-width:850px}.section-heading h2{font-size:clamp(38px,5vw,66px);line-height:1.05;letter-spacing:-.035em;margin:12px 0 18px;font-weight:500}.section-heading>p:not(.eyebrow){font-size:18px;line-height:1.7;color:#566b81}.feature-grid,.ecosystem-grid{display:grid;gap:18px;margin-top:50px}.feature-grid{grid-template-columns:repeat(3,1fr)}.feature-grid article{background:white;border:1px solid #e2eaf3;border-radius:20px;padding:28px}.feature-grid h3{font-weight:500}.feature-grid p{color:#607188;line-height:1.6}.ecosystems{background:linear-gradient(180deg,#0b203b,#06111f)}.ecosystem-grid{grid-template-columns:repeat(5,1fr)}.eco-card{min-height:315px;border-radius:22px;padding:26px;background:linear-gradient(180deg,rgba(255,255,255,.09),rgba(255,255,255,.035));border:1px solid rgba(255,255,255,.12)}.eco-number{font-size:12px;letter-spacing:.15em;color:#66dcff;font-weight:600}.eco-card h3{font-size:24px;margin-top:70px;font-weight:500}.eco-card p{font-size:15px;line-height:1.65;color:#cfdae6}.technology{background:#f6f9fd;color:#14253d;display:grid;grid-template-columns:1.1fr .9fr;align-items:center;min-height:720px}.tech-copy h2{font-size:clamp(52px,7vw,90px);margin:8px 0;letter-spacing:-.055em;font-weight:500}.tech-copy h2 span{font-size:.25em;vertical-align:top}.tech-copy h3{font-size:25px;color:#31506e;font-weight:500}.tech-copy p{font-size:17px;line-height:1.7;color:#5c7085}.tech-pill-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px}.tech-pill-row span{padding:8px 12px;background:#e7f1fb;border-radius:999px;font-size:12px;font-weight:500}.tech-orbit{width:420px;height:420px;margin:auto;position:relative;border-radius:50%;display:grid;place-items:center}.core{width:150px;height:150px;border-radius:50%;background:linear-gradient(145deg,#102a4a,#081728);color:white;display:grid;place-content:center;text-align:center;box-shadow:0 0 70px rgba(49,147,255,.3)}.core b{font-size:48px;line-height:.9;color:#62ddff}.orbit{position:absolute;border:1px solid rgba(39,111,183,.18);border-radius:50%;display:flex;justify-content:center;animation:spin 18s linear infinite}.orbit span{transform:translateY(-50%);background:white;padding:5px 9px;border-radius:999px;font-size:10px;font-weight:600}.o1{width:250px;height:250px}.o2{width:330px;height:330px;animation-direction:reverse;animation-duration:25s}.o3{width:410px;height:410px;animation-duration:32s}@keyframes spin{to{transform:rotate(360deg)}}footer{padding:40px 7vw;background:#050e1a;display:flex;gap:30px;align-items:center;color:#a8bbcf;font-size:13px}.footer-brand{margin-right:auto}

/* ENTERPRISE INTERNAL UI */
.internal-body{min-height:100vh;background:radial-gradient(circle at 18% -10%,#214d7b 0,#0b213b 35%,#06111f 70%,#040a13 100%);color:var(--text);font-size:15px}.internal-header{min-height:84px;display:flex;justify-content:space-between;align-items:center;padding:11px 4vw;background:rgba(6,19,35,.88);border-bottom:1px solid var(--line);backdrop-filter:blur(18px);position:sticky;top:0;z-index:30;box-shadow:0 10px 30px rgba(0,0,0,.16)}.internal-header .left-tools,.internal-header .right-tools{display:flex;gap:10px;align-items:center}.brand-mark{font-size:17px;color:#fff}.back-key{display:inline-flex;align-items:center;gap:8px;padding:9px 13px;border-radius:10px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.18);font-size:14px;color:#fff;font-weight:500}.back-key:hover{background:rgba(255,255,255,.13)}.session-status{display:grid;gap:2px;text-align:right;min-width:255px;padding:7px 12px;border-left:1px solid rgba(255,255,255,.16)}.session-date{font-size:14px;color:#fff;font-weight:500;letter-spacing:.01em}.session-weather{font-size:13px;color:#9eeaff}.session-user{font-size:14px;color:#dfeaf5;font-weight:400}.session-user strong{font-weight:500;color:#fff}.dashboard-wrap{width:min(1220px,93vw);margin:30px auto 50px}.panel{width:min(1120px,93vw);margin:6vh auto;padding:31px;border-radius:20px;background:linear-gradient(145deg,rgba(17,44,75,.90),rgba(10,29,52,.90));border:1px solid rgba(255,255,255,.14);backdrop-filter:blur(18px);box-shadow:var(--shadow)}.panel.narrow{width:min(580px,92vw)}.dashboard-wrap .panel{width:100%;margin:0 0 18px}.panel h1{font-size:clamp(30px,3.8vw,48px);font-weight:400;letter-spacing:-.025em;margin:8px 0 10px}.panel h2{font-size:24px;font-weight:500;letter-spacing:-.01em}.panel p{font-size:16px;line-height:1.65;color:#cfdae6}.form-grid{display:grid;gap:12px}.form-grid.two{grid-template-columns:1fr 1fr}.alert{padding:12px 14px;border-radius:9px;margin:12px 0;font-size:14px}.alert.success{background:rgba(82,226,163,.15);color:#d5ffea;border:1px solid rgba(82,226,163,.25)}.alert.error{background:rgba(255,94,120,.15);color:#ffd6dd;border:1px solid rgba(255,94,120,.25)}.dash-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.dash-card{min-height:170px;border-radius:18px;padding:23px;border:1px solid rgba(255,255,255,.14);display:flex;flex-direction:column;justify-content:flex-end;position:relative;overflow:hidden;box-shadow:0 14px 30px rgba(0,0,0,.14);transition:.2s}.dash-card:before{content:"";position:absolute;inset:0;background:linear-gradient(145deg,rgba(255,255,255,.12),transparent 42%);pointer-events:none}.dash-card:hover{transform:translateY(-3px);border-color:rgba(255,255,255,.28)}.dash-card.cyan{background:linear-gradient(145deg,#0c6380,#123f63)}.dash-card.purple{background:linear-gradient(145deg,#55428f,#253968)}.dash-card.amber{background:linear-gradient(145deg,#8a5d21,#3c3757)}.dash-card.emerald{background:linear-gradient(145deg,#176c63,#173f5d)}.dash-card.blue{background:linear-gradient(145deg,#245f9b,#243b6e)}.dash-card b{font-size:23px;font-weight:500;position:relative}.dash-card span{font-size:14px;color:#e0ebf5;margin-top:8px;line-height:1.45;position:relative}.table-wrap{overflow:auto;border:1px solid rgba(255,255,255,.09);border-radius:13px;margin-top:14px}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:14px 13px;border-bottom:1px solid rgba(255,255,255,.09)}th{color:#b8cce0;font-size:12px;font-weight:500;letter-spacing:.05em;background:rgba(255,255,255,.035)}tbody tr:hover{background:rgba(255,255,255,.035)}td small{display:block;color:#a9bdd1;font-size:12px;margin-top:3px}.role-badge{padding:6px 9px;border-radius:999px;background:rgba(83,216,255,.12);border:1px solid rgba(83,216,255,.18);color:#a7edff;font-size:11px;font-weight:500}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin-top:25px}.metric-grid div{padding:20px;border-radius:14px;background:linear-gradient(145deg,rgba(47,105,158,.35),rgba(255,255,255,.04));border:1px solid rgba(255,255,255,.11)}.metric-grid b{display:block;font-size:28px;font-weight:500}.metric-grid span{font-size:13px;color:#b7cadc}.create-user{margin:20px 0}.create-user summary{cursor:pointer;font-size:15px;font-weight:500;color:#dff4ff}.mobile-toggle{display:none}
@media(max-width:900px){.ecosystem-grid,.feature-grid,.technology,.dash-grid,.metric-grid{grid-template-columns:1fr}.tech-orbit{margin-top:40px}.nav-links{display:none;position:absolute;top:66px;left:12px;right:12px;flex-direction:column;background:rgba(6,18,34,.98);padding:12px;border-radius:14px}.nav-links.open{display:flex}.mobile-toggle{display:block;margin-left:auto;margin-right:10px;background:none;border:0;color:white;font-size:22px}.brand{min-width:0}.login-popover{left:16px;right:16px;width:auto}.form-grid.two{grid-template-columns:1fr}footer{flex-direction:column;align-items:flex-start}.internal-header{align-items:flex-start;gap:12px;flex-direction:column;padding:12px 4vw}.internal-header .left-tools,.internal-header .right-tools{width:100%;flex-wrap:wrap}.internal-header .right-tools{justify-content:space-between}.session-status{order:-1;text-align:left;border-left:0;padding:3px 0;min-width:0;flex:1}.dashboard-wrap{margin-top:20px}.panel{padding:24px}.tech-orbit{width:330px;height:330px}.o3{width:330px;height:330px}.o2{width:275px;height:275px}.o1{width:220px;height:220px}}


/* v1.5 ACCESSIBILITY TEXT-SIZE CONTROL */
.text-size-control{display:inline-flex;align-items:center;gap:5px;padding:5px 6px;border-radius:10px;background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.15);box-shadow:inset 0 1px 0 rgba(255,255,255,.05)}
.text-size-btn{width:32px;height:30px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.16);border-radius:8px;background:rgba(255,255,255,.075);color:#fff;font:400 20px/1 Arial,sans-serif;cursor:pointer;transition:background .18s,border-color .18s,transform .18s}
.text-size-btn:hover:not(:disabled){background:rgba(97,216,255,.16);border-color:rgba(107,224,255,.42);transform:translateY(-1px)}
.text-size-btn:focus-visible{outline:2px solid #76e3ff;outline-offset:2px}
.text-size-btn:disabled{opacity:.34;cursor:not-allowed}
.text-size-readout{min-width:42px;text-align:center;color:#cfe8f7;font-size:11px!important;font-weight:500;letter-spacing:.02em;font-variant-numeric:tabular-nums}
@media(max-width:900px){.text-size-control{margin-left:auto}.text-size-btn{width:34px;height:32px}.text-size-readout{min-width:40px}}

/* v1.6 SINGAPORE TIME-OF-DAY SKYLINE
   Keeps the existing singapore-skyline.png unchanged.
   Only the rendering treatment evolves with Singapore time. */
.hero{
  background:none;
  isolation:isolate;
  overflow:hidden;
}
.hero::before{
  content:"";
  position:absolute;
  inset:-2px;
  z-index:-3;
  background:url('../img/singapore-skyline.png') center/cover no-repeat;
  filter:
    brightness(var(--hero-brightness,1))
    contrast(var(--hero-contrast,1))
    saturate(var(--hero-saturation,1))
    sepia(var(--hero-sepia,0));
  transform:scale(1.006);
  transition:filter 80s linear;
  will-change:filter;
}
.hero::after{
  content:"";
  position:absolute;
  inset:0;
  z-index:-2;
  pointer-events:none;
  background:
    linear-gradient(var(--hero-tint-angle,180deg),var(--hero-tint-a,rgba(0,0,0,0)),var(--hero-tint-b,rgba(0,0,0,0))),
    radial-gradient(circle at 68% 20%,var(--hero-glow,rgba(255,255,255,0)) 0,transparent 38%);
  opacity:var(--hero-tint-opacity,.12);
  transition:background 80s linear,opacity 80s linear;
  will-change:background,opacity;
}
.hero-overlay{
  z-index:-1;
  background:
    linear-gradient(90deg,
      rgba(4,13,27,var(--hero-left-shade,.86)),
      rgba(4,13,27,var(--hero-mid-shade,.48)) 45%,
      rgba(4,13,27,var(--hero-right-shade,.16))),
    linear-gradient(0deg,
      rgba(5,16,31,var(--hero-bottom-shade,.88)),
      transparent 38%);
  transition:background 80s linear;
}
.hero-content{z-index:1}

/* Accessibility: users who prefer reduced motion still get the correct
   time-of-day state, but without the long visual interpolation. */
@media (prefers-reduced-motion:reduce){
  .hero::before,.hero::after,.hero-overlay{transition:none}
}
