:root{color-scheme:light;--ink:#314d3b;--deep:#233e30;--muted:#75816b;--cream:#f6f0d9;--card:#fff9e5;--edge:#b3bd91;--sage:#d9e3bc;--gold:#e7bd67;--shadow:0 3px 0 #233e3026;font:13px 'Trebuchet MS',Verdana,sans-serif}*{box-sizing:border-box}body{margin:0;background:#c2cda5;color:var(--ink);height:100dvh;overflow:hidden}button,input,select,textarea{font:inherit}button,.file-button{border:1.5px solid #9cae83;border-radius:8px;background:#edf0d6;color:var(--ink);padding:9px 12px;box-shadow:var(--shadow);cursor:pointer;transition:transform .12s,background .12s,box-shadow .12s}button:hover,.file-button:hover{background:#fdf8dc;transform:translateY(-1px)}button:active{transform:translateY(2px);box-shadow:none}button:disabled{opacity:.4;cursor:default;transform:none}.primary{background:var(--gold);border-color:#ae8c4e;color:#433e29;font-weight:bold;box-shadow:0 3px 0 #8f713a}.primary:hover{background:#f4ce7e}.secondary{background:#dce7c3}.danger{color:#8e4e3c;background:#f2ddbf;border-color:#cda98a}.wide{width:100%}.icon{padding:6px 9px;min-width:31px;font-size:17px;line-height:1.2}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,canvas:focus-visible{outline:3px solid #d5a853;outline-offset:2px}.topbar{height:77px;display:flex;align-items:center;gap:25px;padding:0 24px;background:var(--deep);color:var(--cream);border-bottom:3px solid #1b3326;box-shadow:0 3px 10px #1b33262b;position:relative;z-index:4}.brand{display:flex;align-items:center;gap:12px;flex-shrink:0}.brand-tree{font-size:43px;line-height:1;color:#d0de9c;text-shadow:0 3px #163723;transform:rotate(-7deg)}.eyebrow{font-size:9px;letter-spacing:2px;font-weight:bold}.brand .eyebrow{color:#b7c69d;font-size:8px;letter-spacing:2.3px}h1{font-size:23px;letter-spacing:-.7px;margin:3px 0 0;color:#fff6d3}h1 span{font-size:13px;color:var(--gold);margin-left:8px}.save-pill{font-size:10px;color:#c9d2b2;display:flex;align-items:center;gap:7px}.save-pill i{height:6px;width:6px;background:#cbdc8a;border-radius:50%;box-shadow:0 0 0 3px #b0c58222}.actions{margin-left:auto;display:flex;gap:8px}.actions .small{background:#385542;border-color:#56714f;color:#e8edca;box-shadow:0 3px 0 #172d22}.actions .primary{padding:11px 19px}main{height:calc(100dvh - 77px);display:grid;grid-template-columns:214px minmax(260px,1fr) 245px}aside{overflow-y:auto;overscroll-behavior:contain;background:var(--cream);padding:18px 14px;scrollbar-width:thin;scrollbar-color:#b3bf91 transparent}.library{border-right:2px solid #8b9f77}.section-head{display:flex;align-items:center;justify-content:space-between;gap:5px;margin:1px 0 13px;font-size:9px;letter-spacing:1.1px}.section-head span{font-size:9px;letter-spacing:0;color:var(--muted)}#levels{display:flex;flex-direction:column-reverse;gap:5px;margin-bottom:24px}.level{position:relative;text-align:left;padding:8px 10px;border-color:transparent;background:transparent;box-shadow:none;border-left:4px solid var(--level);border-radius:3px 8px 8px 3px;display:flex;gap:9px;align-items:center}.level .number{font-size:16px;width:22px;text-align:center;color:#6b7f5a}.level strong{font-size:11px;display:block}.level small{font-size:9px;color:var(--muted);display:block;margin-top:3px}.level.active{background:#dbe6bd;border-color:#b1c284;box-shadow:0 2px 0 #788c5d24}.tools{display:grid;grid-template-columns:1fr 1fr;gap:6px}.tools button{font-size:10px;padding:8px 6px;text-align:left;display:flex;align-items:center;gap:5px;background:#fdf9e7;min-height:39px}.tools button>span{font-size:20px;line-height:1;color:#6e8051;width:23px;text-align:center}.tools button.active{background:#d4e1ad;border-color:#829a59;box-shadow:0 3px 0 #859a5d}.tools button.active>span{color:#3a5c3d}kbd{font:8px monospace;color:#8b9477;margin-left:auto}.hint{font-size:10px;line-height:1.65;color:var(--muted);margin:12px 0 21px}#enemies{display:grid;grid-template-columns:1fr 1fr;gap:7px}.enemy-card{background:linear-gradient(160deg,#fff9df,#e8e9c6);border:1.5px solid #b5be8f;box-shadow:0 3px 0 #a4b581;border-radius:9px;padding:5px 3px 7px;text-align:center;min-height:104px;position:relative}.enemy-card.active{border:2px solid #a08545;background:#f8e6ac;transform:rotate(-2deg);box-shadow:0 4px 0 #b79955}.enemy-card canvas{display:block;width:65px;height:62px;margin:auto}.enemy-card strong{display:block;font-size:9px;line-height:1.3}.enemy-card small{display:block;color:#7b8867;font-size:8px;margin-top:4px}.library-note{margin-top:23px;font-size:10px;line-height:1.7;text-align:center;color:#8a9476;padding:14px 5px;border-top:1px dashed #bdc49e}.workspace{min-width:0;display:flex;flex-direction:column;overflow:hidden;background:#bccca1}.viewbar{flex-shrink:0;min-height:57px;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 14px;background:#e3eacb;border-bottom:2px solid #a4b589}.view-title{display:flex;align-items:center;gap:8px}.view-title strong{font-size:12px}.view-title small{font-size:9px;display:block;color:#7c8868;margin-top:4px}.view-controls{display:flex;align-items:center;gap:5px}.view-controls>button{font-size:11px;padding:6px 9px;background:#f2f4dd}.view-controls .icon{font-size:17px}.divider{height:22px;border-left:1px solid #b5c394;margin:0 3px}.canvas-wrap{position:relative;flex:1;min-height:150px;overflow:hidden}#map{display:block;width:100%;height:100%;touch-action:none;cursor:default}.canvas-label{position:absolute;top:20px;left:21px;pointer-events:none;background:#fff8d5d9;border:1px solid #8c9e7280;box-shadow:0 2px 0 #5c744c1f;padding:9px 12px;border-radius:5px;transform:rotate(-1deg)}.canvas-label span{font-size:10px;font-weight:bold;letter-spacing:1.2px}.canvas-label small{display:block;font-size:8px;letter-spacing:1px;color:#819066;margin-top:4px}.canvas-bottom{position:absolute;left:12px;right:12px;bottom:12px;display:flex;align-items:center;justify-content:space-between;pointer-events:none}.snap-control,.zoom-control{display:flex;align-items:center;gap:6px;background:#f6f0dbea;border:1px solid #8fa174;border-radius:7px;padding:4px 6px;box-shadow:0 2px 0 #53714133;pointer-events:auto;font-size:10px}.snap-control label{display:flex;align-items:center;gap:3px}.snap-control select{border:0;color:#516843;background:transparent;font-size:10px;padding:4px 0}input[type=checkbox]{accent-color:#7d9951;width:14px;height:14px}#zoom{font-size:9px;min-width:39px;text-align:center}.zoom-control button{box-shadow:none;background:#e4e9c6;border-color:#becaa0;padding:3px 8px}#toolHint{position:absolute;bottom:65px;left:50%;transform:translateX(-50%);color:#f4f0d6;background:#294d3bdd;box-shadow:0 2px 0 #1d392a88;border:1px solid #6a8560;padding:9px 13px;border-radius:20px;font-size:9px;white-space:nowrap;max-width:95%;overflow:hidden;text-overflow:ellipsis;pointer-events:none}#drawingActions{position:absolute;top:18px;right:16px;padding:8px;background:#f7efd8ed;border:1px solid #a6b184;border-radius:10px;display:flex;align-items:center;gap:6px;box-shadow:0 4px 12px #28473326}#drawingActions button{font-size:10px;padding:7px}#pointCount{font-size:10px;color:#7c865e}.navigation{display:flex;align-items:center;gap:10px;background:#e1e7c9;padding:8px 12px;border-top:2px solid #a2b387}.navigation label{font-size:9px;white-space:nowrap;color:#7c886a}.navigation input{width:58px;padding:6px 5px;border:1px solid #b8c497;background:#fbf7df;border-radius:4px;color:#425e3e;font-size:11px}.navigation button{font-size:10px;padding:6px 9px}#minimap{margin-left:auto;width:38%;height:37px;min-width:60px;border:1px solid #a0b184;border-radius:4px;background:#637c54;cursor:crosshair;touch-action:none}footer{height:28px;flex-shrink:0;display:flex;justify-content:space-between;gap:5px;align-items:center;padding:0 13px;background:#cfdbb5;color:#6f825a;font-size:8px;border-top:1px solid #b3c196}#status{color:#455f40;text-align:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#objectCount{white-space:nowrap}.inspector{border-left:2px solid #8b9f77;display:flex;flex-direction:column}h2{font-size:22px;letter-spacing:-.7px;margin:2px 0 19px;color:#49603e}#empty>p,.tip{color:#7a8767;font-size:11px;line-height:1.7}.empty-art{border:1.5px dashed #bac59b;border-radius:12px;color:#9cae78;background:#e5eccc;font-size:76px;text-align:center;line-height:1.1;padding:15px 7px}.empty-art span{display:block;font-size:10px;line-height:1.6;color:#819369}.tip{background:#e8ebce;padding:12px;border-radius:8px;margin-top:17px;font-size:10px}.tip b{color:#667d4e}#properties label{font-size:10px;color:#7a8667;display:block;margin:0 0 13px}#properties input[type=text],#properties input[type=number],#vertexSelect{display:block;width:100%;background:#fffbed;border:1px solid #b6c095;border-radius:6px;color:#405b3d;font-size:12px;margin-top:5px;padding:8px}.field-pair{display:grid;grid-template-columns:1fr 1fr;gap:9px}.field-pair>*{min-width:0}.checkline{display:flex!important;align-items:center;gap:6px;color:#516d47!important;padding:8px 7px;background:#e3eacb;border-radius:6px}.label{font-size:10px;color:#7a8667;margin:12px 0 7px}.chip-group{display:grid;grid-template-columns:1fr 1fr 1fr;gap:5px}.chip-group button{font-size:9px;padding:8px 4px;background:#f8f6df;box-shadow:0 2px 0 #3e5b3220;border-color:#bfca9e}.chip-group button.active{background:#ccdbab;border-color:#7c965a;color:#3c5d3b;box-shadow:0 2px 0 #839d59}.materials{grid-template-columns:1fr 1fr;margin-bottom:15px}.materials button{font-size:10px}#propBounce{width:100%;accent-color:#9aac64;margin-top:8px}#bounceReadout{float:right;color:#596e41;font-weight:bold}.row{display:flex;gap:6px;margin-top:10px}.row button{flex:1;min-width:0;padding:8px 5px;font-size:10px}#vertexPanel{border-top:1px dashed #bfca9e;border-bottom:1px dashed #bfca9e;padding:15px 0 2px;margin:15px 0}#vertexSelect{margin:0 0 9px;padding:6px;font-size:10px}.inspector-bottom{margin-top:auto;padding-top:25px}.inspector-bottom .eyebrow{color:#889773;font-size:8px}.inspector-bottom p{font-size:10px;line-height:1.7;color:#7a8b67;margin:8px 0 14px}.inspector-bottom button{font-size:11px}#portrait{width:100%;height:110px;background:#e1e8c7;border:1px solid #b9c79b;border-radius:8px}#enemyEffect{font-size:10px;line-height:1.5;color:#74875d}dialog{background:#f7f0d9;color:var(--ink);border:2px solid #668052;border-radius:17px;padding:31px;max-width:430px;width:calc(100% - 30px);box-shadow:0 9px 0 #172d2333,0 20px 70px #122d2855}dialog::backdrop{background:#203d32b5;backdrop-filter:blur(4px)}dialog .eyebrow{color:#87976d}dialog h2{font-size:27px;margin-top:10px}dialog p{color:#7b8868;font-size:12px;line-height:1.7}.dialog-close{position:absolute;top:12px;right:12px;border:0;background:transparent;box-shadow:none;font-size:23px;padding:0 6px}.file-actions{display:grid;gap:10px;margin-top:20px}.file-actions>button,.file-button{text-align:left}.file-button input{display:none}#shareUrl{width:100%;resize:none;border:1px solid #b1bf8b;background:#fffceb;color:#5e714d;border-radius:8px;padding:9px;font:10px monospace;overflow-wrap:anywhere;margin-bottom:15px}#shareStatus{font-size:10px}.mobile-only{display:none!important}#sharedBanner{background:#f0db99;color:#65532c;padding:7px 18px;display:flex;justify-content:center;align-items:center;gap:16px;font-size:11px;border-bottom:1px solid #b99a50;height:43px}#sharedBanner button{font-size:10px;padding:5px 10px;background:#fff1c5;border-color:#baa05b}body.shared main{height:calc(100dvh - 120px)}#playOverlay{position:fixed;inset:0;z-index:30;background:#243f30;display:flex;flex-direction:column}.playbar{height:49px;flex-shrink:0;background:#243f30;color:#e5e8c8;display:flex;align-items:center;gap:10px;padding:7px 15px;font-size:10px;letter-spacing:1px}.playbar>span{margin-right:auto}.playbar small{margin-left:13px;color:#aaba8f;font-size:9px;letter-spacing:0}.playbar button{font-size:10px;padding:7px 11px}.playbar #restartPlay{background:#3b5840;color:#e0e7bb;border-color:#718459}#playFrame{border:0;width:100%;flex:1;background:#c7d8ae}[hidden]{display:none!important}
@keyframes card-pop{from{opacity:0;transform:translateY(8px) rotate(-3deg)}to{opacity:1;transform:translateY(0) rotate(0)}}.enemy-card{animation:card-pop .25s both}.enemy-card:nth-child(2n){animation-delay:30ms}.enemy-card:nth-child(3n){animation-delay:65ms}
@media(min-width:1600px){main{grid-template-columns:240px minmax(260px,1fr) 270px}aside{padding:21px 18px}}
@media(max-width:1100px){.topbar{padding:0 16px;gap:15px}.save-pill{display:none}main{grid-template-columns:175px minmax(230px,1fr) 208px}aside{padding:16px 10px}.tools button{font-size:9px}.tools button>span{width:18px}.tools kbd{display:none}.enemy-card canvas{width:58px;height:56px}.enemy-card{min-height:96px}.navigation{gap:6px;padding:7px 10px}#minimap{width:28%}.canvas-label{top:15px;left:14px}.view-controls>button span{display:none}.viewbar{padding:9px 10px}.chip-group button{font-size:8px}#drawingActions{flex-wrap:wrap;max-width:220px}.canvas-label small{font-size:7px}}
@media(max-width:800px){.topbar{height:65px;padding:0 12px;gap:8px}h1{font-size:19px}.brand-tree{font-size:33px}.brand{gap:8px}.brand .eyebrow{font-size:7px}.actions{gap:5px}.actions button{padding:9px 10px!important;font-size:11px}.actions .small span{display:none}main{height:calc(100dvh - 65px);grid-template-columns:minmax(0,1fr)}.mobile-only{display:block!important}.library,.inspector{position:fixed;top:65px;bottom:0;z-index:15;width:min(290px,85vw);box-shadow:5px 0 30px #17352d55;transition:transform .2s}.library{left:0;transform:translateX(-105%);border-right:2px solid #829c6b}.inspector{right:0;transform:translateX(105%);border-left:2px solid #829c6b;box-shadow:-5px 0 30px #17352d55}.library.open,.inspector.open{transform:translateX(0)}.library .tools kbd{display:block}.library .tools button{font-size:12px}.library .enemy-card canvas{width:77px;height:65px}.library .enemy-card{min-height:106px}.inspector .chip-group button{font-size:10px}.section-head{font-size:10px}.viewbar{min-height:53px}.view-controls>button span{display:inline}.navigation{padding:8px 12px;gap:10px}#minimap{width:38%}.canvas-label small{font-size:8px}body.shared main{height:calc(100dvh - 108px)}body.shared .library,body.shared .inspector{top:108px}.playbar{padding:7px 8px;gap:6px;font-size:9px}.playbar small{display:none}}
@media(max-width:450px){.topbar{padding:0 10px;height:61px}.brand-tree{font-size:28px}.brand .eyebrow{font-size:6px;letter-spacing:1.6px}h1{font-size:16px}.actions .primary{padding:9px!important}.actions .primary span{font-size:10px}.actions .small{font-size:13px;padding:8px!important}.actions{gap:4px}main{height:calc(100dvh - 61px)}.library,.inspector{top:61px}.view-title strong{font-size:11px}.view-title small{font-size:8px}.view-controls{gap:3px}.view-controls>button{padding:5px 6px}.view-controls>button span{display:none}.divider{display:none}.canvas-label{top:12px;left:12px;padding:7px 9px}.canvas-label span{font-size:8px}.canvas-label small{font-size:7px}.navigation{gap:6px;padding:7px 9px}.navigation label{font-size:8px}.navigation input{width:49px;font-size:10px}.navigation button{padding:6px;font-size:9px}#minimap{width:25%;height:34px}footer{padding:0 8px;font-size:7px}#objectCount{display:none}#toolHint{max-width:94%;font-size:8px;bottom:60px}.snap-control,.snap-control select{font-size:9px}.canvas-bottom{left:9px;right:9px}.zoom-control{gap:3px}#drawingActions{top:66px;right:10px;left:10px;max-width:none;justify-content:center}#sharedBanner{font-size:9px;padding:5px 8px;gap:6px}body.shared main{height:calc(100dvh - 104px)}body.shared .library,body.shared .inspector{top:104px}.playbar>span{font-size:8px;letter-spacing:.5px}.playbar button{font-size:9px;padding:7px}.playbar{height:46px}dialog{padding:25px}.library .section-head .icon,.inspector .section-head .icon{font-size:22px;box-shadow:none;border:0;background:transparent}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

/* Closed mobile drawers are excluded from focus and the accessibility tree. */
@media(max-width:800px){.library:not(.open),.inspector:not(.open){visibility:hidden;pointer-events:none}.library.open,.inspector.open{visibility:visible}}

.brush-settings{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:10px 0}.brush-settings label{font-size:10px;color:#617552}.brush-settings input{width:100%;padding:7px;border:1px solid #a9b58b;border-radius:7px;background:#f7f2da;color:#3d573f}.pick-filters{display:flex;gap:4px;flex-wrap:wrap;margin:7px 0}.pick-filters button{padding:5px;font-size:10px}.pick-filters button.active{background:#d4dfae;border-color:#748e57}#densityField small{font-size:10px;color:#6f7e5c}.tools [data-tool="erase"]{border-color:#b89b75;background:#f1e3c4}#copyJson{margin-top:8px}

.leaf-presets{display:flex;gap:5px;margin:5px 0}.leaf-presets button{padding:6px;font-size:10px;flex:1}
/* Encounter movement uses the same generous touch targets as geometry fields. */
#enemyProps select{display:block;width:100%;min-height:38px;margin-top:6px;padding:8px 10px;border:1px solid #b4bea0;border-radius:7px;background:#fffcef;color:#294a3a;font:inherit}
#enemyProps input:disabled{opacity:.5}
