:root{--bg:#0c1712;--bg2:#122019;--parchment:#e6d9b8;--parchment-dk:#d5c495;--ink:#241c12;--ink-soft:#4a3d2c;--gold:#b3924a;--gold-bright:#d9b96a;--blood:#7c2f24;--moss:#3f5d3a;--moss-bright:#5d8455}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html,body{height:100%}body{background:radial-gradient(ellipse at 50% -10%, #1b2f24 0%, transparent 55%), radial-gradient(ellipse at 50% 115%, #0a1410 0%, transparent 60%), var(--bg);color:var(--parchment);min-height:100%;font-family:Palatino Linotype,Book Antiqua,Palatino,Georgia,serif;overflow-x:hidden}body:after{content:"";pointer-events:none;opacity:.05;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)' opacity='0.6'/%3E%3C/svg%3E");position:fixed;inset:0}.wrap{max-width:460px;margin:0 auto;padding:14px 14px 40px;position:relative}header{text-align:center;padding:30px 0 0}.eyebrow{letter-spacing:.35em;text-transform:uppercase;color:var(--gold);font-size:.62rem}h1{letter-spacing:.06em;color:var(--gold-bright);font-variant:small-caps;margin-top:2px;font-size:1.1rem;font-weight:400}.rule{align-items:center;gap:10px;max-width:240px;margin:5px auto 0;display:flex}.rule:before,.rule:after{content:"";background:linear-gradient(90deg,transparent,var(--gold));opacity:.6;flex:1;height:1px}.rule:after{background:linear-gradient(90deg,var(--gold),transparent)}.rule svg{width:14px;height:14px;fill:var(--gold)}.ledger{justify-content:center;gap:8px;margin:10px 0 4px;display:flex}.tally{text-align:center;background:linear-gradient(#b3924a14,#b3924a05);border:1px solid #b3924a59;border-radius:3px;flex:1;padding:4px 2px 3px}.tally .row{justify-content:center;align-items:center;gap:6px;display:flex}.tally svg{fill:none;width:15px;height:15px;stroke:var(--gold-bright);stroke-width:1.5px}.tally .num{color:var(--parchment);font-size:.95rem;line-height:1.1}.tally .lbl{letter-spacing:.14em;text-transform:uppercase;color:var(--gold);opacity:.85;margin-top:1px;font-size:.5rem}.progress{text-align:center;letter-spacing:.2em;text-transform:uppercase;color:#e6d9b88c;margin:4px 0 10px;font-size:.68rem}.rolepick{text-align:center;margin-top:34px}.rolepick p{color:#e6d9b8cc;margin-bottom:22px;font-size:.95rem;font-style:italic;line-height:1.5}.rolebtn{border:1px solid var(--gold);width:100%;color:var(--gold-bright);font-variant:small-caps;letter-spacing:.1em;cursor:pointer;background:linear-gradient(#1a2b21,#12211a);border-radius:4px;margin:12px 0;padding:16px;font-family:inherit;font-size:1.1rem;display:block}.rolebtn small{font-variant:normal;letter-spacing:.05em;color:#e6d9b899;margin-top:4px;font-size:.7rem;display:block}.rolebtn:active{transform:scale(.98)}.stage{perspective:1200px;margin-top:6px}.cardback{border:2px solid var(--gold);background:radial-gradient(#17281f 0%,#0d1811 75%);border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:8px;height:185px;display:flex;position:relative;overflow:hidden;box-shadow:0 8px 30px #0009,inset 0 0 60px #00000080}.cardback .inner-frame{border:1px solid #b3924a80;border-radius:5px;position:absolute;inset:10px}.cardback .compass{opacity:.95;width:56px;height:56px}.cardback h2{font-variant:small-caps;letter-spacing:.15em;color:var(--gold-bright);font-size:1.05rem;font-weight:400}.cardback.tappable{cursor:pointer;animation:2.6s ease-in-out infinite beckon}@keyframes beckon{0%,to{box-shadow:0 8px 30px #0009,0 0 #d9b96a00}50%{box-shadow:0 8px 30px #0009,0 0 26px #d9b96a59}}.cardback.tappable:active{transform:scale(.985)}.cardback .hint{color:#e6d9b88c;text-align:center;max-width:220px;font-size:.72rem;font-style:italic;line-height:1.5}.cardfront{background:radial-gradient(ellipse at 30% 20%, #fffae680 0%, transparent 50%), radial-gradient(ellipse at 80% 90%, #785a2840 0%, transparent 55%), linear-gradient(160deg, var(--parchment) 0%, var(--parchment-dk) 100%);color:var(--ink);border:2px solid #8a713c;border-radius:8px;flex-direction:column;display:flex;position:relative;overflow:hidden;box-shadow:0 8px 30px #0009,inset 0 0 45px #6e501e47}.cardfront.flip-in{transform-origin:50%;animation:.7s cubic-bezier(.35,.1,.25,1) flipin}@keyframes flipin{0%{opacity:.3;transform:rotateY(-90deg)}to{opacity:1;transform:rotateY(0)}}.cardfront:before{content:"";pointer-events:none;opacity:.5;background:radial-gradient(circle at 12% 88%,#78552338 0%,#0000 18%),radial-gradient(circle at 88% 12%,#7855232e 0%,#0000 15%),radial-gradient(circle at 75% 70%,#7855231f 0%,#0000 22%);position:absolute;inset:0}.titlebar{color:var(--gold-bright);text-align:center;background:linear-gradient(#20362a,#152419);border-bottom:2px solid #8a713c;padding:10px 12px 8px;position:relative}.titlebar .loc-type{letter-spacing:.35em;text-transform:uppercase;color:var(--gold);opacity:.9;font-size:.55rem}.titlebar h3{font-variant:small-caps;letter-spacing:.12em;margin-top:1px;font-size:1.35rem;font-weight:400}.stamp-row{z-index:1;justify-content:center;padding:12px 0 2px;display:flex;position:relative}.stamp{width:104px;height:104px;transform:rotate(-7deg)}.flavor{color:var(--ink-soft);z-index:1;text-align:justify;padding:8px 20px 10px;font-size:.86rem;font-style:italic;line-height:1.55;position:relative}.testbox{z-index:1;border:1.5px solid var(--ink);background:#fffcf073;border-radius:3px;margin:2px 14px 10px;padding:10px 14px;position:relative}.testbox .t-label{letter-spacing:.3em;text-transform:uppercase;color:var(--blood);align-items:center;gap:8px;margin-bottom:4px;font-size:.55rem;display:flex}.testbox .t-label:after{content:"";background:#7c2f2466;flex:1;height:1px}.testbox p{font-size:.94rem;font-weight:600;line-height:1.5}.outcomes{z-index:1;margin:2px 14px 14px;position:relative}.outcome{border:1px solid;border-radius:3px;margin-top:8px;padding:9px 12px;font-size:.8rem;line-height:1.45}.outcome .o-label{letter-spacing:.28em;text-transform:uppercase;margin-bottom:3px;font-size:.55rem;font-weight:700;display:block}.outcome.ok{color:#2c3f28;background:#3f5d3a29;border-color:#3f5d3a8c}.outcome.ok .o-label{color:var(--moss)}.outcome.ko{color:#4c231c;background:#7c2f241f;border-color:#7c2f2480}.outcome.ko .o-label{color:var(--blood)}.outcome.hidden-outcome{filter:blur()}.outcome .penalty{margin-top:4px;font-style:italic;font-weight:600;display:block}.actions{text-align:center;margin-top:16px}.stickybar{z-index:20;text-align:center;background:#0c1712f0;border:1px solid #b3924a66;border-radius:6px;margin-top:16px;padding:8px 6px;position:sticky;bottom:10px;box-shadow:0 -4px 20px #00000080}.btn{font-variant:small-caps;letter-spacing:.1em;cursor:pointer;border:1px solid var(--gold);color:var(--gold-bright);background:linear-gradient(#1a2b21,#12211a);border-radius:4px;margin:5px;padding:13px 26px;font-family:inherit;font-size:1.05rem}.btn:active{transform:scale(.97)}.btn.ok{border-color:var(--moss-bright);color:#a8caa0;background:linear-gradient(#1e3320,#142415)}.btn.ko{color:#d9a08f;background:linear-gradient(#3a1c15,#2a130e);border-color:#a5493a}.btn.ghost{opacity:.7;border-color:#b3924a66;padding:8px 16px;font-size:.8rem}.waiting{color:#e6d9b899;margin-top:10px;font-size:.85rem;font-style:italic;line-height:1.5}.verdict{z-index:50;opacity:0;pointer-events:none;background:#050a08d1;justify-content:center;align-items:center;transition:opacity .4s;display:flex;position:fixed;inset:0}.verdict.show{opacity:1;pointer-events:auto}.seal{text-align:center;border:4px double;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:6px;width:272px;height:272px;padding:20px;transition:transform .5s cubic-bezier(.2,1.6,.4,1);display:flex;transform:scale(.3)rotate(-20deg)}.verdict.show .seal{transform:scale(1)rotate(-6deg)}.seal.ok{border-color:var(--moss-bright);color:#b8d8ae;background:radial-gradient(circle,#22381f 0%,#12200f 80%);box-shadow:0 0 60px #5d845559}.seal.ko{color:#e0a894;background:radial-gradient(circle,#3d1a12 0%,#220d08 80%);border-color:#a5493a;box-shadow:0 0 60px #a5493a4d}.seal .big{font-variant:small-caps;letter-spacing:.12em;font-size:1.5rem}.seal .sub{opacity:.9;font-size:.68rem;font-style:italic;line-height:1.45}.finale{text-align:center;margin-top:40px}.finale .compass{width:110px;height:110px;margin:0 auto 16px}.finale h2{font-variant:small-caps;color:var(--gold-bright);letter-spacing:.1em;font-size:1.4rem;font-weight:400}.finale p{color:#e6d9b8bf;margin-top:10px;font-size:.9rem;font-style:italic;line-height:1.6}.rolebadge{letter-spacing:.2em;text-transform:uppercase;color:var(--gold);cursor:pointer;z-index:5;background:#0c171299;border:1px solid #b3924a66;border-radius:3px;padding:3px 8px;font-size:.55rem;position:absolute;top:10px;right:14px}.proto{text-align:center;letter-spacing:.15em;text-transform:uppercase;color:#e6d9b84d;margin-top:26px;font-size:.6rem}.grafoverlay{z-index:60;background:#081008;flex-direction:column;padding:16px 0;display:none;position:fixed;inset:0}.grafoverlay.show{display:flex}.grafoverlay .g-head{text-align:center;color:var(--gold-bright);font-variant:small-caps;letter-spacing:.15em;margin-bottom:10px;font-size:1rem}.g-tabs{justify-content:center;gap:6px;margin-bottom:10px;display:flex}.g-tab{font-variant:small-caps;letter-spacing:.08em;cursor:pointer;color:var(--gold);background:0 0;border:1px solid #b3924a73;border-radius:3px;padding:7px 14px;font-family:inherit;font-size:.8rem}.g-tab.active{border-color:var(--gold);color:var(--gold-bright);background:linear-gradient(#1a2b21,#12211a)}.grafoverlay .g-scroll{-webkit-overflow-scrolling:touch;flex:1;padding:0 14px;overflow:auto}.grafoverlay .g-scroll svg{border-radius:4px;box-shadow:0 6px 30px #000000b3}.grafoverlay .g-close{margin:12px auto 0}.grafhint{color:#e6d9b880;text-align:center;margin-top:6px;font-size:.68rem;font-style:italic}.chapterlbl{text-align:center;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);opacity:.85;margin:2px 0 8px;font-size:.62rem}.seals{z-index:1;margin:2px 14px 10px;position:relative}.sealopt{text-align:left;cursor:pointer;font-variant:small-caps;letter-spacing:.06em;color:#2e3a5e;background:#2e3a5e1f;border:1.5px solid #2e3a5e80;border-radius:3px;width:100%;margin:6px 0;padding:12px;font-family:inherit;font-size:.95rem;display:block}.sealopt:active{transform:scale(.985)}.sealopen{color:#2c3f28;background:#3f5d3a24;border:1.5px solid #3f5d3a80;border-radius:3px;margin:6px 0;padding:12px;font-size:.85rem;line-height:1.5}.sealburnt{opacity:.4;color:var(--ink-soft);border:1px dashed #241c1280;border-radius:3px;margin:6px 0;padding:10px 12px;font-size:.8rem;font-style:italic}.secretbox{border:1px solid var(--gold);color:var(--parchment);text-align:center;background:#b3924a1a;border-radius:4px;margin:8px 0 2px;padding:12px 14px;font-size:.82rem;line-height:1.55}.secretbox .s-label{letter-spacing:.3em;text-transform:uppercase;color:var(--gold);margin-bottom:4px;font-size:.55rem}.maplink{color:var(--gold-bright);text-decoration:underline}.sealopen .maplink{color:#2c5e28}.syncwarn{color:#e0a894;text-align:center;background:#7c2f242e;border:1px solid #a5493a;border-radius:4px;margin-top:22px;padding:9px 14px;font-size:.72rem;font-style:italic;line-height:1.5}.toast{border:1px solid var(--gold);color:var(--gold-bright);z-index:80;opacity:0;pointer-events:none;text-align:center;background:linear-gradient(#1a2b21,#12211a);border-radius:4px;max-width:86%;padding:10px 20px;font-size:.8rem;font-style:italic;transition:opacity .3s;position:fixed;bottom:26px;left:50%;transform:translate(-50%)}.toast.show{opacity:1}.gallery{grid-template-columns:1fr 1fr;gap:10px;margin-top:20px;display:grid}.gallery figure{background:var(--parchment);border-radius:2px;padding:6px 6px 4px;transform:rotate(-1.5deg);box-shadow:0 4px 14px #00000080}.gallery figure:nth-child(2n){transform:rotate(1.5deg)}.gallery img{border-radius:1px;width:100%;display:block}.gallery figcaption{color:var(--ink-soft);text-align:center;letter-spacing:.05em;padding:4px 0 2px;font-size:.6rem;font-style:italic}.gal-empty{color:#e6d9b873;text-align:center;margin-top:16px;font-size:.75rem;font-style:italic}@media (prefers-reduced-motion:reduce){.cardfront.flip-in,.cardback.tappable{animation:none}.verdict,.seal{transition:none}}
