@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;600;700&display=swap');
:root{--ink:#344538;--muted:#8a9388;--green:#355845;--line:#e5e8de;--cream:#f7f8f2;--sage:#eaf0df}*{box-sizing:border-box}body{margin:0;background:var(--cream);color:var(--ink);font:13px 'Noto Sans SC','Microsoft YaHei',sans-serif}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button{border:0;background:none}button:disabled{opacity:.3;cursor:default}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid #92ab72;outline-offset:3px}a{color:inherit;text-decoration:none}svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.header{height:80px;padding:0 38px;display:flex;align-items:center;gap:62px;background:#fffef9;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;font-size:20px;font-weight:700;letter-spacing:2px;white-space:nowrap}.brand small{display:block;font-size:8px;letter-spacing:2px;margin-top:3px;color:#929d82}.brand-mark{display:block;width:38px;height:40px;background:#3f624b;border-radius:11px;color:#e1e7b5;font-size:29px;text-align:center;position:relative;line-height:39px}.brand-mark i{position:absolute;width:5px;height:5px;background:#d3a76c;right:4px;top:4px}.header nav{display:flex;gap:32px;height:100%;align-items:stretch}.nav-button{font-size:13px;color:#8a9388;position:relative;padding:0 4px;white-space:nowrap}.nav-button.active{color:var(--green);font-weight:600}.nav-button.active:after{content:'';position:absolute;height:3px;background:var(--green);bottom:0;left:4px;right:4px;border-radius:3px 3px 0 0}.tiny-dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:#c4b383;margin-left:5px;vertical-align:top;margin-top:2px}.header-right{margin-left:auto;display:flex;gap:24px;align-items:center}.made-for{font-size:11px;color:#9b9e8e;letter-spacing:1px}.icon-button{width:29px;height:29px;border:1px solid var(--line);border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#7f8a7d;background:#fffef8;font-size:17px}.avatar{border:1px solid #d9dec9;background:#ecf0df;border-radius:50%;width:33px;height:33px;display:grid;place-items:center;color:#738664;font-size:13px}main{max-width:1740px;margin:auto;padding:29px 38px 0}.page-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px}.eyebrow{font-size:9px;letter-spacing:2.1px;color:#96a08c;font-weight:600;margin-bottom:8px}.heading-line{display:flex;align-items:center;gap:18px}h1{font-size:24px;letter-spacing:1px;font-weight:500;margin:0}h1>span{color:#8c9d72}.version{font-size:8px;color:#9da48f;border:1px solid #dce1d3;border-radius:4px;padding:3px 5px;letter-spacing:1px}.page-heading p{font-size:11px;margin:9px 0 0;color:#93998a;letter-spacing:1px}.heading-decoration{display:flex;align-items:center;gap:13px;margin-right:24px;color:#a4af8d}.heading-decoration>svg{width:84px;height:65px}.workspace{display:flex;border:1px solid #dfe4d6;border-radius:12px;background:#fffef9;box-shadow:0 5px 28px #36493005;overflow:hidden;height:calc(100dvh - 272px);min-height:560px;max-height:1050px}.library{width:258px;flex-shrink:0;border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0;background:#fffef9}.library-heading{display:flex;justify-content:space-between;padding:20px 20px 16px}.section-kicker{font-size:9px;color:#a5ab9b;letter-spacing:2px}.library h2{font-size:16px;font-weight:500;margin:7px 0 0}.library h2 span{font-size:9px;vertical-align:middle;background:#edf0e6;color:#8a987b;padding:2px 5px;border-radius:4px;margin-left:6px}.search{height:36px;border:1px solid #e5e8de;border-radius:6px;background:#f7f8f2;margin:0 18px;display:flex;align-items:center;padding:0 9px;gap:8px}.search svg{width:15px;color:#9da492;flex-shrink:0}.search input{width:100%;border:0;outline:0;background:transparent;font-size:10px;min-width:0;color:var(--ink)}.search input::placeholder{color:#a3a898}kbd{font-family:inherit;border:1px solid #e3e7da;border-radius:3px;padding:1px 5px;font-size:10px;background:#fdfdf9;color:#9bA38f}.categories{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:17px 18px 16px;border-bottom:1px solid var(--line)}.category{font-size:11px;border-radius:5px;padding:8px 3px;color:#8d9684;display:flex;justify-content:center;align-items:center;gap:5px}.category.active{color:#426044;background:#eaf0df;font-weight:600}.category:hover{background:#f1f4e9}.category span{font-size:14px;font-weight:400}.catalog-meta{padding:17px 20px 10px;display:flex;justify-content:space-between;font-size:10px;color:#7f8a76}.catalog-meta>span:last-child{font-size:9px;color:#a5aa9b}.items{overflow:auto;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;padding:0 16px 20px;align-content:start;scrollbar-width:thin;scrollbar-color:#d7dec9 transparent;flex:1}.item{height:94px;display:flex;flex-direction:column;align-items:center;border:1px solid #e7eadd;border-radius:7px;background:#fafbf5;position:relative;transition:background .15s,border-color .15s,transform .15s;padding:6px 3px}.item:hover{background:#f1f5e6;transform:translateY(-2px);border-color:#b6c6a3}.item.active{background:#eaf2dd;border-color:#7e9b66;box-shadow:inset 0 0 0 1px #7e9b66}.item.active:after{content:'✓';position:absolute;right:3px;top:2px;font-size:9px;color:#5d7b47}.item canvas{width:46px;height:48px;image-rendering:pixelated}.item strong{font-size:10px;font-weight:400;margin-top:3px}.item small{font-size:8px;color:#a0a992;margin-top:3px}.library-tip{display:flex;gap:8px;margin:0 17px 17px;padding-top:14px;border-top:1px dashed #dfe4d4;color:#9ba78c;align-items:flex-start}.library-tip>span{font-size:22px}.library-tip p{font-size:9px;line-height:1.8;margin:1px 0}.library-tip small{display:block;color:#aeb5a1;font-size:8px}.editor{display:flex;flex-direction:column;min-width:0;flex:1}.editor-header{height:75px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:0 22px;border-bottom:1px solid var(--line)}.farm-title{display:flex;gap:11px;align-items:center}.farm-mark{color:#97a676;background:#f0f3e4;border:1px solid #e4e8d6;width:36px;height:36px;display:grid;place-items:center;border-radius:7px;font-size:23px}.farm-title input{font-size:15px;font-weight:500;background:transparent;border:0;padding:0;width:118px;color:#44543f}.save-status{display:block;font-size:9px;color:#a0a792;margin-top:5px}.save-status:before{content:'✓';color:#8ea179;margin-right:4px}.farm-tag{font-size:9px;padding:4px 7px;background:#f2f3e8;border-radius:4px;color:#9da58b;margin-left:1px}.editor-actions{display:flex;gap:10px;position:relative}.button{height:35px;padding:0 13px;display:inline-flex;align-items:center;justify-content:center;gap:7px;border-radius:5px;font-size:11px;letter-spacing:.4px;border:1px solid #dfe4d6;background:#fffef9;white-space:nowrap}.button:hover{filter:brightness(.96)}.button.primary{background:var(--green);border-color:var(--green);color:#fffef4}.button svg{width:14px;height:14px}.button.subtle{color:#7d8b70}.chevron{font-size:14px;margin-left:5px}.toolbar{height:49px;flex-shrink:0;border-bottom:1px solid #dce2cd;display:flex;align-items:center;justify-content:space-between;padding:0 17px;background:#fbfcf6}.toolbar-group{display:flex;align-items:center;gap:6px}.tool{width:31px;height:31px;border-radius:5px;display:flex;align-items:center;justify-content:center;color:#7b896f}.tool svg{width:16px;height:16px}.tool:hover{background:#eef2e4}.tool.active{background:#e2ebd5;color:#4d7042}.divider{height:20px;width:1px;background:#e1e5d7;margin:0 5px}.select-wrap{display:flex;align-items:center;gap:5px;font-size:13px;color:#929e7e}.select-wrap select{background:transparent;border:0;color:#7b886f;font-size:10px;padding:5px 0;cursor:pointer;outline:none}.select-wrap>span{color:#9faa89;font-size:15px}.canvas-area{flex:1;min-height:0;position:relative;overflow:hidden;background:#d7dfc0;background-image:radial-gradient(#9da88335 .8px,transparent .8px);background-size:8px 8px}.canvas-area>canvas{width:100%;height:100%;display:block;touch-action:none;outline:0;image-rendering:pixelated}.map-badge{position:absolute;top:17px;left:18px;background:#fffff3ee;border:1px solid #c6cfac;box-shadow:0 2px 4px #35482b07;border-radius:5px;padding:7px 10px;display:flex;align-items:center;gap:7px;font-size:9px;color:#6e7b56;pointer-events:none}.map-badge>span:last-child{font-size:8px;border-left:1px solid #d9dfca;margin-left:2px;padding-left:8px;color:#a4ad91}.live-dot{width:5px;height:5px;display:inline-block;border-radius:50%;background:#8fa06b}.season-badge{position:absolute;right:18px;top:17px;display:flex;align-items:center;gap:8px;color:#6c8055;pointer-events:none}.season-badge>span{background:#edf3d9d9;width:32px;height:32px;display:grid;place-items:center;border-radius:50%;border:1px solid #b7c298;font-size:12px}.season-badge div{font-size:10px;letter-spacing:2px}.season-badge small{font-size:8px;letter-spacing:1px;display:block;margin-top:4px;opacity:.7}.canvas-hint{position:absolute;bottom:22px;left:50%;transform:translateX(-50%);font-size:10px;background:#fffff2e6;box-shadow:0 2px 6px #48532c0d;padding:9px 14px;border:1px solid #d6ddc3;border-radius:5px;color:#8c9779;white-space:nowrap;pointer-events:none}.canvas-hint span{margin-right:7px;color:#9fae82}.zoom-controls{position:absolute;bottom:19px;right:17px;display:flex;align-items:center;background:#fffff7;border:1px solid #d5ddc6;border-radius:5px;box-shadow:0 2px 6px #48532c0d;height:33px}.zoom-controls button{height:30px;min-width:29px;font-size:14px;color:#7f8c6d}.zoom-controls button:hover{background:#edf2e3}.zoom-controls #zoomReset{font-size:9px;min-width:42px;padding:0}.zoom-controls>span{width:1px;height:15px;background:#e3e7d8}.zoom-controls svg{width:13px;height:13px;vertical-align:middle}.statusbar{height:35px;flex-shrink:0;display:flex;justify-content:space-between;align-items:center;padding:0 17px;font-size:9px;color:#98a087;background:#fcfdf7}.statusbar>div{display:flex;align-items:center;gap:7px}.statusbar button{font-size:15px;color:#92a078}.status-separator{color:#d3d9c7;margin:0 3px}.selected-info{position:absolute;left:18px;bottom:18px;background:#fffff7f5;border:1px solid #b8c7a0;border-radius:7px;padding:5px 8px;align-items:center;gap:9px;box-shadow:0 2px 8px #48532c12}.selected-info:not([hidden]){display:flex}.selected-info canvas{image-rendering:pixelated}.selected-info strong{font-size:11px;font-weight:500}.selected-info small{display:block;font-size:9px;color:#8d997d;margin-top:5px}.selected-info .icon-button{width:24px;height:24px;border-radius:4px;font-size:17px}.export-menu{position:absolute;right:123px;top:42px;background:#fffef9;border:1px solid var(--line);border-radius:8px;padding:6px;z-index:10;width:205px;box-shadow:0 6px 24px #314a3620}.export-menu button{display:flex;justify-content:space-between;font-size:11px;width:100%;padding:12px 9px;border-radius:4px}.export-menu button:hover{background:#edf2e3}.export-menu span{color:#99a28c;font-size:9px}footer{display:flex;align-items:center;justify-content:space-between;height:48px;color:#a1aa94;font-size:9px;letter-spacing:.4px}.footer-leaf{font-size:19px;color:#99a87d;margin-right:7px;vertical-align:middle}footer>div{display:flex;align-items:center;gap:12px}footer a:hover{color:#446044}footer button{font-size:9px;color:inherit}.footer-dot{color:#c5ccba}#toast{position:fixed;bottom:32px;left:50%;transform:translate(-50%,15px);opacity:0;pointer-events:none;background:#355845f5;color:#fffef4;border:1px solid #58765e;padding:12px 22px;border-radius:8px;box-shadow:0 4px 15px #304a3825;transition:.2s;z-index:50;font-size:12px}#toast.show{opacity:1;transform:translate(-50%,0)}dialog{background:#fffef8;color:var(--ink);border:1px solid #dce3cf;border-radius:13px;width:480px;max-width:calc(100vw - 32px);padding:25px;box-shadow:0 20px 100px #24382830}dialog::backdrop{background:#24382850;backdrop-filter:blur(3px)}.dialog-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.dialog-heading h2{font-size:20px;font-weight:500;margin:0}#modalBody p{font-size:12px;line-height:1.9;color:#8a957d}#modalBody .button{margin-top:10px}.shortcuts-list{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:16px 0}.shortcuts-list div{font-size:11px;display:flex;gap:8px;align-items:center}.plan-row{display:flex;justify-content:space-between;gap:15px;align-items:center;padding:15px 0;border-bottom:1px solid var(--line)}.plan-row strong{font-size:13px;font-weight:500}.plan-row small{display:block;color:#9aa58a;font-size:10px;margin-top:6px}.plan-row .button{margin-top:0!important}.plan-row>div:last-child{display:flex;gap:7px}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.stat-row{display:flex;justify-content:space-between;font-size:12px;padding:9px 0;border-bottom:1px solid #edf0e6}.empty{grid-column:1/-1;text-align:center;padding:30px 5px;color:#9ca68d;line-height:2;font-size:11px}.mobile-only{display:none}
@media(min-width:1500px){.library{width:280px}.item{height:105px}.item canvas{width:54px;height:55px}.items{gap:11px}.library h2{font-size:17px}.canvas-hint{bottom:24px}}
@media(max-height:800px) and (min-width:801px){.header{height:64px}main{padding-top:20px}.page-heading{margin-bottom:18px}.eyebrow{font-size:8px;margin-bottom:5px}.heading-line h1{font-size:21px}.page-heading p{margin-top:5px;font-size:10px}.heading-decoration>svg{height:55px}.workspace{height:calc(100dvh - 220px)!important;min-height:410px}.editor-header{height:64px}.library-heading{padding-top:16px;padding-bottom:13px}footer{height:42px}}
@media(max-width:1100px){.header{padding:0 24px;gap:35px}.made-for{display:none}main{padding:24px 24px 0}.library{width:230px}.library-heading{padding-left:17px}.items{padding:0 12px 18px;gap:7px}.search{margin:0 14px}.categories{padding:16px 12px}.farm-tag{display:none}.canvas-hint{left:18px;transform:none;font-size:9px;max-width:55%;overflow:hidden;text-overflow:ellipsis}.selected-info~.canvas-hint{max-width:50%}.canvas-area:has(.selected-info:not([hidden])) .canvas-hint{display:none}.header nav{gap:24px}.workspace{height:calc(100dvh - 262px)}.editor-header{padding:0 16px}}
@media(max-width:800px){.header{height:68px;padding:0 18px;gap:23px}.brand{font-size:17px;gap:8px;letter-spacing:1px}.brand small{font-size:6px;letter-spacing:1.5px}.brand-mark{width:32px;height:34px;font-size:26px;line-height:33px}.header-right{gap:10px}.header-right .icon-button{display:none}.nav-button{font-size:11px}.header nav{gap:16px}main{padding:21px 16px 0}.heading-line h1{font-size:20px}.version{display:none}.page-heading p{font-size:10px}.heading-decoration{margin-right:0;gap:2px}.heading-decoration>svg{width:50px}.workspace{height:calc(100dvh - 245px);min-height:490px;position:relative}.library{position:absolute;top:0;bottom:0;left:0;z-index:15;width:252px;box-shadow:12px 0 35px #33463220;transform:translateX(-110%);transition:transform .2s}.library.open{transform:translateX(0)}.mobile-only{display:inline-flex}.editor-header{height:68px}.toolbar{padding:0 10px}.toolbar-group{gap:2px}.divider{margin:0 3px}.select-wrap{gap:2px}.tool{width:29px}.map-badge{left:12px;top:12px}.season-badge{right:12px;top:12px}.season-badge div{display:none}.statusbar{padding:0 12px}.statusbar #coordinates{display:none}footer>div>span{display:none}footer{font-size:8px;gap:7px}footer>div{gap:4px}.canvas-hint{display:none}}
@media(max-width:480px){.header{gap:15px}.header nav{gap:8px}.brand{font-size:15px}.brand small{font-size:5px}.header-right{display:none}.page-heading{margin-bottom:19px}.heading-line h1{font-size:17px;letter-spacing:0}.eyebrow{font-size:7px}.heading-decoration{display:none}.page-heading p{font-size:9px;letter-spacing:.5px}.editor-header{padding:0 10px}.farm-mark{display:none}.farm-title input{width:95px;font-size:13px}.button{padding:0 9px;font-size:10px}.editor-actions{gap:6px}.toolbar-group{gap:0}.tool{width:27px}.view-options .divider{display:none}.select-wrap select{font-size:9px;max-width:70px}.select-wrap>span{display:none}.export-menu{right:0}.workspace{height:calc(100dvh - 235px);min-height:450px}footer>div a{display:none}.selected-info{left:10px;bottom:58px}.zoom-controls{bottom:14px;right:12px}}
.layer-toolbar{display:flex;align-items:center;gap:18px;min-height:34px;padding:4px 18px;border-bottom:1px solid #dce2cd;font-size:10px;color:#7b886f;background:#f9fbf3}.layer-toolbar label{display:flex;align-items:center;gap:6px}.layer-toolbar select{border:1px solid #e0e6d5;border-radius:4px;background:#fffef8;color:#637856;font-size:10px;padding:3px}.layer-toolbar button{margin-left:auto;font-size:9px;color:#83916f}.selected-info{max-width:65%}.selected-info small{max-width:260px;line-height:1.5}.import-counts{display:flex;gap:12px;margin:15px 0}.import-counts>div{flex:1;background:#edf2e4;padding:14px;text-align:center;border-radius:8px}.import-counts strong{display:block;font-size:25px;font-weight:500;color:#355845}.import-counts small{display:block;margin-top:5px;font-size:10px;color:#849275}.import-summary details{margin-top:15px;max-height:220px;overflow:auto;font-size:11px}.import-summary summary{cursor:pointer;padding:10px 0}.import-report-row{padding:8px 0;border-bottom:1px solid #e6ebdc;word-break:break-word}.save-location{display:block;background:#eff3e7;font-size:11px;overflow-wrap:anywhere;padding:12px;border-radius:6px}#legacyNotice{padding:7px 15px;background:#f7edcf;color:#9b7b44;font-size:10px}#importReport{font-size:9px;border:1px solid #d9e2cd;border-radius:4px;padding:3px 5px}.item small{white-space:nowrap}.farm-title input{width:110px}#modalBody a{color:#426747;text-decoration:underline}dialog{max-height:85dvh}#importSaveButton{background:#edf2e4;border-color:#d6e0c9;color:#58724b}
@media(max-width:1100px){.farm-tag{display:none}.editor-actions{gap:6px}.editor-header{padding:0 12px}.farm-title{gap:7px}.farm-title input{width:100px}}
@media(max-width:800px){.layer-toolbar{gap:8px;padding:4px 10px;flex-wrap:wrap}.layer-toolbar button{font-size:8px}.farm-mark{display:none}#importSaveButton{font-size:9px;padding:0 7px}.editor-header{padding:0 8px}.farm-title input{width:88px}.editor-actions .button{padding:0 8px}.save-status{font-size:8px}.selected-info{max-width:90%}.layer-toolbar label{font-size:9px;gap:3px}.layer-toolbar select{font-size:9px}#legacyNotice{font-size:9px}}
@media(max-width:480px){.editor-actions{gap:4px}.editor-actions .button{font-size:9px;padding:0 6px;gap:3px}#exportButton .chevron{display:none}.farm-title input{width:75px;font-size:12px}.statusbar{font-size:8px;padding:0 8px}.statusbar>div{gap:4px}.layer-toolbar{gap:6px}.layer-toolbar button{margin-left:0}.layer-toolbar label{font-size:8px}.layer-toolbar select{max-width:83px}}

.layer-toolbar{flex-wrap:wrap;gap:8px 14px}.canvas-area:has(.selected-info:not([hidden])) .canvas-hint{display:none}.item strong{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.marquee-tool{width:auto;gap:3px;padding:0 7px}.marquee-tool span{font-size:10px;white-space:nowrap}.selection-action{flex-shrink:0;border:1px solid #b8c7a0;border-radius:4px;padding:5px 8px;font-size:10px;background:#edf2e4;color:#426044}.selected-info{max-width:calc(100% - 40px);bottom:58px}.selected-info>div{min-width:0}.selected-info canvas,.selected-info button{flex-shrink:0}.selected-info [hidden]{display:none}.gesture-info{position:absolute;top:58px;left:50%;transform:translateX(-50%);max-width:90%;padding:7px 12px;border:1px solid #b8c7a0;border-radius:5px;background:#fffff5f2;color:#426044;font-size:11px;pointer-events:none;text-align:center;box-shadow:0 2px 8px #35482620}.gesture-info.invalid{color:#a44035;border-color:#c47c6a;background:#fff5edf5}
@media(max-width:800px){.toolbar{height:auto;min-height:49px;flex-wrap:wrap;gap:4px;padding:7px 10px}.toolbar .view-options{margin-left:auto}.selected-info{max-width:calc(100% - 20px);gap:5px;padding:5px}.selected-info canvas{width:30px;height:30px}.selected-info small{font-size:8px}.selected-info strong{font-size:10px}.selected-info .icon-button{width:24px}.selection-action{padding:5px}.gesture-info{font-size:10px;top:51px}}

.catalog-expand{align-self:center;flex-shrink:0;font-size:10px;border:1px solid #d8e0cc;border-radius:5px;padding:6px 8px;color:#4d7042;background:#f1f5e9}.library-heading{gap:5px;padding-left:16px;padding-right:12px}.library h2{font-size:15px;white-space:nowrap}.category{font-size:10px;gap:4px}.catalog-filter-wrap:not([hidden]){display:flex;align-items:center;gap:8px;padding:10px 17px 0;color:#8d9684;font-size:10px}.catalog-filter-wrap select{min-width:0;flex:1;border:1px solid #dce3d2;border-radius:5px;background:#f8faf2;color:#536c47;padding:6px;font-size:10px}.catalog-dialog{width:960px;height:min(760px,90dvh);max-width:calc(100vw - 32px);max-height:90dvh;padding:22px;overflow:hidden}.catalog-dialog[open]{display:flex;flex-direction:column}.catalog-dialog .dialog-heading{flex-shrink:0;margin-bottom:14px}.catalog-dialog #modalBody{display:flex;flex:1;min-height:0}.catalog-browser{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0}.catalog-controls{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.catalog-controls input{min-width:180px;flex:1;border:1px solid #d9e2cc;border-radius:6px;background:#f5f8ee;padding:10px 12px;outline:none;color:#355845}.catalog-controls select{max-width:210px;border:1px solid #d9e2cc;background:#fffef8;border-radius:5px;padding:9px;color:#58724b;font-size:11px}.catalog-controls span{font-size:11px;color:#83916f;white-space:nowrap}.catalog-dialog #modalBody .catalog-caption{font-size:10px;margin:12px 0;line-height:1.6}.catalog-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;overflow-y:auto;align-content:start;min-height:0;padding:3px 6px 10px 0;scrollbar-width:thin;scrollbar-color:#c5d3b5 transparent}.catalog-card{display:flex;align-items:center;gap:9px;text-align:left;min-width:0;border:1px solid #e0e7d5;border-radius:7px;background:#f7f9f0;padding:8px;min-height:68px}.catalog-card:hover,.catalog-card.active{background:#eaf2dd;border-color:#8ba76c}.catalog-card canvas{width:44px;height:44px;image-rendering:pixelated;flex-shrink:0}.catalog-card>div{min-width:0}.catalog-card strong{font-size:11px;font-weight:500;display:block;overflow-wrap:anywhere}.catalog-card small{display:block;margin-top:5px;font-size:9px;color:#99a28c}.catalog-grid .empty{grid-column:1/-1}
@media(max-width:1100px){.library h2{font-size:13px}.catalog-expand{font-size:9px;padding:5px}.library-heading{padding-left:14px;padding-right:9px}}
@media(max-width:800px){.catalog-dialog{padding:16px}.catalog-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.catalog-controls input{flex-basis:100%}.catalog-controls select{flex:1;min-width:0;max-width:100%}.library h2{font-size:15px}.catalog-expand{margin-left:auto}}
@media(max-width:520px){.catalog-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.catalog-card{padding:6px;gap:6px}.catalog-card canvas{width:34px;height:40px}.catalog-card strong{font-size:10px}.catalog-dialog .dialog-heading h2{font-size:18px}.catalog-controls{gap:6px}.catalog-controls select{font-size:10px;padding:8px 3px}.catalog-dialog #modalBody .catalog-caption{font-size:9px}.catalog-expand{padding:5px}.catalog-filter-wrap{padding-left:15px}}
.catalog-shelves{display:flex;gap:5px;margin:9px 16px 0}.catalog-shelves button{flex:1;padding:5px;border-radius:4px;color:#8b967e;font-size:10px}.catalog-shelves button[aria-pressed=true]{color:#355845;background:#eaf0df}.catalog-entry{position:relative;min-width:0}.catalog-entry>.item{width:100%;height:100%;min-height:94px}.catalog-entry>.catalog-card{width:100%;height:100%;padding-right:23px}.favorite-toggle{position:absolute;right:3px;top:3px;width:23px;height:23px;display:grid;place-items:center;border-radius:4px;background:#fffef6db;color:#9da88e;font-size:16px}.favorite-toggle:hover{background:#edf2df}.favorite-toggle[aria-pressed=true]{color:#a57c25}.item.active:after{right:auto;left:4px}.catalog-entry .item strong{max-width:100%;overflow-wrap:anywhere;text-align:center}.editor-view-bar{display:flex;align-items:center;gap:10px;flex-shrink:0;min-height:31px;padding:3px 16px;border-bottom:1px solid var(--line);background:#f4f7ec}.editor-view-bar button{font-size:10px;color:#486843;padding:4px 7px;border:1px solid #d7e1c8;border-radius:4px;background:#fffef8}.editor-view-bar span{font-size:9px;color:#a0ab92;margin-left:auto}.editor-view-bar #fullscreenEditor{color:#355845}.workspace.library-collapsed>.library{display:none}.editor-fullscreen{overflow:hidden}.editor-fullscreen .workspace{position:fixed;inset:0;z-index:25;border-radius:0;width:100vw;height:100dvh!important;min-height:0!important;max-height:none;border:0}.editor-fullscreen .editor-header{height:58px}.editor-fullscreen #fullscreenEditor{background:#355845;border-color:#355845;color:#fffef4}.editor-fullscreen #toast{z-index:60}.storage-notice:not([hidden]){display:flex;gap:10px;align-items:center;padding:8px 14px;background:#fff0d7;border-bottom:1px solid #e7cb98;color:#94612d;font-size:11px;flex-shrink:0}.storage-notice span{flex:1}.storage-notice button{white-space:nowrap;text-decoration:underline;font-size:11px;color:#6c481f}.save-status[data-error=true]{color:#a96939;max-width:210px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.save-status[data-error=true]:before{content:'!';color:#a96939}.recovery-list .plan-row{align-items:flex-start}.recovery-list .plan-row>div:first-child{min-width:0;overflow-wrap:anywhere}.recovery-list .plan-row>div:last-child{flex-shrink:0}.recovery-list .dialog-actions{flex-wrap:wrap}.recovery-list .plan-row small{line-height:1.6}.catalog-controls #fullCatalogSearch{flex-basis:35%}
@media(max-width:800px){#toggleLibrary{display:none}.editor-view-bar{padding:3px 10px}.editor-fullscreen .library{z-index:30}.editor-fullscreen .editor-header{height:60px}.storage-notice:not([hidden]){font-size:10px;padding:6px 9px}.save-status[data-error=true]{max-width:100px}.catalog-controls #fullCatalogSearch{flex-basis:100%}.catalog-controls #fullCatalogShelf{flex-basis:100%}.recovery-list .plan-row{gap:8px}.recovery-list .plan-row .button{padding:0 6px}}

.rule-status{position:absolute;left:18px;top:52px;max-width:min(600px,calc(100% - 36px));padding:8px 12px;border:1px solid #d4dfc1;border-radius:6px;background:#fffef5ee;color:#4b6743;font-size:11px;line-height:1.65;pointer-events:none;box-shadow:0 2px 12px #36512d0a}.rule-status.invalid{background:#fff0e4ee;color:#995c41;border-color:#ddb89b}.selected-info{flex-wrap:wrap}.selected-info #plantControls{font-size:9px;color:#809171;display:flex;align-items:center;gap:5px}.selected-info #plantControls[hidden]{display:none}.selected-info select{max-width:116px;border:1px solid #d7dfcb;border-radius:4px;padding:4px;font-size:10px;background:#f9fbf2;color:#45623a}.condition-fields{display:flex;gap:20px}.condition-fields label{display:flex;align-items:center;gap:10px}.condition-fields select,.condition-fields input{max-width:130px;padding:7px;border:1px solid #d5dec8;border-radius:4px;background:#fbfcf6}.layer-toolbar #rangeConditions{margin-left:0;color:#527246;border:1px solid #d7dfcb;border-radius:4px;padding:4px 7px}.layer-toolbar #coverageMode{max-width:90px}@media(max-width:800px){.rule-status{left:10px;top:47px;font-size:10px;max-width:calc(100% - 20px);padding:5px 8px}.selected-info #plantControls{font-size:8px}.selected-info select{font-size:9px}.condition-fields{gap:10px}}

.settings-trigger{font-size:20px;color:#55734b}.editor-settings{position:fixed;inset:auto;margin:0;padding:0;border:1px solid #cbd8bc;border-radius:10px;background:#fffef7;color:#3b5138;box-shadow:0 12px 45px #233a3033;overflow:hidden;font-family:inherit}.editor-settings:popover-open{display:flex;flex-direction:column}.settings-heading{display:flex;align-items:center;justify-content:space-between;padding:11px 16px;border-bottom:1px solid #e2e8d8;flex-shrink:0;background:#f1f5e9}.settings-heading strong{font-size:12px;font-weight:600}.settings-heading button{font-size:21px;color:#718467;width:24px;height:24px}.settings-scroll{padding:6px 8px;overflow-y:auto;min-height:0;scrollbar-width:thin;scrollbar-color:#bdcfae transparent}.settings-row,.settings-action{display:flex;align-items:center;gap:11px;width:100%;min-height:30px;padding:5px 10px;border-radius:5px;text-align:left;font-size:11px;cursor:pointer;color:#4e6545;box-sizing:border-box}.settings-row:hover,.settings-action:hover{background:#edf3e4}.settings-row input{appearance:none;position:relative;width:26px;height:14px;background:#d6decb;border:1px solid #bdcbb0;border-radius:10px;margin:0;flex-shrink:0;cursor:pointer;transition:background .15s}.settings-row input:after{content:'';position:absolute;top:2px;left:2px;width:8px;height:8px;border-radius:50%;background:#fffef6;box-shadow:0 1px 2px #35482630;transition:transform .15s}.settings-row input:checked{background:#6c8b57;border-color:#5d7c49}.settings-row input:checked:after{transform:translateX(12px)}.settings-row input:focus-visible,.settings-action:focus-visible{outline:2px solid #719457;outline-offset:3px}.settings-action{padding-left:15px;gap:14px}.settings-action small{margin-left:auto;font-size:9px;color:#8a9c7c}.settings-divider{height:1px;background:#e3e9d9;margin:4px 8px}.settings-footnote{margin:0;padding:9px 16px;font-size:9px;color:#88977c;border-top:1px solid #e3e9d9;flex-shrink:0}.feedback-button{position:absolute;bottom:20px;left:18px;font-size:10px;padding:8px 10px;color:#637a50;background:#fffef4e8;border:1px solid #d1dcc0;border-radius:5px}.free-placement-badge{position:absolute;top:17px;left:155px;max-width:calc(100% - 170px);padding:7px 9px;border:1px solid #d2b977;border-radius:5px;background:#fff3d9ed;color:#967035;font-size:9px;pointer-events:none}.free-placement .season-badge{display:none}.guides-hidden .canvas-hint{display:none}.zoom-controls button:disabled,.tool:disabled{opacity:.4;cursor:not-allowed}@media(max-width:520px){.settings-row,.settings-action{min-height:36px;font-size:12px}.feedback-button{left:10px;bottom:20px;font-size:9px}.free-placement-badge{left:145px;max-width:calc(100% - 155px);font-size:8px}.view-options{gap:4px}.toolbar .select-wrap select{max-width:82px}}

.editor-view-bar .navigation-help{margin-left:auto;font-size:9px;color:#7d8f6b;background:transparent;border-color:transparent}.editor-view-bar .navigation-help:hover{border-color:#cbd9ba;background:#eaf1df}.navigation-shortcuts{display:grid;gap:13px;margin:18px 0}.navigation-shortcuts>div{display:flex;align-items:center;gap:14px;font-size:12px;line-height:1.6}.navigation-shortcuts kbd{min-width:120px;flex-shrink:0;text-align:center;font-size:11px}.navigation-shortcuts span{color:#647a53}@media(max-width:480px){.navigation-shortcuts>div{gap:8px;font-size:11px}.navigation-shortcuts kbd{min-width:105px;font-size:10px}.editor-view-bar .navigation-help{font-size:8px;padding:4px}}

.editor-view-bar .navigation-lock{color:#80551f;background:#fff0d3;border-color:#d5b777;font-weight:600}.navigation-lock-help{display:block;margin-top:4px;color:#8a795a;font-size:9px;line-height:1.5}.editor-view-bar .navigation-lock[hidden]{display:none}

/* Keep editing controls in two compact rows and reserve the remaining height for the map. */
body{height:100dvh;display:flex;flex-direction:column}
.header{height:52px;flex-shrink:0;padding:0 20px;gap:38px}
.brand{font-size:17px}.brand-mark{width:30px;height:32px;line-height:31px;font-size:25px}.brand small{font-size:6px}
main{display:flex;flex-direction:column;flex:1;min-height:0;width:100%;max-width:none;padding:8px 16px 0}
.page-heading{height:32px;flex-shrink:0;margin:0 0 8px}.page-heading .eyebrow,.page-heading p,.heading-decoration{display:none}
.page-heading .heading-line h1{font-size:16px;letter-spacing:.5px}.heading-line{gap:12px}
.workspace{flex:1;height:auto!important;min-height:280px;max-height:none;border-radius:8px}
footer{height:24px;flex-shrink:0;font-size:8px}.footer-leaf{font-size:15px}
.library{width:240px}.library-heading{padding:12px 14px}.section-kicker,.library-tip{display:none}.library h2{margin:0;font-size:14px}
.categories{padding-top:12px;padding-bottom:12px}.catalog-meta{padding-top:12px;padding-bottom:10px}
.editor-header,.editor-fullscreen .editor-header{height:48px;min-height:48px;gap:10px;padding:5px 12px}
.farm-title{gap:9px;min-width:0}.farm-mark{display:none}.farm-title>div{min-width:0}.farm-title input{width:150px;max-width:100%;font-size:13px;line-height:20px}
.save-status{font-size:9px;white-space:nowrap}.editor-actions{gap:6px;flex-shrink:0}.editor-actions .button{height:30px;font-size:10px;padding:0 10px}
.compact-button,#rotateBrush{height:28px;flex-shrink:0;padding:0 8px;border:1px solid #d5dfc8;border-radius:5px;font-size:10px;white-space:nowrap;background:#f8faf3;color:#506a44}
.compact-button:hover,#rotateBrush:hover{background:#eaf1df}.compact-button[aria-expanded=true]{background:#edf3e5}
.toolbar{height:auto;min-height:42px;flex-wrap:wrap;justify-content:flex-start;gap:4px 12px;padding:5px 12px}
.toolbar-group{gap:3px;flex-shrink:0}.toolbar .view-options{margin-left:auto;flex-wrap:wrap;max-width:100%}.toolbar .divider{margin:0 4px}
.quick-controls{display:flex;align-items:center;gap:10px}.quick-controls label{display:flex;align-items:center;gap:5px;white-space:nowrap;color:#7b886f;font-size:10px}
.quick-controls select{height:27px;max-width:110px;border:1px solid #dce3d1;border-radius:4px;background:#fffef8;color:#526b47;padding:0 4px;font-size:10px}
.quick-controls [hidden]{display:none}.toolbar .navigation-lock{color:#80551f;background:#fff0d3;border:1px solid #d5b777;border-radius:4px;font-size:10px;padding:5px 7px;white-space:nowrap}
.toolbar .navigation-lock[hidden]{display:none}.export-menu{top:36px;right:0;z-index:20}
.auxiliary-settings .auxiliary-fields{display:grid;gap:12px;padding:12px 8px;border:0;background:none;font-size:11px}
.auxiliary-fields label{justify-content:space-between;font-size:11px}.auxiliary-fields select{font-size:11px;min-width:128px;max-width:160px!important;padding:6px}
.auxiliary-fields #rangeConditions{padding:8px;text-align:left;font-size:11px}.auxiliary-fields #dataInfo{margin-left:0;text-align:left;font-size:10px}
.auxiliary-help{display:flex;gap:8px;padding:8px;border-top:1px solid var(--line)}
.auxiliary-help button{position:static;padding:7px 8px;border:1px solid #d7e1c8;border-radius:4px;background:#f5f8ed;color:#607850;font-size:10px}
.auxiliary-help [hidden]{display:none}
.statusbar{height:30px;gap:12px;padding:0 10px;border-top:1px solid var(--line);font-size:9px}
.statusbar .status-position{flex-shrink:0;gap:6px}.statusbar .status-counts{margin-left:auto;flex-shrink:0;gap:6px}
.statusbar .canvas-hint{display:block;position:static;transform:none;flex:1;min-width:0;max-width:none;overflow:hidden;text-overflow:ellipsis;padding:0;border:0;box-shadow:none;background:none;font-size:9px;text-align:center;color:#87977c}
.editor:has(.guides-hidden) .canvas-hint{display:none}
.statusbar .zoom-controls{position:static;flex-shrink:0;height:25px;gap:0;box-shadow:none;border-color:#e0e6d7;background:#fffef9}
.statusbar .zoom-controls button{height:23px;min-width:26px;padding:0;font-size:13px}.statusbar .zoom-controls #zoomReset{font-size:9px;min-width:42px}
.selected-info{bottom:12px}.map-badge{top:12px;left:12px}.season-badge{top:12px;right:12px}
@media(min-width:1500px){.library{width:260px}.farm-title input{width:180px}}
@media(max-width:1100px){.toolbar{gap:4px 8px}.quick-controls{gap:6px}.statusbar .canvas-hint{display:none}.farm-title input{width:120px}}
@media(max-width:800px){
 .header{height:46px;padding:0 12px;gap:20px}.header nav{gap:14px}main{padding:6px 8px 0}.page-heading{height:26px;margin-bottom:6px}.page-heading .heading-line h1{font-size:14px}
 .workspace{min-height:300px}.library{width:252px}.editor-header,.editor-fullscreen .editor-header{height:auto;min-height:46px;flex-wrap:wrap;padding:6px 8px;gap:6px}
 .farm-title{flex:1}.farm-title input{width:150px}.editor-actions{margin-left:auto}.editor-actions .button{height:30px;padding:0 8px;font-size:10px}
 .toolbar{padding:4px 8px;gap:4px 8px}.tool{width:29px;height:30px}.marquee-tool{width:auto}.quick-controls{gap:8px}.quick-controls label{font-size:9px}
 .statusbar{height:30px;gap:6px;padding:0 6px}.statusbar #coordinates{display:none}.statusbar .status-position .status-separator{display:none}.statusbar .status-counts{font-size:8px;gap:4px}
 footer{height:24px}.selected-info{bottom:8px}
}
@media(max-width:520px){
 .header{gap:16px}.brand{font-size:15px}.brand-mark{width:26px;height:28px;line-height:27px}.brand small{display:none}.header nav{gap:12px}.nav-button{font-size:10px}
 .editor-header{row-gap:5px}.farm-title{flex-basis:100%}.farm-title>div{display:flex;align-items:center;gap:10px;width:100%}.farm-title input{width:130px}.save-status{margin:0;font-size:9px}
 .editor-actions{width:100%;justify-content:flex-end}.editor-actions #importSaveButton{margin-right:auto;font-size:10px}
 .toolbar .quick-controls{margin-left:auto}.quick-controls label{font-size:0;gap:0}.quick-controls select{max-width:88px;font-size:10px}
 .toolbar .view-options{width:100%;justify-content:flex-end}.toolbar .view-options #viewSettingsButton{margin-right:auto}.toolbar .select-wrap select{font-size:10px;max-width:92px}
 .statusbar .status-position{display:none}.statusbar .status-counts{margin-left:0;flex:1}.statusbar .zoom-controls button{min-width:28px}.statusbar .zoom-controls #zoomReset{min-width:40px}
}

/* Compact contextual catalogue: stays in the top layer in fullscreen mode. */
.quick-menu{position:fixed;inset:auto;margin:0;padding:12px;width:min(360px,calc(100vw - 16px));max-height:calc(100dvh - 16px);box-sizing:border-box;overflow:auto;border:1px solid #d6ddc7;border-radius:12px;background:#fffef8;color:#354936;box-shadow:0 10px 40px #203c2829;z-index:1000}
.quick-menu-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}.quick-menu-heading button{border:0;background:none;padding:4px 10px;font-size:20px}
.quick-menu input,.share-url{width:100%;box-sizing:border-box;border:1px solid #d6ddc7;border-radius:6px;padding:10px;background:#f8f9f2;color:#354936;font:inherit}.quick-menu-label{font-size:11px;color:#79856b;margin:12px 0 7px}
.quick-menu-items{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;max-height:260px;overflow:auto}.quick-menu-items button{display:flex;align-items:center;gap:7px;min-width:0;padding:4px;border:1px solid transparent;border-radius:6px;background:#f7f8f0;color:inherit;text-align:left;cursor:pointer}.quick-menu-items button:hover,.quick-menu-items button:focus-visible{background:#eaf0dc;border-color:#a5b994}.quick-menu-items canvas{width:32px;height:32px;flex-shrink:0;image-rendering:pixelated}.quick-menu-items span{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.quick-menu-all,.quick-pick{margin-top:9px;border:0;padding:8px;border-radius:6px;background:#eaf0dc;color:#355845;width:100%;cursor:pointer}.share-url{margin:8px 0 12px}.share-error{color:#a34332}


.phenology-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:16px 0}.phenology-grid figure{margin:0;text-align:center;padding:8px;background:#ecf1e4;border:1px solid #dbe2ce;border-radius:8px}.phenology-grid canvas{width:100%;max-width:128px;height:176px;object-fit:contain;image-rendering:pixelated}.phenology-grid figcaption{font-size:12px;color:#486348}.plant-season-label{font-size:9px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;color:#687e58!important}.item:has(.plant-season-label){height:auto;min-height:118px}.catalog-card:has(.plant-season-label){height:auto}#plantPhenology{white-space:nowrap}@media(max-width:600px){.phenology-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Bounded catalogue: fixed rows prevent layout shifts when seasons change. */
.items.virtual-catalog,.catalog-grid.virtual-catalog{display:block;position:relative;overflow:auto;overflow-anchor:none;padding:0 8px;flex:1;min-height:0;contain:layout paint}
.catalog-surface{position:relative;min-width:0;font-size:11px;color:#83916f}
.catalog-surface .catalog-entry>.item,.catalog-surface .catalog-entry>.catalog-card{height:100%;min-height:0;overflow:hidden}
.catalog-surface .item strong{max-height:28px;overflow:hidden}.catalog-surface .catalog-card{flex-wrap:wrap;align-content:center;gap:4px}
.catalog-surface .catalog-card .plant-season-label{flex-basis:100%;text-align:center}
#season[aria-busy=true]{opacity:.65}.save-status:before{content:'○'}
