:root{--background:#f7f8f3;--text:#1f2923;--forest:#244536;--leaf:#527a5b;--surface:#e9ede5;--border:#ccd5cb;--error:#a33a32;--paper:#fcfdf9;--font-main:"Iowan Old Style", "Palatino Linotype", "Book Antiqua", Palatino, Georgia, serif}*{box-sizing:border-box}html{background:var(--background);color:var(--text);scroll-behavior:smooth}body{background:var(--background);min-width:320px;color:var(--text);font-family:var(--font-main);text-rendering:optimizelegibility;margin:0;font-size:16px;line-height:1.5}button,input{font:inherit}button,label{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,label:focus-within,.ReactCrop__crop-selection:focus-visible{outline:3px solid var(--leaf);outline-offset:3px}.page-shell{width:min(1120px,100% - 48px);margin:0 auto;padding:26px 0 72px}.site-header{align-items:center;min-height:42px;display:flex}.wordmark{color:var(--forest);letter-spacing:-.02em;font-size:1.38rem;font-weight:700;text-decoration:none}.intro{max-width:670px;margin:64px 0 46px}.intro h1{max-width:620px;color:var(--forest);letter-spacing:-.04em;margin:0;font-size:clamp(2.15rem,5vw,3.65rem);font-weight:600;line-height:1.06}.intro p{color:#4d5d53;max-width:580px;margin:18px 0 0;font-size:1.12rem}.workspace{border-top:1px solid var(--border);padding-top:30px}.workspace-header,.results-heading{justify-content:space-between;align-items:flex-start;gap:24px;display:flex}.workspace-header h2,.results h2{color:var(--forest);margin:0;font-size:1.35rem;font-weight:700;line-height:1.25}.workspace-header p{color:#536158;margin:7px 0 0}.file-actions{flex:none}.upload-button,.text-button,.identify-button{cursor:pointer;text-align:center;justify-content:center;align-items:center;min-height:44px;font-weight:700;display:inline-flex}.upload-button,.identify-button{border:1px solid var(--forest);background:var(--forest);color:#fff;border-radius:4px}.upload-button{padding:9px 18px}.text-button{border-bottom:1px solid var(--forest);color:var(--forest);padding:8px 0 8px 16px;line-height:1.25}.upload-button:hover,.identify-button:not(:disabled):hover{background:#193a2b}.text-button:hover{color:var(--leaf);border-color:var(--leaf)}.file-name{color:#5a675e;text-overflow:ellipsis;white-space:nowrap;margin:20px 0 12px;font-size:.9rem;overflow:hidden}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.empty-workspace{background:var(--surface);color:#59665d;cursor:pointer;border:1px dashed #aab8aa;border-radius:6px;flex-direction:column;justify-content:center;align-items:center;gap:5px;width:100%;min-height:320px;margin-top:28px;display:flex}.empty-workspace:hover{border-color:var(--leaf);background:#e4e9e0}.empty-workspace-title{color:var(--forest);font-size:1.12rem;font-weight:700}.crop-layout{grid-template-columns:minmax(0,1fr) 240px;align-items:start;gap:34px;margin-top:12px;display:grid}.crop-editor{background:#162019;border-radius:5px;place-items:center;min-height:360px;max-height:650px;display:grid;overflow:hidden}.crop-editor .ReactCrop{max-width:100%;max-height:650px;display:block}.crop-editor img{object-fit:contain;max-width:100%;max-height:650px;display:block}.ReactCrop__crop-selection{border:2px dashed #fff;box-shadow:0 0 0 9999em #0b150f94}.ReactCrop__drag-handle{border:1px solid var(--forest);background:#fff;border-radius:1px;width:14px;height:14px}.crop-summary{position:sticky;top:24px}.crop-summary h3{color:var(--forest);margin:0 0 12px;font-size:1rem}.crop-preview{aspect-ratio:1;border:1px solid var(--border);background:var(--surface);color:#68756c;border-radius:3px;place-items:center;width:100%;display:grid;overflow:hidden}.crop-preview img{object-fit:cover;width:100%;height:100%}.crop-summary>p{color:#59665d;margin:10px 0 18px;font-size:.9rem}.identify-button{width:100%;padding:10px 18px}.identify-button:disabled{color:#f7f8f3;cursor:not-allowed;background:#a9b4aa;border-color:#a9b4aa}.crop-summary .request-note{color:#536158;margin:12px 0 0;line-height:1.4}.status-region{min-height:28px;margin-top:14px}.error-message{color:var(--error);margin:0;font-weight:700}.results{border-top:1px solid var(--border);margin-top:42px;padding-top:28px}.results-heading{align-items:center}.results-heading span{color:#5c6b61;font-size:.9rem}.results-placeholder{color:#68756c;margin:20px 0 0}.prediction-list{margin:16px 0 0;padding:0;list-style:none}.prediction{border-top:1px solid var(--border);grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:6px 24px;padding:15px 0;display:grid}.prediction:first-child{border-top-color:var(--leaf)}.prediction>div{align-items:baseline;gap:13px;min-width:0;display:flex}.rank{color:#68756c;font-variant-numeric:tabular-nums;flex:0 0 18px;width:18px}.species-name{overflow-wrap:anywhere;min-width:0}.confidence{color:var(--forest);font-variant-numeric:tabular-nums;font-weight:700}.prediction-primary{padding:19px 0 18px}.prediction-primary .species-name{color:var(--forest);font-size:1.34rem;font-weight:700}.prediction-primary .confidence{font-size:1.15rem}.confidence-track{background:var(--surface);grid-column:1/-1;height:3px;margin-left:31px;overflow:hidden}.confidence-track>span{background:var(--leaf);height:100%;display:block}@media (max-width:760px){.page-shell{width:min(100% - 32px,640px);padding-top:18px}.intro{margin:44px 0 36px}.intro h1{font-size:clamp(2rem,10vw,3rem)}.workspace-header{align-items:flex-end}.crop-layout{grid-template-columns:1fr;gap:22px}.crop-editor{min-height:240px}.crop-summary{grid-template-columns:112px minmax(0,1fr);align-items:start;gap:0 18px;display:grid;position:static}.crop-summary h3{grid-column:1/-1}.crop-preview{grid-row:2/span 3}.crop-summary>p{margin-top:0}.crop-summary .identify-button,.crop-summary .request-note{grid-column:2}}@media (max-width:460px){.page-shell{width:calc(100% - 24px);padding-bottom:48px}.workspace-header{display:block}.file-actions{margin-top:14px}.text-button{padding-left:0}.empty-workspace{min-height:250px}.crop-summary{grid-template-columns:96px minmax(0,1fr);gap:0 14px}.prediction{gap:6px 12px}.prediction-primary .species-name{font-size:1.18rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
