:root{--bg:#f5faf4;--surface:#fff;--surface-2:#eaf6eb;--text:#10251a;--muted:#698071;--line:rgba(16,37,26,.12);--accent:#28b85a;--accent-dark:#087336;--shadow:0 18px 50px rgba(10,64,30,.1)}
html[data-theme=dark]{--bg:#07100b;--surface:#0e1b13;--surface-2:#142a1c;--text:#effbf1;--muted:#9ab7a3;--line:rgba(255,255,255,.12);--accent:#56e27f;--accent-dark:#1e7540;--shadow:0 18px 50px rgba(0,0,0,.28)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font:400 15px/1.6 'DM Sans',sans-serif;transition:.3s ease}button,input,textarea,select{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}
.site-shell{min-height:100vh;opacity:0;transform:translateY(12px);transition:opacity .7s ease,transform .7s ease}.site-shell.is-visible{opacity:1;transform:none}.site-header{max-width:1160px;margin:auto;padding:25px 28px;display:flex;justify-content:space-between;align-items:center}.brand{font:700 22px 'Bowlby One SC',sans-serif;letter-spacing:.02em;display:flex;align-items:center;gap:9px}.brand-dot{width:11px;height:11px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 6px color-mix(in srgb,var(--accent) 15%,transparent)}.header-actions{display:flex;gap:10px;align-items:center}.icon-button{border:1px solid var(--line);background:var(--surface);color:var(--text);width:42px;height:42px;border-radius:50%;font-size:20px}.primary-button{border:0;border-radius:999px;background:var(--accent);color:#06220f;font-weight:700;padding:13px 20px;display:flex;align-items:center;justify-content:center;gap:7px;transition:transform .2s,box-shadow .2s}.primary-button:hover{transform:translateY(-2px);box-shadow:0 8px 20px color-mix(in srgb,var(--accent) 28%,transparent)}.compact{padding:11px 17px}
.page{max-width:1160px;margin:auto;padding:35px 28px 100px}.hero{text-align:center;padding:40px 0 18px}.eyebrow,.section-kicker{color:var(--accent-dark);font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase}.eyebrow span{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--accent);margin-right:7px}.hero h2{font:400 clamp(42px,7vw,78px)/1.02 'Bowlby One SC',sans-serif;letter-spacing:-.04em;margin:17px 0;color:var(--text)}.hero h2 em{font:700 1.06em 'Dancing Script',cursive;color:var(--accent);letter-spacing:0}.hero p{max-width:520px;margin:auto;color:var(--muted);font-size:16px}.section-heading{display:flex;justify-content:space-between;align-items:end;margin:67px 0 20px}.section-heading h3{font:400 28px/1.1 'Bowlby One SC',sans-serif;margin:7px 0 0;letter-spacing:-.02em}.section-heading h3 span{color:var(--accent);font-family:'DM Sans'}.section-heading small{color:var(--muted)}.hot-grid,.submission-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.hot-card,.submission-card{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:27px;overflow:hidden;position:relative;transition:transform .2s,border-color .2s}.hot-card:hover,.submission-card:hover{transform:translateY(-5px);border-color:var(--accent)}.hot-card{padding:13px}.rank{position:absolute;z-index:2;left:14px;top:14px;background:var(--accent);color:#06220f;border-radius:50%;height:38px;width:38px;display:grid;place-items:center;font-weight:700}.media{height:170px;border-radius:19px;overflow:hidden;background:var(--surface-2);display:grid;place-items:center}.media img{width:100%;height:100%;object-fit:cover}.media-art{height:100%;width:100%;padding:18px;display:flex;align-items:end;font:400 27px/1 'Bowlby One SC',sans-serif;color:var(--text);background:radial-gradient(circle at 80% 20%,#7bf39d,transparent 30%),linear-gradient(135deg,var(--accent),var(--surface-2))}.hot-card .media{height:155px}.hot-card-body,.card-body{padding:15px}.hot-card h4,.submission-card h4{font-size:16px;margin:3px 0 8px;line-height:1.25}.hot-card .vote-count{color:var(--accent-dark)}.who{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:12px}.avatar{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--surface-2);color:var(--accent-dark);font-weight:700;overflow:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.submission-card .media{height:145px;border-radius:0}.submission-card .excerpt{color:var(--muted);font-size:13px;margin:0 0 13px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.vote-count{display:flex;gap:5px;align-items:center;color:var(--muted);font-weight:700;font-size:12px}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:22px}.tab{border:1px solid var(--line);background:transparent;color:var(--muted);border-radius:999px;padding:9px 17px}.tab.is-active{background:var(--text);border-color:var(--text);color:var(--bg)}
.intro{position:fixed;z-index:10;inset:0;background:var(--bg);display:grid;place-items:center;overflow:hidden;transition:opacity .8s}.intro.is-done{opacity:0;pointer-events:none}.intro-stage{position:relative;width:100%;height:100%;display:grid;place-items:center}.intro-step{position:absolute;inset:0;display:grid;place-items:center;align-content:center;opacity:0;pointer-events:none;transform:scale(.88);transition:opacity .55s,transform .8s}.intro-step.is-active{opacity:1;transform:none}.step-logo{align-content:center}.logo-button{width:132px;height:132px;border:1px solid var(--line);border-radius:50%;background:var(--surface);color:var(--accent);font-size:80px;line-height:1;box-shadow:0 0 0 10px color-mix(in srgb,var(--accent) 10%,transparent),0 0 55px color-mix(in srgb,var(--accent) 22%,transparent);animation:breathe 2.1s infinite}.logo-mark{font-family:Georgia,serif}.click-hint,.intro-caption,.map-label{color:var(--muted);font-size:13px;margin-top:18px}.globe{position:relative;width:245px;height:245px;border-radius:50%;border:1px solid color-mix(in srgb,var(--accent) 70%,var(--line));background:radial-gradient(circle at 30% 25%,color-mix(in srgb,var(--accent) 20%,transparent),transparent 40%),var(--surface);box-shadow:inset -24px -15px 50px rgba(0,0,0,.1),0 0 70px color-mix(in srgb,var(--accent) 17%,transparent);animation:globe-spin 2.1s cubic-bezier(.2,.7,.25,1) forwards}.globe-lines{position:absolute;inset:9%;border-radius:50%;background:repeating-linear-gradient(90deg,transparent 0 28px,var(--line) 29px 30px),repeating-linear-gradient(0deg,transparent 0 31px,var(--line) 32px 33px);border-radius:50%;transform:perspective(250px) rotateX(18deg)}.africa-shape{position:absolute;left:47%;top:42%;color:var(--accent);font:400 22px 'Bowlby One SC';opacity:0;animation:reveal-africa .45s 1.8s forwards}.nigeria-pin{position:absolute;left:51%;top:56%;width:12px;height:12px;border-radius:50%;background:#fff;box-shadow:0 0 0 7px color-mix(in srgb,var(--accent) 45%,transparent);opacity:0;animation:reveal-pin .4s 2.15s forwards}.step-nigeria{transform:scale(.7)}.nigeria-map{width:195px;height:220px;background:var(--accent);clip-path:polygon(17% 10%,74% 5%,90% 20%,82% 37%,92% 52%,81% 72%,68% 79%,61% 95%,43% 90%,36% 77%,18% 75%,8% 56%,18% 42%,8% 25%);display:grid;place-items:center;color:#06220f;box-shadow:0 0 50px color-mix(in srgb,var(--accent) 25%,transparent);animation:map-zoom 1.1s .1s forwards}.nigeria-map span{font:400 30px 'Bowlby One SC';opacity:.65}.step-welcome h1{font:400 clamp(36px,6vw,64px) 'Bowlby One SC';margin:0;text-align:center}.step-welcome p{font:700 24px 'Dancing Script';color:var(--accent);margin:12px 0}.skip-intro{position:absolute;bottom:28px;right:28px;border:0;background:transparent;color:var(--muted);font-size:12px}.intro-orb{position:absolute;width:300px;height:300px;border-radius:50%;filter:blur(40px);opacity:.12}.orb-one{background:var(--accent);top:-120px;right:-80px}.orb-two{background:#78d7ff;bottom:-160px;left:-100px}
.modal-layer{position:fixed;inset:0;background:rgba(4,15,8,.72);z-index:20;padding:20px;display:grid;place-items:center;overflow:auto}.modal-layer[hidden]{display:none}.modal{position:relative;width:min(620px,100%);max-height:92vh;overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:28px;padding:28px;box-shadow:var(--shadow)}.modal h2{font:400 32px 'Bowlby One SC';margin:8px 0}.modal-intro{color:var(--muted);margin-top:-3px}.close-button{position:absolute;right:18px;top:17px;border:0;background:transparent;color:var(--muted);font-size:28px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin:22px 0}.form-grid label{font-size:12px;color:var(--muted);font-weight:700}.form-grid .full{grid-column:1/-1}.form-grid input,.form-grid textarea,.form-grid select{display:block;width:100%;margin-top:6px;border:1px solid var(--line);border-radius:12px;background:var(--bg);color:var(--text);padding:11px 12px}.form-grid textarea{min-height:90px;resize:vertical}.build-only{display:none}.form-error{color:#e75d5d;font-size:12px;min-height:18px}.detail-modal .media{height:260px}.detail-modal h2{font-size:28px}.detail-actions{display:flex;gap:10px;margin-top:20px}.detail-actions>*{flex:1}.detail-actions a{text-align:center}.toast{position:fixed;z-index:30;bottom:25px;left:50%;transform:translate(-50%,20px);opacity:0;background:var(--text);color:var(--bg);border-radius:999px;padding:10px 17px;font-size:13px;transition:.25s}.toast.is-visible{opacity:1;transform:translate(-50%,0)}
@keyframes breathe{50%{transform:scale(1.06);box-shadow:0 0 0 18px color-mix(in srgb,var(--accent) 8%,transparent),0 0 75px color-mix(in srgb,var(--accent) 28%,transparent)}}@keyframes globe-spin{0%{transform:rotate(0) scale(.5)}55%{transform:rotate(380deg) scale(1)}100%{transform:rotate(440deg) scale(1)}}@keyframes reveal-africa{to{opacity:1}}@keyframes reveal-pin{to{opacity:1}}@keyframes map-zoom{to{transform:scale(1.18)}}
@media (max-width:760px){.site-header,.page{padding-left:18px;padding-right:18px}.hero{padding-top:28px}.hot-grid,.submission-grid{grid-template-columns:1fr}.section-heading{align-items:start;gap:10px;flex-direction:column;margin-top:50px}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.hero h2{font-size:49px}.brand{font-size:18px}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}
.intro-step.is-active{pointer-events:auto}
.intro.is-done .intro-step{pointer-events:none!important}
.empty{grid-column:1/-1;text-align:center;padding:64px 20px;color:var(--muted);border:1px dashed var(--line);border-radius:27px;background:color-mix(in srgb,var(--surface) 70%,transparent)}
.field-hint{display:block;color:var(--muted);font-size:11px;font-weight:400;margin-top:4px}
.file-preview{display:block;margin-top:10px;border-radius:14px;overflow:hidden;max-height:150px;background:var(--surface-2)}
.file-preview img{display:block;width:100%;height:150px;object-fit:cover}
.form-error:empty{display:none}
.modal .primary-button[disabled]{opacity:.6;cursor:wait;transform:none;box-shadow:none}
