:root{--bg:#060a07;--bg-deep:#03050300;--fg:#8ef6b0;--fg-bright:#c9ffda;--fg-dim:#3f7a55;--accent:#ffd479;--cyan:#74e0e0;--rose:#ff9bbb;--err:#ff6b6b;--glow:rgba(120, 255, 170, 0.55);--scan:rgba(0, 0, 0, 0.28);--mono:'JetBrains Mono',monospace}[data-ascii-theme=amber]{--bg:#0b0803;--fg:#ffcf7e;--fg-bright:#ffe7b8;--fg-dim:#8a6326;--accent:#9be8a0;--cyan:#ffd9a0;--rose:#ff9bbb;--glow:rgba(255, 200, 110, 0.5);--scan:rgba(0, 0, 0, 0.3)}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--fg);font-family:var(--mono);font-size:13px;line-height:1.85;text-shadow:0 0 6px var(--glow);-webkit-font-smoothing:antialiased;transition:background .4s ease,color .4s ease}body::before{content:'';position:fixed;inset:0;z-index:80;pointer-events:none;background:repeating-linear-gradient(0deg,transparent 0 2px,var(--scan) 2px 3px);opacity:.6}body::after{content:'';position:fixed;inset:0;z-index:81;pointer-events:none;background:radial-gradient(120% 90% at 50% 50%,transparent 60%,rgba(0,0,0,.55) 100%);animation:flicker 5.5s infinite steps(60)}@keyframes flicker{0%,100%,96%{opacity:1}97%{opacity:.82}98%{opacity:.94}}.wrap{max-width:480px;min-height:100dvh;margin:0 auto;padding:16px 18px 70px;border-left:1px solid var(--fg-dim);border-right:1px solid var(--fg-dim);position:relative}#doc{counter-reset:s}#doc section{counter-increment:s}.statusbar{display:flex;align-items:center;gap:8px;padding-bottom:12px;margin-bottom:12px;border-bottom:1px dashed var(--fg-dim);font-size:12px;color:var(--fg-dim)}.statusbar .blink-dot{color:var(--fg-bright);animation:blink 1.1s steps(1) infinite}.statusbar .sb-right{margin-left:auto;display:flex;gap:10px;align-items:center}.theme-toggle{font-family:var(--mono);font-size:11px;color:var(--fg-dim);background:0 0;border:1px solid var(--fg-dim);border-radius:0;padding:3px 8px;cursor:pointer;transition:color .2s,border-color .2s}.theme-toggle:hover{color:var(--accent);border-color:var(--accent)}@keyframes blink{50%{opacity:0}}#boot{white-space:pre-wrap;word-break:break-word;min-height:150px;font-size:12.5px;color:var(--fg-dim)}#boot .ok{color:var(--fg-bright)}#boot .cur{display:inline-block;width:8px;height:14px;vertical-align:-2px;background:var(--fg-bright);box-shadow:0 0 8px var(--glow);animation:blink 1s steps(1) infinite}#doc{display:none}#doc.show{display:block;animation:turn-on .5s ease}@keyframes turn-on{0%{opacity:0;transform:scaleY(.004);filter:brightness(3)}40%{opacity:1;transform:scaleY(.02)}100%{opacity:1;transform:scaleY(1);filter:none}}.rv{opacity:0;transform:translateY(14px);transition:opacity .7s ease,transform .7s ease}.rv.in{opacity:1;transform:none}section{padding:30px 0 6px}.sec{margin-bottom:16px;font-size:12.5px;color:var(--fg-dim);white-space:nowrap;overflow:hidden}.sec::before{content:'── '}.sec b{color:var(--accent);font-weight:400}.sec::after{content:' ' counter(s,decimal-leading-zero) ' ───────────────────────────────────────'}.divider{margin:18px 0;color:var(--fg-dim);text-align:center;font-size:12px;letter-spacing:1px;overflow:hidden;white-space:nowrap}.art{white-space:pre;overflow-x:auto;overflow-y:hidden;font-size:12px;line-height:1.5;scrollbar-width:thin;scrollbar-color:var(--fg-dim) transparent}.art::-webkit-scrollbar{height:4px}.art::-webkit-scrollbar-thumb{background:var(--fg-dim)}.banner{text-align:center;margin:8px 0 4px}.banner .heart{color:var(--rose);text-shadow:0 0 10px rgba(255,120,160,.6)}.names{margin-top:14px;text-align:center}.names .ko{font-size:21px;letter-spacing:.12em;color:var(--fg-bright)}.names .ko .amp{color:var(--rose);margin:0 6px}.names .en{margin-top:6px;font-size:12px;color:var(--fg)}.names .ver{margin-top:10px;font-size:11px;color:var(--fg-dim);letter-spacing:.2em}.names .when{margin-top:4px;font-size:12.5px;color:var(--accent);letter-spacing:.06em}.photo-wrap{margin-top:18px;text-align:center}.photo{line-height:1.35;color:var(--fg-dim)}.art.photo{font-size:15px}.photo .ppl{color:var(--fg-bright);position:relative;animation:char-bob 1.2s step-end infinite}.photo .hk{color:var(--rose);text-shadow:0 0 9px rgba(255,120,160,.6)}.photo .thread{color:#ff2d4f;text-shadow:0 0 10px rgba(255,45,79,.85);animation:thread-blink .9s step-end infinite}@keyframes char-bob{0%{top:0}50%{top:3px}}@keyframes thread-blink{0%{opacity:1}50%{opacity:.4}}.photo .cap-in{color:var(--accent)}.photo-cap{margin-top:8px;font-size:12px;color:var(--fg-dim)}.photo-cap b{color:var(--cyan)}.fetch .k{color:var(--accent)}.fetch .v{color:var(--fg-bright)}.fetch .logo{color:var(--rose);text-shadow:0 0 9px rgba(255,120,160,.5)}.fetch .c,.fetch .dim{color:var(--fg-dim)}.gitlog .g{color:var(--fg-bright)}.gitlog .b{color:var(--rose)}.gitlog .h{color:var(--accent)}.gitlog .tag{color:var(--cyan)}.gitlog .date{color:var(--cyan)}.gitlog .dim{color:var(--fg-dim)}.cal,.photo{width:max-content;max-width:100%;margin-left:auto;margin-right:auto}.cal .dow{color:var(--accent)}.cal .sun{color:var(--rose)}.cal .day-mark{background:var(--rose);color:#14060c;text-shadow:none;padding:0 1px}.pipe .pass{color:var(--fg-bright)}.pipe .run{color:var(--accent)}.pipe .label{color:var(--fg)}.pipe .st{color:var(--fg-dim)}.body-text{text-align:center;word-break:keep-all;line-height:2.1;color:var(--fg)}.body-text .hl{color:var(--accent)}.body-text .hl-r{color:var(--rose)}.body-text p+p{margin-top:22px}.body-text .small{font-size:12px;color:var(--fg-dim);line-height:2}.quote{margin:22px auto 0;max-width:320px;padding-left:14px;border-left:2px solid var(--rose);text-align:left;font-size:12.5px;font-style:italic;color:var(--fg-dim)}.btn-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px;margin-bottom:16px}.btn{flex:1;min-width:84px;padding:11px 10px;text-align:center;text-decoration:none;white-space:nowrap;font-family:var(--mono);font-size:12.5px;color:var(--fg);background:0 0;border:1px solid var(--fg-dim);cursor:pointer;transition:all .2s}.btn::before{content:'[ ';color:var(--fg-dim)}.btn::after{content:' ]';color:var(--fg-dim)}.btn:hover{color:var(--bg);background:var(--fg);border-color:var(--fg);text-shadow:none}.btn:hover::after,.btn:hover::before{color:var(--bg)}.countdown{text-align:center}.cd-prefix{font-size:12px;letter-spacing:.2em;color:var(--accent)}.lcd{display:inline-block;margin:10px auto 0;color:var(--fg-bright);text-shadow:0 0 12px var(--glow);font-size:13px;line-height:1.15;text-align:left}.cd-clock{margin-top:10px;font-size:16px;letter-spacing:.2em;color:var(--accent)}.cd-label{margin-top:12px;font-size:11px;letter-spacing:.2em;color:var(--fg-dim)}.progress{margin-top:14px;font-size:12.5px;color:var(--fg)}.progress .bar{color:var(--fg-bright)}.progress .pct{color:var(--accent)}.acc-group{margin-top:10px}.acc-title{font-size:12.5px;color:var(--cyan);margin:14px 0 6px}.acc{display:flex;align-items:center;gap:8px;padding:7px 0;font-size:12.5px;border-bottom:1px dashed var(--fg-dim)}.acc .nm{width:52px;flex:none;color:var(--fg-bright)}.acc .no{color:var(--fg)}.acc button{margin-left:auto;flex:none;font-family:var(--mono);font-size:11px;color:var(--fg-dim);background:0 0;border:1px solid var(--fg-dim);padding:4px 8px;cursor:pointer;transition:all .2s}.acc button::before{content:'['}.acc button::after{content:']'}.acc button:hover{color:var(--accent);border-color:var(--accent)}.acc button.copied{color:var(--fg-bright);border-color:var(--fg-bright)}.reveal-btn{margin-top:4px}.acc-group .btn{display:inline-block;margin:18px 0 6px}.acc-group .acc .nm{width:auto}.acc-note{margin-top:6px;font-size:12px;color:var(--fg-dim)}.note{font-size:12px;line-height:1.9;color:var(--fg-dim);text-align:center;margin-bottom:10px}.rsvp{text-align:center}.rsvp-line{position:relative;width:100%;margin:16px 0 0}.rsvp-prompt{position:absolute;left:11px;top:11px;font-family:var(--mono);font-size:13px;font-weight:700;color:var(--accent);pointer-events:none}.rsvp-input{display:block;width:100%;padding:11px 12px 11px 28px;background:color-mix(in srgb,var(--fg) 8%,transparent);border:1px solid var(--fg-dim);font-family:var(--mono);font-size:13px;color:var(--fg-bright);caret-color:var(--fg-bright);text-align:left}.rsvp-input::placeholder{color:var(--fg-dim)}.rsvp-input:focus{outline:0;border-color:var(--accent);background:color-mix(in srgb,var(--fg) 13%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 20%,transparent),0 0 14px color-mix(in srgb,var(--fg) 22%,transparent)}.input-hint{margin:6px 0 0;font-size:11px;color:var(--fg-dim)}.bless-count{margin:6px 0 0;font-family:var(--mono);font-size:11px;color:var(--fg-dim)}.bless-count.over{color:var(--err);text-shadow:0 0 8px color-mix(in srgb,var(--err) 50%,transparent)}.rsvp-input.over-limit{border-color:var(--err)}.rsvp-btn{margin-top:12px;padding:14px 22px;font-family:var(--mono);font-size:14px;white-space:nowrap;max-width:100%;color:var(--fg-bright);background:0 0;border:1px solid var(--fg);cursor:pointer;text-shadow:0 0 8px var(--glow);transition:all .2s}.rsvp-btn:hover{background:var(--fg);color:var(--bg);text-shadow:none}.rsvp-btn.done{border-color:var(--accent);color:var(--accent);pointer-events:none}.rsvp-msg{min-height:22px;margin-top:14px;font-size:12.5px;color:var(--accent);opacity:0;transition:opacity .5s}.rsvp-msg.show{opacity:1}.ai{margin-top:18px;padding:14px 12px;border:1px solid var(--fg-dim);font-size:12.5px}.ai .ai-head{color:var(--fg-dim);margin-bottom:8px}.ai .ai-line{height:66px;overflow:hidden;line-height:1.8;transition:opacity .4s}.ai .ai-line.fade{opacity:0}.ai .ai-who{color:var(--cyan)}.ai .ai-msg-txt{color:var(--fg)}.log{margin-top:18px;padding:12px;border:1px solid var(--fg-dim);font-size:12px;text-align:left}.log .log-head{color:var(--fg-dim);margin-bottom:6px}.log .p{color:var(--fg-bright)}.log .cmd{color:var(--fg)}.log .cm{color:var(--fg-dim)}.log .log-line{color:var(--fg);line-height:1.6;word-break:keep-all;overflow-wrap:anywhere}.log .log-line+.log-line{margin-top:5px}.log .log-line .ts{color:var(--cyan)}.log .log-line .ok{color:var(--fg-bright)}.log .log-lines{max-height:140px;overflow-y:auto;padding-right:8px;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--fg-dim) transparent}.log .log-lines::-webkit-scrollbar{width:4px}.log .log-lines::-webkit-scrollbar-track{background:0 0}.log .log-lines::-webkit-scrollbar-thumb{background:var(--fg-dim);border-radius:99px}.log .log-more{display:block;width:100%;margin-top:10px;padding:9px 10px;background:color-mix(in srgb,var(--fg) 7%,transparent);border:1px solid var(--fg-dim);font-family:var(--mono);font-size:12px;line-height:1.5;text-align:center;color:var(--fg);text-shadow:0 0 8px var(--glow);cursor:pointer;transition:all .2s}@media (hover:hover){.log .log-more:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent)}.log .log-more:hover .cmd{color:var(--accent)}}.log .log-more:active{transform:scale(.97)}.log .log-more:disabled{cursor:default;opacity:.55;transform:none}.log .log-total{margin-top:8px;padding-top:8px;border-top:1px dashed var(--fg-dim);color:var(--fg-bright)}.log .log-total b{color:var(--accent)}.confetti{position:fixed;z-index:90;pointer-events:none;font-family:var(--mono);font-size:14px;color:var(--fg-bright);text-shadow:0 0 8px var(--glow);animation:fall linear forwards}@keyframes fall{to{transform:translateY(108vh) rotate(360deg);opacity:.1}}footer{margin-top:30px;padding-top:18px;border-top:1px dashed var(--fg-dim);font-size:11.5px;color:var(--fg-dim)}footer .ft{white-space:pre-wrap;word-break:break-word}footer .p{color:var(--fg-bright)}footer .heart{color:var(--rose)}footer .err{color:var(--err)}.switch{display:flex;flex-direction:column;gap:8px;margin:16px 0 22px}.switch a{padding:11px 12px;text-decoration:none;text-align:center;font-size:12.5px;color:var(--fg);border:1px solid var(--fg-dim);transition:all .2s}.switch a:hover{color:var(--accent);border-color:var(--accent)}.switch-row{display:flex;gap:8px}.switch-row a{flex:1;white-space:nowrap}.switch .share-btn{padding:11px 12px;text-align:center;font-family:var(--mono);font-size:12.5px;color:var(--accent);background:0 0;border:1px solid var(--accent);cursor:pointer;transition:all .2s}.switch .share-btn:hover{color:var(--bg);background:var(--accent);border-color:var(--accent)}@media (max-width:400px){body{font-size:12px}.art{font-size:10.5px}.lcd{font-size:11px}.names .ko{font-size:18px}}@media (prefers-reduced-motion:reduce){*,::after,::before{animation:none!important;transition:none!important}.rv{opacity:1;transform:none}body::after{animation:none}}