:root{--bg:#080000;--bg-card:#0f0000;--bg-input:#0c0000;--red:#c80000;--red-dim:#5a0000;--red-bright:#ff2020;--red-glow:#c8000038;--red-glow-lg:#c800001a;--text:#e5d9d0;--text-dim:#7a6860;--text-muted:#3a2820;--border:#220808;--border-red:#3d0a0a;--success-bg:#0a1a0a;--success-text:#6fcf6f;--font-serif:"Noto Serif KR", Georgia, serif;--font-mono:"DM Mono", "Courier New", monospace;--radius:2px;--ease:.22s ease;--max-w:420px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;font-size:16px}button{cursor:pointer;font-family:inherit}body{background-color:var(--bg);color:var(--text);font-family:var(--font-serif);min-height:100dvh;overflow-x:hidden}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--border-red)}::selection{background:var(--red-dim);color:var(--text)}.page-loading{justify-content:center;align-items:center;min-height:100dvh;display:flex}.loading-glyph{color:var(--red-dim);letter-spacing:.3em;font-size:2rem;font-weight:700;animation:2.5s infinite flicker}.auth-page{justify-content:center;align-items:center;min-height:100dvh;padding:2rem 1.25rem;display:flex;position:relative;overflow:hidden}.auth-bg{pointer-events:none;position:absolute;inset:0;overflow:hidden}.bg-line{background:linear-gradient(90deg, transparent, var(--red-dim), transparent);height:1px;left:0;right:0;top:calc(var(--i) * 18%);opacity:.25;animation:slide-line calc(8s + var(--i) * 2s) linear infinite;animation-delay:calc(var(--i) * -1.5s);position:absolute}.auth-inner{z-index:1;width:100%;max-width:var(--max-w);flex-direction:column;align-items:center;gap:2rem;display:flex;position:relative}.auth-logo{text-align:center;flex-direction:column;align-items:center;gap:.5rem;display:flex}.auth-glyph{color:var(--red);letter-spacing:.3em;text-shadow:0 0 30px var(--red-glow), 0 0 80px var(--red-glow-lg);font-size:clamp(2.2rem,10vw,3.5rem);font-weight:700;animation:5s infinite flicker;display:block}.auth-tagline{font-family:var(--font-mono);color:var(--text-dim);letter-spacing:.18em;text-transform:uppercase;font-size:.72rem}.auth-card{background:var(--bg-card);border:1px solid var(--border);flex-direction:column;gap:1.25rem;width:100%;padding:1.75rem;display:flex}.mode-toggle{border:1px solid var(--border-red);grid-template-columns:1fr 1fr;display:grid}.mode-toggle button{color:var(--text-dim);font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;transition:background var(--ease), color var(--ease);background:0 0;border:none;padding:.65rem;font-size:.78rem}.mode-toggle button.active{background:var(--red-dim);color:var(--text)}.mode-toggle button:not(.active):hover{color:var(--text);background:#160000}.auth-footnote{font-family:var(--font-mono);color:var(--text-muted);text-align:center;max-width:320px;font-size:.7rem;line-height:1.8}.btn-google{color:#3c4043;width:100%;font-family:var(--font-mono);letter-spacing:.08em;border-radius:var(--radius);transition:background var(--ease), box-shadow var(--ease);background:#fff;border:1px solid #dadce0;justify-content:center;align-items:center;gap:.6rem;padding:.75rem 1.5rem;font-size:.82rem;display:flex}.btn-google:hover:not(:disabled){background:#f8f9fa;box-shadow:0 1px 6px #0003}.btn-google:disabled{opacity:.4;cursor:not-allowed}.google-icon{flex-shrink:0;width:18px;height:18px}.auth-divider{color:var(--text-muted);align-items:center;gap:.75rem;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:var(--border);flex:1;height:1px}.auth-divider span{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;font-size:.7rem}.form-group{flex-direction:column;gap:.45rem;margin-top:.75rem;display:flex}label{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim);flex-wrap:wrap;align-items:center;gap:.3rem;font-size:.72rem;display:flex}.label-hint{color:var(--text-muted);text-transform:none;letter-spacing:0;font-size:.68rem;font-style:italic}.char-count{color:var(--text-muted);letter-spacing:0;text-transform:none;margin-left:auto;font-size:.68rem}.char-count--warn{color:var(--red)}input[type=email],input[type=password],textarea{background:var(--bg-input);border:1px solid var(--border);color:var(--text);font-family:var(--font-serif);border-radius:var(--radius);transition:border-color var(--ease), box-shadow var(--ease);outline:none;width:100%;padding:.7rem .9rem;font-size:.95rem}input:focus,textarea:focus{border-color:var(--red-dim);box-shadow:0 0 0 2px var(--red-glow)}input.input-error{border-color:var(--red)!important}textarea{resize:vertical;min-height:100px;line-height:1.6}input:disabled,textarea:disabled{opacity:.45}.field-hint{font-family:var(--font-mono);color:var(--text-muted);font-size:.68rem;line-height:1.6}.field-error{font-family:var(--font-mono);color:var(--red-bright);font-size:.68rem}.form-error{border:1px solid var(--red-dim);color:#ff9090;font-family:var(--font-mono);border-radius:var(--radius);background:#180000;margin-top:.5rem;padding:.6rem .85rem;font-size:.75rem;line-height:1.5}.form-success{background:var(--success-bg);color:var(--success-text);font-family:var(--font-mono);border-radius:var(--radius);border:1px solid #2a6a2a;margin-top:.5rem;padding:.6rem .85rem;font-size:.75rem;line-height:1.5}.confirm-check{cursor:pointer;font-family:var(--font-mono);color:var(--text-dim);letter-spacing:0;text-transform:none;align-items:flex-start;gap:.75rem;margin-top:.25rem;font-size:.75rem;line-height:1.6;display:flex}.confirm-check input[type=checkbox]{width:15px;height:15px;accent-color:var(--red);cursor:pointer;flex-shrink:0;margin-top:2px}.btn-primary{background:var(--red);color:#fff;width:100%;font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;border-radius:var(--radius);transition:background var(--ease), box-shadow var(--ease);border:none;margin-top:.5rem;padding:.85rem 1.5rem;font-size:.82rem}.btn-primary:hover:not(:disabled){background:var(--red-bright);box-shadow:0 0 24px var(--red-glow)}.btn-primary:disabled{opacity:.3;cursor:not-allowed}.btn-secondary{border:1px solid var(--border-red);color:var(--text-dim);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;border-radius:var(--radius);transition:border-color var(--ease), color var(--ease);background:0 0;padding:.6rem 1.1rem;font-size:.78rem}.btn-secondary:hover:not(:disabled){border-color:var(--red);color:var(--text)}.btn-secondary:disabled{opacity:.4;cursor:not-allowed}.btn-ghost{color:var(--text-muted);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;transition:color var(--ease);background:0 0;border:none;padding:.4rem .5rem;font-size:.72rem}.btn-ghost:hover{color:var(--text-dim)}.btn-loading{letter-spacing:.2em;animation:.9s infinite pulse}.dashboard{flex-direction:column;min-height:100dvh;display:flex}.dashboard-header{border-bottom:1px solid var(--border);background:var(--bg);z-index:10;justify-content:space-between;align-items:center;padding:1rem 1.5rem;display:flex;position:sticky;top:0}.header-glyph{color:var(--red);letter-spacing:.25em;text-shadow:0 0 20px var(--red-glow);font-size:1rem;font-weight:700}.dashboard-main{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:1.5rem;padding:2.5rem 1.25rem;display:flex}.wish-form-container{width:100%;max-width:var(--max-w);flex-direction:column;gap:1.5rem;animation:.5s fadeUp;display:flex}.wish-form-header{text-align:center;flex-direction:column;align-items:center;gap:.45rem;display:flex}.wish-icon{font-size:2.2rem;animation:3s infinite flicker;display:block}.wish-form-header h2{letter-spacing:.05em;font-size:1.45rem;font-weight:400}.wish-form-header p{font-family:var(--font-mono);color:var(--text-dim);letter-spacing:.1em;font-size:.75rem}.wish-form{background:var(--bg-card);border:1px solid var(--border);flex-direction:column;gap:.25rem;padding:1.75rem;display:flex}.no-wish-view{flex-direction:column;align-items:center;gap:1.25rem;width:100%;display:flex}.active-wish-view{width:100%;max-width:var(--max-w);flex-direction:column;align-items:center;gap:1.75rem;animation:.5s fadeUp;display:flex}.active-wish-label{font-family:var(--font-mono);color:var(--text-muted);letter-spacing:.2em;text-transform:uppercase;font-size:.7rem}.wish-seal-note{font-family:var(--font-mono);color:var(--text-muted);letter-spacing:.06em;text-align:center;font-size:.7rem;line-height:1.6}.countdown{text-align:center;border:1px solid var(--border);background:var(--bg-card);flex-direction:column;align-items:center;gap:.8rem;width:100%;padding:2rem 1.5rem;display:flex}.countdown-label{font-family:var(--font-mono);color:var(--text-muted);letter-spacing:.22em;text-transform:uppercase;font-size:.65rem}.countdown-digits{align-items:flex-end;gap:.4rem;display:flex}.digit-group{flex-direction:column;align-items:center;gap:.3rem;display:flex}.digit{font-family:var(--font-mono);color:var(--red);letter-spacing:.04em;text-shadow:0 0 30px var(--red-glow), 0 0 70px var(--red-glow-lg);font-size:clamp(2.8rem,13vw,4.5rem);font-weight:300;line-height:1;transition:color .8s}.digit-label{font-family:var(--font-mono);color:var(--text-muted);letter-spacing:.18em;text-transform:uppercase;font-size:.55rem}.countdown-sep{font-family:var(--font-mono);color:var(--red-dim);margin-bottom:.35rem;font-size:clamp(2rem,10vw,3.2rem);line-height:1;animation:1.2s infinite pulse}.countdown--urgent .digit{color:var(--red-bright);text-shadow:0 0 20px #ff202066}.countdown--critical .digit{color:#fff;text-shadow:0 0 10px var(--red-bright), 0 0 40px var(--red-bright);animation:.7s infinite glitch}.countdown--critical .countdown-sep{animation:.35s infinite pulse}.countdown-bar-wrap{background:var(--border);width:100%;height:2px;overflow:hidden}.countdown-bar{background:var(--red);height:100%;box-shadow:0 0 8px var(--red-glow);transition:width 1s linear}.countdown-warning{font-family:var(--font-mono);color:var(--red-bright);letter-spacing:.22em;text-transform:uppercase;font-size:.7rem;animation:.7s infinite blink}.countdown-loading{font-family:var(--font-mono);color:var(--text-muted);letter-spacing:.4em;font-size:2rem;animation:1s infinite pulse}.push-prompt{background:var(--bg-card);border:1px solid var(--border);text-align:center;flex-direction:column;align-items:center;gap:.75rem;width:100%;padding:1rem 1.25rem;display:flex}.push-prompt p{font-family:var(--font-mono);color:var(--text-dim);max-width:300px;font-size:.75rem;line-height:1.65}.push-status{font-family:var(--font-mono);letter-spacing:.06em;align-items:center;gap:.5rem;font-size:.72rem;display:flex}.push-status--active{color:var(--success-text)}.push-status--blocked{color:var(--red-dim)}.push-dot{background:var(--success-text);width:6px;height:6px;box-shadow:0 0 6px var(--success-text);border-radius:50%;flex-shrink:0;animation:2s infinite pulse}.granted-screen{justify-content:center;align-items:center;min-height:100dvh;padding:2rem 1.5rem;animation:1.8s fadeIn;display:flex;position:relative;overflow:hidden}.granted-particles{pointer-events:none;position:absolute;inset:0}.particle{background:var(--red);width:2px;height:2px;left:calc(var(--i) * 8% + 4%);opacity:0;animation:float-up calc(4s + var(--i) * .6s) ease-in infinite;animation-delay:calc(var(--i) * .4s);border-radius:50%;position:absolute;top:100%}.granted-content{z-index:1;text-align:center;flex-direction:column;align-items:center;gap:1.25rem;max-width:340px;display:flex;position:relative}.granted-glyph{color:var(--red);letter-spacing:.3em;text-shadow:0 0 40px var(--red-glow);font-size:1.4rem;font-weight:700;animation:3s infinite flicker}.granted-icon{font-size:3.5rem;animation:2.5s infinite flicker}.granted-title{letter-spacing:.08em;font-size:clamp(1.7rem,7vw,2.4rem);font-weight:300;line-height:1.2}.granted-body{color:var(--text-dim);font-size:1rem;line-height:1.9}.granted-divider{background:var(--red-dim);width:60px;height:1px}.granted-footer{font-family:var(--font-mono);color:var(--text-muted);font-size:.72rem;line-height:1.8}@keyframes flicker{0%,89%,91%,93%,95%,to{opacity:1}90%{opacity:.6}92%{opacity:.85}94%{opacity:.2}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.25}}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}@keyframes glitch{0%{transform:translate(0)}20%{transform:translate(-2px,1px)}40%{transform:translate(2px,-1px)}60%{transform:translate(-1px,2px)}80%{transform:translate(1px,-2px)}to{transform:translate(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-line{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes float-up{0%{opacity:0;transform:translateY(0)scale(1)}10%{opacity:.8}90%{opacity:.2}to{opacity:0;transform:translateY(-100vh)scale(.3)}}.video-recorder{flex-direction:column;gap:1rem;width:100%;display:flex}.recorder-idle{text-align:center;flex-direction:column;align-items:center;gap:1rem;padding:2rem 1rem;display:flex}.recorder-icon{font-size:2.5rem;animation:3s infinite flicker}.recorder-idle p{font-family:var(--font-mono);color:var(--text-dim);max-width:280px;font-size:.78rem;line-height:1.7}.recorder-hint{font-family:var(--font-mono);color:var(--text-muted);text-align:center;font-size:.72rem;line-height:1.6}.recorder-live{flex-direction:column;align-items:center;gap:1rem;display:flex}.live-preview-wrap{border:1px solid var(--border-red);background:#000;width:100%;position:relative;overflow:hidden}.live-preview{aspect-ratio:16/9;object-fit:cover;width:100%;display:block;transform:scaleX(-1)}.rec-indicator{font-family:var(--font-mono);color:#fff;letter-spacing:.1em;background:#0009;border-radius:2px;align-items:center;gap:.4rem;padding:.25rem .5rem;font-size:.72rem;display:flex;position:absolute;top:.75rem;left:.75rem}.rec-dot{background:var(--red-bright);width:8px;height:8px;box-shadow:0 0 8px var(--red-bright);border-radius:50%;flex-shrink:0;animation:.8s infinite blink}.recorder-controls{justify-content:center;gap:.75rem;width:100%;display:flex}.btn-record{background:var(--red);color:#fff;font-family:var(--font-mono);letter-spacing:.1em;border-radius:var(--radius);transition:background var(--ease), box-shadow var(--ease);border:none;width:100%;padding:.75rem 1.5rem;font-size:.82rem}.btn-record:hover{background:var(--red-bright);box-shadow:0 0 20px var(--red-glow)}.btn-stop{color:var(--red-bright);border:1px solid var(--red);font-family:var(--font-mono);letter-spacing:.1em;border-radius:var(--radius);transition:background var(--ease);background:#1a0000;width:100%;padding:.75rem 1.5rem;font-size:.82rem}.btn-stop:hover{background:#2a0000}.recorder-preview{flex-direction:column;align-items:center;gap:1rem;width:100%;display:flex}.recorder-granted{color:#e8d5a3;text-align:center;letter-spacing:.03em;font-size:1.25rem;font-weight:600}.recorded-preview{aspect-ratio:16/9;border:1px solid var(--border);background:#000;width:100%;display:block}.recorder-preview-actions{gap:.75rem;width:100%;display:flex}.recorder-preview-actions .btn-secondary,.recorder-preview-actions .btn-primary{flex:1;width:auto}.video-confirmed{color:var(--success-text);font-family:var(--font-mono);border-radius:var(--radius);background:#0a1a0a;border:1px solid #2a6a2a;justify-content:space-between;align-items:center;padding:.6rem .85rem;font-size:.75rem;display:flex}
