:root{--paper:#f8cbdb;--card:#fff4f8;--ink:#3a1a2a;--muted:#6b3a50;--line:#efb3c8;--field:#e7a3bd;--accent:#a8255a;--accent-dark:#861b47;--ok-bg:#dfeee0;--ok-ink:#23562a;--wait-bg:#fde0ea;--wait-ink:#86204a}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:Inter,system-ui,sans-serif;-webkit-font-smoothing:antialiased}.page{max-width:640px;margin:0 auto;padding:32px 16px 64px}.masthead{text-align:center;border-bottom:2px solid var(--ink);padding-bottom:16px;margin-bottom:28px}.masthead h1{font-family:Fraunces,Georgia,serif;font-size:clamp(32px,8vw,46px);margin:6px 0 0;line-height:1.05}.kicker{font-size:12px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin:0}.form{gap:18px}.card,.form{display:flex;flex-direction:column}.card{gap:8px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px}.qnum{font-size:12px;letter-spacing:1.5px;text-transform:uppercase;color:var(--accent);font-weight:600}.qtext{font-family:Fraunces,Georgia,serif;font-size:21px;line-height:1.3}input[type=text],textarea{width:100%;font:inherit;font-size:16px;color:var(--ink);background:#fff;border:1px solid var(--field);border-radius:10px;padding:12px;resize:vertical}input[type=email],input[type=text]{min-height:44px}input[type=email]{width:100%;font:inherit;font-size:16px;color:var(--ink);background:#fff;border:1px solid var(--field);border-radius:10px;padding:12px}input:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:transparent}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));grid-gap:10px;gap:10px}figure{position:relative;margin:0}figure img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px;display:block}figcaption{font-size:13px;color:var(--muted);margin-top:4px}figure button{position:absolute;top:6px;right:6px;width:28px;height:28px;border-radius:50%;border:0;background:rgba(0,0,0,.6);color:#fff;font-size:18px;cursor:pointer}.upload{display:flex;gap:8px;flex-wrap:wrap}.upload input{flex:1 1 200px}button{font:inherit;cursor:pointer}.primary,.secondary{border-radius:999px;padding:13px 22px;font-weight:600;border:0}.primary{background:var(--accent);color:#fff}.secondary{background:transparent;color:var(--ink);border:1.5px solid var(--ink)}button:disabled{opacity:.5;cursor:wait}.link{background:none;border:0;color:var(--accent);text-decoration:underline;padding:0}.footer{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.deadline,.status{font-size:14px;color:var(--muted)}.deadline{text-align:center;margin:0}.error{color:#a3261b;background:#fde8e4;padding:10px 14px;border-radius:10px;margin:0}.closed,.thanks{text-align:center;font-size:17px;line-height:1.6}.thanks .big{font-family:Fraunces,Georgia,serif;font-size:34px;margin:20px 0 8px}.primary:hover{background:var(--accent-dark)}.primary,.secondary{min-height:44px}.admin{max-width:1180px;margin:0 auto;padding:40px 16px 64px;display:flex;flex-direction:column;gap:24px}.admin-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;border-bottom:2px solid var(--ink);padding-bottom:16px}.admin-head h1{font-family:Fraunces,Georgia,serif;font-size:clamp(30px,6vw,40px);margin:4px 0 0;line-height:1.05}.admin-cols{display:flex;flex-wrap:wrap;gap:24px;align-items:flex-start}.admin-main{flex:999 1 560px;flex-direction:column}.admin-main,.admin-side{min-width:0;display:flex;gap:24px}.admin-side{flex:1 1 320px}.admin-side,.panel{flex-direction:column}.panel{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:22px;display:flex;gap:14px}.panel h2{font-family:Fraunces,Georgia,serif;font-size:24px;margin:0}.panel .hint{font-size:14px;color:var(--muted);line-height:1.5;margin:0}.row-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline}.qlist,.row-head{display:flex;gap:8px}.qlist{flex-direction:column;list-style:none;margin:0;padding:0}.qitem{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:6px 6px 6px 14px}.qitem .n{font-size:13px;font-weight:600;color:var(--accent);width:18px}.qitem .t{flex:1 1;min-width:0;font-family:Fraunces,Georgia,serif;font-size:18px;line-height:1.35}.qitem.used .t{color:var(--muted)}.icon-btn{width:44px;height:44px;border:0;background:transparent;color:var(--ink);border-radius:10px;display:inline-flex;align-items:center;justify-content:center}.icon-btn:hover{background:var(--wait-bg)}.icon-btn:disabled{opacity:.3;cursor:default}.inline-form{display:flex;flex-wrap:wrap;gap:10px}.inline-form input{flex:1 1 220px;min-width:0}.dark{background:var(--ink);color:#fff;border:0;border-radius:999px;padding:11px 20px;font-weight:600;min-height:44px}.friends{width:100%;border-collapse:collapse;font-size:15px}.friends-wrap{overflow-x:auto}.friends th{text-align:left;font-size:12px;letter-spacing:1px;text-transform:uppercase;color:var(--muted);font-weight:600;padding:0 8px 8px 0}.friends td{border-top:1px solid var(--line);padding:8px 8px 8px 0;vertical-align:middle}.friends td.email{color:var(--muted);word-break:break-all}.friends tr.off td{opacity:.55}.pill{display:inline-block;font-size:12px;font-weight:600;padding:5px 10px;border-radius:999px;white-space:nowrap}.pill.ok{background:var(--ok-bg);color:var(--ok-ink)}.pill.wait{background:var(--wait-bg);color:var(--wait-ink)}.toggle{gap:6px;min-height:44px;background:none;border:0;padding:0;color:var(--ink);font-size:14px}.toggle,.toggle .box{display:inline-flex;align-items:center}.toggle .box{width:20px;height:20px;border-radius:6px;border:1.5px solid var(--accent);justify-content:center;background:#fff}.toggle.on .box{background:var(--accent);color:#fff}.steps{display:flex;flex-direction:column;gap:16px;list-style:none;margin:0;padding:0}.step{display:flex;gap:14px;align-items:flex-start}.step .day{flex:0 0 52px;height:52px;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1}.step .day small{font-size:10px;letter-spacing:1px;text-transform:uppercase}.step .day b{font-family:Fraunces,Georgia,serif;font-size:22px}.step .d1{background:var(--ink);color:#fff}.step .d2{background:#f3b6cc;color:var(--ink)}.step .d3{background:var(--accent);color:#fff}.step .txt{display:flex;flex-direction:column;gap:3px;padding-top:4px}.step .txt b{font-size:15px}.step .txt span{font-size:14px;color:var(--muted);line-height:1.45}.actions{display:flex;flex-direction:column;gap:10px}.actions button{width:100%}.flash{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;font-size:14px}.login{max-width:420px;margin:0 auto;padding:64px 16px;display:flex;flex-direction:column;gap:18px}.login label{font-size:14px;color:var(--muted)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.home-admin{display:flex;justify-content:center;margin-top:28px}a.primary,a.secondary{display:inline-flex;align-items:center;text-decoration:none;font-weight:600}a.secondary{color:var(--ink)}a.primary{color:#fff}input[type=password]{width:100%;font:inherit;font-size:16px;color:var(--ink);min-height:44px;background:#fff;border:1px solid var(--field);border-radius:10px;padding:12px}.login .panel h2{font-size:22px}.login a{color:var(--accent)}.requests{border:2px solid var(--accent)}.request{gap:10px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px}.req-who,.request{display:flex;flex-direction:column}.req-who{gap:2px;word-break:break-all}.req-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.req-actions .inline-form{flex:1 1 280px}.page .panel h2{font-family:Fraunces,Georgia,serif;font-size:24px;margin:0}.page .panel input[type=email]{width:100%}