*{box-sizing:border-box}html,body,#app{height:100%;margin:0}body{overflow:auto;font-family:Libre Baskerville,Baskerville,Baskerville Old Face,Hoefler Text,Garamond,Times New Roman,serif;background-color:#f1eee8;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='3' numOctaves='5' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.15'/%3E%3C/svg%3E")}.home.app{display:grid;grid-template-rows:auto 1fr;height:100dvh}.home .header{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:12px;padding:8px 12px;border-bottom:1px solid #e5e7eb;background:#fff}.home .title{margin:0;font-size:14px;font-weight:600;color:#111827}.home .titleLink{text-decoration:none;color:inherit}.home .list{padding:12px;overflow-y:auto;min-height:0}.home .create{margin-left:auto;height:28px;padding:0 10px;border-radius:8px;border:1px solid #d1d5db;background:#fff}.home .campaigns{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.home .row{padding:10px 12px;border:1px solid #e5e7eb;border-radius:8px;background:#fff;display:grid;grid-template-columns:1fr auto;align-items:center}.home .link{text-decoration:none;color:#111827}.home .trash{height:28px;width:28px;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;border:1px solid #e5e7eb;background:#fff;cursor:pointer}.home .empty{color:#6b7280}.home .overlay{position:fixed;inset:0;background:#0006;display:grid;place-items:center;padding:16px;z-index:50}.home .modal{width:100%;max-width:420px;background:#fff;border-radius:12px;border:1px solid #e5e7eb;box-shadow:0 10px 30px #0000001f;padding:16px}.home .modalTitle{margin:0 0 12px;font-size:16px;font-weight:600;color:#111827}.home .modalInput{width:100%;max-width:100%;box-sizing:border-box;height:36px;padding:0 10px;border-radius:8px;border:1px solid #d1d5db;outline:none;font:inherit}.home .modalActions{margin-top:12px;display:flex;gap:8px;justify-content:flex-end}.home .modalButton{height:32px;padding:0 12px;border-radius:8px;border:1px solid #d1d5db;background:#fff;font:inherit}.home .modalButton.primary{color:#fff;background:#111827;border-color:#111827}.play.app{display:grid;grid-template-rows:auto 1fr auto;height:100dvh}.play .main{position:relative;height:100%;display:grid;grid-template-columns:1fr 320px;gap:var(--mainGap, 12px);padding:0;overflow:hidden}.play .resizer{position:absolute;top:0;bottom:0;right:var(--sidebarWidth);width:10px;cursor:col-resize;background:transparent}.play .resizer:after{content:"";position:absolute;top:0;bottom:0;right:4px;width:2px;background:#e5e7eb}.play .resizer.active:after{background:#9ca3af}.play .header{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid #e5e7eb;background:#fff}.collapseSidebar{margin-left:auto;height:28px;padding:0 10px;border-radius:8px;border:1px solid #d1d5db;background:#fff;font:inherit}.play .title{margin:0;font-size:14px;font-weight:600;color:#111827}.play .titleLink{text-decoration:none;color:inherit}.play .chat{display:grid;grid-template-rows:1fr auto;overflow:hidden;min-height:0}.play .spinner{position:sticky;top:0;height:4px;background:linear-gradient(90deg,#93c5fd,#60a5fa,#2563eb);background-size:200% 100%;animation:shimmer 1.2s infinite linear;border-radius:0 0 2px 2px;z-index:5}@keyframes shimmer{0%{background-position:0% 0}to{background-position:-200% 0}}.play .messages{min-height:0;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px;scroll-behavior:smooth}.play .message{display:flex;align-items:flex-start;gap:10px;max-width:900px}.play .message.user{align-self:flex-end}.play .message.other-player{align-self:flex-start}.play .avatar{width:28px;height:28px}.play .content{background:#fcfcfb;padding:10px 12px;border-radius:10px;line-height:1.4;white-space:pre-wrap;box-shadow:0 2px 4px #0000001a}.play .message.user .content{background:#dbeafe}.play .message.other-player .content{background:#dcfce7}.play .contentHeader{display:flex;gap:8px;justify-content:flex-end}.play .diceToggle{border:1px solid #d1d5db;border-radius:6px;background:#fff;color:#456ec5;cursor:pointer;padding:5px;font-size:20px}.dice{font-size:14px}.dice.d4{color:#b124b5}.dice.d6{color:#972424}.dice.d8{color:#5c9724}.dice.d10{color:#c5801a}.dice.d12{color:#1aa18e}.dice.d20{color:#456ec5}.diceIcons{margin:0 5px}.rollResult{font-weight:700;color:#111827}.play .rolls{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:8px 10px;margin-bottom:6px}.play .rollsList{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:14px;color:#374151}.rollAmount{margin-left:5px}.play .composer{position:sticky;bottom:0;display:grid;grid-template-columns:1fr auto;grid-template-rows:auto 1fr;gap:8px;padding:0 12px 12px;border-top:1px solid #e5e7eb;background:#fff}.play .composerHandle{grid-column:1 / -1;height:10px;cursor:row-resize;background:transparent;position:relative}.play .composerHandle:after{content:"";position:absolute;left:50%;top:3px;transform:translate(-50%);width:40px;height:4px;border-radius:2px;background:#e5e7eb}.play .composerHandle.disabled{cursor:not-allowed}.play .input{width:100%;padding:12px 14px;border:1px solid #d1d5db;border-radius:10px;outline:none;font:inherit;resize:none;height:100%;min-height:44px}.play .input:focus{border-color:#60a5fa;box-shadow:0 0 0 3px #60a5fa40}.play .send{padding:0 14px;border-radius:10px;background:#111827;color:#fff;border:none;font:inherit}.play .send:disabled{opacity:.6}.rollReason{margin-left:5px}.sidebar{border-left:1px solid #e5e7eb;background:#fafafa;overflow:visible}.filesHeader{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;border-bottom:1px solid #e5e7eb;background:inherit;z-index:1}.filesTitle{font-size:12px;font-weight:600;color:#111827}.addFile{height:24px;width:24px;border-radius:6px;border:1px solid #d1d5db;background:#fff;cursor:pointer}.filesList{overflow-y:auto;min-height:0;padding:8px;display:flex;flex-direction:column;gap:8px}.filePanel{border:1px solid #e5e7eb;border-radius:8px;background:#fff}.fileHeader{width:100%;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;padding:8px 10px}.toggle{height:24px;width:24px;border:none;background:transparent;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.caret{display:inline-block;transition:transform .15s ease-in-out}.caret.open{transform:rotate(90deg)}.fileName{flex:1;min-width:0;border:none;outline:none;background:transparent;font-size:12px;font-weight:600;color:#111827;font:inherit}.deleteFile{height:24px;width:24px;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;border:1px solid #e5e7eb;background:#fff;cursor:pointer}.fileBody{padding:8px 10px 10px}.fileContent{width:100%;max-width:100%;box-sizing:border-box;min-height:120px;padding:8px;border:1px solid #d1d5db;border-radius:6px;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:12px}.highlight-npc{font-weight:bolder;color:#97246b}.highlight-place{font-weight:bolder;color:#4a9724}.highlight-weapon,.highlight-item{font-weight:bolder;color:#246f97}.highlight-spell{font-weight:bolder;color:#972424}.highlight-character{font-weight:bolder;color:#c5801a}.highlight-skill{font-weight:bolder;color:#1aa18e}.tabsHeader{padding:8px}.tabButton{padding:6px 10px;border:1px solid #d1d5db;background:#fafafa;cursor:pointer}.tabButton.active{background:#d3d1d1}.tabBody{padding:8px;overflow-y:auto;min-height:0}.cq{container-type:inline-size;width:100%;margin:0 auto}.cq .row{display:flex;flex-wrap:wrap;margin-left:-.5rem;margin-right:-.5rem}.cq .row>[class*=col-]{padding-left:.5rem;padding-right:.5rem;flex:0 0 auto}.cq .row>.col{flex:1 0 0;width:auto}.cq .row>.col-auto{flex:0 0 auto;width:auto}.cq .row>[class*=col-]{width:100%}.cq .row>.col-xs-1{width:8.3333%}.cq .row>.col-xs-2{width:16.6667%}.cq .row>.col-xs-3{width:25%}.cq .row>.col-xs-4{width:33.3333%}.cq .row>.col-xs-5{width:41.6667%}.cq .row>.col-xs-6{width:50%}.cq .row>.col-xs-7{width:58.3333%}.cq .row>.col-xs-8{width:66.6667%}.cq .row>.col-xs-9{width:75%}.cq .row>.col-xs-10{width:83.3333%}.cq .row>.col-xs-11{width:91.6667%}.cq .row>.col-xs-12{width:100%}.cq .row>.offset-xs-1{margin-left:8.3333%}.cq .row>.offset-xs-2{margin-left:16.6667%}.cq .row>.offset-xs-3{margin-left:25%}.cq .row>.offset-xs-4{margin-left:33.3333%}.cq .row>.offset-xs-5{margin-left:41.6667%}.cq .row>.offset-xs-6{margin-left:50%}.cq .row>.offset-xs-7{margin-left:58.3333%}.cq .row>.offset-xs-8{margin-left:66.6667%}.cq .row>.offset-xs-9{margin-left:75%}.cq .row>.offset-xs-10{margin-left:83.3333%}.cq .row>.offset-xs-11{margin-left:91.6667%}@container (min-width: 576px){.cq .row>.col-sm-1{width:8.3333%}.cq .row>.col-sm-2{width:16.6667%}.cq .row>.col-sm-3{width:25%}.cq .row>.col-sm-4{width:33.3333%}.cq .row>.col-sm-5{width:41.6667%}.cq .row>.col-sm-6{width:50%}.cq .row>.col-sm-7{width:58.3333%}.cq .row>.col-sm-8{width:66.6667%}.cq .row>.col-sm-9{width:75%}.cq .row>.col-sm-10{width:83.3333%}.cq .row>.col-sm-11{width:91.6667%}.cq .row>.col-sm-12{width:100%}.cq .row>.offset-sm-1{margin-left:8.3333%}.cq .row>.offset-sm-2{margin-left:16.6667%}.cq .row>.offset-sm-3{margin-left:25%}.cq .row>.offset-sm-4{margin-left:33.3333%}.cq .row>.offset-sm-5{margin-left:41.6667%}.cq .row>.offset-sm-6{margin-left:50%}.cq .row>.offset-sm-7{margin-left:58.3333%}.cq .row>.offset-sm-8{margin-left:66.6667%}.cq .row>.offset-sm-9{margin-left:75%}.cq .row>.offset-sm-10{margin-left:83.3333%}.cq .row>.offset-sm-11{margin-left:91.6667%}}@container (min-width: 768px){.cq .row>.col-md-1{width:8.3333%}.cq .row>.col-md-2{width:16.6667%}.cq .row>.col-md-3{width:25%}.cq .row>.col-md-4{width:33.3333%}.cq .row>.col-md-5{width:41.6667%}.cq .row>.col-md-6{width:50%}.cq .row>.col-md-7{width:58.3333%}.cq .row>.col-md-8{width:66.6667%}.cq .row>.col-md-9{width:75%}.cq .row>.col-md-10{width:83.3333%}.cq .row>.col-md-11{width:91.6667%}.cq .row>.col-md-12{width:100%}.cq .row>.offset-md-1{margin-left:8.3333%}.cq .row>.offset-md-2{margin-left:16.6667%}.cq .row>.offset-md-3{margin-left:25%}.cq .row>.offset-md-4{margin-left:33.3333%}.cq .row>.offset-md-5{margin-left:41.6667%}.cq .row>.offset-md-6{margin-left:50%}.cq .row>.offset-md-7{margin-left:58.3333%}.cq .row>.offset-md-8{margin-left:66.6667%}.cq .row>.offset-md-9{margin-left:75%}.cq .row>.offset-md-10{margin-left:83.3333%}.cq .row>.offset-md-11{margin-left:91.6667%}}@container (min-width: 992px){.cq .row>.col-lg-1{width:8.3333%}.cq .row>.col-lg-2{width:16.6667%}.cq .row>.col-lg-3{width:25%}.cq .row>.col-lg-4{width:33.3333%}.cq .row>.col-lg-5{width:41.6667%}.cq .row>.col-lg-6{width:50%}.cq .row>.col-lg-7{width:58.3333%}.cq .row>.col-lg-8{width:66.6667%}.cq .row>.col-lg-9{width:75%}.cq .row>.col-lg-10{width:83.3333%}.cq .row>.col-lg-11{width:91.6667%}.cq .row>.col-lg-12{width:100%}.cq .row>.offset-lg-1{margin-left:8.3333%}.cq .row>.offset-lg-2{margin-left:16.6667%}.cq .row>.offset-lg-3{margin-left:25%}.cq .row>.offset-lg-4{margin-left:33.3333%}.cq .row>.offset-lg-5{margin-left:41.6667%}.cq .row>.offset-lg-6{margin-left:50%}.cq .row>.offset-lg-7{margin-left:58.3333%}.cq .row>.offset-lg-8{margin-left:66.6667%}.cq .row>.offset-lg-9{margin-left:75%}.cq .row>.offset-lg-10{margin-left:83.3333%}.cq .row>.offset-lg-11{margin-left:91.6667%}}@container (min-width: 1200px){.cq .row>.col-xl-1{width:8.3333%}.cq .row>.col-xl-2{width:16.6667%}.cq .row>.col-xl-3{width:25%}.cq .row>.col-xl-4{width:33.3333%}.cq .row>.col-xl-5{width:41.6667%}.cq .row>.col-xl-6{width:50%}.cq .row>.col-xl-7{width:58.3333%}.cq .row>.col-xl-8{width:66.6667%}.cq .row>.col-xl-9{width:75%}.cq .row>.col-xl-10{width:83.3333%}.cq .row>.col-xl-11{width:91.6667%}.cq .row>.col-xl-12{width:100%}.cq .row>.offset-xl-1{margin-left:8.3333%}.cq .row>.offset-xl-2{margin-left:16.6667%}.cq .row>.offset-xl-3{margin-left:25%}.cq .row>.offset-xl-4{margin-left:33.3333%}.cq .row>.offset-xl-5{margin-left:41.6667%}.cq .row>.offset-xl-6{margin-left:50%}.cq .row>.offset-xl-7{margin-left:58.3333%}.cq .row>.offset-xl-8{margin-left:66.6667%}.cq .row>.offset-xl-9{margin-left:75%}.cq .row>.offset-xl-10{margin-left:83.3333%}.cq .row>.offset-xl-11{margin-left:91.6667%}}.panel{margin-top:30px;margin-bottom:30px}.form-group label{font-weight:700}@keyframes pulse-purple{0%{box-shadow:0 0 0 1px #8e60c680}50%{box-shadow:0 0 0 4px #8e60c6cc}to{box-shadow:0 0 0 1px #8e60c680}}span.modified,input.modified,.progress.modified,.modified input,.modified textarea,.list-group-item.modified{outline:none;animation:pulse-purple 2s infinite ease-in-out}.tabButton.modified{outline:none;overflow:visible!important}.tabButton.modified:after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;animation:pulse-purple 2s infinite ease-in-out}.bg-dark,.navbar-brand{background-color:#332514!important;color:#c69e60!important}.btn{font-family:Libre Baskerville,serif;border:1px solid #7c6a53;border-radius:4px;letter-spacing:.5px;box-shadow:0 2px 4px #00000026,inset 0 1px #fff3;transition:all .2s ease-in-out;position:relative;overflow:hidden;text-transform:none}.btn:hover{transform:translateY(-1px);box-shadow:0 4px 8px #0003,inset 0 1px #fff3!important;z-index:1}.btn:active{transform:translateY(0);box-shadow:inset 0 2px 4px #0000001a!important}.btn-primary,.btn-dark{background:linear-gradient(to bottom,#4a3c31,#332514)!important;color:#dfcdb8!important;border-color:#1a130a!important}.btn-primary:hover,.btn-dark:hover{background:linear-gradient(to bottom,#5c4b3e,#42301a)!important;color:#fff!important}.btn-secondary,.btn-warning{background:linear-gradient(to bottom,#e8dcb5,#c6b280)!important;color:#3e2b14!important;border-color:#8c7353!important}.btn-secondary:hover,.btn-warning:hover{background:linear-gradient(to bottom,#f2e9cc,#d4c08e)!important;color:#2a1c0d!important}.btn-cta{background:linear-gradient(to bottom,#a33838,#7a2222)!important;color:#faeacc!important;border-color:#521515!important;box-shadow:0 4px 15px #7a222266,inset 0 1px #fff3!important}.btn-cta:hover{background:linear-gradient(to bottom,#b54545,#8f2a2a)!important;box-shadow:0 6px 20px #7a222299,inset 0 1px #fff3!important}.form-check-input:checked{accent-color:#a33838;background-color:#a33838;border-color:#a33838}.btn-success{background:linear-gradient(to bottom,#4a7a4a,#2e522e)!important;color:#e6dace!important;border-color:#1d361d!important}.btn-success:hover{background:linear-gradient(to bottom,#5b8f5b,#3a623a)!important;color:#fff!important}.btn-danger{background:linear-gradient(to bottom,#a33838,#7a2222)!important;color:#e6dace!important;border-color:#521515!important}.btn-danger:hover{background:linear-gradient(to bottom,#b54545,#8f2a2a)!important;color:#fff!important}.btn-link{border:none;outline:none;box-shadow:none}.ornate-header,.play .header{border-bottom:none!important;box-shadow:0 4px 12px #0006!important;position:relative;margin-bottom:15px}.ornate-header:after,.play .header:after{content:"";display:block;position:absolute;left:0;bottom:-15px;width:100%;height:20px;background-image:url(/header_border.png);background-repeat:repeat-x;background-size:auto 20px;pointer-events:none;box-shadow:0 4px 4px #00000026}.shadow-text{text-shadow:-1px -1px 0 #000,1px -1px 0 #000,-1px 1px 0 #000,1px 1px 0 #000;font-size:.9rem}.dropdown-menu.show{z-index:100000}.ornate-header .navbar-nav .nav-link{font-family:Libre Baskerville,serif;font-size:1.3rem;color:#e7c2a1!important;-webkit-text-stroke:.5px #000;text-shadow:3px 3px 0 #000;letter-spacing:1px;transition:all .2s ease-in-out}.ornate-header .navbar-nav .nav-link:hover,.ornate-header .navbar-nav .nav-link.router-link-active{color:#fff!important;transform:scale(1.05);transform-origin:left;text-shadow:3px 3px 0 #000,0 0 15px rgba(232,220,181,.6)}h1{display:flex!important;align-items:center;justify-content:center;gap:15px;color:#543b3b;text-shadow:0 4px 4px rgba(0,0,0,.1);font-weight:700}h1:before,h1:after{content:"";display:block;width:250px;height:26px;background-image:url(/arrow.png);background-size:contain;background-repeat:no-repeat;background-position:center}h1:after{transform:rotate(180deg)}.card{background:#fff;border-radius:12px;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;border:1px solid rgba(0,0,0,.08)}
