:root{--pine:#123b2a;--forest:#25664a;--leaf:#a7cc72;--bg:#f5f6f1;--ink:#21372d;--muted:#718275;--line:#e1e7dd;--shadow:0 9px 28px rgba(25,51,35,.045)}
*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--bg)}body{margin:0;font-family:system-ui,-apple-system,'Apple SD Gothic Neo','Malgun Gothic',sans-serif;color:var(--ink);font-size:14px;line-height:1.48}h1,h2,h3,p{margin-top:0}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #91d0b0;outline-offset:2px}[hidden]{display:none!important}
.topbar{background:var(--pine);color:white;display:flex;align-items:center;justify-content:space-between;padding:13px max(22px,calc((100vw - 1510px)/2 + 25px));gap:16px}.brand{display:flex;gap:10px;align-items:center}.brand-icon{width:42px;height:42px;display:grid;place-items:center;border:1px solid #4c7b5d;background:#28543d;border-radius:12px;font-size:24px}.brand b{display:block;font-size:22px;letter-spacing:-.75px}.brand b i{font-style:normal;color:#bbdc8c}.brand small{display:block;color:#b5cdbb;font-size:11px;margin-top:0}.topbar-actions{display:flex;align-items:center;gap:15px}.sync-badge{font-size:12px;color:#cbdfcb}.sync-badge.online{color:#b9f0c8}.sync-badge.offline{color:#ffd1b0}.top-button{background:transparent;color:white;border:1px solid #5f816b;border-radius:9px;padding:9px 12px;font-size:12px;font-weight:700}
.page{max-width:1550px;margin:auto;padding:23px 25px}.intro{background:linear-gradient(110deg,#1f5137,#386b43 62%,#607b4a);color:white;border-radius:22px;display:flex;align-items:center;justify-content:space-between;gap:25px;padding:27px 34px}.eyebrow{display:block;color:#87a977;font-weight:850;font-size:11px;letter-spacing:1.1px;margin-bottom:7px}.intro .eyebrow{color:#bcdba5}.intro h1{font-size:clamp(26px,2.5vw,39px);letter-spacing:-1.35px;margin-bottom:6px;line-height:1.25}.intro h1 em{font-style:normal;color:#c6e79b}.intro p{color:#deeee3;font-size:13px;margin-bottom:16px}.intro-tags{display:flex;flex-wrap:wrap;gap:6px}.intro-tags span{background:#ffffff1b;border:1px solid #ffffff25;border-radius:8px;padding:6px 10px;font-size:11px}.area{display:flex;flex-direction:column;min-width:185px;text-align:right}.area small,.area span{color:#e4f0e7;font-size:11px}.area strong{font-size:39px;font-weight:850;letter-spacing:-1.4px;line-height:1.23}.area strong sub{font-size:16px;vertical-align:baseline}
.stats{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:13px 0}.stat{background:white;border:1px solid var(--line);border-radius:14px;padding:15px 19px;box-shadow:var(--shadow)}.stat>span{display:block;color:var(--muted);font-size:11px;font-weight:650;margin-bottom:3px}.stat strong{font-size:27px;line-height:1.2}.stat strong small{font-weight:650;font-size:12px;margin-left:4px;color:var(--muted)}
.weather-card{display:flex;align-items:center;flex-wrap:wrap;gap:18px;background:#eff5ea;border:1px solid #e0eadc;border-radius:16px;padding:13px 20px;margin-bottom:14px}.weather-current{display:flex;align-items:center;gap:12px;min-width:260px}.weather-icon{font-size:26px;background:white;border-radius:12px;width:48px;height:48px;display:grid;place-items:center}.weather-current small{display:block;color:#56715c;font-size:11px;font-weight:700}.weather-current strong{display:block;font-size:20px;font-weight:850}.weather-current div>span:not(.micro-status){font-size:10.5px;color:#738974;display:block}.micro-status{font-size:10px;color:#5a9c6e;margin-left:4px}.weather-daily{display:flex;flex:1;justify-content:flex-end;gap:5px;min-width:0}.weather-day{border-left:1px solid #d8e4d5;text-align:center;min-width:80px;padding:0 8px}.weather-day strong{display:block;font-size:12px}.weather-day span{display:block;font-size:12px;font-weight:750}.weather-day small{display:block;font-size:11px;color:#789077}.weather-alert{width:100%;font-size:12px;color:#8b582c;border-top:1px solid #d9e7d7;padding-top:8px;font-weight:750}
.main-grid{display:grid;grid-template-columns:minmax(0,1.27fr) minmax(340px,.73fr);gap:15px;align-items:start}.panel{background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);min-width:0}.panel-head{padding:20px 22px 13px}.panel-head h2,.editor-panel h2{font-size:20px;letter-spacing:-.5px;margin-bottom:4px}.panel-head p{font-size:12px;color:var(--muted);margin:4px 0 0}.tag{font-size:11px;color:#427f5b;background:#edf5e9;border-radius:60px;padding:5px 9px;white-space:nowrap;vertical-align:middle}
.map-controls{padding:0 20px 11px;display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}.control-group{display:flex;gap:5px;align-items:center}.tool{border:1px solid #dce6d9;background:#f9fbf6;color:#47664e;padding:8px 11px;border-radius:9px;font-size:12px;font-weight:750;white-space:nowrap}.tool.active{background:#275f43;color:#fff;border-color:#275f43}.tool.square{min-width:35px;font-size:19px;padding:4px 8px}.zoom-label{min-width:44px;text-align:center;font-size:12px;color:var(--muted);font-weight:700}
.map-viewport{height:min(84vh,1100px);min-height:540px;overflow:auto;border-radius:13px;border:1px solid #d7e0d2;background:#b4c4a4;margin:0 20px;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#9ba995 transparent}.farm-map{position:relative;display:block;width:100%;min-width:100%;aspect-ratio:993/1583;user-select:none;overflow:hidden;line-height:0}.farm-image{position:absolute;inset:0;width:100%;height:100%;display:block;object-fit:fill;pointer-events:none}.farm-map svg{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;overflow:visible}.farm-map.panning svg{pointer-events:none}.photo-stamp{position:absolute;top:11px;left:10px;line-height:1.2;pointer-events:none;color:#fff;background:#102b229c;border:1px solid #ffffff3b;border-radius:7px;padding:7px 10px;font-size:11px;font-weight:720}
.plot{cursor:crosshair;stroke:#e7fff5;stroke-width:1.3;stroke-opacity:.65;fill:#9ed09a05;vector-effect:non-scaling-stroke;transition:fill .09s}.plot:hover{fill:#8adac555;stroke:#fff;stroke-opacity:1}.plot.planted{fill:#31996580;stroke:#dcffd8bd}.plot.harvested{fill:#f5c36170}.plot.excluded{fill:#60687688}.plot.selected{fill:#36d9e799;stroke:#fff;stroke-width:2.9;stroke-opacity:1}.plot:focus-visible{stroke:#ffffb9;stroke-width:4}.farm-map.hide-grid .plot.empty{stroke-opacity:0;fill:#0000}.farm-map.hide-grid .plot.planted{stroke-opacity:.15}.farm-map.hide-grid .plot.selected{stroke-opacity:1}.facility-marker{font-size:11px;fill:#fff;paint-order:stroke;stroke:#172920;stroke-width:2;text-anchor:middle;dominant-baseline:central;pointer-events:none}.zone-marker{font-size:20px;text-anchor:middle;dominant-baseline:middle;pointer-events:none;paint-order:stroke;stroke:#29402a;stroke-width:1.3}.zone-caption{font-size:13px;fill:white;stroke:#24462d;stroke-width:3px;paint-order:stroke;text-anchor:middle;pointer-events:none;font-weight:800}.cell-caption{font-size:13px;fill:#fff;stroke:#2b3a2d;stroke-width:2.2;paint-order:stroke;text-anchor:middle;pointer-events:none;font-weight:850}.farm-map:not(.show-labels) .cell-caption{display:none}
.map-bottom{padding:13px 20px 18px}.legend{display:flex;flex-wrap:wrap;gap:12px}.legend span{font-size:11px;color:#718073;display:flex;align-items:center;gap:5px}.key{width:11px;height:11px;display:inline-block;border-radius:3px;border:1px solid #8fa498}.key.empty{background:#eff5e2}.key.planted{background:#4c9f6b}.key.harvested{background:#eebd6a}.key.selected{background:#42cedc}.key.facility{background:#7c838a}.map-bottom-actions{display:flex;gap:6px;margin:15px 0 0;flex-wrap:wrap}.sub-button,.danger-button{border:1px solid #d7e2d2;background:#fff;color:#3a6143;border-radius:9px;padding:9px 12px;font-size:12px;font-weight:720}.sub-button:hover{background:#f2f7ee}.danger-button{color:#b44c45;border-color:#efd3cf}.danger-button:hover{background:#fff4f2}.note{color:#899587;font-size:10.5px;line-height:1.65;margin:12px 0 0}
.side-column{display:flex;flex-direction:column;gap:15px}.editor-panel{padding:22px}.editor-head{display:flex;justify-content:space-between;align-items:center}.pill{font-size:11px;font-weight:850;color:#2a7750;background:#e9f4e7;padding:5px 10px;border-radius:80px}.editor-panel h2{margin-top:8px}.editor-help{font-size:12px;color:var(--muted);margin:5px 0 17px;min-height:34px}.editor-panel label,.dialog label{display:block;font-size:12px;font-weight:850;margin:12px 0 6px}.editor-panel input,.editor-panel select,.editor-panel textarea,.dialog input{width:100%;border:1px solid #d9e3d6;border-radius:10px;background:#fff;color:#294235;padding:11px 12px;outline:none}.editor-panel textarea{resize:vertical;min-height:78px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:9px}.guide{background:#f3f8ef;border:1px solid #e0ebd9;padding:12px;border-radius:10px;margin-top:12px;font-size:11.5px;color:#59705b;line-height:1.6}.guide strong{display:block;color:#2d6744;font-size:13px}.guide p{margin:5px 0 0}.primary-button{width:100%;border:1px solid #297248;background:#307952;color:white;border-radius:10px;font-weight:800;padding:13px 10px;margin-top:14px;box-shadow:0 4px 13px #2a784a29}.primary-button:hover{background:#276a46}.editor-buttons{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:8px}.editor-buttons .danger-button{grid-column:span 2}
.agenda-panel .panel-head{padding-bottom:5px}.agenda-list{padding:0 20px 17px}.agenda-item{display:flex;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid #eff3eb;cursor:pointer}.agenda-item:last-child{border-bottom:0}.agenda-emoji{display:grid;place-items:center;width:38px;height:38px;border-radius:9px;background:#edf5e8;font-size:21px}.agenda-info{flex:1;min-width:0}.agenda-info strong{font-size:12.5px;display:block}.agenda-info small{color:var(--muted);font-size:10.5px}.agenda-tag{font-size:10.5px;color:#3d8a5c;background:#edf7e9;padding:5px 7px;border-radius:7px;white-space:nowrap}.agenda-tag.soon{color:#a76b26;background:#fff0db}.empty-message{color:#8c9b8d;background:#f8faf7;padding:22px 12px;text-align:center;border-radius:9px;font-size:12px}
.bottom-grid{display:grid;grid-template-columns:minmax(0,1.27fr) minmax(340px,.73fr);gap:15px;align-items:start;margin-top:15px}.crop-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;padding:0 20px 20px}.crop-card{text-align:left;border-radius:12px;padding:14px;border:1px solid #e4eadd;background:#fbfdf9;color:var(--ink)}.crop-card:hover{background:#f0f7e8}.crop-card .crop-icon{font-size:30px;display:block}.crop-card strong{font-size:14px;display:block;margin:3px 0}.crop-card small{font-size:10.5px;color:#64836c;display:block}.crop-card p{font-size:11px;color:#758478;margin:8px 0 0}.today-tips{padding:0 20px}.tip-item{display:flex;gap:11px;border-top:1px solid #ecf0e8;padding:11px 0}.tip-emoji{font-size:20px}.tip-item strong{display:block;font-size:12.5px}.tip-item p{font-size:11px;color:#77897a;margin:4px 0 0}.bottom-actions{padding:12px 20px 0;display:flex;gap:8px}.bottom-actions button{flex:1}.storage-info{background:#fff8e9;color:#826b40;font-size:11px;border-radius:9px;line-height:1.6;padding:12px;margin:12px 20px 20px}footer{display:flex;justify-content:space-between;gap:15px;padding:22px 4px;color:#8b9a8c;font-size:10.5px}footer a{text-decoration:underline}
.toast{position:fixed;z-index:20;bottom:20px;left:50%;transform:translate(-50%,30px);transition:all .17s;opacity:0;pointer-events:none;box-shadow:0 12px 28px #0004;background:#204f37;color:#fff;padding:12px 17px;border-radius:11px;font-size:12.5px;max-width:calc(100vw - 30px);min-width:210px;text-align:center}.toast.show{opacity:1;transform:translate(-50%,0)}.dialog-backdrop{position:fixed;inset:0;z-index:25;display:grid;place-items:center;background:#071f14b8;padding:17px}.dialog{background:white;padding:26px;border-radius:20px;max-width:360px;width:100%;box-shadow:0 15px 40px #0004}.dialog h2{margin:0 0 10px;font-size:24px}.dialog p{color:#7e8e80;font-size:13px}.dialog input{font-size:22px;letter-spacing:4px;text-align:center}.dialog .error{color:#ad3737}
@media(max-width:1100px){.main-grid,.bottom-grid{grid-template-columns:minmax(0,1fr) 340px}.weather-day{min-width:70px;padding:0 5px}}@media(max-width:880px){.main-grid,.bottom-grid{grid-template-columns:1fr}.side-column{display:grid;grid-template-columns:1fr 1fr;align-items:start}.map-viewport{height:720px}.weather-daily{justify-content:space-between}.crop-cards{grid-template-columns:repeat(3,1fr)}}
@media(max-width:660px){.topbar{padding:11px 12px}.brand-icon{width:36px;height:36px;font-size:21px}.brand b{font-size:19px}.brand small{font-size:10px}.sync-badge{font-size:10px;max-width:91px;text-align:right}.topbar-actions{gap:6px}.top-button{padding:8px;font-size:10px}.page{padding:10px}.intro{border-radius:15px;padding:17px 15px;align-items:start;gap:8px}.intro h1{font-size:24px;letter-spacing:-1px}.intro p{font-size:11.5px;margin-bottom:12px}.intro-tags{gap:4px}.intro-tags span{font-size:9.5px;padding:4px 6px}.area{min-width:75px}.area small{font-size:9px}.area strong{font-size:21px}.area strong sub{font-size:11px}.area span{font-size:9px}.stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin:9px 0}.stat{padding:11px 10px;border-radius:11px}.stat>span{font-size:10px}.stat strong{font-size:21px}.stat strong small{font-size:10px;margin-left:2px}.weather-card{padding:12px;gap:9px}.weather-current{width:100%}.weather-daily{overflow:auto;width:100%;padding-bottom:5px}.weather-day{min-width:65px}.panel{border-radius:14px}.panel-head{padding:17px 14px 10px}.panel-head h2,.editor-panel h2{font-size:18px}.panel-head p{font-size:11px}.map-controls{padding:0 10px 11px;gap:7px}.tool{font-size:11px;padding:7px 8px}.zoom-label{min-width:35px;font-size:11px}.map-viewport{height:65vh;min-height:390px;margin:0 8px}.map-bottom{padding:12px 11px}.legend{gap:8px}.legend span{font-size:10px}.map-bottom-actions{gap:5px}.map-bottom-actions button{padding:8px;font-size:10.5px}.side-column{grid-template-columns:1fr;gap:11px}.editor-panel{padding:17px}.form-row{gap:7px}.crop-cards{grid-template-columns:repeat(2,1fr);gap:7px;padding:0 10px 15px}.crop-card{padding:11px}.crop-card strong{font-size:12px}.crop-card p{font-size:10px}.today-tips{padding:0 14px}.bottom-actions{padding:11px 14px 0}.storage-info{margin:12px 14px 15px}footer{display:block;font-size:10px;line-height:1.8}footer span{display:block}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
