:root{--color-canvas:#f5f6f4;--color-surface:#fff;--color-card:#fff;--color-ink:#172033;--color-text-secondary:#526070;--color-text-muted:#778291;--color-divider:#e6e9e6;--color-accent-harbour:#0b6b8a;--color-accent-harbour-soft:#e7f2f5;--radius-card:10px;--radius-pill:10px;--radius-image:10px;--shadow-card:0 3px 12px #1720330d, 0 18px 36px #17203312;--shadow-button:0 7px 16px #0b6b8a2e;--shadow-floating:0 8px 24px #17203314, 0 24px 56px #1720331a;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-7:28px;--space-8:32px;--space-10:40px;--space-12:48px;--space-14:56px;--space-section:64px;--space-section-desktop:80px;--container-width:1200px;--mobile-padding:16px;--desktop-padding:24px;--card-gap:24px;--card-gap-mobile:16px;--border-width-default:1px;--control-height-desktop:56px;--control-height-mobile:52px;--touch-target-min:44px;--canvas:var(--color-canvas);--surface:var(--color-surface);--ink:var(--color-ink);--secondary:var(--color-text-secondary);--muted:var(--color-text-muted);--divider:var(--color-divider);--harbour:var(--color-accent-harbour);--harbour-soft:var(--color-accent-harbour-soft);--shadow-float:var(--shadow-floating);--container:var(--container-width)}
*,:before,:after{box-sizing:border-box}html,body{min-width:0;margin:0;overflow-x:clip}img{max-width:100%;display:block}button,input,textarea,select{font:inherit}
:root{--font-family-base:"Noto Sans SC", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;--font-size-display:48px;--font-size-h1:40px;--font-size-h2:28px;--font-size-h3:20px;--font-size-body:16px;--font-size-caption:14px;--font-size-metadata:12px;--line-height-display:1.15;--line-height-h1:1.2;--line-height-h2:1.25;--line-height-h3:1.35;--line-height-body:1.65;--line-height-caption:1.5;--line-height-metadata:1.4}@media (max-width:600px){:root{--font-size-display:36px;--font-size-h1:30px;--font-size-h2:24px;--font-size-h3:18px}}
.container{max-width:var(--container-width);padding-inline:var(--desktop-padding);width:100%;margin-inline:auto}.section{padding-block:var(--space-section-desktop)}.grid{gap:var(--card-gap);display:grid}.collection-layout{align-items:start;gap:var(--card-gap);grid-template-columns:minmax(0,1fr) minmax(0,3fr);display:grid}.section-head{align-items:start;gap:var(--space-4);justify-content:space-between;display:flex}@media (max-width:768px){.container{padding-inline:var(--mobile-padding)}.section{padding-block:var(--space-section)}.collection-layout{grid-template-columns:minmax(0,1fr)}.grid{gap:var(--card-gap-mobile)}.section-head{flex-direction:column}}
.btn{border:var(--border-width-default) solid transparent;border-radius:var(--radius-pill);cursor:pointer;font:inherit;min-height:var(--touch-target-min);padding:var(--space-3) var(--space-5);white-space:nowrap;background:0 0;justify-content:center;align-items:center;font-weight:700;transition:background-color .16s,border-color .16s,color .16s,box-shadow .16s;display:inline-flex}.btn-primary{background:var(--color-accent-harbour);box-shadow:var(--shadow-button);color:var(--color-surface)}.btn-primary:hover{box-shadow:var(--shadow-floating)}.btn-secondary{background:var(--color-surface);border-color:var(--color-divider);color:var(--color-ink)}.btn-text{color:var(--color-accent-harbour);padding-inline:0}.btn:focus-visible,.text-input:focus-visible{outline:var(--border-width-default) solid var(--color-accent-harbour);outline-offset:var(--space-1)}.btn:disabled,.btn[aria-busy=true]{cursor:not-allowed;opacity:.55}.text-input{background:var(--color-surface);border:var(--border-width-default) solid var(--color-divider);border-radius:var(--radius-pill);color:var(--color-ink);min-height:var(--touch-target-min);padding:var(--space-3) var(--space-4)}.text-input::placeholder{color:var(--color-text-muted)}.text-input[aria-invalid=true]{border-color:var(--color-accent-harbour)}.programme-card,.institution-card,.article-card,.detail-panel,.filter-panel{background:var(--color-card);border-radius:var(--radius-card);box-shadow:var(--shadow-card);color:var(--color-ink);overflow:hidden}.card-image{background:var(--color-canvas);border-radius:var(--radius-image);overflow:hidden}.card-image img{object-fit:cover;width:100%;height:100%}.card-visual{object-fit:cover;width:100%;display:block}.logo-visual{background:var(--color-surface);object-fit:contain;padding:var(--space-4)}@media (max-width:600px){.btn{width:100%}.site-header .btn,.btn-text,.card-save{width:auto}}
