:root{--midnight: #0e1830;--midnight-2: #16233f;--gold: #c6a15b;--gold-bright: #e3c888;--parchment: #f2ead6;--parchment-lock: #f7efcb;--ink: #241c10;--ink-soft: #6a5836;--fog: #9faac2;--serif-display: "Baskerville", "Baskerville Old Face", "Hoefler Text", "Palatino Linotype", "Palatino", "Georgia", serif;--serif-body: "Iowan Old Style", "Palatino Linotype", "Palatino", "Georgia", "Times New Roman", serif;--mono: ui-monospace, "SF Mono", "Menlo", "Cascadia Mono", "Roboto Mono", monospace;--progress: 0}*{box-sizing:border-box}html,body{margin:0;padding:0;min-height:100%}body{background:var(--midnight);color:var(--parchment);font-family:var(--serif-body);line-height:1.6;-webkit-text-size-adjust:100%}.dawn{position:fixed;inset:0 0 auto;height:70vh;z-index:0;pointer-events:none;background:radial-gradient(120% 90% at 50% -12%,#e3c888d9,#c6a15b59 26%,#16233f00 62%);opacity:calc(.05 + .72 * var(--progress));transition:opacity .9s ease}.skip-link{position:absolute;left:-999px}.skip-link:focus{left:12px;top:12px;z-index:100;background:var(--gold);color:var(--midnight);padding:6px 12px;font-family:var(--mono)}#app{position:relative;z-index:1;max-width:640px;margin:0 auto;padding:22px 20px 72px}.masthead{text-align:center;margin-bottom:8px}.emblem{display:block;margin:0 auto 14px;width:52px;height:52px}.eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.28em;text-transform:uppercase;color:var(--gold);margin:0 0 6px}.brandmark,.title{font-family:var(--serif-display);font-weight:400;font-size:clamp(2.1rem,8vw,2.9rem);line-height:1.02;letter-spacing:.01em;text-wrap:balance;margin:0 0 4px;color:#fbf5e6}.subtitle{font-style:italic;color:var(--fog);margin:0 auto;max-width:34ch;font-size:.98rem}.mosaic{height:14px;margin:22px 0 6px;border-radius:1px;background:conic-gradient(#c6a15b4d 90deg,#ffffff0d 0 180deg,#c6a15b4d 0 270deg,#ffffff0d 0);background-size:14px 14px;box-shadow:inset 0 0 0 1px #c6a15b38}.nav{display:flex;justify-content:center;gap:3px;margin:0 0 18px}.nav button{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--fog);background:transparent;border:1px solid transparent;border-radius:3px;padding:6px 12px;cursor:pointer}.nav button:hover{color:var(--parchment)}.nav button[aria-pressed=true]{color:var(--gold);border-color:#c6a15b59}.progress{margin:24px 0 26px}.progress__row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:8px}.progress__label{font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--fog)}.progress__count{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:13px;color:var(--gold-bright);letter-spacing:.05em}.progress__track{height:6px;border-radius:999px;background:#ffffff12;overflow:hidden}.progress__fill{height:100%;width:calc(var(--progress) * 100%);background:linear-gradient(90deg,var(--gold),var(--gold-bright));border-radius:999px;transition:width .5s ease}.controls{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-end;margin-bottom:30px}.field{display:flex;flex-direction:column;gap:6px;flex:1 1 190px}.field>label,.field>span{font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--fog)}input[type=text],input[type=password],input[type=number]{width:100%;font-family:var(--serif-body);font-size:1rem;color:var(--parchment);background:#ffffff0d;border:1px solid rgba(198,161,91,.35);border-radius:3px;padding:9px 11px}input::placeholder{color:#9faac299;font-style:italic}input:focus-visible{outline:2px solid var(--gold-bright);outline-offset:1px;border-color:var(--gold)}.segmented{display:inline-flex;padding:3px;gap:3px;background:#ffffff0d;border:1px solid rgba(198,161,91,.3);border-radius:4px}.seg{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--fog);background:transparent;border:0;padding:8px 15px;border-radius:3px;cursor:pointer}.seg[aria-pressed=true]{background:var(--gold);color:var(--midnight);font-weight:700}.seg:focus-visible{outline:2px solid var(--gold-bright);outline-offset:2px}.stack{display:flex;flex-direction:column;gap:16px}.card{background:var(--parchment);color:var(--ink);border:1px solid rgba(36,28,16,.14);border-radius:4px;padding:16px 18px 15px;box-shadow:0 10px 26px -14px #0009;transition:border-color .4s ease,background .4s ease,box-shadow .4s ease}.card.is-locked{background:var(--parchment-lock);border-color:var(--gold);box-shadow:0 10px 30px -12px #c6a15b8c}.card__top{display:flex;align-items:center;gap:10px;margin-bottom:11px}.card__num{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:12px;color:var(--gold);background:#c6a15b24;border:1px solid rgba(198,161,91,.4);border-radius:3px;padding:2px 7px;letter-spacing:.05em}.card__label{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);flex:1}.card__seal{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);display:inline-flex;align-items:center;gap:4px;opacity:0;transform:scale(.8);transition:opacity .3s ease,transform .3s ease}.card.is-locked .card__seal{opacity:1;transform:scale(1)}.card__cue{font-family:var(--mono);font-size:.92rem;letter-spacing:.04em;color:var(--ink-soft);margin:0;word-spacing:.12em;line-height:1.75}.card__role{font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:#2a211480;margin-top:8px}.card__full{font-family:var(--serif-body);font-size:1.16rem;line-height:1.72;color:var(--ink);margin:12px 0 0;max-height:60em;overflow:hidden;transition:max-height .45s ease,opacity .35s ease,margin .3s ease}.card__full.is-hidden{max-height:0;opacity:0;margin-top:0}.card__full .cipher{font-family:var(--mono);font-size:1rem;color:#5a3d12}.card__actions{display:flex;flex-wrap:wrap;gap:9px;margin-top:14px}.is-study .btn--reveal{display:none}.btn{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;border-radius:3px;padding:9px 14px;border:1px solid transparent;transition:background .2s ease,color .2s ease,border-color .2s ease}.btn:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.btn--reveal{background:transparent;color:var(--ink);border-color:#241c104d}.btn--reveal:hover{border-color:var(--ink)}.btn--lock{background:var(--ink);color:var(--parchment);border-color:var(--ink)}.btn--lock:hover{background:#3a2e18}.card.is-locked .btn--lock{background:var(--gold);color:var(--midnight);border-color:var(--gold);font-weight:700}.review{margin-top:40px;border-top:1px solid rgba(198,161,91,.25);padding-top:26px}.review__head{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;margin-bottom:16px}.review__title{font-family:var(--serif-display);font-weight:400;font-size:1.5rem;margin:0;color:#fbf5e6}.review__body{background:var(--parchment);color:var(--ink);border-radius:4px;padding:20px 20px 6px;box-shadow:0 10px 26px -14px #0009}.review__body p{margin:0 0 16px}.review__body.is-cue p{font-family:var(--mono);font-size:.92rem;color:var(--ink-soft);letter-spacing:.03em;line-height:1.85}.review__body.is-read p{font-family:var(--serif-body);font-size:1.14rem;line-height:1.72}.review__role{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:#2a211480}.footnote{margin-top:30px;font-size:.9rem;color:var(--fog);line-height:1.6}.footnote strong{color:var(--gold-bright);font-weight:400}h1,h2,h3{font-family:var(--serif-display);color:#fbf5e6;font-weight:400;letter-spacing:.01em}h2{font-size:1.5rem;margin:24px 0 6px}.label{font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--fog)}.meta{font-family:var(--mono);font-size:12px;color:var(--fog);letter-spacing:.04em}.panel{background:var(--midnight-2);border:1px solid rgba(198,161,91,.18);border-radius:4px;padding:20px;margin:16px 0}label.field{display:block;margin:16px 0 6px}button.primary,button.ghost,button.danger{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;border-radius:3px;padding:10px 15px;border:1px solid rgba(198,161,91,.35);background:#ffffff0d;color:var(--parchment);transition:border-color .15s ease,background .15s ease,color .15s ease}button.primary{background:var(--gold);border-color:var(--gold);color:var(--midnight);font-weight:700}button.primary:hover{background:var(--gold-bright);border-color:var(--gold-bright)}button.primary:disabled{opacity:.4;cursor:not-allowed;background:#ffffff0d;color:var(--fog);border-color:#c6a15b33}button.ghost{background:transparent}button.ghost:hover{border-color:var(--gold)}button.danger{border-color:#cf7568;color:#cf7568;background:transparent}button.danger:hover{background:#cf75681f}.btn-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.meter{height:5px;border-radius:3px;background:#ffffff12;overflow:hidden;margin-top:8px}.meter>span{display:block;height:100%;background:var(--gold);transition:width .16s ease-out,background .16s ease-out}.meter.bad>span{background:#cf7568}.notice{font-family:var(--serif-body);font-size:.98rem;border-left:2px solid var(--gold);padding:8px 12px;margin:12px 0;color:var(--parchment);background:#c6a15b14;line-height:1.55}.notice.fault{border-left-color:#cf7568;background:#cf75681a}.invite-token{font-family:var(--mono);font-size:12px;word-break:break-all;background:#ffffff0d;border:1px solid rgba(198,161,91,.35);border-radius:3px;padding:10px;color:var(--gold-bright)}.list{list-style:none;padding:0;margin:12px 0}.list li{display:flex;justify-content:space-between;gap:12px;align-items:center;font-family:var(--mono);font-size:12px;padding:8px 0;border-bottom:1px solid rgba(198,161,91,.15);color:var(--parchment)}.tag{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;padding:2px 6px;border:1px solid rgba(198,161,91,.35);border-radius:2px;color:var(--fog)}.tag.revoked{color:#cf7568;border-color:#cf756880}.tag.used{color:var(--fog);opacity:.6}.footer{font-family:var(--mono);font-size:10px;color:#9faac299;letter-spacing:.03em;line-height:1.8;margin:40px 0 0;padding-top:16px;border-top:1px solid rgba(198,161,91,.15)}.footer strong{color:var(--fog);font-weight:500}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}@media (max-width: 560px){.card__full{font-size:1.08rem}}
