@import url('/assets/fonts.css');
:root{color-scheme:dark;--bg:#090916;--secondary:#17132d;--panel:#241b3d;--pink:#ff3cac;--cyan:#28f7f7;--purple:#9d4edd;--orange:#ff9e44;--text:#f5f2ff;--muted:#b8b0d0;font-family:Arial,Helvetica,sans-serif;background:var(--bg);color:var(--text);line-height:1.65}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:radial-gradient(ellipse at 90% 15%,#30134488,transparent 45%)}a{color:var(--cyan);text-underline-offset:5px}button,input{font:inherit}button,a,input{touch-action:manipulation}a:focus-visible,button:focus-visible,input:focus-visible{outline:3px solid var(--cyan);outline-offset:5px}h1,h2,h3,p{margin-top:0}h1,h2,h3{line-height:1.15;letter-spacing:-.035em}h1,h2{font-family:'Display',Arial,sans-serif}h1{font-size:clamp(2.5rem,5.7vw,5rem)}h2{font-size:clamp(2rem,4vw,3.3rem)}h3{font-size:1.45rem}p{color:var(--muted)}main,.site-header,footer{width:min(1120px,calc(100% - 48px));margin:auto}.site-header{display:flex;justify-content:space-between;align-items:center;padding:28px 0;border-bottom:1px solid #b8b0d026;gap:20px}.brand{font-weight:800;font-size:1.05rem;letter-spacing:.15em;text-decoration:none;color:var(--text);line-height:1.3}.brand>span:first-child{color:var(--pink);font-size:1.5rem}.brand-sub{display:block;font-size:.58rem;letter-spacing:.25em;margin-left:29px;color:var(--muted)}nav{display:flex;align-items:center;gap:24px}nav a,.quiet{font-size:.85rem}nav form{margin:0}.quiet{background:none;border:0;color:var(--muted);cursor:pointer;padding:12px}.eyebrow{display:block;color:var(--cyan);font-size:.7rem;font-weight:700;letter-spacing:.18em;margin-bottom:18px}.small,small{font-size:.8rem;color:var(--muted)}.hero{position:relative;min-height:580px;display:flex;align-items:center;overflow:hidden;isolation:isolate}.hero-copy{position:relative;z-index:1;padding:64px 0;max-width:700px}.hero h1{max-width:650px;font-size:clamp(2rem,4.5vw,3.6rem)}.outline{display:block;font-size:clamp(3rem,7.2vw,6rem);margin-top:20px;color:var(--text);text-shadow:3px 3px 0 #96377c}.intro{font-size:1.1rem}.hero-art{position:absolute;inset:0 0 0 40%;z-index:-1;opacity:.7;mask-image:linear-gradient(to right,transparent,#000 40%)}.sun{position:absolute;width:340px;height:340px;right:5%;top:75px;border-radius:50%;background:repeating-linear-gradient(0deg,transparent 0 5px,#090916 5px 9px,transparent 9px 22px),linear-gradient(var(--orange),var(--pink) 60%,#7e2fba);box-shadow:0 0 100px #ff3cac28}.grid{position:absolute;bottom:-180px;right:-200px;width:1000px;height:450px;background:linear-gradient(#9d4edd77 1px,transparent 1px),linear-gradient(90deg,#9d4edd77 1px,transparent 1px);background-size:48px 48px;transform:perspective(300px) rotateX(58deg);mask-image:linear-gradient(transparent,#000)}.orbit{position:absolute;right:5%;top:40px;color:var(--cyan);font-size:4rem}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:28px;background:var(--pink);border:1px solid var(--pink);color:#190b20;text-decoration:none;font-weight:700;padding:14px 23px;border-radius:4px;min-height:48px;cursor:pointer;transition:box-shadow .2s}.button:hover{box-shadow:0 0 24px #ff3cac66}.event-strip{display:grid;grid-template-columns:1fr 1fr 1fr;padding:30px 0;border-block:1px solid #9d4edd66;gap:25px}.event-strip .eyebrow{margin-bottom:7px}.event-strip strong,.event-strip small{display:block}.section{padding:70px 0}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:center}.panel{background:linear-gradient(135deg,#241b3d99,#17132dbb);border:1px solid #b8b0d030;border-radius:8px;padding:36px}.schedule{list-style:none;padding:0;margin:0}.schedule li{display:flex;gap:25px;border-bottom:1px solid #b8b0d022;padding:22px 0}.schedule li:last-child{border:0}.schedule time{color:var(--pink);font-weight:700}.schedule span{font-size:.95rem}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:32px}.card{text-decoration:none;background:linear-gradient(130deg,#241b3d88,#17132daa);border:1px solid #9d4edd66;border-radius:6px;padding:25px 22px;transition:border-color .2s}.card:hover{border-color:var(--pink)}.card-number{font-size:.65rem;letter-spacing:.1em;color:var(--cyan)}.card h3{color:var(--text);margin:30px 0 14px}.card h3 span{color:var(--pink)}.card p{font-size:.9rem;margin-bottom:0}.login{max-width:520px;margin:80px auto}.login h1{font-size:2.8rem}.login form{display:grid;gap:14px;margin-top:30px}.login label{font-weight:700;font-size:.9rem}input{width:100%;padding:13px;background:var(--bg);border:1px solid #b8b0d088;border-radius:4px;color:var(--text);min-height:48px}.login .small{margin:25px 0 0}.error{border-left:3px solid var(--pink);padding:12px;background:#ff3cac15;color:var(--text)}.prose{max-width:760px;margin:70px auto}.prose h1{font-size:2.8rem}footer{display:flex;gap:25px;justify-content:space-between;flex-wrap:wrap;border-top:1px solid #b8b0d026;padding:26px 0;font-size:.75rem;color:var(--muted)}footer span:first-child{margin-right:auto}footer a{color:var(--muted)}.skip{position:absolute;top:-80px;left:20px;padding:12px;background:var(--bg);z-index:10}.skip:focus{top:8px}@media(max-width:900px){.cards{grid-template-columns:1fr 1fr}.two-col{gap:30px}.hero-art{left:20%}}@media(max-width:600px){main,.site-header,footer{width:calc(100% - 32px)}.site-header{padding:20px 0}.site-header .small{display:none}nav{gap:8px}.brand{font-size:.85rem}.brand-sub{font-size:.5rem}.hero{min-height:550px}.hero-copy{padding:50px 0}.hero-art{inset:0 -130px 0 10%;opacity:.4}.hero h1{max-width:95%}.event-strip,.two-col{grid-template-columns:1fr}.event-strip{gap:24px}.section{padding:45px 0}.cards{grid-template-columns:1fr}.panel{padding:25px}.login{margin:40px auto}.login h1,.prose h1{font-size:2.2rem}.prose{margin:40px auto}.card h3{margin-top:20px}footer{gap:15px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}}
/* Guest contribution forms */
.contribution-form{display:grid;gap:24px;margin-top:30px}.field{min-width:0}.field label,.contribution>label{display:block;font-weight:700;margin-bottom:8px}.hint{font-size:.85rem;margin:5px 0 10px}.field-error{color:#ffb7df;margin:8px 0 0;font-size:.9rem}textarea,select{font:inherit;color:var(--text);background:var(--bg);border:1px solid #b8b0d088;border-radius:4px;width:100%;padding:12px;min-height:48px}textarea{resize:vertical}textarea:focus-visible,select:focus-visible{outline:3px solid var(--cyan);outline-offset:4px}fieldset{border:1px solid #b8b0d055;padding:16px;border-radius:4px;margin:0;min-width:0}legend{padding:0 6px;font-weight:700}.radio{display:flex;align-items:center;gap:12px;min-height:48px;cursor:pointer}.radio input{width:22px;min-height:22px;height:22px;flex-shrink:0;accent-color:var(--pink)}.error h2{font-family:inherit;font-size:1.2rem;letter-spacing:0}.error ul{margin:0;padding-left:22px}.error p{margin:10px 0 0}.contribution .button{width:fit-content;max-width:100%}.contribution p,.upload-results strong,#selected-files{overflow-wrap:anywhere}.upload-results{list-style:none;padding:0}.upload-results li{padding:16px;border:1px solid #b8b0d044;border-left:3px solid var(--cyan);margin-bottom:12px}.upload-results li.upload-failed{border-left-color:var(--pink)}.upload-results span{display:block;color:var(--muted);margin-top:8px}.back-link{margin-top:32px;margin-bottom:0}input[type=file]{white-space:normal;overflow:hidden;font-size:.9rem}input[type=file]::file-selector-button{background:var(--panel);color:var(--text);border:1px solid var(--purple);padding:10px;margin-right:12px;border-radius:4px}input[aria-invalid=true],textarea[aria-invalid=true],select[aria-invalid=true]{border-color:var(--pink)}#selected-files{padding-left:20px;font-size:.85rem}#edit-link{font-family:monospace;font-size:.85rem}
/* Administration: restrained surfaces, clear data, no decorative motion. */
.admin-area{background:var(--bg)}.admin-shell{padding:28px 0 55px}.admin-nav{display:flex;gap:5px;flex-wrap:wrap;border-bottom:1px solid #b8b0d033;padding-bottom:16px;margin-bottom:32px}.admin-nav a{padding:9px 12px;min-height:44px;color:var(--muted);font-size:.9rem;text-decoration:none;border-radius:4px}.admin-nav a[aria-current=page]{background:var(--panel);color:var(--cyan)}.admin-heading h1{font-size:clamp(2rem,4vw,3rem);margin-bottom:26px}.admin-heading .eyebrow{margin-bottom:10px}.admin-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:32px}.stat{background:var(--secondary);border:1px solid #b8b0d033;border-radius:6px;padding:22px;text-decoration:none;color:var(--text)}.stat strong{display:block;font-size:2.6rem;line-height:1.3;color:var(--cyan)}.stat span{color:var(--muted);font-size:.9rem}.stat:hover{border-color:var(--cyan)}.admin-panel{margin-bottom:26px}.admin-panel h2,.admin-edit h2{font-family:Arial,sans-serif;font-size:1.5rem;letter-spacing:0}.settings-summary{list-style:none;padding:0;max-width:600px;margin:20px 0 30px}.settings-summary li{display:flex;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid #b8b0d022}.status{display:inline-block;padding:3px 9px;font-size:.75rem;font-weight:700;border-radius:4px;background:var(--panel);color:var(--text);line-height:1.5;white-space:nowrap}.status-open,.status-approved,.status-confirmed,.status-yes{background:#124344;color:#aaf7ed}.status-pending,.status-requested,.status-duplicate{background:#4a331c;color:#ffdaa1}.status-closed,.status-rejected,.status-no{background:#45243d;color:#ffd1e9}.status-duplicate{margin-top:8px;white-space:normal}.success{background:#12434466;border-left:3px solid var(--cyan);color:var(--text);padding:14px 18px}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:30px}.settings-grid form{display:flex;flex-direction:column;gap:20px;margin:0}.settings-grid button{align-self:flex-start;margin-top:auto}.button.secondary{background:var(--secondary);color:var(--cyan);border-color:#28f7f766;box-shadow:none}.button.secondary:hover{border-color:var(--cyan)}.danger-link{color:#ffb7df}.button.danger{background:#5a2145;border-color:#ff83c7;color:#fff0fa;box-shadow:none}.table-scroll{width:100%;overflow-x:auto;border:1px solid #b8b0d033;border-radius:6px;margin:25px 0;background:var(--secondary)}table{border-collapse:collapse;width:100%;text-align:left;font-size:.85rem}caption{text-align:left;font-weight:700;padding:16px;border-bottom:1px solid #b8b0d033}thead{background:var(--panel)}th,td{padding:15px 12px;vertical-align:top;border-bottom:1px solid #b8b0d022;overflow-wrap:anywhere;min-width:80px;max-width:260px}thead th{color:var(--muted);font-size:.75rem;letter-spacing:.03em}tbody th{font-weight:600}td small,th small,.photo-info small{display:block;color:var(--muted);font-size:.75rem;font-weight:400;margin-top:5px}td.date-cell{min-width:140px;font-size:.75rem;max-width:170px}.multiline{white-space:pre-wrap}.row-actions{display:flex;flex-direction:column;gap:10px}.row-actions a{display:inline-block;padding:5px 0;min-height:32px}.plain-list{list-style:none;margin:0;padding:0}.possible-duplicate th{border-left:3px solid var(--orange)}.empty-state{padding:35px 24px;background:var(--secondary);border:1px dashed #b8b0d055;border-radius:6px}.filter-form,.bulk-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:14px;margin:25px 0}.filter-form select,.bulk-toolbar select{width:auto;max-width:100%;min-width:170px}.filter-form .button,.bulk-toolbar .button{font-size:.85rem;padding:10px 16px}.photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.photo-card{border:1px solid #b8b0d033;border-radius:6px;background:var(--secondary);overflow:hidden}.photo-card img{display:block;width:100%;height:215px;object-fit:contain;background:#05050e}.photo-info{padding:18px}.photo-info h2{font:600 1rem/1.5 Arial,sans-serif;letter-spacing:0;overflow-wrap:anywhere;margin:12px 0 5px}.photo-info p{font-size:.85rem;margin:0 0 14px;overflow-wrap:anywhere}.photo-info .radio{font-size:.8rem;margin-bottom:8px}.photo-info a{font-size:.85rem}.pagination{display:flex;flex-wrap:wrap;gap:24px;margin-top:30px}.pagination a{min-height:44px}.admin-edit{max-width:740px}.admin-edit-form{display:grid;gap:22px}.form-actions{display:flex;gap:24px;align-items:center;flex-wrap:wrap}.photo-detail{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:32px}.photo-detail h2{overflow-wrap:anywhere}.large-preview{width:100%;height:auto;max-height:700px;object-fit:contain;background:#05050e;border-radius:4px}.photo-metadata,.delete-summary{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px 20px;font-size:.85rem}.photo-metadata dt,.delete-summary dt{color:var(--muted)}dd{margin:0;overflow-wrap:anywhere}.delete-thumbnail{display:block;width:min(100%,320px);max-height:260px;object-fit:contain;margin:20px 0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:900px){.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-detail{grid-template-columns:1fr}.photo-card img{height:230px}}@media(max-width:600px){.admin-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.stat{padding:16px}.stat strong{font-size:2rem}.settings-grid,.photo-grid{grid-template-columns:1fr}.admin-panel,.admin-edit{padding:22px}.admin-nav a{padding:8px;font-size:.8rem}.photo-card img{height:260px}.photo-metadata,.delete-summary{grid-template-columns:1fr;gap:3px}.photo-metadata dd,.delete-summary dd{margin-bottom:12px}.bulk-toolbar{align-items:stretch}.bulk-toolbar label{width:100%}.bulk-toolbar select{flex:1}}
.table-scroll:focus-visible{outline:3px solid var(--cyan);outline-offset:4px}
.export-options{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:28px 0}.export-options form{border:1px solid #b8b0d033;padding:22px;border-radius:6px;display:flex;flex-direction:column;gap:14px;min-width:0}.export-options h3{font-size:1.2rem;margin:0}.export-options p{margin:0;font-size:.9rem}.export-options button{margin-top:auto;align-self:flex-start;text-align:left;white-space:normal}.export-options form:last-child{grid-column:1/-1}@media(max-width:600px){.export-options{grid-template-columns:1fr}.export-options form{padding:16px}}
/* Keep navigation and long event/guest names usable on narrow phone screens. */
h1,h2,h3{overflow-wrap:anywhere}button{max-width:100%}.admin-shell,.admin-panel,.admin-edit,.photo-detail>*{min-width:0}@media(max-width:600px){.site-header{flex-wrap:wrap}.site-header nav{flex-wrap:wrap;max-width:100%}.filter-form select,.filter-form button{max-width:100%}}
.forget-name{color:var(--cyan);padding:4px 0;text-decoration:underline;text-underline-offset:4px;min-height:44px} [data-name-controls] .hint{margin-top:12px;margin-bottom:0}
