:root{--bg:#f5f7f2;--panel:#ffffff;--panel-soft:#f8faf6;--text:#1f2923;--muted:#607066;--line:#d9e2d5;--green:#2f7d57;--green-dark:#245f44;--blue:#3f6f9f;--rust:#b8563c;--amber:#c58b2e;--danger:#a33b32;--shadow:0 8px 24px rgba(38,54,45,0.08)}*{box-sizing:border-box}body,html{min-height:100%;margin:0;background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif}body{font-size:14px;line-height:1.5}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{display:grid;grid-template-columns:244px minmax(0,1fr);min-height:100vh}.sidebar{position:-webkit-sticky;position:sticky;top:0;height:100vh;padding:22px 18px;background:#eef3eb;border-right:1px solid var(--line)}.brand{display:grid;grid-gap:4px;gap:4px;padding:8px 8px 18px}.brand-title{font-size:18px;font-weight:750}.brand-subtitle{color:var(--muted);font-size:12px}.sidebar-studio-card{display:grid;grid-gap:5px;gap:5px;margin:2px 0 18px;border:1px solid #d7e0d0;border-radius:8px;background:#f8faf6;padding:12px}.sidebar-studio-card span{color:#6a7468;font-size:11px;font-weight:760;text-transform:uppercase}.sidebar-studio-card strong{font-size:14px}.sidebar-plant-strip{display:grid;grid-template-columns:1fr .7fr 1.2fr .8fr;align-items:end;grid-gap:5px;gap:5px;height:30px;margin-top:3px}.sidebar-plant-strip i{display:block;border-radius:8px 8px 2px 2px;background:#315d42}.sidebar-plant-strip i:first-child{height:18px;background:#315d42}.sidebar-plant-strip i:nth-child(2){height:25px;background:#b2684a}.sidebar-plant-strip i:nth-child(3){height:14px;background:#7a82a8}.sidebar-plant-strip i:nth-child(4){height:22px;background:#c0a846}.nav{display:grid;grid-gap:6px;gap:6px}.logout-button,.nav a{display:flex;align-items:center;justify-content:flex-start;min-height:38px;gap:9px;padding:9px 10px;border:1px solid transparent;border-radius:8px;background:transparent;color:#304039}.nav-mark{margin-left:auto}.logout-button:hover,.nav a:hover{border-color:#cbd7c5;background:#f8faf6}.logout-form{margin-top:18px}.logout-button{width:100%}.main{min-width:0;padding:26px}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:20px}.page-header h1{margin:0;font-size:24px;line-height:1.2}.page-header p{margin:7px 0 0;color:var(--muted)}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.grid{display:grid;grid-gap:16px;gap:16px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.panel{min-width:0;border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:var(--shadow)}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 18px;border-bottom:1px solid var(--line)}.panel-header h2{margin:0;font-size:16px}.panel-header>div{min-width:0}.panel-body{padding:18px}.list-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:8px}.list-heading h2{margin:0;font-size:16px}.stat{display:grid;grid-gap:8px;gap:8px;padding:18px}.stat-label{color:var(--muted);font-size:12px}.stat-value{font-size:30px;font-weight:760}.form-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:12px;gap:12px}.field{display:grid;grid-gap:6px;gap:6px}.field.span-2{grid-column:span 2}.field.span-3{grid-column:span 3}.field.span-4{grid-column:span 4}label{color:#405047;font-size:12px;font-weight:650}input,select,textarea{width:100%;border:1px solid #cbd7c5;border-radius:8px;background:#fff;color:var(--text);padding:9px 10px;outline:none}textarea{min-height:78px;resize:vertical}input:focus,select:focus,textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(47,125,87,.14)}.button{display:inline-flex;align-items:center;justify-content:center;min-height:38px;gap:7px;border:1px solid #c2d0bf;border-radius:8px;background:#fff;color:var(--text);padding:8px 12px;font-weight:650;white-space:nowrap}.button svg,.logout-button svg,.nav svg{width:16px;height:16px;flex:0 0 16px;stroke-width:2}.button.primary{border-color:var(--green);background:var(--green);color:#fff}.button.primary:hover{background:var(--green-dark)}.button.blue{border-color:var(--blue);background:var(--blue);color:#fff}.button.rust{border-color:var(--rust);background:var(--rust);color:#fff}.button:disabled{cursor:not-allowed;opacity:.58}.segmented{display:inline-flex;overflow:hidden;border:1px solid #cbd7c5;border-radius:8px;background:#fff}.segmented button{display:inline-flex;align-items:center;gap:7px;border:0;border-right:1px solid #cbd7c5;background:transparent;padding:8px 12px}.segmented button svg{width:15px;height:15px;flex:0 0 15px}.segmented button:last-child{border-right:0}.segmented button.active{background:#e6efe5;color:var(--green-dark);font-weight:700}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:8px}table{width:100%;border-collapse:collapse;background:#fff;min-width:880px}td,th{padding:10px 12px;border-bottom:1px solid #e5ece1;text-align:left;vertical-align:top}th{background:#f6f9f3;color:#48584f;font-size:12px}tr:last-child td{border-bottom:0}.tag-row{display:flex;flex-wrap:wrap;gap:6px}.tag{display:inline-flex;align-items:center;min-height:24px;border-radius:999px;background:#edf3e9;color:#385046;padding:3px 9px;font-size:12px;font-weight:650}button.tag{border:0;cursor:pointer}.tag.active{background:var(--green);color:#fff}.color-filter-row{display:flex;flex-wrap:wrap;gap:6px}.choice-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:8px;gap:8px;max-height:220px;overflow:auto;padding:2px}.choice-option{display:grid;grid-template-columns:18px minmax(0,1fr);grid-gap:8px;gap:8px;align-items:start;min-height:54px;border:1px solid #d8e2d3;border-radius:8px;background:#fff;padding:8px}.choice-option input{width:16px;margin-top:3px}.choice-option strong{display:block;font-size:13px}.group-choice-grid{max-height:300px}.group-choice-option{min-height:78px}.group-choice-option .tag{width:-moz-fit-content;width:fit-content;margin-top:6px}.plant-stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:10px;gap:10px}.plant-stat{display:grid;grid-gap:4px;gap:4px;min-height:74px;border:1px solid #dfe8db;border-radius:8px;background:#f8faf6;padding:12px}.plant-stat span{color:var(--muted);font-size:12px}.plant-stat strong{font-size:24px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;line-height:1}.category-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));grid-gap:10px;gap:10px}.category-card{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:5px 10px;gap:5px 10px;min-height:88px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--text);padding:12px;text-align:left;transition:border-color .16s ease,background .16s ease,box-shadow .16s ease,transform .16s ease}.category-card:hover{border-color:#a9c4a4;background:#f8faf6}.category-card:active{transform:translateY(1px)}.category-card.active{border-color:var(--green);background:#eef7ee;box-shadow:0 0 0 3px rgba(47,125,87,.1)}.category-card-title{display:inline-flex;align-items:center;gap:8px;min-width:0;font-weight:750}.category-mark{display:inline-grid;width:26px;height:18px;grid-template-columns:repeat(3,1fr);align-items:end;gap:3px;flex:0 0 auto}.category-mark span,.category-mark:after,.category-mark:before{content:"";display:block;border-radius:8px 8px 2px 2px;background:#477150}.category-mark:before{height:11px}.category-mark:after{height:16px;background:#c07858}.category-mark-all:after,.category-mark-all:before{background:#477150}.category-mark-framework:after,.category-mark-framework:before{background:#315d42}.category-mark-maples:before,.category-mark-trees:after,.category-mark-trees:before{background:#725940}.category-mark-maples:after{background:#b24b36}.category-mark-fruit:after{background:#bf623f}.category-mark-vines:after,.category-mark-vines:before{background:#5f7d52}.category-mark-annuals:after,.category-mark-flower-shrubs:after,.category-mark-perennials:after{background:#ba6c8d}.category-mark-grasses:after,.category-mark-grasses:before{background:#9d9764}.category-mark-shade:after,.category-mark-shade:before{background:#637563}.category-mark-bulbs:after{background:#7669a9}.category-mark-herbs:after{background:#6a78a9}.category-mark-rain-garden:after,.category-mark-rain-garden:before{background:#5d86a2}.category-card strong{font-size:22px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;line-height:1}.category-card em{grid-column:1/-1;color:var(--muted);font-size:12px;font-style:normal}.plant-filter-bar{display:grid;grid-template-columns:minmax(180px,240px) minmax(260px,1fr) auto auto;align-items:end}.input-with-icon{position:relative}.input-with-icon svg{position:absolute;top:50%;left:10px;width:16px;height:16px;color:var(--muted);transform:translateY(-50%);pointer-events:none}.input-with-icon input{padding-left:34px}.batch-row{display:grid;grid-template-columns:38px minmax(0,1fr) 38px;grid-gap:8px;gap:8px;align-items:stretch}.batch-strip{display:flex;gap:8px;overflow-x:auto;padding:1px}.batch-chip{display:grid;grid-template-columns:auto minmax(120px,1fr) auto;align-items:center;grid-gap:8px;gap:8px;min-width:260px;min-height:38px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--text);padding:7px 10px;text-align:left}.batch-chip:hover{border-color:#a9c4a4;background:#f8faf6}.batch-chip.active{border-color:var(--green);background:#eef7ee;box-shadow:0 0 0 3px rgba(47,125,87,.1)}.batch-chip em,.batch-chip span{color:var(--muted);font-size:12px;font-style:normal}.batch-chip strong{overflow:hidden;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:38px;min-height:38px;border:1px solid var(--line);border-radius:8px;background:#fff;color:#304039}.icon-button:hover:not(:disabled){border-color:#a9c4a4;background:#f8faf6}.icon-button:disabled{cursor:not-allowed;opacity:.45}.icon-button svg{width:18px;height:18px}.candidate-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));grid-gap:12px;gap:12px}.candidate-card{display:grid;grid-gap:8px;gap:8px;min-height:238px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--text);padding:14px;text-align:left;box-shadow:var(--shadow)}.candidate-card:hover{border-color:#9fbf9f}.candidate-card.selected{border-color:var(--green);background:#f0f7ef;box-shadow:0 0 0 3px rgba(47,125,87,.12)}.candidate-visual{display:grid;grid-template-columns:74px minmax(0,1fr);align-items:center;grid-gap:12px;gap:12px;min-width:0;border-bottom:1px solid #e5ece1;padding-bottom:10px}.candidate-visual-copy{display:grid;grid-gap:6px;gap:6px;min-width:0}.candidate-visual-copy>span:first-child{color:#536359;font-size:12px;font-weight:720}.candidate-card-top{display:flex;align-items:center;gap:8px;font-size:15px}.candidate-card-top svg{width:18px;height:18px;color:var(--green)}.candidate-meta,.candidate-tags,.candidate-use{color:var(--muted);font-size:12px}.candidate-tags{display:block;border-top:1px solid #e5ece1;padding-top:8px}.plant-name-cell{display:flex;align-items:center;gap:10px;min-width:220px}.plant-name-cell.compact,.plant-name-cell>div,.plant-name-cell>span{min-width:0}.plant-name-cell span,.plant-name-cell strong{overflow-wrap:anywhere}.plant-swatches{display:flex;flex-wrap:wrap;gap:5px;align-items:center}.plant-swatches span{display:inline-flex;align-items:center;gap:5px;min-height:20px;border-radius:999px;background:#f4f6f0;color:#4d5d52;padding:2px 7px 2px 5px;font-size:11px;font-weight:700}.plant-swatches span:before{content:"";width:10px;height:10px;border:1px solid rgba(40,48,42,.15);border-radius:50%;background:var(--swatch)}.plant-swatches.compact span{width:15px;height:15px;min-height:15px;border:1px solid rgba(40,48,42,.14);border-radius:50%;background:var(--swatch);padding:0}.plant-swatches.compact span:before{display:none}.plant-mini-visual{position:relative;display:inline-block;width:74px;height:62px;flex:0 0 auto;overflow:hidden;border-radius:8px;background:var(--paper)}.plant-mini-visual.framed{border:1px solid rgba(76,92,80,.18)}.plant-mini-visual.compact{width:46px;height:40px;border-radius:7px}.plant-mini-visual span{position:absolute;display:block}.visual-ground{left:9%;right:9%;bottom:8px;height:5px;border-radius:999px;background:rgba(67,87,65,.18)}.visual-stem{bottom:10px;width:3px;border-radius:99px;background:#6a5b3f;transform-origin:bottom center}.stem-a{left:49%;height:34px}.stem-b{left:41%;height:26px;transform:rotate(-16deg)}.stem-c{left:58%;height:24px;transform:rotate(18deg)}.visual-foliage{border-radius:999px;background:var(--leaf)}.foliage-a{left:28%;top:12px;width:34px;height:26px}.foliage-b{left:18%;top:26px;width:26px;height:18px}.foliage-c{right:16%;top:25px;width:28px;height:19px}.visual-bloom{width:8px;height:8px;border-radius:50%;background:var(--accent)}.bloom-a{left:34%;top:12px}.bloom-b{left:55%;top:17px;background:var(--accent-2)}.bloom-c{left:47%;top:30px}.plant-mini-visual.compact .visual-ground{bottom:5px;height:4px}.plant-mini-visual.compact .stem-a{height:23px}.plant-mini-visual.compact .stem-b,.plant-mini-visual.compact .stem-c{height:17px}.plant-mini-visual.compact .foliage-a{left:29%;top:7px;width:22px;height:18px}.plant-mini-visual.compact .foliage-b{left:17%;top:18px;width:17px;height:13px}.plant-mini-visual.compact .foliage-c{right:14%;top:18px;width:18px;height:13px}.plant-mini-visual.compact .visual-bloom{width:5px;height:5px}.plant-mini-topiary .visual-stem{display:none}.plant-mini-topiary .foliage-a{left:27%;top:8px;width:34px;height:34px;border-radius:50%}.plant-mini-topiary .foliage-b{left:15%;top:26px;width:20px;height:20px;border-radius:50%}.plant-mini-topiary .foliage-c{right:13%;top:25px;width:22px;height:22px;border-radius:50%}.plant-mini-tree .foliage-a{left:24%;top:6px;width:38px;height:34px}.plant-mini-tree .stem-a{height:42px}.plant-mini-vine .visual-stem{width:2px;background:var(--leaf)}.plant-mini-vine .stem-a{left:28%;height:42px;transform:rotate(-22deg)}.plant-mini-vine .stem-b{left:49%;height:39px;transform:rotate(16deg)}.plant-mini-vine .stem-c{left:66%;height:34px;transform:rotate(-12deg)}.plant-mini-vine .visual-foliage{width:10px;height:8px}.plant-mini-grass .visual-stem,.plant-mini-water .visual-stem{width:4px;border-radius:999px 999px 0 0;background:var(--leaf)}.plant-mini-grass .stem-a,.plant-mini-water .stem-a{height:40px;transform:rotate(-14deg)}.plant-mini-grass .stem-b,.plant-mini-water .stem-b{height:35px;transform:rotate(9deg)}.plant-mini-grass .stem-c,.plant-mini-water .stem-c{height:32px;transform:rotate(20deg)}.plant-mini-grass .visual-foliage,.plant-mini-groundcover .visual-stem,.plant-mini-water .visual-foliage{display:none}.plant-mini-groundcover .foliage-a{left:16%;top:29px;width:42px;height:13px}.plant-mini-groundcover .foliage-b{left:34%;top:22px;width:26px;height:12px}.plant-mini-groundcover .foliage-c{right:10%;top:30px;width:20px;height:10px}.plant-mini-grass .bloom-a,.plant-mini-grass .bloom-b,.plant-mini-groundcover .bloom-b,.plant-mini-topiary .visual-bloom{display:none}.plant-portrait{display:grid;grid-template-columns:74px minmax(0,1fr);align-items:center;grid-gap:12px;gap:12px;min-width:0;border:1px solid rgba(78,93,78,.16);border-radius:8px;background:#fff;padding:10px}.plant-portrait-copy{display:grid;grid-gap:5px;gap:5px;min-width:0}.plant-portrait-copy span,.plant-portrait-copy strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plant-portrait-copy>span{color:var(--muted);font-size:12px}.group-planting-preview{display:grid;grid-gap:10px;gap:10px;overflow:hidden;border:1px solid #dce5d7;border-radius:8px;background:linear-gradient(180deg,#f7faf5,#f7faf5 64%,#e8efe2 0,#e8efe2);padding:12px}.group-planting-preview.compact{gap:8px;padding:10px}.preview-canopy{display:grid;grid-template-columns:repeat(5,minmax(34px,1fr));align-items:end;grid-gap:6px;gap:6px;min-height:58px}.group-planting-preview.compact .preview-canopy{min-height:44px}.preview-plant{display:grid;justify-items:center;align-items:end}.preview-beds{display:flex;min-height:26px;overflow:hidden;border:1px solid rgba(67,87,65,.16);border-radius:6px;background:#fff}.preview-bed{display:block;flex:0 0 var(--bed-width);min-width:18px;border-right:1px solid rgba(67,87,65,.12);background:color-mix(in srgb,var(--leaf) 18%,#ffffff)}.preview-bed:last-child{border-right:0}.preview-bed span{display:block;width:100%;height:100%;background:linear-gradient(90deg,transparent 0 38%,rgba(255,255,255,.42) 38% 44%,transparent 44% 100%),linear-gradient(180deg,var(--accent) 0 12%,transparent 12% 100%)}.preview-labels{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:6px;gap:6px}.preview-labels span{overflow:hidden;color:#536359;font-size:11px;font-weight:680;text-overflow:ellipsis;white-space:nowrap}.group-photo-empty,.group-photo-preview{display:block;width:100%;aspect-ratio:16/9;overflow:hidden;border:1px solid #dce5d7;border-radius:8px;background:#f4f6f0}.group-photo-preview{object-fit:cover}.group-photo-empty{display:grid;place-items:center;color:#68756b;font-size:13px;font-weight:720}.studio-garden-panel{display:grid;grid-template-columns:minmax(280px,.9fr) minmax(420px,1.1fr);grid-gap:18px;gap:18px;align-items:stretch;overflow:hidden;border:1px solid #cfdccd;border-radius:8px;background:#fbfcf8;box-shadow:var(--shadow);padding:18px}.studio-garden-image{display:block;width:100%;min-height:260px;height:100%;max-height:420px;object-fit:cover;border:1px solid #dce5d7;border-radius:8px}.studio-copy{display:flex;flex-direction:column;justify-content:space-between;gap:18px;min-width:0}.eyebrow{color:#69746c;font-size:11px;font-weight:800;text-transform:uppercase}.studio-copy h2{max-width:12em;margin:0;font-size:30px;line-height:1.12}.studio-copy p{max-width:52ch;margin:0;color:#536359}.studio-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:8px;gap:8px}.studio-metrics span{display:grid;grid-gap:2px;gap:2px;min-height:58px;border:1px solid #dce5d7;border-radius:8px;background:#fff;color:#68756b;padding:9px;font-size:12px}.studio-metrics strong{color:var(--text);font-size:21px;line-height:1}.filter-cluster{display:grid;grid-gap:10px;gap:10px;border-top:1px solid #e5ece1;padding-top:12px}.filter-cluster-header,.view-mode-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.filter-cluster-header strong{font-size:13px}.decision-filter-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));grid-gap:8px;gap:8px}.decision-filter{display:grid;grid-gap:2px;gap:2px;min-height:62px;border:1px solid #dce5d7;border-radius:8px;background:#fff;color:var(--text);padding:10px;text-align:left;transition:border-color .16s ease,background .16s ease,transform .16s ease}.decision-filter:hover{border-color:#a9c4a4;background:#f8faf6}.decision-filter:active{transform:translateY(1px)}.decision-filter.active{border-color:var(--green);background:#eef7ee;box-shadow:0 0 0 3px rgba(47,125,87,.1)}.decision-filter strong{font-size:13px}.decision-filter span{color:var(--muted);font-size:12px}.plant-gallery-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));grid-gap:12px;gap:12px}.plant-gallery-card{display:grid;grid-template-rows:auto 1fr;min-width:0;overflow:hidden;border:1px solid #dce5d7;border-radius:8px;background:#fff}.plant-card-generated,.plant-card-image{display:block;width:100%;aspect-ratio:4/3;border-bottom:1px solid #dce5d7;background:#f4f6f0}.plant-card-image{object-fit:cover}.plant-card-generated{display:grid;place-items:center}.plant-card-generated .plant-mini-visual{width:136px;height:112px}.plant-gallery-copy{display:grid;grid-template-rows:auto auto auto 1fr auto auto;grid-gap:10px;gap:10px;padding:12px}.plant-design-title,.plant-gallery-copy>div:first-child{display:grid;grid-gap:2px;gap:2px;min-width:0}.plant-design-title strong,.plant-gallery-copy strong{overflow:hidden;font-size:15px;text-overflow:ellipsis;white-space:nowrap}.plant-design-title span,.plant-gallery-copy>div:first-child span{overflow:hidden;color:var(--muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.plant-card-metrics{display:flex;flex-wrap:wrap;gap:6px}.plant-card-metrics span{display:inline-flex;min-height:24px;align-items:center;border:1px solid #e0e8dc;border-radius:6px;background:#f8faf6;color:#43534a;padding:3px 8px;font-size:12px;font-weight:650}.plant-card-note{color:#506157;font-size:12px;line-height:1.55}.design-view-layout{display:grid;grid-template-columns:minmax(220px,280px) minmax(0,1fr);grid-gap:14px;gap:14px;align-items:start}.design-view-panel{position:-webkit-sticky;position:sticky;top:18px;display:grid;grid-gap:10px;gap:10px;border:1px solid #dce5d7;border-radius:8px;background:#f8faf6;padding:14px}.design-view-panel span{color:var(--muted);font-size:12px}.plant-design-list{display:grid;grid-gap:10px;gap:10px}.plant-design-row{display:grid;grid-template-columns:128px minmax(0,1fr) minmax(150px,190px);grid-gap:12px;gap:12px;min-width:0;border:1px solid #dce5d7;border-radius:8px;background:#fff;padding:10px}.plant-design-row .plant-card-generated,.plant-design-row .plant-card-image{aspect-ratio:1/1;border:1px solid #dce5d7;border-radius:8px}.plant-design-row .plant-card-generated .plant-mini-visual{width:82px;height:70px}.plant-design-main,.plant-design-side{display:grid;grid-gap:8px;gap:8px;align-content:start}.plant-design-side{justify-items:start}.group-filter-bar{display:grid;grid-template-columns:minmax(180px,240px) minmax(160px,220px) minmax(260px,1fr);grid-gap:10px;gap:10px;align-items:end}.group-atlas-panel{order:1}.group-create-panel{order:2}.group-template-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:18px;gap:18px}.group-template-card{display:grid;min-width:0;overflow:hidden;border:1px solid #dce5d7;border-radius:8px;background:#fff}.group-template-card>.group-photo-empty,.group-template-card>.group-photo-preview{min-height:280px}.group-template-body{display:grid;grid-gap:12px;gap:12px;padding:14px}.group-template-title{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.group-template-title>div{display:grid;grid-gap:2px;gap:2px;min-width:0}.group-template-title strong{overflow:hidden;font-size:17px;text-overflow:ellipsis;white-space:nowrap}.group-template-title span:not(.tag){color:var(--muted);font-size:12px}.group-meta-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:8px;gap:8px}.group-meta-grid span{display:grid;grid-gap:2px;gap:2px;min-height:56px;border:1px solid #e0e8dc;border-radius:8px;background:#f8faf6;color:var(--muted);padding:9px;font-size:12px}.group-meta-grid strong{color:var(--text);font-size:16px}.group-template-note{color:#506157;font-size:12px;line-height:1.55}.group-template-note.qingdao{border-left:3px solid #a9c4a4;padding-left:9px}.group-plant-names{display:flex;flex-wrap:wrap;gap:6px 8px;border-top:1px solid #e3eadf;padding-top:10px}.group-plant-names span{overflow:hidden;max-width:100%;border:1px solid #e0e8dc;border-radius:6px;background:#f8faf6;color:#536359;font-size:11px;line-height:1.35;padding:3px 6px;text-overflow:ellipsis;white-space:nowrap}.tag svg{width:13px;height:13px;margin-right:4px}.tag.warning{background:#fff2d7;color:#7a5414}.tag.danger{background:#fae4df;color:#833127}.muted{color:var(--muted)}.notice{border:1px solid #dfc887;border-radius:8px;background:#fff8e5;color:#63470c}.error,.notice{padding:10px 12px}.error{border:1px solid #e0a49b;border-radius:8px;background:#fff0ee;color:var(--danger)}.success{border:1px solid #a9cfb1;border-radius:8px;background:#eef8ef;color:#275d35;padding:10px 12px}.canvas-layout{display:grid;grid-template-columns:minmax(0,1fr) 360px;grid-gap:16px;gap:16px;align-items:start}.canvas-stage{position:relative;overflow:hidden;border:1px solid var(--line);border-radius:8px;background:#ffffff;min-height:520px}.base-image{display:block;width:100%;height:auto;-webkit-user-select:none;-moz-user-select:none;user-select:none}.draw-canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none}.empty-stage{display:grid;min-height:520px;place-items:center;color:var(--muted)}.result-image{display:block;width:100%;max-height:360px;object-fit:contain;border:1px solid var(--line);border-radius:8px;background:#fff}.project-cover{width:100%;aspect-ratio:4/3;max-height:none;object-fit:cover;border-width:0 0 1px;border-radius:8px 8px 0 0}.empty-cover{display:grid;place-items:center;width:100%;aspect-ratio:4/3;border-bottom:1px solid var(--line);background:#f8faf6;color:var(--muted)}.image-thumb{width:72px;height:54px;object-fit:cover;border:1px solid var(--line);border-radius:6px;background:#fff}.login-screen{display:grid;min-height:100vh;place-items:center;padding:24px}.login-panel{width:min(420px,100%)}.stack{display:grid;grid-gap:12px;gap:12px}@media (max-width:1120px){.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}.canvas-layout,.studio-garden-panel{grid-template-columns:1fr}.plant-stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.plant-filter-bar{align-items:stretch}.design-view-layout,.plant-filter-bar{grid-template-columns:1fr}.design-view-panel{position:static}.plant-design-row{grid-template-columns:104px minmax(0,1fr)}.plant-design-side{grid-column:1/-1}.group-filter-bar,.group-template-grid{grid-template-columns:1fr}.group-template-card>.group-photo-empty,.group-template-card>.group-photo-preview{min-height:220px}}@media (max-width:860px){.app-shell{grid-template-columns:1fr}.sidebar{position:static;height:auto}.nav{grid-template-columns:repeat(2,minmax(0,1fr))}.main{padding:18px}.form-grid,.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.field.span-2,.field.span-3,.field.span-4{grid-column:auto}.batch-row{grid-template-columns:34px minmax(0,1fr) 34px}.batch-chip{min-width:220px}.icon-button{width:34px}.category-grid,.plant-stats-grid{grid-template-columns:1fr}.studio-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.candidate-visual{grid-template-columns:58px minmax(0,1fr)}.preview-canopy{grid-template-columns:repeat(3,minmax(34px,1fr))}.preview-labels{grid-template-columns:repeat(2,minmax(0,1fr))}.filter-cluster-header,.view-mode-row{align-items:flex-start;flex-direction:column}.plant-design-row{grid-template-columns:1fr}.plant-design-row .plant-card-generated,.plant-design-row .plant-card-image{aspect-ratio:4/3}.group-template-title{flex-direction:column}.group-meta-grid{grid-template-columns:1fr}}