/* NGM COE Portal — front end. Colours come from --coe-primary / --coe-accent (Settings). */
.coe{--coe-radius:14px;--coe-line:#e5e7eb;--coe-muted:#64748b;--coe-soft:#f8fafc;box-sizing:border-box;font-family:inherit;color:inherit}
.coe *,.coe *::before,.coe *::after{box-sizing:inherit}
.coe a{text-decoration:none}
.coe-ico{flex:none;width:22px;height:22px}
.coe-home{max-width:1200px;margin:0 auto 40px;display:flex;flex-direction:column;gap:22px}

/* Hero */
.coe-hero{display:flex;align-items:center;gap:22px;padding:30px 32px;border-radius:var(--coe-radius);background:linear-gradient(135deg,var(--coe-primary) 0%,color-mix(in srgb,var(--coe-primary) 70%,#000) 100%);color:var(--coe-on-primary);position:relative;overflow:hidden}
.coe-hero::after{content:"";position:absolute;right:-60px;top:-60px;width:260px;height:260px;border-radius:50%;background:var(--coe-accent);opacity:.14}
.coe-hero__logo{width:88px;height:88px;object-fit:contain;background:#fff;border-radius:12px;padding:8px;flex:none}
.coe-hero__text{flex:1;min-width:0;position:relative;z-index:1}
.coe-hero__eyebrow{display:block;font-size:14px;letter-spacing:.06em;text-transform:uppercase;opacity:.85;margin-bottom:6px}
.coe .coe-hero__title{margin:0;font-size:clamp(22px,3.2vw,34px);line-height:1.2;color:inherit}
.coe-hero__tag{margin:8px 0 0;opacity:.9;max-width:62ch}
.coe-hero__main{position:relative;z-index:1;display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border-radius:999px;background:var(--coe-accent);color:var(--coe-on-accent)!important;font-weight:600;white-space:nowrap}
.coe-hero__main:hover{filter:brightness(1.05)}

/* Ticker */
.coe-ticker{display:flex;align-items:center;gap:0;border:1px solid var(--coe-line);border-radius:999px;background:#fff;overflow:hidden;min-height:46px}
.coe-ticker__label{display:inline-flex;align-items:center;gap:6px;align-self:stretch;padding:0 16px;background:var(--coe-accent);color:var(--coe-on-accent);font-weight:700;font-size:14px;flex:none}
.coe-ticker__label .coe-ico{width:18px;height:18px}
.coe-ticker__viewport{flex:1;overflow:hidden;min-width:0;mask-image:linear-gradient(90deg,transparent,#000 24px,#000 calc(100% - 24px),transparent)}
.coe-ticker__track{display:inline-flex;gap:36px;white-space:nowrap;padding-left:24px;animation:coe-scroll 40s linear infinite}
.coe-ticker__dup{display:inline-flex;gap:36px}
.coe-ticker:hover .coe-ticker__track,.coe-ticker:focus-within .coe-ticker__track{animation-play-state:paused}
.coe-ticker__track a{color:inherit;display:inline-flex;align-items:center;gap:8px}
.coe-ticker__track a:hover{color:var(--coe-primary);text-decoration:underline}
.coe-ticker__all{flex:none;padding:0 16px;font-weight:600;color:var(--coe-primary)}
@keyframes coe-scroll{to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){.coe-ticker__track{animation:none;flex-wrap:wrap;white-space:normal}.coe-ticker__dup{display:none}}

/* Tiles */
.coe-tiles{display:grid;grid-template-columns:repeat(var(--coe-cols,4),minmax(0,1fr));gap:14px}
.coe-tile{display:flex;align-items:flex-start;gap:14px;padding:18px;border:1px solid var(--coe-line);border-radius:var(--coe-radius);background:#fff;color:inherit;transition:border-color .15s,box-shadow .15s,transform .15s;position:relative}
.coe-tile:hover,.coe-tile:focus-visible{border-color:var(--coe-primary);box-shadow:0 8px 24px -12px rgba(15,23,42,.35);transform:translateY(-2px)}
.coe-tile__icon{display:grid;place-items:center;width:46px;height:46px;border-radius:12px;background:color-mix(in srgb,var(--coe-primary) 10%,#fff);color:var(--coe-primary);flex:none}
.coe-tile__text{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}
.coe-tile__text strong{font-size:16px;line-height:1.3;color:var(--coe-primary)}
.coe-tile__text span{font-size:14px;color:var(--coe-muted);line-height:1.45}
.coe-tile__go{color:var(--coe-muted);align-self:center;transition:transform .15s}
.coe-tile__go .coe-ico{width:18px;height:18px}
.coe-tile:hover .coe-tile__go{transform:translateX(3px);color:var(--coe-primary)}

/* Columns & panels */
.coe-home__cols{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:22px;align-items:start}
.coe-home__side{display:flex;flex-direction:column;gap:22px}
.coe-panel{border:1px solid var(--coe-line);border-radius:var(--coe-radius);background:#fff;padding:20px 22px}
.coe-panel__head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:12px}
.coe .coe-panel__head h2{margin:0;font-size:19px;color:var(--coe-primary)}
.coe-panel__head a{font-weight:600;font-size:14px;color:var(--coe-primary)}
.coe-side__title{margin:0 0 12px;font-size:17px;color:var(--coe-primary)}
.coe-side__sub{margin:16px 0 8px;font-size:14px;text-transform:uppercase;letter-spacing:.05em;color:var(--coe-muted)}
.coe-empty{padding:18px;border:1px dashed #cbd5e1;border-radius:10px;text-align:center;color:var(--coe-muted);margin:0}

/* Notices */
.coe-notices{list-style:none;margin:0;padding:0}
.coe-notice{display:flex;gap:14px;padding:12px 0;border-top:1px solid var(--coe-line)}
.coe-notice:first-child{border-top:0;padding-top:0}
.coe-notice.is-pinned .coe-notice__date{background:var(--coe-accent);color:var(--coe-on-accent)}
.coe-notice__date{display:flex;flex-direction:column;align-items:center;justify-content:center;width:54px;height:54px;border-radius:10px;background:var(--coe-soft);color:var(--coe-primary);flex:none;line-height:1.05}
.coe-notice__date strong{font-size:20px}
.coe-notice__date span{font-size:12px;text-transform:uppercase}
.coe-notice__body{min-width:0;flex:1}
.coe-notice__title{font-weight:600;color:inherit;line-height:1.4}
.coe-notice__title:hover{color:var(--coe-primary);text-decoration:underline}
.coe-notice__excerpt{margin:4px 0 0;font-size:14px;color:var(--coe-muted)}
.coe-notice__meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.coe-chip{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600;background:#eef2ff;color:#3730a3;line-height:1.6}
.coe-chip--new{background:#dc2626;color:#fff;animation:coe-pulse 2s ease-in-out infinite}
.coe-chip--pdf{background:#fee2e2;color:#991b1b}
.coe-chip--exam{background:#e0f2fe;color:#075985}
.coe-chip--results{background:#dcfce7;color:#166534}
.coe-chip--timetable{background:#fef3c7;color:#92400e}
.coe-chip--fees{background:#fce7f3;color:#9d174d}
.coe-chip--circular{background:#ede9fe;color:#5b21b6}
.coe-chip--general{background:#f1f5f9;color:#334155}
@keyframes coe-pulse{50%{opacity:.7}}
@media (prefers-reduced-motion:reduce){.coe-chip--new{animation:none}}
.coe-filter{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px}
.coe-filter a{padding:6px 14px;border:1px solid var(--coe-line);border-radius:999px;color:inherit;font-size:14px}
.coe-filter a.is-active,.coe-filter a:hover{background:var(--coe-primary);border-color:var(--coe-primary);color:var(--coe-on-primary)}
.coe-notices-page{max-width:900px;margin:0 auto}

/* Upcoming exams */
.coe-exams,.coe-links{list-style:none;margin:0;padding:0}
.coe-exam{display:flex;gap:12px;padding:10px 0;border-top:1px solid var(--coe-line)}
.coe-exam:first-child{border-top:0;padding-top:0}
.coe-exam__date{display:flex;flex-direction:column;align-items:center;justify-content:center;width:48px;height:48px;border-radius:10px;border:1px solid var(--coe-line);color:var(--coe-primary);flex:none;line-height:1.05}
.coe-exam__date strong{font-size:18px}
.coe-exam__date span{font-size:11px;text-transform:uppercase}
.coe-exam.is-today .coe-exam__date{background:var(--coe-accent);border-color:var(--coe-accent);color:var(--coe-on-accent)}
.coe-exam__body{display:flex;flex-direction:column;min-width:0}
.coe-exam__title{font-weight:600;color:inherit}
.coe-exam__title:hover{color:var(--coe-primary);text-decoration:underline}
.coe-exam__meta{font-size:13px;color:var(--coe-muted)}
.coe-links li+li{border-top:1px solid var(--coe-line)}
.coe-links a{display:flex;align-items:center;gap:10px;padding:8px 0;color:inherit}
.coe-links a:hover{color:var(--coe-primary)}
.coe-links .coe-ico{color:var(--coe-primary);width:18px;height:18px}

/* Contact */
.coe-contact ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.coe-contact li{display:flex;gap:10px;align-items:flex-start;font-size:15px;line-height:1.45;overflow-wrap:anywhere}
.coe-contact .coe-ico{color:var(--coe-primary);width:18px;height:18px;margin-top:2px}
.coe-contact a{color:inherit}
.coe-contact a:hover{color:var(--coe-primary);text-decoration:underline}

@media (max-width:1000px){
  .coe-tiles{grid-template-columns:repeat(min(var(--coe-cols,4),3),minmax(0,1fr))}
  .coe-home__cols{grid-template-columns:1fr}
}
@media (max-width:700px){
  .coe-hero{flex-direction:column;align-items:flex-start;padding:24px 20px}
  .coe-hero__logo{width:64px;height:64px}
  .coe-tiles{grid-template-columns:1fr 1fr;gap:10px}
  .coe-tile{flex-direction:column;padding:14px;gap:10px}
  .coe-tile__go{display:none}
  .coe-panel{padding:16px}
}
@media (max-width:420px){.coe-tiles{grid-template-columns:1fr}.coe-tile{flex-direction:row;align-items:center}.coe-tile__text span{display:none}}
@media (max-width:700px){.coe-home.alignwide{padding-inline:12px}}
@media print{.coe-ticker,.coe-tile__go{display:none}.coe-hero{background:none;color:#000;border:1px solid #000}}
