:root{color-scheme:dark;--ink:#120d0b;--paper:#f3dfb9;--gold:#d7a44b;--gold2:#f4d88c;--red:#9b2d26;--line:rgba(242,209,139,.2);font-family:"Noto Serif SC","Songti SC",STSong,serif}*{box-sizing:border-box}body{margin:0;min-height:100svh;overflow-x:hidden;background:radial-gradient(circle at 50% 38%,#3a1f18 0,#1e1210 34%,#120d0b 72%);color:var(--paper)}button{font:inherit;color:inherit;cursor:pointer}.grain{position:fixed;inset:0;pointer-events:none;opacity:.12;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.45'/%3E%3C/svg%3E");mix-blend-mode:soft-light}.app-shell{position:relative;z-index:1;min-height:100svh;max-width:560px;margin:auto;padding:env(safe-area-inset-top,16px) 20px 34px}.topbar{height:58px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center}.topbar h1{font-size:21px;letter-spacing:.25em;margin:0;color:#f6d887}.text-button,.icon-button{border:0;background:none;color:#d6b97e;font-size:13px;padding:8px 0}.icon-button{justify-self:end;font-size:18px}.hero{text-align:center;padding-top:25px}.eyebrow{margin:0;color:#c29d59;font-size:13px;letter-spacing:.14em}.hero h2{margin:10px 0 0;font-size:34px;font-weight:500;letter-spacing:.08em}.stage-wrap{height:min(55vh,480px);min-height:330px;position:relative;margin:5px -20px 0;touch-action:none}.stage-wrap canvas{width:100%;height:100%;display:block;outline:none}.stage-shine{position:absolute;bottom:2%;left:20%;width:60%;height:14%;background:radial-gradient(ellipse,rgba(219,155,64,.28),transparent 68%);filter:blur(14px);pointer-events:none}.hint{font-size:14px;letter-spacing:.08em;color:#d9c29a;margin:-4px 0 16px}.draw-button,.primary{border:1px solid rgba(244,216,140,.75);color:#25160d;background:linear-gradient(135deg,#f7d98b,#b88135);box-shadow:0 7px 25px rgba(225,157,55,.22),inset 0 1px rgba(255,255,255,.65);border-radius:999px;padding:14px 28px;font-weight:700;letter-spacing:.08em}.draw-button span{font-size:16px}.round-status{height:18px;margin:12px 0 0;color:#b89b6d;font-size:12px}.quick-nav{margin:16px 0 0;display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.quick-nav button{background:none;border:0;border-right:1px solid var(--line);padding:14px 4px;color:#cbb88f;font-size:12px}.quick-nav button:last-child{border:0}.quick-nav span{display:block;color:#e5be69;font-size:17px;margin-bottom:3px}.result-card{position:fixed;z-index:4;left:50%;bottom:max(17px,env(safe-area-inset-bottom));transform:translateX(-50%);width:min(calc(100% - 28px),500px);padding:24px 20px 17px 42px;color:#4a160f;background:linear-gradient(135deg,#f5dfb5,#e4c184);box-shadow:0 20px 60px #0009;border:1px solid #e5c47d;animation:unfold .46s cubic-bezier(.18,.9,.24,1.2)}.result-card:before{content:"";position:absolute;inset:8px;border:1px solid rgba(139,43,35,.3);pointer-events:none}.seal{position:absolute;left:11px;top:27px;border:2px solid var(--red);color:var(--red);font-weight:700;line-height:1.05;padding:5px 4px;font-size:13px}.result-label,.result-number{position:relative;margin:0;color:#926145;font-size:12px}.result-text{position:relative;margin:12px 0 6px;font-size:27px;font-weight:600;letter-spacing:.06em;line-height:1.35}.result-actions{position:relative;display:flex;gap:8px;margin-top:17px}.result-actions button{flex:1;padding:10px 4px;border-radius:5px;font-size:12px}.secondary{color:#7d3128;border:1px solid #a05743;background:#f7e5bf}.primary{border:0;background:#8d2922;color:#ffe5af;box-shadow:none}.drawer{border:0;padding:0;background:transparent;width:min(100%,560px);height:100%;margin:0 auto;max-height:none}.drawer::backdrop{background:#080504b8;backdrop-filter:blur(5px)}.drawer-panel{min-height:100%;background:#1d120f;padding:env(safe-area-inset-top,20px) 20px 40px}.drawer header{display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--line);padding-bottom:15px}.drawer h2{font-size:22px;font-weight:500;margin:0}.drawer header button{background:none;border:0;font-size:35px;line-height:1;color:#ddc590}.drawer-intro{color:#c1ad86;font-size:14px;line-height:1.7}.sign-form{display:flex;gap:8px;margin:18px 0}.sign-form input{min-width:0;flex:1;padding:12px;border:1px solid #755134;color:#f4dfb6;background:#2b1a14;border-radius:5px;font:inherit}.sign-form button,.restore-button{border:1px solid #bd8e45;background:#3a2418;padding:10px 14px;border-radius:5px;color:#ebce93}.sign-list,.history-list{list-style:none;padding:0;margin:12px 0}.sign-list li,.history-list li{display:flex;gap:10px;align-items:center;border-bottom:1px solid var(--line);padding:12px 2px;color:#e8d4a9}.sign-list small,.history-list small{color:#9f835c;font-size:11px}.sign-list p,.history-list p{margin:0;flex:1}.sign-list button{border:0;background:transparent;color:#c5785e;font-size:14px}.history-list{font-size:14px}.history-list li{align-items:start}.history-list time{color:#9f835c;font-size:11px;white-space:nowrap}.empty{padding:35px 0;color:#9f835c;text-align:center}.setting{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding:18px 0;color:#e7d0a5}.setting button{border:1px solid #8b653a;border-radius:999px;background:#301d15;padding:7px 12px;color:#e7cb90;font-size:12px}.about-copy{line-height:1.9;color:#c9b28a}.toast{position:fixed;z-index:10;left:50%;bottom:25px;transform:translate(-50%,80px);opacity:0;transition:.25s;background:#f0d39b;color:#482019;border-radius:999px;padding:10px 18px;font-size:13px;box-shadow:0 8px 25px #0008}.toast.show{opacity:1;transform:translate(-50%,0)}.fallback-bucket{position:absolute;left:50%;top:50%;width:190px;height:190px;transform:translate(-50%,-50%);border-radius:25px 25px 50% 50%;background:linear-gradient(90deg,#48220b,#b96e24 23%,#e4ad55 48%,#6a310d 76%,#291204);box-shadow:0 30px 40px #0008,inset 13px 0 #f7cc77aa,inset -13px 0 #1c0902aa}.fallback-bucket:after{content:"";position:absolute;top:-17px;left:-12px;right:-12px;height:42px;border-radius:50%;background:radial-gradient(ellipse,#100602 0 50%,#bf7529 53% 66%,#4b210a 68%)}.fallback-bucket i{position:absolute;bottom:140px;left:calc(35px + var(--i)*30px);height:150px;width:17px;transform:rotate(calc(-12deg + var(--i)*8deg));background:linear-gradient(90deg,#795018,#e9c36f,#82511a);border-radius:4px}.fallback-bucket i:nth-child(1){--i:0}.fallback-bucket i:nth-child(2){--i:1}.fallback-bucket i:nth-child(3){--i:2}.fallback-bucket i:nth-child(4){--i:3}.fallback-bucket b{position:absolute;z-index:1;left:73px;top:72px;color:#f5cb70;font-size:34px;border:2px solid #d7953e;border-radius:50%;padding:4px 9px;font-weight:400}@keyframes unfold{from{opacity:0;transform:translate(-50%,30px) scale(.82)}to{opacity:1;transform:translate(-50%,0) scale(1)}}@media(min-width:700px){.app-shell{padding-top:24px}.stage-wrap{height:470px}.result-card{bottom:30px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
.result-close{position:absolute;z-index:2;right:10px;top:8px;width:30px;height:30px;border:0;background:transparent;color:#8d3d31;font-size:26px;line-height:1}.result-text{margin-right:22px}.sign-edit{min-width:0;flex:1;border:1px solid transparent;background:transparent;padding:6px;color:#ead5a9;font:inherit;border-radius:4px}.sign-edit:focus{outline:0;border-color:#a5793c;background:#2a1913}.sign-controls{display:flex;align-items:center;gap:2px}.sign-list button{border:0;background:transparent;color:#d9ae69;font-size:16px;padding:4px}.sign-list button[data-delete]{color:#c5785e}
.theme-section{margin:22px 0 14px;padding:15px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.section-heading{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:12px;color:#ead2a1}.section-heading small{font-size:11px;color:#9f835c}.theme-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.theme-grid article{position:relative;min-height:94px;padding:12px;background:linear-gradient(135deg,#311b14,#21130f);border:1px solid rgba(204,150,69,.28);border-radius:6px}.theme-grid span,.theme-grid small{display:block}.theme-grid span{color:#efcf89;font-size:14px}.theme-grid small{margin-top:5px;color:#a98b61;font-size:11px}.theme-grid button{position:absolute;right:9px;bottom:9px;border:1px solid #9b6b34;border-radius:999px;padding:4px 10px;background:#3b2316;color:#e9c980;font-size:11px}.bulk-tools{margin:18px 0;color:#d8bd88}.bulk-tools summary{cursor:pointer;color:#ebcd89}.bulk-tools p{color:#9f835c;font-size:12px;line-height:1.6}.bulk-tools textarea{width:100%;min-height:94px;resize:vertical;border:1px solid #755134;border-radius:5px;padding:10px;background:#2b1a14;color:#f4dfb6;font:13px/1.5 inherit}.bulk-tools div{display:flex;gap:8px;margin-top:8px}.bulk-tools .restore-button{font-size:12px}

/* Mobile first: the ritual stays wholly inside one viewport. */
body{height:100svh;overflow:hidden}.app-shell{height:100svh;display:flex;flex-direction:column;padding-bottom:max(14px,env(safe-area-inset-bottom))}.github-link{text-decoration:none;align-self:center}.hero{display:flex;flex:1;min-height:0;flex-direction:column;padding-top:8px}.hero h2{font-size:28px;margin:6px 0 0}.stage-wrap{flex:1;min-height:175px;height:auto;margin-top:0}.hint{margin:-2px 0 8px;font-size:12px}.draw-button,.primary{padding:11px 22px}.round-status{margin:7px 0 0}.live-stats{flex:none;display:flex;justify-content:center;gap:6px;min-height:17px;overflow:hidden;white-space:nowrap;color:#a99169;font-size:10px}.live-stats b{font-weight:600;color:#e1b75c}.live-stats i{font-style:normal;color:#694c34}.quick-nav{flex:none;margin:8px 0 0}.quick-nav button{padding:8px 4px}.quick-nav span{font-size:14px;margin-bottom:0}@media(max-height:680px){.topbar{height:44px}.hero h2{font-size:24px}.eyebrow{font-size:11px}.stage-wrap{min-height:150px}.draw-button{padding:9px 20px}.round-status{height:14px;font-size:10px}.quick-nav{margin-top:5px}.quick-nav button{padding:5px 4px;font-size:10px}.live-stats{font-size:9px}.result-card{padding-top:18px;padding-bottom:12px}.result-text{font-size:23px;margin-top:7px}.result-actions{margin-top:10px}}

/* Product polish: focus, modal result, touch targets and resilient small screens. */
.app-shell{z-index:auto}
:focus-visible{outline:2px solid #f4d88c;outline-offset:3px}.topbar .text-button,.topbar .icon-button{min-height:44px;display:flex;align-items:center}.github-link{width:max-content;padding:0 9px;border:1px solid rgba(215,164,75,.28);border-radius:999px;font-size:11px;letter-spacing:.02em;background:rgba(43,25,19,.35)}.icon-button{width:44px;justify-content:center;padding:0}.stage-wrap[role="button"]{border-radius:18px}.stage-wrap[role="button"]:focus-visible{outline-offset:-6px}.draw-button{width:100%;min-height:47px;display:flex;align-items:center;justify-content:center;gap:10px}.draw-button small{font-size:11px;font-weight:500;letter-spacing:.05em;opacity:.68}.draw-button[disabled]{cursor:wait;filter:saturate(.72);opacity:.8}.live-stats{font-size:11px}.quick-nav button{min-height:53px}.result-backdrop{position:fixed;z-index:5;inset:0;background:rgba(9,5,4,.66);backdrop-filter:blur(5px);animation:result-fade .25s ease-out}.result-card{z-index:6;border-radius:3px;padding:25px 22px 18px 46px;box-shadow:0 24px 80px #000d,0 0 0 1px rgba(255,224,157,.28);isolation:isolate}.result-card:after{content:"";position:absolute;z-index:-1;inset:0;background:linear-gradient(90deg,rgba(127,57,24,.08),transparent 17%,transparent 82%,rgba(127,57,24,.1)),repeating-linear-gradient(0deg,transparent 0 8px,rgba(107,51,26,.025) 9px 10px);pointer-events:none}.result-close{top:8px;right:8px;min-width:44px;min-height:44px}.result-text{font-size:clamp(24px,7vw,31px)}.result-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:18px}.result-actions button{min-height:44px;padding:10px 8px;font-size:13px}.result-actions .primary{background:linear-gradient(135deg,#a13a30,#762019);color:#ffe7b5;border:1px solid #7e251f}.result-actions .secondary{background:rgba(255,244,216,.52)}.share-action{grid-column:1/-1;border:0;background:transparent;color:#8a4132;text-decoration:underline;text-underline-offset:4px}.result-actions .primary[aria-pressed="true"]{background:#6f392e;color:#f5dfb5}.drawer{width:100%;max-width:560px;overflow:hidden}.drawer-panel{height:100%;min-height:0;display:flex;flex-direction:column;overflow:hidden;padding-bottom:max(24px,env(safe-area-inset-bottom))}.drawer header{position:sticky;z-index:2;top:0;flex:none;background:linear-gradient(#1d120f 78%,rgba(29,18,15,.9));padding-top:2px}.drawer header button{width:44px;height:44px;padding:0}.drawer #drawer-content{min-height:0;overflow:auto;overscroll-behavior:contain;padding-bottom:22px}.sign-controls button{min-width:40px;min-height:40px}.theme-grid button{min-height:38px;min-width:54px}.collection-remove{min-width:44px;min-height:44px;border:0;background:transparent;color:#c98b70}.history-list li p{min-width:0}.history-list .meta{display:block;margin-top:4px}.setting button{min-height:40px;min-width:70px}.about-link{display:block;margin-top:18px;padding:13px 15px;border:1px solid #9c7139;border-radius:6px;color:#f0cd85;text-decoration:none;text-align:center}.privacy-note{margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}body.result-open{touch-action:none}body.reduce-motion .stage-shine{display:none}body.reduce-motion .result-card,body.reduce-motion .result-backdrop{animation:none}@keyframes result-fade{from{opacity:0}to{opacity:1}}

@media(max-height:680px){.github-link{min-height:38px}.icon-button{height:40px}.live-stats{font-size:10px}.result-card{padding:18px 18px 12px 42px}.result-actions{margin-top:10px;gap:7px}.result-actions button{min-height:40px}.result-text{font-size:22px}.result-close{min-width:40px;min-height:40px}}
@media(orientation:landscape) and (max-height:540px),(max-height:520px){body{height:auto;min-height:100svh;overflow-y:auto}.app-shell{height:auto;min-height:100svh}.stage-wrap{height:270px;flex:none}.drawer{height:100%}}
