@font-face{font-family:Caveat;font-style:normal;font-display:swap;font-weight:400;src:url(/ttrpg/assets/caveat-cyrillic-ext-400-normal-3iEGd-c5.woff2)format("woff2"),url(/ttrpg/assets/caveat-cyrillic-ext-400-normal-Cg0RnRQ5.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Caveat;font-style:normal;font-display:swap;font-weight:400;src:url(/ttrpg/assets/caveat-cyrillic-400-normal-9cDH9rLW.woff2)format("woff2"),url(/ttrpg/assets/caveat-cyrillic-400-normal-CebvvJET.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Caveat;font-style:normal;font-display:swap;font-weight:400;src:url(/ttrpg/assets/caveat-latin-ext-400-normal-D7hBUiug.woff2)format("woff2"),url(/ttrpg/assets/caveat-latin-ext-400-normal-DtiRFvw0.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Caveat;font-style:normal;font-display:swap;font-weight:400;src:url(/ttrpg/assets/caveat-latin-400-normal-D6LQsQ_v.woff2)format("woff2"),url(/ttrpg/assets/caveat-latin-400-normal-BzhAQZkN.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Caveat;font-style:normal;font-display:swap;font-weight:700;src:url(/ttrpg/assets/caveat-cyrillic-ext-700-normal-CrK2-ngJ.woff2)format("woff2"),url(/ttrpg/assets/caveat-cyrillic-ext-700-normal-DjFGiEhD.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Caveat;font-style:normal;font-display:swap;font-weight:700;src:url(/ttrpg/assets/caveat-cyrillic-700-normal-BIyejhEL.woff2)format("woff2"),url(/ttrpg/assets/caveat-cyrillic-700-normal-Bhcx9qBB.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Caveat;font-style:normal;font-display:swap;font-weight:700;src:url(/ttrpg/assets/caveat-latin-ext-700-normal-DFbRgDry.woff2)format("woff2"),url(/ttrpg/assets/caveat-latin-ext-700-normal-DjJQd59I.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Caveat;font-style:normal;font-display:swap;font-weight:700;src:url(/ttrpg/assets/caveat-latin-700-normal-D8_1Nw6V.woff2)format("woff2"),url(/ttrpg/assets/caveat-latin-700-normal-cPyBTTZN.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper:#f3ecd9;--paper-dark:#e6dcc3;--paper-deep:#d9cfb6;--ink:#2b2118;--ink-light:#6b5a4a;--accent:#8a3b2b;--panel:#fbf7ee;--border:#c9bda3;color:var(--ink);background:var(--paper);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--paper);overflow:hidden}.app{flex-direction:column;height:100%;display:flex}.topbar{background:var(--paper-dark);border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:6px 14px;display:flex}.topbar h1,h2{margin:0;font-family:Caveat,cursive;font-weight:700}.topbar h1{font-size:26px}h2{margin-bottom:6px;font-size:22px}.error{color:#5a1a10;background:#f3c9c0;padding:8px 14px}.warning{color:#5a3a10;background:#f6e2b8;border-radius:3px;margin:6px 0;padding:6px 8px;font-size:13px}.warning ul{margin:4px 0 0 16px;padding:0}.muted{color:var(--ink-light)}.small{font-size:12px}.world-list{max-width:1000px;padding:16px 24px;overflow:auto}.world-list table{border-collapse:collapse;width:100%;margin-top:12px}.world-list th,.world-list td{text-align:left;border-bottom:1px solid var(--border);padding:6px 8px}.row{flex-wrap:wrap;align-items:end;gap:12px;display:flex}label{flex-direction:column;gap:2px;font-size:13px;display:flex}label.inline{flex-direction:row;align-items:center;gap:6px}input,select{border:1px solid var(--border);background:var(--panel);color:var(--ink);font:inherit;border-radius:3px;padding:4px 6px}input[type=range]{flex:1;min-width:60px;padding:0}input[type=number]{width:76px}input[type=color]{width:40px;height:24px;padding:0}button{border:1px solid var(--border);background:var(--panel);color:var(--ink);cursor:pointer;font:inherit;border-radius:3px;padding:5px 10px}button:hover:not(:disabled){background:#fff}button:disabled{opacity:.5;cursor:default}button.link{color:var(--accent);background:0 0;border:none;padding:0;text-decoration:underline}button.danger{color:#7a1f10}button.active{background:var(--ink);color:var(--paper);border-color:var(--ink)}.actions{gap:6px;display:flex}.world-screen{height:100%}.toolbar{background:var(--paper-dark);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:8px;padding:4px 10px;display:flex}.toolbar .world-name{font-family:Caveat,cursive;font-size:22px;font-weight:700}.toolbar .spacer{flex:1}.breadcrumb{align-items:center;gap:2px;margin-left:8px;display:flex}.breadcrumb .crumb.current{font-weight:600}.breadcrumb .sep{color:var(--ink-light)}.layer-toggles{gap:2px;display:flex}.layer-toggles .toggle{border:1px solid var(--border);background:var(--panel);cursor:pointer;border-radius:3px;flex-direction:row;align-items:center;gap:3px;padding:2px 6px;font-size:12px}.layer-toggles .toggle.on{border-color:var(--ink-light);background:#fff}.layer-toggles input{margin:0}.view-switch{display:flex}.view-switch button{border-radius:0}.view-switch button:first-child{border-radius:3px 0 0 3px}.view-switch button:last-child{border-radius:0 3px 3px 0}.export-wrap{position:relative}.export-menu{z-index:20;background:var(--panel);border:1px solid var(--border);border-radius:4px;flex-direction:column;gap:6px;min-width:260px;padding:8px;display:flex;position:absolute;top:100%;right:0;box-shadow:0 4px 12px #00000026}.export-menu .menu-section{border-top:1px solid var(--border);flex-direction:column;gap:6px;padding-top:6px;display:flex}.menu-title{color:var(--ink-light);text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:600}.workspace{flex:1;min-height:0;display:flex}.workspace .left{border-right:1px solid var(--border);background:var(--panel);flex-direction:row;align-items:stretch;display:flex}.workspace .left.collapsed{width:22px}.workspace .left .collapse{background:var(--paper-dark);border:none;border-radius:0;width:22px;padding:0}.variables-panel{width:300px;padding:8px 10px;overflow-y:auto}.var-group{margin-bottom:4px}.group-header{text-align:left;background:var(--paper-dark);border:1px solid var(--border);width:100%;font-weight:600}.group-body{flex-direction:column;gap:6px;padding:6px 2px;display:flex}.var-row label{gap:2px}.var-label{color:var(--ink-light);font-size:12px}.control.number{align-items:center;gap:6px;display:flex}.weights{flex-direction:column;gap:3px;display:flex}.weights label.inline span:first-child{text-overflow:ellipsis;white-space:nowrap;width:90px;font-size:12px;overflow:hidden}.weights .num{text-align:right;width:28px;font-size:12px}.story-list{flex-direction:column;gap:4px;display:flex}.story-row{grid-template-columns:1fr 60px 60px 70px 70px 24px;gap:3px;display:grid}.story-row input,.story-row select{min-width:0;padding:2px 4px;font-size:12px}.map-view{background:var(--paper-deep);cursor:crosshair;flex:1;min-width:0;position:relative;overflow:hidden}.map-view canvas{display:block}.map-empty{color:var(--ink-light);justify-content:center;align-items:center;font-family:Caveat,cursive;font-size:28px;display:flex;position:absolute;inset:0}.cursor-info{color:var(--ink-light);pointer-events:none;background:#fbf7eecc;border-radius:3px;padding:2px 6px;font-size:11px;position:absolute;bottom:6px;left:8px}.context-menu{z-index:30;background:var(--panel);border:1px solid var(--border);cursor:default;border-radius:4px;min-width:220px;max-height:60vh;padding:4px 0;position:absolute;overflow-y:auto;box-shadow:0 4px 12px #0003}.menu-group{border-bottom:1px solid var(--border);padding:4px 0}.menu-group:last-child{border-bottom:none}.menu-group .menu-title{padding:2px 10px}.menu-item{text-align:left;background:0 0;border:none;border-radius:0;width:100%;padding:4px 16px;display:block}.menu-item:hover{background:var(--paper-dark)}.element-panel{border-left:1px solid var(--border);background:var(--panel);width:300px;padding:8px 10px;overflow-y:auto}.element-type{color:var(--ink-light);text-transform:capitalize;margin-bottom:6px;font-size:12px}.element-actions{flex-wrap:wrap;gap:4px;margin-bottom:8px;display:flex}table.props{border-collapse:collapse;width:100%;font-size:12px}table.props th{text-align:left;color:var(--ink-light);vertical-align:top;width:40%;padding:2px 6px 2px 0;font-weight:500}table.props td{word-break:break-word;padding:2px 0}table.props code{font-size:11px}.progress{z-index:50;border-bottom:1px solid var(--border);background:#e6dcc3f2;height:22px;position:fixed;top:0;left:0;right:0}.progress-bar{background:var(--accent);opacity:.6;height:100%;transition:width .15s}.progress-label{justify-content:center;align-items:center;font-size:12px;display:flex;position:absolute;inset:0}.toasts{z-index:60;flex-direction:column;gap:6px;display:flex;position:fixed;bottom:12px;right:12px}.toast{background:var(--panel);border:1px solid var(--border);cursor:pointer;border-radius:4px;max-width:360px;padding:8px 12px;box-shadow:0 3px 10px #00000026}.toast.error{color:#5a1a10;background:#f3c9c0}
