:root{--navy: #0b1a3a;--red: #c8102e;--red-dark: #8b0a1f;--green: #0b6623;--green-dark: #064017;--gold: #ffd700;--cream: #fffaf0;--paper: #fdf6e3;--silver: #c0c0c0;--silver-light: #ffffff;--silver-dark: #808080;--silver-darker: #404040;--ink: #1a1a1a;--link: #0000ee;--title-blue: linear-gradient(90deg, #000080, #1084d0)}*{box-sizing:border-box}body{margin:0;color:var(--ink);font-family:Verdana,Tahoma,Geneva,sans-serif;font-size:14px;line-height:1.45;background-color:var(--navy);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Ctext x='14' y='30' font-size='14' fill='%23ffffff' fill-opacity='0.35'%3E%E2%9C%BB%3C/text%3E%3Ctext x='76' y='84' font-size='10' fill='%23ffd700' fill-opacity='0.45'%3E%E2%98%85%3C/text%3E%3Ccircle cx='96' cy='22' r='1.2' fill='white' fill-opacity='.7'/%3E%3Ccircle cx='40' cy='100' r='1' fill='white' fill-opacity='.6'/%3E%3Ccircle cx='60' cy='50' r='.8' fill='white' fill-opacity='.5'/%3E%3C/svg%3E"),radial-gradient(ellipse at top,#1d3466 0%,var(--navy) 70%);background-attachment:fixed;min-height:100vh;padding:0 12px 40px}.snow{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;z-index:50}.flake{position:absolute;top:-2em;color:#fff;text-shadow:0 0 4px rgba(255,255,255,.8);opacity:.85;animation-name:fall;animation-timing-function:linear;animation-iteration-count:infinite}@keyframes fall{to{transform:translate(var(--drift),105vh) rotate(360deg)}}.lights{display:flex;justify-content:space-around;max-width:960px;margin:0 auto;padding:10px 0 6px;background:linear-gradient(transparent 4px,#222 4px,#222 6px,transparent 6px)}.bulb{width:12px;height:18px;border-radius:50%/60% 60% 40% 40%;position:relative;animation:twinkle 1.6s infinite}.bulb:before{content:"";position:absolute;top:-5px;left:3px;width:6px;height:6px;background:#333;border-radius:1px}.bulb-0{background:#ff2a2a;box-shadow:0 2px 12px #ff2a2a}.bulb-1{background:#2aff5a;box-shadow:0 2px 12px #2aff5a;animation-delay:.4s}.bulb-2{background:#ffd92a;box-shadow:0 2px 12px #ffd92a;animation-delay:.8s}.bulb-3{background:#2ab4ff;box-shadow:0 2px 12px #2ab4ff;animation-delay:1.2s}@keyframes twinkle{50%{opacity:.35;box-shadow:none}}.page{max-width:960px;margin:0 auto;background:var(--cream);border:6px ridge var(--gold);box-shadow:0 0 0 4px var(--red),0 0 30px #000000b3;position:relative;z-index:1}.masthead{display:flex;align-items:center;justify-content:center;gap:18px;padding:18px 12px 10px;text-align:center;background:repeating-linear-gradient(45deg,var(--red) 0 14px,var(--red-dark) 14px 28px);border-bottom:4px double var(--gold)}.masthead-tree{font-size:54px;filter:drop-shadow(2px 2px 0 rgba(0,0,0,.5))}.wordart{margin:0;font-family:Times New Roman,Times,serif;font-style:italic;font-weight:900;font-size:clamp(36px,7vw,64px);letter-spacing:1px;line-height:1;background:linear-gradient(180deg,#fff6a8 0%,var(--gold) 45%,#d48a00 55%,#fff1a0 100%);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-stroke:1px #6b3d00;filter:drop-shadow(3px 3px 0 #3a0008)}.tagline{margin:6px 0 0;color:#fff;font-family:Comic Sans MS,Comic Sans,Chalkboard SE,cursive;font-size:15px;text-shadow:1px 1px 0 #000}.marquee{overflow:hidden;white-space:nowrap;background:#000;color:#39ff14;font-family:Courier New,Courier,monospace;font-weight:700;padding:4px 0;border-bottom:2px solid var(--green)}.marquee span{display:inline-block;padding-left:100%;animation:scroll 28s linear infinite}@keyframes scroll{to{transform:translate(-100%)}}.layout{display:grid;grid-template-columns:200px 1fr;gap:14px;padding:14px}.sidebar{display:flex;flex-direction:column;gap:12px}.box{background:var(--paper);border:2px solid var(--green);outline:2px dashed var(--red);outline-offset:-6px;padding:10px 10px 12px}.box-title{background:var(--green);color:var(--gold);font-family:Times New Roman,Times,serif;font-weight:700;text-align:center;margin:-10px -10px 10px;padding:3px}.nav{display:flex;flex-direction:column;gap:6px}.content{min-width:0}.page-title{margin:0 0 10px;font-family:Times New Roman,Times,serif;font-size:30px;color:var(--red);text-shadow:2px 2px 0 #f2c4cc;border-bottom:3px double var(--green)}.btn{font:inherit;font-family:Tahoma,Verdana,sans-serif;font-size:13px;color:#000;background:var(--silver);border:2px solid;border-color:var(--silver-light) var(--silver-darker) var(--silver-darker) var(--silver-light);box-shadow:inset -1px -1px 0 var(--silver-dark),inset 1px 1px #dfdfdf;padding:5px 12px;cursor:pointer;text-align:left;position:relative}.btn:active:not(:disabled),.btn.pressed{border-color:var(--silver-darker) var(--silver-light) var(--silver-light) var(--silver-darker);box-shadow:inset 1px 1px 0 var(--silver-dark);background:#b4b4b4}.btn:focus-visible{outline:1px dotted #000;outline-offset:-5px}.btn:disabled{color:var(--silver-dark);text-shadow:1px 1px 0 #fff;cursor:not-allowed}.btn.primary{font-weight:700}.btn.small{padding:2px 8px;font-size:12px}.btn.full{width:100%;text-align:center}.btn.big{font-size:22px;font-family:Times New Roman,Times,serif;padding:12px 28px;margin:8px 0;text-align:center}.nav-btn.pressed{font-weight:700}.new-badge{position:absolute;top:-7px;right:-4px;background:var(--red);color:var(--gold);font-size:9px;font-weight:700;padding:1px 3px;transform:rotate(8deg);animation:blink 1s steps(1) infinite}.field{font:inherit;font-size:13px;width:100%;padding:3px 5px;background:#fff;border:2px solid;border-color:var(--silver-dark) var(--silver-light) var(--silver-light) var(--silver-dark);box-shadow:inset 1px 1px 0 var(--silver-darker)}.field.inline{width:auto}.field.warn{background:#fff3b0}textarea.field{font-family:Courier New,Courier,monospace}.link-btn{font:inherit;background:none;border:none;padding:0;color:var(--link);text-decoration:underline;cursor:pointer}.link-btn:visited,.link-btn:active{color:#551a8b}.panel{min-inline-size:0;border:2px groove #c9b98f;background:#fff;margin:0 0 14px;padding:10px 14px 14px}.panel>legend,.panel>summary{font-family:Times New Roman,Times,serif;font-weight:700;font-size:17px;color:var(--green);padding:0 6px}.panel>summary{cursor:pointer;padding:0}.panel p:first-child{margin-top:4px}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}.form-grid label,.add-row label{display:flex;flex-direction:column;gap:3px;font-weight:700;font-size:12px}.add-row{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:10px;align-items:end}.bulk{display:flex;flex-direction:column;gap:8px;align-items:flex-start}.row{display:flex;gap:8px;align-items:center;margin-top:8px}.row.wrap{flex-wrap:wrap}.row.wrap .field{width:auto;flex:1 1 200px}.center{text-align:center;justify-content:center}.hint{color:#555;font-size:12px}.tiny{font-size:11px}.empty{font-style:italic;color:#555;text-align:center}.notice{background:#ffc;border:1px solid #c9a800;padding:6px 10px}.status{border:2px solid;padding:8px 12px;margin:0 0 14px}.status.ok{background:#e3f7e3;border-color:var(--green);color:var(--green-dark);font-weight:700}.status.bad{background:#ffe3e3;border-color:var(--red);color:var(--red-dark)}.status ul{margin:6px 0 0;padding-left:20px}.bad-text{color:var(--red);font-weight:700}hr.candy{border:0;height:8px;margin:12px 0;background:repeating-linear-gradient(-45deg,var(--red) 0 8px,#fff 8px 16px);border-radius:4px}.blink{animation:blink 1s steps(1) infinite}@keyframes blink{50%{visibility:hidden}}.retro-table{width:100%;border-collapse:separate;border-spacing:2px;border:2px outset #ccc;margin-top:8px}.retro-table th{background:var(--green);color:#fff;font-weight:700;font-size:12px;padding:4px 6px;text-align:left}.retro-table td{border:1px inset #ccc;padding:3px 4px;background:#fff}.retro-table tbody tr:nth-child(2n) td{background:#f1f8f1}.retro-table .num{text-align:center;font-weight:700;width:1%;white-space:nowrap}.retro-table td:last-child:has(.btn){width:1%}.spoilers td{font-size:15px}.matrix-scroll{overflow-x:auto}.matrix th,.matrix td{text-align:center;white-space:nowrap}.matrix tbody th{text-align:left}.cell.yes{color:var(--green);font-weight:700}.cell.no{color:var(--red);background:#ffecec!important;cursor:help}.cell.self{background:repeating-linear-gradient(45deg,#ddd 0,#ddd 4px,#eee 4px,#eee 8px)!important}.form-grid .span-2{grid-column:span 2}textarea.field.notes{font-family:inherit;resize:vertical}.right{text-align:right;margin:2px 0 0}.fun-rules{margin:8px 0;padding-left:26px}.fun-rules li{margin-bottom:6px}.fun-rules li>*{vertical-align:middle}.fun-rules .field{width:calc(100% - 40px);margin-right:6px}.idea-title{font-family:Times New Roman,Times,serif;color:var(--red);margin:18px 0 8px}.idea-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px}.idea{display:flex;flex-direction:column;gap:6px;background:var(--paper);border:2px dashed var(--green);padding:8px 10px}.idea p{flex:1;margin:0;font-size:12px}.idea .btn{align-self:flex-start}.idea.added{border-style:solid;background:#e3f7e3}.party-box{text-align:left;margin-top:16px}.party-box .notes-text{white-space:pre-wrap}.check{display:flex;gap:8px;align-items:flex-start;margin:8px 0}.check input{margin-top:3px}.check-spacer{width:13px;flex:none}.rule-builder{display:grid;grid-template-columns:1fr 1.3fr 1fr;gap:8px}.pending-rule{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:10px;padding:8px 10px;background:#fff3b0;border:2px dashed #c9a800;animation:nudge 1.4s ease-in-out 2}@keyframes nudge{50%{background:#ffe066}}.rule-list,.past-list{list-style:none;padding:0;margin:12px 0 0}.rule-list li{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:5px 8px;border-bottom:1px dotted #aaa}.rule-list li:nth-child(odd){background:#fff8f8}.name-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px}.name-btn{padding:10px;font-size:15px;text-align:center}.name-btn.seen{color:#555}.big-text{font-size:20px}.reveal{padding:10px 0}.reveal-name{font-size:48px;margin:14px 0;font-style:normal}.wish{background:var(--paper);border:1px dashed var(--green);padding:8px;text-align:left}.table-scroll{overflow-x:auto}.people{min-width:600px}.hidden-banner{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 10px;border:2px solid}.hidden-banner.on{background:#e8e8ff;border-color:navy;color:navy}.hidden-banner.off{background:#fff3e0;border-color:#c66900;color:#7a3e00}.organizer-pick{font-weight:700}.results td{vertical-align:middle}.match-cell{min-width:170px}.match-name,.match-hidden{display:inline-flex;align-items:center;gap:8px}.match-name{font-weight:700;color:var(--green-dark)}.blurred{filter:blur(6px);-webkit-user-select:none;user-select:none;color:var(--red);font-weight:700;background:repeating-linear-gradient(90deg,#f2c4cc 0,#f2c4cc 6px,#cde8cd 6px,#cde8cd 12px);padding:0 4px}.me-tag,.sent-tag{display:inline-block;font-size:10px;font-weight:700;padding:0 4px;margin-left:6px}.me-tag{background:var(--gold);color:#000;border:1px solid #000}.sent-tag{color:var(--green);margin:0}.row.tight .btn{white-space:nowrap}.row.tight{margin:0;gap:4px;flex-wrap:wrap}.send-all{text-align:center;margin:10px 0 4px}.send-all .btn.big{font-size:19px;margin:4px 0}.send-list{max-height:160px;overflow-y:auto;background:#fff;border:2px inset #ccc;margin:8px 0;padding:6px 6px 6px 26px}.turnstile{display:flex;justify-content:center;min-height:65px;margin:10px 0}.gift-page{max-width:640px;margin-top:0}.gift-body{padding:30px 20px}.unwrap{animation:unwrap .6s ease-out}@keyframes unwrap{0%{transform:scale(.3) rotate(-8deg);opacity:0}}.gift-facts{width:auto;margin:12px auto}.stage{background:radial-gradient(ellipse at center,#14142a,#000 75%);border:4px ridge var(--gold);box-shadow:inset 0 0 30px #000000e6;color:#fff;padding:16px;margin:16px auto}.stage .wordart{filter:drop-shadow(0 0 10px rgba(255,215,0,.6))}.stage-hint{color:var(--gold);font-family:Comic Sans MS,Comic Sans,Chalkboard SE,cursive;margin:6px 0 0}.present-btn{background:none;border:0;padding:0;cursor:pointer;display:block;margin:0 auto}.present-btn:focus-visible{outline:2px dashed var(--gold);outline-offset:4px}.art{display:block;margin:0 auto;-webkit-user-select:none;user-select:none}.art-gift{width:min(240px,70vw);animation:wiggle 2.4s ease-in-out infinite}.present-btn:hover .art-gift{animation-duration:.6s}@keyframes wiggle{0%,70%,to{transform:rotate(0)}76%{transform:rotate(-6deg) scale(1.03)}82%{transform:rotate(5deg) scale(1.03)}88%{transform:rotate(-3deg)}94%{transform:rotate(2deg)}}.unwrap.stage{display:flex;align-items:center;justify-content:center;gap:16px}.art-tree{width:min(130px,30vw);margin:0;flex:none}.stage-text{flex:1;min-width:0}.art-fallback{display:block;font-size:110px;line-height:1.1}.art-fallback.art-tree{font-size:80px}.santa-stage{text-align:center}.art-santa{width:min(170px,45vw);animation:santa-bob 3s ease-in-out infinite}.santa-stage.small{padding:10px;margin-top:0}.santa-stage.small .art-santa{width:110px}@keyframes santa-bob{50%{transform:translateY(-6px) rotate(-1.5deg)}}.blink-soft{animation:soft 1.8s ease-in-out infinite}@keyframes soft{50%{opacity:.45}}.fun-rules-list{margin:4px 0 0;padding-left:22px}.fun-rules-list li{margin-bottom:4px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00002899;display:flex;align-items:center;justify-content:center;z-index:100;padding:16px}.window{width:min(480px,100%);background:var(--silver);border:2px solid;border-color:var(--silver-light) var(--silver-darker) var(--silver-darker) var(--silver-light);box-shadow:inset -1px -1px 0 var(--silver-dark),4px 4px #0006;padding:3px}.titlebar{display:flex;justify-content:space-between;align-items:center;background:var(--title-blue);color:#fff;font-family:Tahoma,sans-serif;font-weight:700;font-size:13px;padding:3px 4px 3px 6px}.titlebar-x{font:700 11px Tahoma,sans-serif;width:20px;height:18px;padding:0;background:var(--silver);border:2px solid;border-color:var(--silver-light) var(--silver-darker) var(--silver-darker) var(--silver-light);cursor:pointer}.window-body{background:var(--cream);margin-top:3px;padding:16px}.dialog-message{font-size:15px;text-align:center;margin:4px 0 8px}.dialog-label{display:flex;flex-direction:column;gap:8px;font-size:15px}.past-draw{border-bottom:1px dotted #aaa;padding:4px 0 8px}.past-label{flex:1}.pairs{columns:2;margin:8px 0 0;font-size:13px}.countdown{font-family:Comic Sans MS,Comic Sans,Chalkboard SE,cursive;color:var(--red);font-size:15px;font-weight:700}.countdown .blink{font-size:30px;color:var(--green)}.party-countdown{color:var(--green)}.party-countdown .blink{color:var(--red)}.hit-counter{display:inline-flex;gap:2px;background:#000;padding:3px;border:2px inset #888;margin-top:4px}.hit-counter span{font-family:Courier New,Courier,monospace;font-weight:700;font-size:16px;color:#ff3030;background:linear-gradient(#222,#111 50%,#222);padding:0 3px}.footer{text-align:center;padding:0 14px 14px}.badges{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}.badge88{width:88px;height:31px;font:9px/1.2 Verdana,sans-serif;border:1px solid #000;display:inline-flex;flex-direction:column;justify-content:center;text-align:center;overflow:hidden}.badge88 b{font-size:11px}.b-elf{background:linear-gradient(var(--green),var(--green-dark));color:var(--gold)}.b-nice{background:var(--paper);color:var(--red)}.b-reindeer{background:linear-gradient(#7a4a21,#4a2a10);color:#fff}.b-santa{background:linear-gradient(var(--red),var(--red-dark));color:#fff}.print-slips{display:none}@media print{body{background:#fff;padding:0}.snow,.lights,.page>*:not(.layout),.sidebar,.content>*:not(.print-slips){display:none!important}.page{border:0;box-shadow:none;background:#fff}.layout{display:block;padding:0}.print-slips{display:block}.slip{border:2px dashed #000;margin-bottom:10px;break-inside:avoid;font-family:Times New Roman,serif}.slip-top{padding:14px;font-size:18px;border-bottom:1px dotted #000}.slip-bottom{padding:28px 14px;font-size:18px}}@media(max-width:720px){.layout{grid-template-columns:1fr}.nav{display:grid;grid-template-columns:1fr 1fr}.masthead-tree{font-size:32px}.form-grid .span-2{grid-column:auto}.add-row,.rule-builder{grid-template-columns:1fr}.pairs{columns:1}}@media(prefers-reduced-motion:reduce){.flake,.bulb,.blink,.blink-soft,.art-gift,.art-santa,.unwrap,.new-badge,.marquee span{animation:none}.marquee span{padding-left:12px}}.row>.btn{white-space:nowrap;flex:none}
