.sp-shell{--sp-ink:#183332;--sp-green:#065e58;--sp-light:#eff8f5;--sp-border:#cdded8;max-width:1120px;margin-inline:auto;color:var(--sp-ink);line-height:1.6}
.sp-shell :is(h1,h2,h3){color:inherit;line-height:1.12}
.sp-shell a{color:var(--sp-green);text-underline-offset:.18em}
.sp-shell :focus-visible{outline:3px solid #98630a;outline-offset:3px}
.sp-hero{border-radius:1.4rem;padding:clamp(1.5rem,5.5vw,4.5rem);background:radial-gradient(ellipse at 95% 100%,#187669 0%,transparent 56%),linear-gradient(125deg,#103a3c,#135a53);color:#fff}
.sp-hero h1{font-size:clamp(3rem,8vw,6.7rem);letter-spacing:-.07em;margin:.15em 0}
.sp-hero span{color:#f3c476}
.sp-hero p{max-width:38ch}
.sp-hero-small{padding:1rem 1.4rem}
.sp-hero .sp-brand{font-size:clamp(1.4rem,4vw,2.4rem);font-weight:750;color:#fff;text-decoration:none;letter-spacing:-.04em}
.sp-tag{font-size:.78rem;font-weight:750;letter-spacing:.1em;text-transform:uppercase;margin:0 0 .5rem}
.sp-actions,.sp-nav,.sp-section-header,.sp-search{display:flex;flex-wrap:wrap;gap:.65rem 1rem;align-items:center}
.sp-actions{margin:1rem 0}
.sp-nav{margin:1rem 0 2rem;border-bottom:1px solid var(--sp-border);padding-bottom:.75rem}
.sp-nav a{padding:.36rem .75rem;border-radius:1rem;font-weight:650;text-decoration:none}
.sp-nav a[aria-current=page],.sp-nav a:hover{background:var(--sp-light)}
.sp-section-header{justify-content:space-between}
.sp-section-header h2{margin:0}
.sp-home-section{margin:2rem 0 2.7rem}
.sp-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,245px),1fr));gap:1rem;margin-top:1rem}
.sp-card,.sp-invite{border:1px solid var(--sp-border);border-radius:1rem;overflow:hidden}
.sp-card img{display:block;width:100%;aspect-ratio:16/9;object-fit:cover}
.sp-card-text,.sp-invite{padding:1rem 1.25rem}
.sp-card h3{font-size:1.25rem;margin:.2rem 0}
.sp-card-text p:last-child{margin-bottom:0}
.sp-invite{background:var(--sp-light);margin-bottom:2rem}
.sp-shell .sp-button{display:inline-block;border:1px solid transparent;border-radius:.55rem;background:var(--sp-green);color:#fff;padding:.52rem .9rem;font:inherit;font-weight:650;text-decoration:none;cursor:pointer}
.sp-shell .sp-button:hover{filter:brightness(.92)}
.sp-shell .sp-light{background:#f5fdfb;color:#103a3c}
.sp-shell .sp-outline{background:transparent;color:#fff;border-color:#b6d8d2}
.sp-detail{max-width:820px}
.sp-detail .sp-tag{margin-top:1.4rem}
.sp-description{white-space:pre-wrap;overflow-wrap:anywhere}
.sp-gallery{display:grid;gap:.85rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr))}
.sp-gallery img{width:100%;max-height:460px;object-fit:contain;background:var(--sp-light);border-radius:.65rem}
.sp-info dt{font-weight:700}
.sp-info dd{margin:0 0 .5rem}
.sp-form{display:grid;gap:1rem;max-width:760px;padding:1rem 0}
.sp-form label,.sp-search label{display:grid;gap:.25rem;font-weight:600}
.sp-form :is(input,select,textarea),.sp-search input{box-sizing:border-box;max-width:100%;width:100%;border:1px solid #718982;border-radius:.4rem;padding:.42rem .6rem;background:#fff;color:var(--sp-ink);font:inherit}
.sp-form fieldset{display:grid;gap:.75rem;border:1px solid var(--sp-border);border-radius:.6rem;padding:1rem;min-width:0}
.sp-form legend{float:none;width:auto;margin:0;font-size:1rem;font-weight:700}
.sp-form .sp-check{display:flex;align-items:center}
.sp-form .sp-check input{width:auto}
.sp-search{align-items:end;margin-block:1rem}
.sp-thumb img{max-width:165px;border-radius:.45rem}
.sp-management{list-style:none;padding:0;margin:1rem 0}
.sp-management li{display:flex;align-items:center;justify-content:space-between;gap:.8rem;padding:.65rem .9rem;border-bottom:1px solid var(--sp-border)}
.sp-management small{display:block}
.sp-muted{color:#475d5a}
.sp-admin{padding:1.1rem}

/* Portal identity and component layout */
.sp-shell{--sp-ink:#15363b;--sp-green:#135e64;--sp-light:#edf5f1;--sp-border:#d6e4de;max-width:1240px;font-family:system-ui,sans-serif}
.sp-public{padding:clamp(.5rem,2vw,1.5rem);padding-bottom:2.5rem}
.sp-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);align-items:center;gap:clamp(1rem,3vw,3.5rem);padding:clamp(1.35rem,4vw,3.5rem);background:radial-gradient(ellipse at 95% 100%,#225e63,transparent 62%),#143d43;box-shadow:0 16px 42px #173e4320}
.sp-hero h1{font-family:Georgia,serif;font-size:clamp(3rem,7vw,6.4rem);font-weight:600;line-height:.93;letter-spacing:-.06em;margin:.27em 0}
.sp-hero-copy>p:not(.sp-tag){font-size:clamp(1rem,1.6vw,1.25rem);color:#e6eeea;margin-block:1.35rem}
.sp-hero .sp-tag{color:#d0e5dc}
.sp-hero-art{position:relative;margin:0;overflow:hidden;border-radius:1rem;border:1px solid #ffffff45;background:#a8cac8}
.sp-hero-art img{display:block;width:100%;height:auto}
.sp-hero-art figcaption{position:absolute;left:.65rem;bottom:.65rem;padding:.25rem .7rem;border-radius:1rem;background:#143d43;color:#fff;font-size:.73rem;font-weight:650}
.sp-hero-small{display:block;padding:1rem 1.4rem}
.sp-nav{gap:.4rem;margin:1.1rem 0 1.55rem;padding:.45rem;border:1px solid var(--sp-border);border-radius:.85rem;background:#fff}
.sp-nav a{border-radius:.55rem;padding:.4rem .75rem}
.sp-nav a[aria-current=page]{background:#dceee8;color:#113f45}
.sp-quick,.sp-home-sections{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}
.sp-shell .sp-quick-card{position:relative;display:grid;gap:.22rem;padding:1rem 2rem 1rem 1.1rem;background:#edf5f1;color:var(--sp-ink);border:1px solid var(--sp-border);border-radius:.85rem;text-decoration:none}
.sp-shell .sp-quick-card:nth-child(2){background:#f9f2e5}
.sp-shell .sp-quick-card:nth-child(3){background:#eaf2f6}
.sp-shell .sp-quick-card:hover{border-color:var(--sp-green)}
.sp-index{color:#36646a;font-size:.72rem;font-weight:750;letter-spacing:.09em}
.sp-arrow{position:absolute;right:1rem;top:.95rem;font-size:1.2rem}
.sp-quick-card strong{font-size:1.15rem}
.sp-quick-card small{font-size:.86rem}
.sp-home-sections{grid-template-columns:repeat(2,minmax(0,1fr));margin:1.6rem 0}
.sp-home-section{background:#fff;border:1px solid var(--sp-border);border-radius:.95rem;padding:clamp(.95rem,2vw,1.4rem);margin:0;min-width:0}
.sp-section-notice{grid-column:1/-1;border-left:.3rem solid #b88339}
.sp-section-header h2,.sp-invite h2{font-family:Georgia,serif;font-size:clamp(1.45rem,3vw,2.15rem);letter-spacing:-.025em}
.sp-section-header a{font-size:.85rem;font-weight:700}
.sp-empty{background:#f4f7f5;padding:.8rem .95rem;border-radius:.6rem;color:#425e60;margin:1rem 0 0;font-size:.95rem}
.sp-invite{background:#e5f1eb;padding:clamp(1rem,3vw,2rem);margin:0}
.sp-invite h2{margin-top:0}
.sp-detail,.sp-admin-box,.sp-form{background:#fff;border:1px solid var(--sp-border);border-radius:1rem;padding:clamp(1rem,3vw,1.8rem)}
.sp-detail{margin:0 auto}
.sp-form{margin:1rem 0}
.sp-admin-heading{background:#143d43;color:#fff;border-radius:1rem;padding:clamp(1rem,3vw,2rem)}
.sp-admin-heading h1{margin:.35rem 0;font-family:Georgia,serif}
.sp-admin-heading p:last-child{margin:0;color:#e5f2ee}
.sp-admin-box h2{margin:0 0 .65rem;font-size:1.3rem}
.sp-management li:nth-child(odd){background:#f4f8f6}
@media(max-width:680px){
  .sp-hero,.sp-home-sections{grid-template-columns:minmax(0,1fr)}
  .sp-hero-art img{height:clamp(135px,40vw,205px);object-fit:cover;object-position:center 58%}
  .sp-quick{grid-template-columns:minmax(0,1fr);gap:.55rem}
  .sp-shell .sp-quick-card{grid-template-columns:1.8rem 1fr;align-items:center;padding:.55rem .8rem}
  .sp-quick-card small{grid-column:2}
  .sp-arrow{right:.8rem;top:.55rem}
  .sp-nav{gap:.15rem}
  .sp-nav a{padding:.34rem .55rem;font-size:.88rem}
}

.sp-auth{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);margin:1rem auto;max-width:960px;border:1px solid var(--sp-border);border-radius:1.2rem;overflow:hidden;box-shadow:0 18px 55px #173e4320}
.sp-auth-aside{display:flex;flex-direction:column;justify-content:center;background:#143d43;color:#f7fcfa;padding:clamp(1.4rem,4vw,3rem)}
.sp-auth-aside a{color:inherit;margin-bottom:1.7rem}
.sp-auth-aside h2{font:600 clamp(2.4rem,5vw,4.7rem)/.95 Georgia,serif;margin:.15em 0;letter-spacing:-.05em}
.sp-auth-aside img{width:100%;height:auto;border-radius:.65rem;margin-top:1rem}
.sp-auth-main{background:#fff;padding:clamp(1.4rem,4vw,3rem)}
.sp-auth-main h1{font-family:Georgia,serif;font-size:clamp(2rem,4vw,3.1rem);margin:.25em 0}
.sp-auth-form{display:grid;gap:1rem;margin:1.4rem 0}
.sp-auth-form label{display:block;font-weight:650}
.sp-auth-form input:not([type=hidden],[type=checkbox],[type=radio]),.sp-auth-form select{box-sizing:border-box;width:100%;border:1px solid #849e98;border-radius:.45rem;padding:.55rem .7rem;color:var(--sp-ink);background:#f8fcfa}
.sp-auth-form .control-group{margin:0}
.sp-auth-form .sp-button{justify-self:start}
.sp-auth-links{display:flex;flex-wrap:wrap;gap:.6rem 1.2rem;font-size:.9rem}
.sp-users li{flex-wrap:wrap}
.sp-users li>div{min-width:min(100%,14rem);overflow-wrap:anywhere}
.sp-role{border-radius:1rem;background:#e1efe8;padding:.23rem .65rem;font-size:.83rem}
@media(max-width:680px){.sp-auth{grid-template-columns:minmax(0,1fr)}.sp-auth-aside img{display:none}.sp-auth-aside a{margin-bottom:.8rem}}

.sp-nav .sp-nav-register{margin-inline-start:auto}
.sp-shell .sp-button-secondary{color:#174a4f;background:#e5f1eb;border-color:#abcfc4}
.sp-auth-join{margin-top:1.4rem;padding:1rem 1.15rem;border:1px solid var(--sp-border);border-radius:.8rem;background:var(--sp-light)}
.sp-auth-join strong{font-size:1.05rem}
.sp-auth-join p{margin:.25rem 0 .75rem}
.sp-create-box{margin-bottom:1rem}
.sp-create-box .sp-actions{margin-bottom:0}
@media(max-width:680px){.sp-nav .sp-nav-register{margin-inline-start:0}}

.sp-auth-feedback{margin:1rem 0;padding:1rem 1.15rem;border:1px solid #ebc7b9;border-inline-start:4px solid #a84331;border-radius:.65rem;background:#fff3ed;color:#6c2a23}
.sp-auth-feedback strong{display:block;margin-bottom:.35rem}
.sp-auth-feedback ul{padding-inline-start:1.15rem;margin:0}
.sp-auth-feedback p{margin:0}
.sp-auth-success{border-color:#c2ded1;border-inline-start-color:#267663;background:#edf8f2;color:#184c3e}

.sp-member{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:1rem;border-radius:1rem;padding:clamp(1.25rem,4vw,2.5rem);background:linear-gradient(125deg,#143d43,#23636a);color:#fff}
.sp-member h1{font:600 clamp(2.25rem,5vw,3.7rem)/1 Georgia,serif;margin:.25rem 0 .65rem}
.sp-member p:last-child{margin:0;color:#e2f3ec}
.sp-member form{margin:0}
