@import url("https://fonts.googleapis.com/css2?family=Cinzel:wght@400;500;600;700&family=Cinzel+Decorative:wght@400;700&family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400&family=MedievalSharp&display=swap");*{box-sizing:border-box;padding:0;margin:0}:root{--parchment-light:#f4e4bc;--parchment-mid:#e8d5a3;--parchment-dark:#d4c089;--parchment-edge:#c4a35a;--ink-black:#2c1810;--ink-brown:#4a3728;--ink-red:#8b0000;--ink-gold:#c9a227;--ink-blue:#1a4a6e;--dragon-red:#8b0000;--elvish-gold:#d4af37;--mystic-purple:#4a2c4a;--forest-green:#2d5a2d;--font-display:"Cinzel Decorative","Cinzel",serif;--font-heading:"Cinzel",serif;--font-body:"Cormorant Garamond","Times New Roman",serif;--font-script:"MedievalSharp",cursive}body,html{max-width:100vw;min-height:100vh;overflow-x:hidden;font-family:var(--font-body);font-size:16px;background:radial-gradient(ellipse at center,#3d2914 0,#1a0f08 100%);background-attachment:fixed}.page-container:before{content:"";bottom:0;background:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%' height='100%' filter='url(%23noise)' opacity='0.08'/%3E%3C/svg%3E");pointer-events:none;z-index:0}.header,.page-container:before{position:fixed;top:0;left:0;right:0}.header{display:flex;justify-content:space-between;align-items:center;padding:1rem 2rem;background:linear-gradient(180deg,#2d1f14,#3d2914 50%,#2d1f14);border-bottom:4px solid #1a0f08;box-shadow:0 4px 8px rgba(0,0,0,.5),inset 0 1px 0 hsla(0,0%,100%,.1),inset 0 -1px 0 rgba(0,0,0,.3);z-index:1000}.header:before{left:1rem}.header:after,.header:before{content:"⚔";position:absolute;font-size:1.5rem;color:var(--elvish-gold);text-shadow:0 0 11px rgba(212,175,55,.5)}.header:after{right:1rem;transform:scaleX(-1)}.header-title{font-family:var(--font-display);color:var(--elvish-gold);font-size:1.4rem;font-weight:700;letter-spacing:2px;text-shadow:0 0 11px rgba(212,175,55,.4),2px 2px 4px rgba(0,0,0,.8);text-transform:uppercase}.header-right{position:relative}.profile-btn{background:none;border:2px solid var(--elvish-gold);color:var(--elvish-gold);cursor:pointer;padding:.5rem;border-radius:50%;transition:all .3s;display:flex;align-items:center;justify-content:center}.profile-btn:hover{background:rgba(212,175,55,.2);box-shadow:0 0 15px rgba(212,175,55,.4)}.login-header-btn{padding:.5rem 1.25rem;background:linear-gradient(180deg,var(--dragon-red) 0,#5a0000 100%);color:var(--parchment-light);border:2px solid var(--elvish-gold);border-radius:4px;font-family:var(--font-heading);font-size:.9rem;font-weight:600;letter-spacing:1px;cursor:pointer;transition:all .3s;text-transform:uppercase}.login-header-btn:hover{background:linear-gradient(180deg,#a00000 0,var(--dragon-red) 100%);box-shadow:0 0 15px rgba(139,0,0,.5)}.dropdown{position:absolute;top:100%;right:0;margin-top:.5rem;background:linear-gradient(180deg,var(--parchment-light) 0,var(--parchment-mid) 100%);border:3px solid var(--ink-black);border-radius:4px;min-width:200px;box-shadow:0 4px 20px rgba(0,0,0,.5),inset 0 0 20px rgba(0,0,0,.05)}.dropdown-email{padding:.75rem 1rem;color:var(--ink-black);font-family:var(--font-body);font-size:.9rem;font-style:italic;word-break:break-all}.dropdown-divider{border:none;border-top:2px solid var(--parchment-edge)}.dropdown-item{width:100%;padding:.75rem 1rem;background:none;border:none;color:var(--ink-black);font-family:var(--font-heading);font-size:.9rem;text-align:left;cursor:pointer;transition:all .2s}.dropdown-item:hover{background:rgba(139,0,0,.15);color:var(--dragon-red)}.page-container{min-height:100vh;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:6rem 2rem 2rem;color:var(--ink-black);position:relative;z-index:1}.content-box,h1{text-align:center}h1{font-family:var(--font-display);font-size:2.5rem;font-weight:700;margin-bottom:1rem;color:var(--dragon-red);text-shadow:2px 2px 4px rgba(0,0,0,.3);letter-spacing:3px}.message{font-family:var(--font-body);font-size:1.5rem;font-style:italic;color:var(--ink-black)}.login-box{background:linear-gradient(180deg,var(--parchment-light) 0,var(--parchment-mid) 50%,var(--parchment-dark) 100%);border:4px solid var(--ink-black);border-radius:8px;padding:3rem;width:100%;max-width:400px;box-shadow:0 8px 32px rgba(0,0,0,.5),inset 0 0 60px rgba(0,0,0,.05);position:relative}.login-box:before{top:.5rem;left:.5rem}.login-box:after,.login-box:before{content:"❧";position:absolute;font-size:1.5rem;color:var(--elvish-gold)}.login-box:after{bottom:.5rem;right:.5rem;transform:rotate(180deg)}.login-box h1{font-size:1.8rem;margin-bottom:.5rem}.login-box h2{font-family:var(--font-body);font-size:1.2rem;color:var(--ink-black);margin-bottom:2rem;font-weight:400;font-style:italic}.form-group{margin-bottom:1.5rem}.form-group label{display:block;color:var(--ink-black);font-family:var(--font-heading);margin-bottom:.5rem;font-size:.9rem;font-weight:600;letter-spacing:1px}.form-group input{width:100%;padding:.75rem 1rem;border:2px solid var(--parchment-edge);border-radius:4px;background:hsla(0,0%,100%,.5);color:var(--ink-black);font-family:var(--font-body);font-size:1rem;transition:all .2s}.form-group input:focus{outline:none;border-color:var(--dragon-red);box-shadow:0 0 11px rgba(139,0,0,.2)}.form-group input::placeholder{color:var(--ink-black);opacity:.5;font-style:italic}.error-message{color:var(--dragon-red);font-family:var(--font-body);font-size:.9rem;margin-bottom:1rem;text-align:center;font-style:italic}.submit-btn{width:100%;padding:.875rem;background:linear-gradient(180deg,var(--dragon-red) 0,#5a0000 100%);color:var(--parchment-light);border:2px solid var(--elvish-gold);border-radius:4px;font-family:var(--font-heading);font-size:1rem;font-weight:600;letter-spacing:2px;text-transform:uppercase;cursor:pointer;transition:all .3s}.submit-btn:hover:not(:disabled){background:linear-gradient(180deg,#a00000 0,var(--dragon-red) 100%);box-shadow:0 0 20px rgba(139,0,0,.4)}.submit-btn:disabled{opacity:.6;cursor:not-allowed}.toggle-mode{margin-top:1.5rem;text-align:center;color:var(--ink-black);font-family:var(--font-body);font-size:.9rem}.toggle-btn{background:none;border:none;color:var(--dragon-red);cursor:pointer;font-family:var(--font-heading);font-size:.9rem;text-decoration:underline;font-weight:600}.toggle-btn:hover{color:#a00000;text-shadow:0 0 5px rgba(139,0,0,.3)}.status-message{margin-top:1rem;color:var(--ink-black);font-size:.9rem;font-style:italic}.home-page{padding-top:80px;min-height:100vh;align-items:flex-start;justify-content:flex-start}.page-header{text-align:center;margin-bottom:1.5rem;width:100%}.page-header h1{margin-bottom:.5rem;background:linear-gradient(180deg,var(--elvish-gold) 0,#a08020 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;filter:drop-shadow(2px 2px 4px rgba(0,0,0,.5))}.encounter-generator{display:grid;grid-template-columns:1fr 1fr;grid-gap:2rem;gap:2rem;width:100%;max-width:1400px;margin:0 auto}.generator-column{background:linear-gradient(180deg,var(--parchment-light) 0,var(--parchment-mid) 30%,var(--parchment-mid) 70%,var(--parchment-dark) 100%);border:4px solid var(--ink-black);border-radius:8px;padding:1.5rem;max-height:calc(100vh - 200px);overflow-y:auto;box-shadow:0 8px 32px rgba(0,0,0,.4),inset 0 0 100px rgba(0,0,0,.03);position:relative}.generator-column:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:4px;pointer-events:none;box-shadow:inset 0 0 40px rgba(74,55,40,.2)}.generator-column h2{font-family:var(--font-display);color:var(--dragon-red);font-size:1.4rem;font-weight:700;margin-bottom:1rem;text-align:center;letter-spacing:2px;text-transform:uppercase;border-bottom:2px solid var(--parchment-edge);padding-bottom:.5rem;position:relative}.generator-column h2:before{content:"☙";margin-right:.5rem;color:var(--elvish-gold)}.generator-column h2:after{content:"❧";margin-left:.5rem;color:var(--elvish-gold)}.input-section{margin-bottom:1.5rem}.input-section h3{font-family:var(--font-heading);color:var(--ink-black);font-size:1rem;font-weight:600;margin-bottom:.75rem;border-bottom:1px solid var(--parchment-edge);padding-bottom:.25rem;letter-spacing:1px}.input-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem;gap:1rem}.input-row label{font-size:.95rem;flex:1 1}.input-row input[type=number],.input-row label{font-family:var(--font-body);color:var(--ink-black)}.input-row input[type=number]{width:80px;padding:.4rem .5rem;border:2px solid var(--parchment-edge);border-radius:4px;background:hsla(0,0%,100%,.6);font-size:1rem;text-align:center;font-weight:500}.input-row input[type=number]:focus{outline:none;border-color:var(--dragon-red);box-shadow:0 0 8px rgba(139,0,0,.2)}.checkbox-grid{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:.25rem 1rem;gap:.25rem 1rem}.checkbox-item{display:flex;align-items:center;gap:.5rem;cursor:pointer;padding:.25rem;border-radius:4px;transition:background .2s}.checkbox-item:hover{background:rgba(139,0,0,.08)}.checkbox-item input[type=checkbox]{width:16px;height:16px;accent-color:var(--dragon-red);cursor:pointer}.checkbox-item span{font-family:var(--font-body);color:var(--ink-black);font-size:.9rem}.button-row{display:flex;gap:1rem;margin-top:1.5rem}.generate-btn{flex:2 1;padding:.75rem 1.5rem;background:linear-gradient(180deg,var(--dragon-red) 0,#5a0000 100%);color:var(--parchment-light);border:3px solid var(--elvish-gold);border-radius:4px;font-family:var(--font-heading);font-size:1rem;font-weight:700;letter-spacing:2px;text-transform:uppercase;cursor:pointer;transition:all .3s;box-shadow:0 4px 12px rgba(0,0,0,.3)}.generate-btn:hover:not(:disabled){background:linear-gradient(180deg,#a00000 0,var(--dragon-red) 100%);box-shadow:0 4px 12px rgba(0,0,0,.3),0 0 20px rgba(139,0,0,.4);transform:translateY(-1px)}.generate-btn:disabled{opacity:.5;cursor:not-allowed}.clear-btn{flex:1 1;padding:.75rem 1rem;background:linear-gradient(180deg,var(--parchment-light) 0,var(--parchment-dark) 100%);color:var(--ink-black);border:2px solid var(--parchment-edge);border-radius:4px;font-family:var(--font-heading);font-size:.9rem;font-weight:600;letter-spacing:1px;cursor:pointer;transition:all .2s}.clear-btn:hover{background:linear-gradient(180deg,var(--parchment-mid) 0,var(--parchment-edge) 100%);border-color:var(--ink-black)}.loading-note{text-align:center;font-family:var(--font-body);color:var(--ink-black);font-size:.9rem;font-style:italic;margin-top:1rem}.results-column{font-family:var(--font-script)}.generating,.no-results{text-align:center;color:var(--ink-black);font-family:var(--font-body);font-style:italic;padding:2rem;font-size:1.1rem}.encounters-header pre{font-family:var(--font-display);color:var(--dragon-red);text-align:center;margin-bottom:1rem;font-size:.9rem;letter-spacing:1px}.encounter-result{margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:2px solid var(--parchment-edge);position:relative}.encounter-result:after{content:"❋";position:absolute;bottom:-.6rem;left:50%;transform:translateX(-50%);background:var(--parchment-mid);padding:0 .5rem;color:var(--elvish-gold);font-size:.8rem}.encounter-result h3{font-family:var(--font-heading);color:var(--ink-blue);font-size:1.1rem;font-weight:600;margin-bottom:.5rem;letter-spacing:1px}.location-note{font-family:var(--font-body);color:var(--ink-black);font-size:.9rem;font-style:italic;margin-bottom:.5rem}.monster-list{margin:.5rem 0}.monster-group{color:var(--forest-green)}.predicted-outcomes{margin:1rem 0;padding:.75rem;background:rgba(139,0,0,.05);border-left:3px solid var(--dragon-red);border-radius:0 4px 4px 0}.predicted-outcomes h4{font-family:var(--font-heading);color:var(--dragon-red);font-size:.95rem;font-weight:600;margin-bottom:.5rem;letter-spacing:1px}.predicted-outcomes p{font-family:var(--font-body);color:var(--ink-black);font-size:.9rem;margin:.2rem 0;line-height:1.4}.tactical-notes{margin-top:1rem;padding:.75rem;background:rgba(26,74,110,.05);border-left:3px solid var(--ink-blue);border-radius:0 4px 4px 0}.tactical-notes h4{font-family:var(--font-heading);color:var(--ink-blue);font-size:.95rem;font-weight:600;margin-bottom:.5rem;letter-spacing:1px}.tactical-notes pre{font-family:var(--font-body);color:var(--ink-black);font-size:.85rem;white-space:pre-wrap;word-wrap:break-word;line-height:1.5}.dm-strategy{margin-top:2rem;padding-top:1rem;border-top:3px double var(--dragon-red);position:relative}.dm-strategy:before{content:"⚔ DUNGEON MASTER'S GUIDE ⚔";position:absolute;top:-.7rem;left:50%;transform:translateX(-50%);background:var(--parchment-mid);padding:0 1rem;font-family:var(--font-heading);font-size:.75rem;color:var(--dragon-red);letter-spacing:2px;white-space:nowrap}.dm-strategy pre{font-family:var(--font-body);color:var(--ink-black);font-size:.85rem;white-space:pre-wrap;word-wrap:break-word;line-height:1.5}.generator-column::-webkit-scrollbar{width:12px}.generator-column::-webkit-scrollbar-track{background:var(--parchment-dark);border-radius:6px;border:1px solid var(--parchment-edge)}.generator-column::-webkit-scrollbar-thumb{background:linear-gradient(180deg,var(--ink-black) 0,#2c1810 100%);border-radius:6px;border:2px solid var(--parchment-dark)}.generator-column::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#5a4030 0,var(--ink-black) 100%)}@media (max-width:1024px){.encounter-generator{grid-template-columns:1fr}.generator-column{max-height:none}.header:after,.header:before{display:none}}.glow-gold{color:var(--elvish-gold);text-shadow:0 0 5px rgba(212,175,55,.5),0 0 11px rgba(212,175,55,.3),0 0 20px rgba(212,175,55,.2)}.runic-border{border-image:repeating-linear-gradient(90deg,var(--elvish-gold) 0,var(--elvish-gold) 11px,transparent 11px,transparent 20px) 1}@keyframes fadeInScroll{0%{opacity:0;transform:translateY(11px)}to{opacity:1;transform:translateY(0)}}.encounter-result{animation:fadeInScroll .3s ease-out}.generator-column:hover{box-shadow:0 8px 32px rgba(0,0,0,.5),inset 0 0 100px rgba(0,0,0,.05)}.encounters-header{text-align:center;margin-bottom:1.5rem}.encounters-title{font-family:var(--font-display);color:var(--dragon-red);font-size:1.5rem;font-weight:700;letter-spacing:3px;text-shadow:1px 1px 2px rgba(0,0,0,.2)}.encounter-title{font-family:var(--font-display);color:var(--ink-blue);font-size:1.2rem;text-align:center;margin-bottom:1rem;letter-spacing:2px}.analysis-card,.counter-card,.dm-strategy-card,.error-card,.flying-card,.monster-card,.monster-summary-card,.outcomes-card,.situational-card{background:linear-gradient(135deg,hsla(0,0%,100%,.4),hsla(43,72%,85%,.6));border:2px solid var(--parchment-edge);border-radius:8px;padding:1rem;margin-bottom:1rem;box-shadow:0 2px 8px rgba(0,0,0,.15),inset 0 1px 0 hsla(0,0%,100%,.5);position:relative}.card-title{font-family:var(--font-heading);color:var(--dragon-red);font-size:1rem;font-weight:600;margin-bottom:.5rem;letter-spacing:1px;border-bottom:1px solid var(--parchment-edge);padding-bottom:.25rem}.card-subtitle{font-family:var(--font-body);color:var(--ink-black);font-size:.85rem;font-style:italic;margin-bottom:.5rem}.monster-summary-card{border-left:4px solid var(--forest-green)}.monster-summary-card .card-title{color:var(--forest-green)}.monster-group{font-family:var(--font-body);color:var(--ink-black);font-size:1rem;font-weight:600;margin:.25rem 0}.role-tag{font-size:.85rem;color:var(--ink-black);font-weight:400;font-style:italic}.outcomes-card{border-left:4px solid var(--elvish-gold)}.outcomes-card .card-title{color:var(--ink-black)}.outcomes-grid{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:.75rem;gap:.75rem}.outcome-item{display:flex;flex-direction:column;padding:.5rem;background:rgba(212,175,55,.1);border-radius:4px;text-align:center}.outcome-label{font-family:var(--font-body);font-size:.75rem;color:var(--ink-black);text-transform:uppercase;letter-spacing:1px}.outcome-value{font-family:var(--font-heading);font-size:1.2rem;color:var(--dragon-red);font-weight:700}.analysis-card{border-left:4px solid var(--ink-blue)}.analysis-card .card-title{color:var(--ink-blue)}.monster-card{border-left:4px solid var(--dragon-red);background:linear-gradient(135deg,rgba(139,0,0,.03),hsla(43,72%,85%,.6))}.monster-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem;border-bottom:2px solid var(--parchment-edge);padding-bottom:.5rem}.monster-name{font-family:var(--font-display);color:var(--dragon-red);font-size:1.1rem;font-weight:700;letter-spacing:1px;margin:0}.monster-count{font-family:var(--font-heading);font-size:1.2rem;color:var(--elvish-gold);font-weight:700;background:var(--ink-black);padding:.2rem .6rem;border-radius:4px}.monster-stats{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.5rem}.monster-stats .stat{font-family:var(--font-body);font-size:.8rem;color:var(--ink-black);background:rgba(196,163,90,.3);padding:.2rem .5rem;border-radius:4px;border:1px solid var(--parchment-edge)}.monster-stats .stat.flight{background:rgba(26,74,110,.2);border-color:var(--ink-blue);color:var(--ink-blue)}.monster-stats .stat.ranged{background:rgba(45,90,45,.2);border-color:var(--forest-green);color:var(--forest-green)}.monster-abilities{font-family:var(--font-body);font-size:.85rem;color:var(--ink-black);font-style:italic;margin-bottom:.5rem}.abilities-label{font-weight:600;font-style:normal}.monster-role{font-family:var(--font-heading);font-size:.75rem;color:var(--elvish-gold);text-transform:uppercase;letter-spacing:2px;margin-bottom:.75rem;background:var(--ink-black);display:inline-block;padding:.2rem .5rem;border-radius:4px}.tactic-list{list-style:none;padding:0;margin:0}.tactic-list li{font-family:var(--font-body);font-size:.9rem;color:var(--ink-black);padding:.3rem 0 .3rem 1.2rem;position:relative;line-height:1.4}.tactic-list li:before{content:"•";position:absolute;left:0;color:var(--dragon-red);font-weight:700}.section-header{font-family:var(--font-display);color:var(--ink-black);font-size:1rem;text-align:center;margin:1.5rem 0 1rem;letter-spacing:2px;text-transform:uppercase;position:relative}.section-header:after,.section-header:before{content:"—";margin:0 .5rem;color:var(--elvish-gold)}.counter-tactics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));grid-gap:1rem;gap:1rem}.counter-card{border-left:4px solid var(--mystic-purple)}.counter-card .card-title{color:var(--mystic-purple)}.flying-card{border-left:4px solid var(--ink-blue);background:linear-gradient(135deg,rgba(26,74,110,.05),hsla(43,72%,85%,.6))}.flying-card .card-title{color:var(--ink-blue)}.adaptations-section{margin-top:1rem;padding-top:.75rem;border-top:1px dashed var(--parchment-edge)}.adaptations-section h5{font-family:var(--font-heading);font-size:.9rem;color:var(--ink-black);margin-bottom:.5rem}.adaptation-item{margin-bottom:.5rem}.adaptation-name{font-family:var(--font-body);font-weight:600;color:var(--ink-black)}.adaptation-item ul{margin:.25rem 0 0 1rem;padding:0}.adaptation-item li{font-size:.85rem;color:var(--ink-black)}.situational-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));grid-gap:1rem;gap:1rem}.situational-card{border-left:4px solid var(--forest-green)}.situational-card .card-title{color:var(--forest-green)}.dm-strategy-card{border:3px double var(--dragon-red);background:linear-gradient(135deg,rgba(139,0,0,.05),hsla(43,72%,85%,.8));margin-top:2rem}.dm-strategy-title{font-family:var(--font-display);color:var(--dragon-red);font-size:1.2rem;text-align:center;margin-bottom:1rem;letter-spacing:2px}.dm-strategy-content{font-family:var(--font-body);font-size:.85rem;color:var(--ink-black);white-space:pre-wrap;word-wrap:break-word;line-height:1.5}.tactical-notes-card{border:2px solid var(--parchment-edge);border-radius:8px;padding:1.25rem;margin-top:1rem;background:linear-gradient(135deg,hsla(0,0%,100%,.3),hsla(43,72%,85%,.5));box-shadow:0 2px 8px rgba(0,0,0,.1),inset 0 1px 0 hsla(0,0%,100%,.5)}.tactical-notes-card .card-title{font-family:var(--font-display);color:var(--dragon-red);font-size:1.1rem;text-align:center;margin-bottom:1rem;letter-spacing:2px;border-bottom:2px solid var(--parchment-edge);padding-bottom:.5rem}.tactical-content{font-family:var(--font-body);font-size:.9rem;color:var(--ink-black);white-space:pre-wrap;word-wrap:break-word;line-height:1.6}.error-card{border-left:4px solid var(--dragon-red);text-align:center;font-style:italic;color:var(--dragon-red);padding:1rem;background:linear-gradient(135deg,rgba(139,0,0,.05),hsla(43,72%,85%,.6));border-radius:8px}.dm-strategy,.encounters-header pre,.predicted-outcomes,.tactical-notes{display:none}@media (max-width:768px){.outcomes-grid{grid-template-columns:1fr 1fr}.counter-tactics-grid,.situational-grid{grid-template-columns:1fr}.monster-card-header{flex-direction:column;align-items:flex-start;gap:.5rem}}