:root{--ink:#21332d;--muted:#71827b;--line:#dce6e1;--paper:#f4f7f5;--white:#fff;--green:#217957;--green-dark:#195c44;--green-soft:#e2f0e9;--red:#b9584b;--amber:#a87316}
[hidden]{display:none!important}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,"PingFang SC",sans-serif;font-size:14px;letter-spacing:0}button,input,select{font:inherit;letter-spacing:0;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #9bd1b9;outline-offset:2px}.site-header{height:72px;background:#fff;border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 40px;position:sticky;top:0;z-index:20}.brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--ink)}.brand-mark{width:34px;height:34px;display:grid;place-items:center;background:var(--green);color:#fff;border-radius:7px;font-weight:800}.brand strong,.brand small{display:block}.brand strong{font-size:16px}.brand small{font-size:10px;color:#8b9a94;margin-top:2px}.site-header nav{height:100%;display:flex;gap:25px}.nav-link{height:100%;border:0;border-bottom:2px solid transparent;background:transparent;color:#7e8e87;font-weight:700}.nav-link.active{color:var(--ink);border-color:var(--green)}.account-actions{justify-self:end;display:flex;align-items:center;gap:9px}.quiet-button,.primary-button{border-radius:6px;padding:9px 13px;font-weight:700;border:1px solid var(--line);background:#fff}.primary-button{background:var(--green);border-color:var(--green);color:#fff}.primary-button:hover{background:var(--green-dark)}.user-chip{font-size:12px;color:#5f7169;background:#eef4f1;padding:8px 10px;border-radius:6px}main{max-width:1320px;margin:0 auto;padding:42px 36px 70px}.view[hidden]{display:none}.home-heading,.section-heading{display:flex;align-items:end;justify-content:space-between;gap:30px;padding-bottom:25px;border-bottom:1px solid var(--line);margin-bottom:22px}.eyebrow{font-size:10px;font-weight:800;color:#7e9188;letter-spacing:.12em;margin:0 0 10px}.home-heading h1,.section-heading h1{font-size:34px;line-height:1.1;margin:0}.home-heading p:not(.eyebrow),.section-heading p:not(.eyebrow){color:var(--muted);margin:9px 0 0}.observation-gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:24px 16px}.observation-item{min-width:0}.photo-frame{aspect-ratio:4/3;background:#e5ece8;overflow:hidden;border-radius:6px}.photo-frame img{width:100%;height:100%;display:block;object-fit:cover;transition:transform .3s ease}.observation-item:hover img{transform:scale(1.02)}.observation-meta{display:flex;justify-content:space-between;gap:15px;margin-top:11px}.observation-meta strong,.observation-meta span{display:block}.observation-meta strong{font-size:15px}.observation-meta span{color:#83928c;font-size:11px;font-style:italic;margin-top:3px}.observation-meta b{color:var(--green);font-size:13px}.observation-item>p{font-size:11px;color:#87968f;margin:7px 0}.gallery-state,.empty-state{padding:60px 20px;text-align:center;color:var(--muted)}.empty-state{background:#fff;border:1px solid var(--line);border-radius:6px}.empty-state strong{font-size:18px;color:var(--ink)}.quota-status{background:var(--green-soft);color:var(--green-dark);padding:9px 12px;border-radius:6px;font-weight:800;font-size:12px}.recognition-layout{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:18px}.upload-panel,.process-panel,.settings-form,.result-panel{background:#fff;border:1px solid var(--line);border-radius:7px;padding:20px}.drop-zone{min-height:360px;border:1px dashed #9bbdad;background:#f3f8f5;border-radius:5px;display:grid;place-items:center;align-content:center;gap:8px;position:relative;overflow:hidden;cursor:pointer}.drop-zone input{position:absolute;inset:0;opacity:0;cursor:pointer}.drop-zone img{display:none;position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#e8eeeb}.drop-zone img.visible{display:block}.upload-symbol{font-size:32px;color:var(--green)}.drop-zone small{color:#82928b}.file-row{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-top:14px}.file-row>span{color:#7f8f88;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.process-panel h2{font-size:17px;margin:0 0 17px}.process-panel ol{list-style:none;margin:0;padding:0}.process-panel li{display:flex;align-items:center;gap:10px;padding:13px 0;border-top:1px solid #e9efec;font-size:12px}.process-panel li span{width:25px;height:25px;border-radius:50%;display:grid;place-items:center;background:var(--green-soft);color:var(--green);font-weight:800}.result-panel{display:grid;grid-template-columns:1.15fr .85fr;gap:24px;margin-top:18px}.result-panel[hidden]{display:none}.result-media{min-height:320px;background:#e5ece8;overflow:hidden;border-radius:5px}.result-media img{width:100%;height:100%;display:block;object-fit:contain}.result-copy{padding:18px 8px}.result-copy h2{font-size:30px;margin:0 0 6px}.result-copy>p:not(.eyebrow){color:var(--muted)}.result-copy>strong{display:inline-block;background:var(--green-soft);color:var(--green);padding:7px 9px;border-radius:4px;margin:10px 0 16px}.result-copy #candidate-list>div{display:flex;justify-content:space-between;padding:10px 0;border-top:1px solid var(--line);font-size:12px}.settings-form{max-width:720px}.form-heading{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:15px;margin-bottom:18px}.form-heading h2{font-size:18px;margin:0}.form-heading span{color:var(--green);font-weight:700;font-size:12px}.settings-form label,.auth-dialog label{display:block;font-size:12px;font-weight:700;margin-top:14px}.settings-form input,.auth-dialog input{display:block;width:100%;margin-top:7px;border:1px solid #cfdcd6;border-radius:5px;background:#fbfdfc;padding:11px 12px}.settings-form input:disabled{background:#edf2ef;color:#89968f}.form-actions{display:flex;justify-content:flex-end;border-top:1px solid var(--line);padding-top:16px;margin-top:20px}.field-help{color:var(--muted);font-size:11px}.admin-tabs{display:flex;gap:20px;border-bottom:1px solid var(--line);margin-bottom:18px}.admin-tabs button{border:0;border-bottom:2px solid transparent;background:transparent;padding:11px 2px;font-weight:700;color:#7d8d86}.admin-tabs button.active{color:var(--green);border-color:var(--green)}.table-wrap{overflow-x:auto;background:#fff;border:1px solid var(--line);border-radius:6px}table{width:100%;border-collapse:collapse;min-width:760px}th,td{text-align:left;padding:13px 15px;border-bottom:1px solid #e8eeeb;font-size:12px}th{color:#74847d;background:#f8faf9}td strong,td span{display:block}td span{font-size:10px;color:#8a9892;margin-top:3px}select{border:1px solid var(--line);border-radius:4px;background:#fff;padding:7px}.switch{display:flex;align-items:center;gap:7px}.switch span{width:28px;height:16px;border-radius:10px;background:#cfd9d4;position:relative}.switch span:after{content:"";position:absolute;width:12px;height:12px;background:#fff;border-radius:50%;left:2px;top:2px}.switch input{position:absolute;opacity:0}.switch input:checked+span{background:var(--green)}.switch input:checked+span:after{transform:translateX(12px)}.table-action{border:1px solid #bedbce;background:#f1f8f5;color:var(--green);border-radius:4px;padding:7px 9px;font-weight:700}.auth-dialog{width:min(440px,calc(100% - 30px));border:0;border-radius:8px;padding:28px;box-shadow:0 22px 70px #20352d38}.auth-dialog::backdrop{background:#16282199;backdrop-filter:blur(3px)}.auth-dialog h2{font-size:26px;margin:0}.dialog-intro{color:var(--muted);line-height:1.6}.dialog-close{position:absolute;right:14px;top:12px;border:0;background:transparent;font-size:24px;color:#75867e}.full-button{width:100%;margin-top:20px;padding:11px}.auth-switch{display:block;margin:16px auto 0;border:0;background:transparent;color:var(--green);font-weight:700}.form-error{color:var(--red);background:#faece9;padding:9px;border-radius:4px;font-size:12px}.toast{position:fixed;left:50%;bottom:25px;transform:translate(-50%,10px);opacity:0;pointer-events:none;background:#21332d;color:#fff;padding:11px 15px;border-radius:5px;transition:.2s;z-index:50}.toast[data-type="error"]{background:#8e4035}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:900px){.site-header{grid-template-columns:1fr auto;padding:0 20px}.site-header nav{position:fixed;bottom:0;left:0;right:0;height:58px;background:#fff;border-top:1px solid var(--line);z-index:30;justify-content:center}.nav-link{padding:0 12px}.account-actions{grid-column:2}.observation-gallery{grid-template-columns:repeat(2,1fr)}.recognition-layout{grid-template-columns:1fr}.process-panel{display:none}main{padding:32px 20px 90px}}
@media(max-width:600px){.brand small,.user-chip{display:none}.site-header{padding:0 14px}.quiet-button,.primary-button{padding:8px 10px}.home-heading,.section-heading{align-items:flex-start;flex-direction:column}.home-heading h1,.section-heading h1{font-size:29px}.observation-gallery{grid-template-columns:1fr}.drop-zone{min-height:280px}.file-row{align-items:stretch;flex-direction:column}.recognize-button{width:100%}.result-panel{grid-template-columns:1fr}.result-media{min-height:260px}.settings-form{padding:16px}.account-actions{gap:5px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
body{overflow-x:hidden}.brand{min-width:0}.table-wrap{width:100%;max-width:100%}
.management-sidebar{display:none}
body.management-mode main{max-width:1440px;display:grid;grid-template-columns:224px minmax(0,1fr);gap:44px;padding:34px 36px 80px;align-items:start}
body.management-mode main>.view{grid-column:2;min-width:0}
body.management-mode main>.management-sidebar{display:flex;grid-column:1;grid-row:1 / span 10;position:sticky;top:108px;min-height:calc(100vh - 150px);flex-direction:column;padding:21px 0;border-right:1px solid var(--line)}
.management-sidebar-heading{padding:0 18px 23px;border-bottom:1px solid var(--line)}
.management-sidebar-heading .eyebrow{display:block;margin-bottom:8px;color:var(--coral)}
.management-sidebar-heading strong{font-size:20px;color:var(--forest)}
.management-nav{display:grid;padding:15px 10px 0 0;gap:4px}
.management-nav button{display:grid;grid-template-columns:30px 1fr;align-items:center;gap:9px;text-align:left;border:0;border-left:3px solid transparent;background:transparent;color:var(--muted);padding:13px 10px;font-weight:800}
.management-nav button span{font-size:10px;color:#9aaa9f}
.management-nav button:hover,.management-nav button.active{border-left-color:var(--coral);background:#fff8f2;color:var(--forest)}
.management-nav button.active span{color:var(--coral)}
.management-return{margin:auto 18px 0 0;padding:12px 0;border:0;border-top:1px solid var(--line);background:transparent;text-align:left;color:var(--green);font-weight:800}
.management-return span{float:right;font-size:18px}
body.management-mode .section-heading{margin-bottom:28px}
body.management-mode #teaching-view,body.management-mode #review-view{max-width:none;width:100%}
body.management-mode .teaching-compose{width:100%;max-width:none;padding:34px}
body.management-mode .teaching-compose .form-heading{padding-bottom:22px;margin-bottom:24px}
.review-sections{display:grid;gap:32px}.review-sections .teaching-panel{background:#fff;border:1px solid var(--line);padding:26px 32px}.review-sections .teaching-list{border-top:1px solid var(--line)}.review-sections .gallery-state{min-height:180px}.review-sections .history-copy{display:grid;grid-template-columns:minmax(180px,.5fr) minmax(260px,1fr) auto;align-items:center;gap:20px;padding:22px 0}.review-sections .history-copy>p{margin:0}.review-sections .history-copy .table-action{margin:0}
.settings-form select,.auth-dialog select{display:block;width:100%;margin-top:7px;border:1px solid #cfdcd6;border-radius:5px;background:#fbfdfc;padding:11px 12px}.organization-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.option-panel{background:#fff;border:1px solid var(--line);border-radius:7px;padding:18px}.option-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:14px;border-bottom:1px solid var(--line)}.option-heading h2{font-size:17px;margin:0}.option-heading>span{font-size:11px;color:var(--muted)}.option-create-form{padding:15px 0;border-bottom:1px solid var(--line)}.option-create-form label{display:block;margin-bottom:7px;font-size:11px;font-weight:700;color:#60736a}.option-create-form>div{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.option-create-form input{min-width:0;width:100%;border:1px solid #bfcfc7;border-radius:5px;background:#fbfdfc;padding:10px 11px}.option-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid #e8eeeb}.option-row:last-child{border-bottom:0}.option-name{min-width:0;width:100%;border:1px solid #cfdcd6;border-radius:5px;background:#fbfdfc;padding:9px 10px}.switch em{font-style:normal;font-size:11px;color:var(--muted)}.option-empty{color:var(--muted);margin:18px 0 4px}
@media(max-width:900px){.site-header{grid-template-columns:minmax(0,1fr) auto}body.management-mode main{grid-template-columns:1fr;gap:0;padding:25px 20px 90px}body.management-mode main>.management-sidebar{grid-column:1;grid-row:auto;position:static;min-height:0;border-right:0;border-bottom:1px solid var(--line);padding:0 0 14px;margin-bottom:26px}.management-sidebar-heading{display:none}.management-nav{display:flex;overflow-x:auto;padding:0;gap:4px}.management-nav button{min-width:max-content;border-left:0;border-bottom:3px solid transparent;padding:11px 12px}.management-nav button:hover,.management-nav button.active{border-left:0;border-bottom-color:var(--coral);background:transparent}.management-return{display:none}body.management-mode main>.view{grid-column:1}}
@media(max-width:600px){body.management-mode .teaching-compose{padding:18px}.review-sections .teaching-panel{padding:18px 16px}}
@media(max-width:700px){.organization-grid{grid-template-columns:1fr}.admin-tabs{overflow-x:auto}.admin-tabs button{white-space:nowrap}.option-row{grid-template-columns:minmax(0,1fr) auto}.option-row .table-action{grid-column:1/-1}}

/* Observation-led home */
:root{--sun:#f4c84d;--coral:#d96f56;--sky:#83b8ba;--forest:#153f32;--leaf:#217957}
.site-header{height:76px;padding:0 max(28px,calc((100vw - 1440px)/2));border-bottom:0;box-shadow:0 1px 0 #dce6e1;z-index:40}
.brand-mark{width:40px;height:40px;border-radius:50%;background:var(--sun);color:var(--forest);font-size:13px}
.brand strong{font-size:17px}.brand small{color:#6f8179;font-size:10px;letter-spacing:.06em;text-transform:uppercase}
.site-header nav{gap:30px}.nav-link{font-size:13px}.nav-link.active{color:var(--forest);border-color:var(--coral)}
.primary-button{background:var(--leaf);border-color:var(--leaf)}
main{max-width:none;padding:0 0 80px}.view:not(#home-view){max-width:1320px;margin:0 auto;padding:42px 36px 0}
#home-view{overflow:hidden}
.observation-hero{position:relative;min-height:calc(100vh - 126px);height:760px;max-height:880px;overflow:hidden;background:#1b3a31;color:#fff}
.observation-hero[hidden],.empty-hero[hidden]{display:none}
.observation-hero>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;animation:hero-image-in .9s ease-out both}
.hero-shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(8,28,22,.82) 0%,rgba(8,28,22,.52) 40%,rgba(8,28,22,.08) 72%),linear-gradient(0deg,rgba(7,24,19,.68) 0%,transparent 46%)}
.hero-copy{position:absolute;left:max(36px,calc((100vw - 1320px)/2));top:50%;width:min(580px,52vw);transform:translateY(-50%);animation:hero-copy-in .7s .12s ease-out both}
.hero-kicker{display:flex;align-items:center;gap:10px;margin:0 0 22px;font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.hero-kicker>span:first-child{width:34px;height:4px;background:var(--sun)}
.hero-copy h1{font-size:clamp(50px,6.5vw,92px);line-height:.98;margin:0;letter-spacing:0;font-weight:900}
.hero-copy>p:not(.hero-kicker){max-width:450px;margin:24px 0 0;color:#e8f0ec;font-size:17px;line-height:1.8}
.hero-actions{display:flex;gap:10px;margin-top:30px}.sun-button,.glass-button,.outline-button,.text-action{border:0;font-weight:800}
.sun-button{padding:13px 18px;border-radius:5px;background:var(--sun);color:var(--forest)}
.sun-button:hover{background:#ffda65}.glass-button{padding:13px 18px;border-radius:5px;background:#ffffff1a;border:1px solid #ffffff70;color:#fff;backdrop-filter:blur(8px)}
.glass-button:hover{background:#ffffff2d}
.hero-species{position:absolute;right:max(36px,calc((100vw - 1320px)/2));bottom:38px;width:min(420px,38vw);padding-left:22px;border-left:5px solid var(--coral);text-shadow:0 2px 20px #071f18}
.hero-species>span{display:block;color:var(--sun);font-size:11px;font-weight:800;letter-spacing:.1em}.hero-species>strong{display:block;margin-top:7px;font-size:30px;line-height:1.1}.hero-species>em{display:block;margin-top:4px;color:#dce8e2;font-size:13px}
.hero-species p{display:flex;gap:12px;align-items:center;margin:14px 0 0;font-size:11px;color:#e2ece7}.hero-species b{background:var(--coral);padding:5px 7px;border-radius:3px;color:#fff}
.empty-hero{min-height:620px;padding:100px max(36px,calc((100vw - 1320px)/2));display:flex;flex-direction:column;justify-content:center;align-items:flex-start;background:var(--forest);color:#fff;position:relative}
.empty-hero:after{content:"观";position:absolute;right:5vw;bottom:-80px;color:#ffffff0b;font-size:390px;font-weight:900;line-height:1}
.empty-hero h1{font-size:70px;line-height:1;margin:0}.empty-hero p:not(.eyebrow){font-size:17px;color:#d8e6df;margin:20px 0 30px}
.archive-stats{min-height:112px;display:grid;grid-template-columns:170px 170px 170px 1fr;align-items:center;gap:0;padding:0 max(36px,calc((100vw - 1320px)/2));background:#fff;border-bottom:1px solid var(--line)}
.archive-stats>div{display:flex;align-items:baseline;gap:9px;border-right:1px solid var(--line);margin-right:28px}.archive-stats strong{font-size:32px;color:var(--coral)}.archive-stats span{font-size:12px;font-weight:700;color:#60736a}.archive-stats>p{justify-self:end;color:#82928b;font-size:11px}
.discoveries{max-width:1320px;margin:0 auto;padding:72px 36px 86px}.discoveries .home-heading{align-items:end;margin-bottom:28px}.discoveries .home-heading h2{font-size:38px;line-height:1;margin:0}.discoveries .home-heading p:not(.eyebrow){margin:10px 0 0;color:var(--muted)}
.text-action{background:transparent;color:var(--forest);padding:8px 0;border-bottom:2px solid var(--sun);border-radius:0}.text-action span{display:inline-block;margin-left:6px;transition:transform .2s}.text-action:hover span{transform:translateX(4px)}
.observation-gallery{grid-template-columns:repeat(3,minmax(0,1fr));gap:42px 22px}.observation-item{animation:card-in .5s ease-out both}.observation-item:nth-child(2){animation-delay:.06s}.observation-item:nth-child(3){animation-delay:.12s}
.photo-frame{position:relative;border-radius:4px;aspect-ratio:4/3;background:#dce6e1}.photo-frame:after{content:"";position:absolute;inset:0;box-shadow:inset 0 0 0 1px #173e3214;pointer-events:none}.photo-frame>span{position:absolute;left:12px;bottom:12px;background:#173e32df;color:#fff;padding:6px 8px;border-radius:3px;font-size:10px;font-weight:700;backdrop-filter:blur(5px)}
.observation-item:hover img{transform:scale(1.045)}.observation-meta{margin-top:15px}.observation-meta strong{font-size:19px;color:var(--forest)}.observation-meta span{font-size:12px;margin-top:5px}.observation-meta b{background:#fff1d0;color:#8a6410;padding:6px 8px;border-radius:3px;height:max-content}.observation-item>p{font-size:12px;margin-top:10px}
.campus-soundscape{padding:72px max(36px,calc((100vw - 1320px)/2)) 78px;background:var(--forest);color:#fff}.campus-soundscape[hidden]{display:none}.soundscape-heading{display:flex;align-items:end;justify-content:space-between;gap:32px;padding-bottom:28px;border-bottom:1px solid #ffffff2b}.soundscape-heading .eyebrow{color:var(--sun)}.soundscape-heading h2{margin:0;font-size:42px;line-height:1}.soundscape-heading p:not(.eyebrow){margin:11px 0 0;color:#bcd0c7}.sound-upload{border:0;border-bottom:2px solid var(--sun);padding:9px 0;background:transparent;color:#fff;font-weight:800}.sound-upload span{display:inline-block;margin-left:7px;transition:transform .2s}.sound-upload:hover span{transform:translateX(4px)}.sound-list{display:grid}.sound-entry{min-width:0;display:grid;grid-template-columns:minmax(210px,.85fr) minmax(260px,1.2fr) minmax(190px,.75fr) 220px;align-items:center;gap:28px;padding:24px 0;border-bottom:1px solid #ffffff1f}.sound-species{min-width:0;display:grid;grid-template-columns:34px 1fr;border:0;padding:0;background:transparent;color:#fff;text-align:left}.sound-species>span{grid-row:1/3;color:var(--sun);font-size:11px;font-weight:800;padding-top:6px}.sound-species strong{font-size:21px;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sound-species em{margin-top:5px;color:#9db6aa;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sound-species:hover strong{text-decoration:underline;text-decoration-color:var(--sun);text-underline-offset:5px}.sound-wave{height:46px;display:flex;align-items:center;gap:3px;overflow:hidden}.sound-wave i{flex:1;min-width:2px;height:var(--level);max-height:42px;border-radius:1px;background:#83b8ba;opacity:.42;transform-origin:center;animation:sound-breathe 2.7s ease-in-out infinite}.sound-wave i:nth-child(3n){background:var(--sun);animation-delay:-.8s}.sound-wave i:nth-child(4n){animation-delay:-1.5s}.sound-details{min-width:0;display:grid;grid-template-columns:auto 1fr;gap:4px 10px;align-items:baseline}.sound-details b{color:var(--sun);font-size:15px}.sound-details span,.sound-details time{color:#c4d5cd;font-size:10px}.sound-details small{grid-column:1/-1;color:#8eaa9d;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sound-entry audio{width:220px;height:34px;filter:sepia(.15) saturate(.75)}@keyframes sound-breathe{50%{transform:scaleY(.72);opacity:.75}}
.participation-band{width:100%;max-width:none;min-height:360px;margin:0;padding:66px max(36px,calc((100vw - 1320px)/2));position:relative;overflow:hidden;background:var(--sky);color:#102f2a}
.participation-band:after{content:"";position:absolute;right:-80px;bottom:-120px;width:400px;height:400px;border:78px solid #f4c84d;border-radius:50%;opacity:.8}.participation-band .eyebrow{color:#153f32}.participation-band h2{font-size:44px;line-height:1.14;margin:0;position:relative;z-index:1}.participation-band>p:not(.eyebrow){font-size:14px;margin:18px 0 27px;position:relative;z-index:1}.outline-button{position:relative;z-index:2;padding:12px 17px;border:2px solid var(--forest);border-radius:4px;background:transparent;color:var(--forest)}.outline-button:hover{background:var(--forest);color:#fff}
.gallery-state{min-height:180px;display:grid;place-items:center}.empty-state{border-radius:4px;background:#fff;border-style:dashed}
@keyframes hero-image-in{from{opacity:.45;transform:scale(1.035)}to{opacity:1;transform:scale(1)}}@keyframes hero-copy-in{from{opacity:0;transform:translateY(calc(-50% + 18px))}to{opacity:1;transform:translateY(-50%)}}@keyframes card-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:900px){.site-header{padding:0 20px}.observation-hero{height:680px;min-height:calc(100vh - 120px)}.hero-copy{left:28px;width:75vw;top:43%}.hero-species{left:28px;right:auto;bottom:38px;width:calc(100% - 56px)}.archive-stats{grid-template-columns:repeat(3,1fr);padding:0 24px}.archive-stats>div{margin-right:14px}.archive-stats>p{display:none}.discoveries{padding:55px 24px 75px}.observation-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}.campus-soundscape{padding:58px 24px 64px}.sound-entry{grid-template-columns:minmax(190px,.8fr) 1.2fr 210px}.sound-details{display:none}.participation-band{margin:0;padding:55px 24px}.view:not(#home-view){padding:32px 20px 90px}}
@media(max-width:600px){.site-header{height:66px}.brand-mark{width:34px;height:34px}.brand strong{font-size:15px}.account-actions #login-open{display:none}.account-actions #logout-button{display:inline-flex;align-items:center;min-height:36px}.observation-hero{height:650px;min-height:calc(100vh - 114px)}.hero-shade{background:linear-gradient(0deg,rgba(7,24,19,.86) 0%,rgba(7,24,19,.42) 60%,rgba(7,24,19,.08) 100%)}.hero-copy{left:20px;right:20px;top:auto;bottom:176px;width:auto;transform:none}.hero-copy h1{font-size:49px}.hero-copy>p:not(.hero-kicker){font-size:14px;margin-top:16px}.hero-kicker{margin-bottom:15px}.hero-actions{margin-top:20px;flex-wrap:wrap}.hero-species{left:20px;bottom:28px;width:calc(100% - 40px)}.hero-species>strong{font-size:24px}.hero-species p{align-items:flex-start;flex-direction:column;gap:7px}.archive-stats{min-height:94px;padding:0 14px}.archive-stats>div{display:block;margin:0;border-right:0;text-align:center}.archive-stats strong,.archive-stats span{display:block}.archive-stats strong{font-size:25px}.archive-stats span{margin-top:3px;font-size:10px}.discoveries{padding:46px 16px 62px}.discoveries .home-heading{align-items:flex-start}.discoveries .home-heading h2{font-size:32px}.observation-gallery{grid-template-columns:1fr;gap:34px}.participation-band{margin:0;min-height:390px;padding:55px 24px}.participation-band h2{font-size:34px}.participation-band:after{right:-185px;bottom:-130px}.empty-hero{min-height:590px;padding:80px 22px}.empty-hero h1{font-size:48px}}
@media(max-width:600px){.campus-soundscape{padding:48px 16px 54px}.soundscape-heading{display:block}.soundscape-heading h2{font-size:34px}.sound-upload{margin-top:20px}.sound-entry{grid-template-columns:1fr auto;gap:16px;padding:24px 0}.sound-wave{grid-column:1/-1;grid-row:2;height:36px}.sound-entry audio{grid-column:1/-1;width:100%;height:36px}.sound-species strong{font-size:19px}.sound-details{display:grid;grid-template-columns:1fr;text-align:right}.sound-details time,.sound-details small{display:none}}
@media(prefers-reduced-motion:reduce){.sound-wave i{animation:none}}

/* Collection context and observation history */
.collection-fields{display:grid;grid-template-columns:1fr 150px 1.35fr;gap:12px;margin:0 0 16px;padding:0 0 17px;border:0;border-bottom:1px solid var(--line)}
.collection-fields legend{grid-column:1/-1;padding:0;margin:0 0 11px;font-size:13px;font-weight:800;color:var(--forest)}
.collection-fields label{min-width:0;font-size:11px;font-weight:700;color:#60736a}
.collection-fields input,.collection-fields select{display:block;width:100%;height:42px;margin-top:7px;padding:9px 10px;border:1px solid #c4d3cc;border-radius:5px;background:#fbfdfc}
.result-collection{padding:9px 11px;border-left:3px solid var(--sun);background:#f7faf8;color:#60736a!important;font-size:12px;line-height:1.6}
.history-list{display:grid;gap:1px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.history-entry{display:grid;grid-template-columns:230px minmax(0,1fr);min-height:190px;background:#fff}
.history-entry+.history-entry{border-top:1px solid var(--line)}
.history-media{min-height:190px;background:#dfe8e3;overflow:hidden}.history-media>img{width:100%;height:100%;display:block;object-fit:cover}
.history-audio{height:100%;display:grid;align-content:center;justify-items:center;gap:20px;padding:24px;background:var(--forest)}.history-audio>span{font-size:42px;color:var(--sun)}.history-audio audio{width:100%;height:36px}
.history-copy{min-width:0;padding:24px 28px}.history-type{display:block;margin-bottom:8px;color:var(--coral);font-size:10px;font-weight:800}.history-species{border:0;background:transparent;padding:0;color:var(--forest);font-size:24px;font-weight:900;text-align:left}.history-species:hover{text-decoration:underline;text-decoration-color:var(--sun);text-underline-offset:5px}.history-copy>em{display:block;margin-top:4px;color:var(--muted);font-size:12px}.history-copy dl{display:grid;grid-template-columns:170px 110px minmax(180px,1fr);gap:12px;margin:20px 0 17px}.history-copy dl>div{min-width:0;border-left:2px solid #dce8e2;padding-left:10px}.history-copy dt{font-size:10px;color:var(--muted)}.history-copy dd{margin:5px 0 0;font-size:12px;font-weight:700;overflow-wrap:anywhere}.history-copy>p{display:flex;justify-content:space-between;gap:20px;margin:0;color:var(--muted);font-size:11px}.history-copy>p b{color:var(--green)}
@media(max-width:760px){.collection-fields{grid-template-columns:1fr 120px}.collection-fields label:last-child{grid-column:1/-1}.history-entry{grid-template-columns:1fr}.history-media{aspect-ratio:16/9;min-height:0}.history-copy{padding:20px}.history-copy dl{grid-template-columns:1fr 1fr}.history-copy dl>div:last-child{grid-column:1/-1}}
@media(max-width:480px){.collection-fields{grid-template-columns:1fr}.collection-fields label:last-child{grid-column:auto}.history-copy dl{grid-template-columns:1fr}.history-copy dl>div:last-child{grid-column:auto}.history-copy>p{display:block}.history-copy>p b{display:block;margin-top:7px}}
@media(max-width:600px){.brand small{display:block;font-size:8px;letter-spacing:0}.brand{gap:7px}}

/* Bird protection ledger */
.protection-layout{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(260px,.85fr);gap:24px;align-items:start;margin-bottom:26px}.protection-form{max-width:none}.protection-summary{background:var(--forest);color:#fff;border-radius:7px;padding:22px}.protection-summary h2{margin:0 0 18px;font-size:20px}.protection-summary h3{margin:24px 0 8px;font-size:13px;color:#d8ebe2}.protection-metrics{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid #ffffff2b}.protection-metrics>div{padding:15px 10px 13px 0;border-bottom:1px solid #ffffff2b}.protection-metrics strong,.protection-metrics span{display:block}.protection-metrics strong{font-size:28px;color:var(--sun)}.protection-metrics span{margin-top:4px;color:#b4cec1;font-size:11px}.protection-summary .stat-row{border-color:#ffffff2b;color:#dcebe3}.protection-summary .stat-row b{color:var(--sun)}.protection-filters{display:flex;align-items:end;gap:12px;margin:28px 0 14px;padding:16px;background:#fff;border:1px solid var(--line);border-radius:7px}.protection-filters label{flex:1;min-width:0;font-size:11px;font-weight:700;color:var(--muted)}.protection-filters input,.protection-filters select{display:block;width:100%;margin-top:6px;padding:9px 10px;border:1px solid #cfdcd6;border-radius:5px;background:#fbfdfc}.protection-filters .outline-button{flex:0 0 auto}.protection-entry{display:block;min-height:0}.protection-entry .history-copy{padding:22px 24px}.protection-entry-heading{display:flex;align-items:center;gap:14px}.protection-entry-heading .history-type{display:inline-block;margin:0}.protection-entry-heading time{font-size:11px;color:var(--muted)}.protection-entry h3{margin:3px 0 0;font-size:21px;color:var(--forest)}.protection-entry .history-copy>p{display:block;margin:8px 0;line-height:1.65}.protection-entry dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:17px 0}.protection-entry dl>div{border-left:2px solid #dce8e2;padding-left:10px;min-width:0}.protection-entry dt{font-size:10px;color:var(--muted)}.protection-entry dd{margin:5px 0 0;font-size:12px;line-height:1.55;overflow-wrap:anywhere}.protection-entry small{display:block;margin-top:10px;color:var(--muted)}.protection-entry-actions{display:flex;align-items:center;gap:12px;margin-top:14px}.protection-review-actions{display:flex;gap:7px}.protection-entry .text-action{font-size:11px}.protection-entry .table-action{padding:6px 9px;font-size:11px}
@media(max-width:760px){.protection-layout{grid-template-columns:1fr}.protection-filters{align-items:stretch;flex-direction:column}.protection-filters .outline-button{width:100%}.protection-entry dl{grid-template-columns:1fr}.protection-entry .history-copy{padding:20px}.protection-entry-heading{align-items:flex-start;flex-direction:column;gap:4px}}

/* Bird cards double as entries into the locally cached encyclopedia. */
.observation-item{appearance:none;width:100%;padding:0;border:0;background:transparent;text-align:left;color:inherit}.observation-item:focus-visible{outline:3px solid #e4b932;outline-offset:6px;border-radius:5px}.photo-frame{position:relative}.photo-frame>em{position:absolute;right:12px;bottom:12px;padding:7px 10px;background:#fff;color:var(--forest);border-radius:3px;font-size:11px;font-style:normal;font-weight:800;opacity:0;transform:translateY(5px);transition:.2s}.observation-item:hover .photo-frame>em,.observation-item:focus-visible .photo-frame>em{opacity:1;transform:none}

.encyclopedia-dialog{width:min(1080px,calc(100% - 40px));max-height:calc(100vh - 40px);padding:0;border:0;border-radius:7px;background:#f7faf8;color:var(--ink);box-shadow:0 28px 90px #10231c66;overflow:auto}.encyclopedia-dialog::backdrop,.image-viewer-dialog::backdrop{background:#11251da8;backdrop-filter:blur(4px)}.encyclopedia-close{z-index:3;width:40px;height:40px;display:grid;place-items:center;right:17px;top:15px;border-radius:50%;background:#fff;color:var(--forest);box-shadow:0 4px 18px #10231c24}.encyclopedia-layout{display:grid;grid-template-columns:minmax(320px,.82fr) minmax(430px,1.18fr);min-height:650px}.encyclopedia-media{min-height:650px;padding:0;border:0;display:block;background:#dfe9e4;overflow:hidden}.encyclopedia-media img{width:100%;height:100%;display:block;object-fit:cover;transition:transform .2s ease}.encyclopedia-media:hover img{transform:scale(1.015)}.encyclopedia-copy{padding:54px 48px 48px;overflow:hidden}.encyclopedia-title{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding-bottom:21px;border-bottom:1px solid var(--line)}.encyclopedia-title h2{margin:0;font-size:38px;line-height:1.1;color:var(--forest)}.encyclopedia-title p{margin:8px 0 0;color:var(--muted);font-family:Georgia,serif;font-style:italic}.encyclopedia-title>span{flex:0 0 auto;padding:6px 8px;background:var(--green-soft);color:var(--green-dark);border-radius:3px;font-size:10px;font-weight:800}.encyclopedia-title>span:empty{display:none}.encyclopedia-loading{padding-top:35px}.encyclopedia-loading[hidden]{display:none}.encyclopedia-loading i{display:block;height:13px;margin-bottom:15px;border-radius:3px;background:linear-gradient(90deg,#e1e9e5 20%,#f5f8f6 45%,#e1e9e5 70%);background-size:250% 100%;animation:knowledge-loading 1.2s infinite}.encyclopedia-loading i:nth-child(1){width:72%}.encyclopedia-loading i:nth-child(2){width:100%}.encyclopedia-loading i:nth-child(3){width:84%}.encyclopedia-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin:24px 0 8px;border-top:1px solid var(--line);border-left:1px solid var(--line)}.encyclopedia-facts>div{min-width:0;padding:12px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.encyclopedia-facts dt{font-size:10px;color:var(--muted)}.encyclopedia-facts dd{margin:5px 0 0;font-size:13px;font-weight:800;overflow-wrap:anywhere}.encyclopedia-sections section{padding:17px 0;border-bottom:1px solid var(--line)}.encyclopedia-sections h3{margin:0 0 7px;font-size:15px;color:var(--forest)}.encyclopedia-sections p,.encyclopedia-empty{margin:0;color:#566861;line-height:1.8;font-size:13px;white-space:pre-line}.encyclopedia-copy>.form-error{margin-top:28px}.image-viewer-dialog{position:fixed;width:min(1280px,calc(100% - 32px));height:min(900px,calc(100% - 32px));padding:54px 24px 24px;border:0;border-radius:7px;background:#14231d;box-shadow:0 28px 90px #10231c66}.image-viewer-dialog img{width:100%;height:100%;display:block;object-fit:contain}.image-viewer-close{background:#fff;color:var(--forest)}@keyframes knowledge-loading{to{background-position:-250% 0}}

@media(max-width:760px){.encyclopedia-dialog{width:calc(100% - 20px);max-height:calc(100vh - 20px)}.encyclopedia-layout{grid-template-columns:1fr;min-height:0}.encyclopedia-media{min-height:0;aspect-ratio:16/9}.encyclopedia-copy{padding:34px 22px 32px}.encyclopedia-title{display:block;padding-right:30px}.encyclopedia-title h2{font-size:30px}.encyclopedia-title>span{display:inline-block;margin-top:12px}.encyclopedia-facts{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-frame>em{opacity:1;transform:none}}

/* Recognition candidates are direct entries into the encyclopedia. */
.result-species{display:block;border:0;background:transparent;padding:0;margin:0 0 6px;font-size:30px;font-weight:800;color:var(--forest);text-align:left}
.result-species:not(:disabled):hover{text-decoration:underline;text-decoration-color:var(--sun);text-underline-offset:6px}
.result-copy #candidate-list>button{width:100%;display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:14px;padding:12px 0;border:0;border-top:1px solid var(--line);background:transparent;font-size:12px;text-align:left}
.result-copy #candidate-list>button:hover{color:var(--green);background:#f5faf7}
.result-copy #candidate-list>button strong{font-variant-numeric:tabular-nums}
.result-copy #candidate-list>button em{color:var(--green);font-size:10px;font-style:normal;font-weight:800}
.audio-result-panel .result-copy #audio-candidate-list>button{width:100%;display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:14px;padding:10px 0;border:0;border-top:1px solid var(--line);background:transparent;text-align:left;font-size:12px}.audio-result-panel .result-copy #audio-candidate-list>button:hover{color:var(--green);background:#f5faf7}.audio-result-panel .result-copy #audio-candidate-list>button em{color:var(--green);font-size:10px;font-style:normal;font-weight:800}.encyclopedia-media[hidden]+.encyclopedia-copy{grid-column:1/-1;max-width:760px;width:100%;margin:0 auto}
.recognition-tabs{display:flex;gap:4px;margin:0 0 18px;border-bottom:1px solid var(--line)}.recognition-tabs button{border:0;border-bottom:2px solid transparent;background:transparent;padding:11px 14px;color:var(--muted);font-weight:800}.recognition-tabs button.active{color:var(--forest);border-color:var(--coral)}.audio-drop-zone{min-height:260px}.audio-drop-zone .upload-symbol{font-size:42px}.audio-service-status{margin:10px 0 0;color:var(--green);font-size:11px;font-weight:700}.audio-service-status[data-ready="false"]{color:var(--red)}.audio-media{display:grid;place-items:center;padding:32px;min-height:220px}.audio-media audio{width:min(100%,520px)}.audio-result-panel .result-copy #audio-candidate-list>div{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:10px 0;border-top:1px solid var(--line);font-size:12px}.audio-result-panel .result-copy #audio-candidate-list span{min-width:0}.audio-result-panel .result-copy #audio-candidate-list b,.audio-result-panel .result-copy #audio-candidate-list small{display:block}.audio-result-panel .result-copy #audio-candidate-list small{margin-top:3px;color:var(--muted);font-family:Georgia,serif;font-style:italic}.audio-result-panel .result-copy #audio-candidate-list strong{font-variant-numeric:tabular-nums}
/* Teaching workflow */
.workflow-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin:24px 0}.workflow-grid>section{min-width:0}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.settings-form textarea,.collection-fields textarea{width:100%;resize:vertical}.stat-row{display:flex;justify-content:space-between;border-bottom:1px solid var(--line,#dfe5e1);padding:10px 0;margin:0}.stat-row b{color:var(--ink,#1d3029)}
@media (max-width:760px){.workflow-grid,.form-row{grid-template-columns:1fr}}

/* Teaching management is a working surface: compose on the left, review queues on the right. */
.teaching-workbench{display:grid;grid-template-columns:minmax(400px,.78fr) minmax(520px,1.22fr);gap:42px;align-items:start}.teaching-compose{max-width:none;margin:0}.teaching-queues{display:grid;gap:30px}.teaching-panel{min-width:0}.teaching-panel .form-heading{margin:0}.panel-kicker{margin:0 0 5px;color:var(--coral);font-size:10px;font-weight:800;letter-spacing:.1em}.teaching-panel .form-heading h2,.teaching-compose .form-heading h2{font-size:21px;color:var(--forest)}.teaching-list{border-top:0}.teaching-list .history-entry{display:block;min-height:0;background:transparent}.teaching-list .history-copy{padding:19px 0 20px}.teaching-list .history-type{margin-bottom:6px}.teaching-list .history-copy h3{margin:0;color:var(--forest);font-size:17px}.teaching-list .history-copy>p{display:block;margin:7px 0 0;line-height:1.6}.teaching-list .table-action{margin:14px 7px 0 0}.teaching-list .gallery-state{min-height:126px;border-bottom:1px solid var(--line);background:#fff;font-size:13px}.teaching-panel:last-child .history-list{border-bottom:0}
@media(max-width:1080px){.teaching-workbench{grid-template-columns:minmax(340px,.85fr) minmax(0,1.15fr);gap:28px}}
@media(max-width:760px){.teaching-workbench{grid-template-columns:1fr;gap:34px}.teaching-queues{gap:34px}.teaching-compose{padding:18px}.teaching-panel .form-heading h2,.teaching-compose .form-heading h2{font-size:19px}}
