:root{font-family:DM Sans,system-ui,sans-serif;color:#f4eedd;background:#130d19;font-synthesis:none;--muted:#b2a5b7;--orange:#f89640;--border:#ffffff20;--panel:#211827;color-scheme:dark}*{box-sizing:border-box}body{margin:0;min-width:320px;background:radial-gradient(ellipse at 50% 0,#35213b66,transparent 650px),#130d19}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;color:inherit;background:none;min-height:44px;border-radius:10px;touch-action:manipulation}button:disabled{opacity:.45;cursor:not-allowed}button:not(:disabled):active{transform:translateY(1px)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid #ffb570;outline-offset:4px}a{color:inherit;text-underline-offset:4px}input,select{width:100%;border:1px solid var(--border);background:#ffffff07;color:inherit;padding:15px 16px;border-radius:10px;min-height:50px;font-size:16px}input::placeholder{color:#938398}select option{background:#211827;color:#fff}label{display:block;font-size:13px;font-weight:600;margin:0 0 9px}fieldset{padding:0;margin:0;border:0;min-width:0}h1,h2,p{margin-top:0}h1{font-family:Playfair Display,Georgia,serif;font-size:clamp(31px,6vw,46px);font-weight:600;line-height:1.1;letter-spacing:-1.3px;margin-bottom:16px}h2{font-family:Playfair Display,Georgia,serif;font-weight:600;font-size:26px;line-height:1.15;margin:0}p{line-height:1.6}em{color:var(--orange);font-weight:600}.eyebrow{color:var(--orange);font-size:10px;letter-spacing:2.8px;font-weight:700;margin-bottom:14px}.intro{color:var(--muted);font-size:14px;line-height:1.65;margin-bottom:25px}.subtle{color:var(--muted);font-size:11px;line-height:1.6;margin:14px 0}.primary{background:var(--orange);color:#211225;font-weight:700;min-height:52px;padding:13px 20px;width:100%;box-shadow:0 4px 25px #f8964010;border-radius:11px}.primary:hover:not(:disabled){background:#ffaa5d}.primary svg:last-child{margin-left:auto}.primary svg:first-child:not(:last-child){margin-right:0}.secondary{border:1px solid var(--border);background:#ffffff04;min-height:46px;padding:10px 15px;font-size:13px}.secondary:hover:not(:disabled){background:#ffffff0c}.text-button{color:var(--orange);font-size:12px;padding:8px;min-height:40px}.full{width:100%}.icon{padding:8px;min-width:44px;min-height:44px;flex-shrink:0}.danger{background:#843647;color:#fff;padding:12px 20px;font-weight:600}.danger-text{color:#f3a0a8!important}.notice{background:#692b3b40;border:1px solid #f3869433;padding:13px 15px;border-radius:10px;font-size:13px;line-height:1.6;color:#ffbec6;overflow-wrap:anywhere;margin:15px 0}.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;min-height:220px;color:var(--muted);font-size:14px}.loading p{margin:0}.spin{animation:spin 1.1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.welcome{max-width:420px;padding:45px 27px 28px;margin:0 auto;min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.welcome-logo{width:190px;height:190px;object-fit:contain;margin:0 auto 20px}.welcome h1{font-size:53px;line-height:1.08;margin-bottom:18px}.welcome .intro{margin-bottom:30px}.invite-form{width:100%;text-align:left}.invite-form .primary{margin-top:16px}.input-wrap{position:relative}.input-wrap svg{position:absolute;top:16px;left:15px;color:var(--muted)}.input-wrap input{padding-left:46px}.welcome>.subtle{margin-top:25px;margin-bottom:2px}.center-page{max-width:450px;margin:0 auto;min-height:90svh;display:flex;flex-direction:column;justify-content:center;padding:30px;text-align:center}.center-page>svg{margin:0 auto 25px;color:var(--orange)}.entry-page{max-width:460px;margin:0 auto;padding:25px 24px}.small-logo{display:block;width:110px;height:110px;object-fit:contain;margin:0 auto 20px}.entry h1{font-size:35px}.entry .intro{font-size:13px}.photo-preview{position:relative;aspect-ratio:4/3;border:1px dashed #977d9f66;border-radius:14px;background:#24192b;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:15px;color:#a892af;cursor:pointer;font-size:12px}.photo-preview img{width:100%;height:100%;object-fit:contain}.photo-loading{position:absolute;inset:0;background:#130d19aa;display:grid;place-items:center}.photo-actions{display:flex;gap:10px;margin:13px 0 26px}.photo-actions button{flex:1}.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.delete-area{margin-top:20px;border-top:1px solid var(--border);padding-top:15px;text-align:center;font-size:13px}.delete-area .danger{width:100%}.gallery-header{max-width:1050px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;padding:22px 24px;border-bottom:1px solid var(--border)}.brand{display:flex;align-items:center;gap:9px;text-decoration:none;font-weight:700;letter-spacing:2.2px;font-size:10px;line-height:1.8}.brand img{width:39px;height:39px;border-radius:9px}.brand>span>span{display:block;color:#b2a5b7;font-size:8px;letter-spacing:3px}.year-button{border:1px solid var(--border);padding:5px 13px;font-size:12px;min-height:36px}.gallery-main{max-width:1050px;margin:0 auto;padding:28px 24px 220px}.gallery-title{display:flex;justify-content:space-between;align-items:flex-end;gap:15px;margin-bottom:26px}.gallery-title h1{font-size:clamp(30px,5vw,45px);margin-bottom:9px}.gallery-title .intro{margin:0;font-size:12px}.gallery-title .eyebrow{font-size:9px;margin-bottom:12px}.grid-toggle{display:flex;align-items:center;background:#ffffff06;border:1px solid var(--border);border-radius:10px;padding:3px;flex-shrink:0}.grid-toggle button{min-height:34px;min-width:34px;padding:7px;color:#9d8ca4;border-radius:7px}.grid-toggle button.active{color:#ffad63;background:#f8964014}.costume-grid{display:grid;gap:18px}.columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.costume-card{min-width:0;background:#211827;border:1px solid #ffffff0d;border-radius:13px;overflow:hidden}.photo-button{width:100%;padding:0;border-radius:0;display:block;line-height:0}.photo{width:100%;aspect-ratio:3/4;background:#302338;overflow:hidden}.photo img{width:100%;height:100%;object-fit:cover;display:block}.missing-photo{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;font-size:10px;color:var(--muted)}.card-caption{display:flex;align-items:center;justify-content:space-between;gap:3px;padding-left:12px;min-height:44px}.card-caption>span{font-size:12px;font-weight:500;overflow-wrap:anywhere;line-height:1.4;padding:8px 0}.card-caption .icon{min-width:35px;width:35px}.practice-note{border:1px solid #f896402b;background:#f896400a;padding:10px 13px;color:#ddb28e;font-size:11px;line-height:1.6;border-radius:8px;margin-bottom:22px}.empty{padding:55px 15px;text-align:center;color:var(--muted)}.empty>svg{color:var(--orange);margin-bottom:20px}.empty h2{color:#f4eedd;margin-bottom:12px}.empty p{font-size:13px}.dock{position:fixed;z-index:10;left:50%;bottom:0;transform:translate(-50%);width:100%;max-width:550px;background:#211827f5;border:1px solid #58425e99;border-bottom:0;backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);border-radius:20px 20px 0 0;padding:11px 20px max(3px,env(safe-area-inset-bottom));box-shadow:0 -12px 50px #09040e66}.dock-status{display:flex;align-items:center;justify-content:center;gap:8px;font-size:11px;color:#c8b6ce;min-height:32px;margin:0 0 7px}.dock-status .icon{position:absolute;right:15px;min-height:32px;min-width:32px}.live-dot,.dim-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;background:#bca7c5}.live-dot{background:#86c995;box-shadow:0 0 8px #86c99555}.dock .subtle{margin:4px 0;text-align:center}.toast{position:fixed;z-index:50;top:15px;left:50%;transform:translate(-50%);width:calc(100% - 32px);max-width:460px;background:#49304f;color:#fff4e9;box-shadow:0 8px 40px #0008;border:1px solid #9f7aa466;border-radius:12px;padding:12px 8px 12px 17px;display:flex;align-items:center;gap:10px;font-size:12px;line-height:1.5}.toast .icon{margin-left:auto}.modal{width:calc(100% - 24px);max-width:480px;max-height:90svh;padding:0;border:1px solid #654b6c;border-radius:19px;background:#211827;color:#f4eedd;box-shadow:0 25px 100px #0009}.modal::backdrop{background:#08040cd9;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.modal-body{padding:19px 21px 24px}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:-3px -8px 20px 0}.modal-header h2{font-size:25px}.modal p{font-size:13px;color:#beacc5}.modal .entry .eyebrow{font-size:10px}.modal .entry h1{font-size:29px}.modal.wide{max-width:650px}.year-list{display:flex;flex-direction:column;gap:10px;margin-bottom:20px}.year-list button{padding:16px;border:1px solid var(--border);justify-content:space-between;text-align:left}.year-list small{display:block;color:var(--muted);font-size:11px;margin-top:6px}.year-list .selected{border-color:#f8964077;background:#f8964009}.viewer{position:relative;touch-action:pan-y}.viewer .photo{aspect-ratio:auto;height:min(51svh,580px);background:#130d19;border-radius:10px}.viewer .photo img{object-fit:contain}.viewer-prev,.viewer-next{position:absolute;top:45%;background:#130d19c9;border:1px solid #ffffff25;border-radius:50%;box-shadow:0 3px 20px #0006}.viewer-prev{left:7px}.viewer-next{right:7px}.viewer-caption{display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:11px;padding:5px 0}.quick-votes{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:15px}.quick-votes button{border:1px solid var(--border);background:#ffffff04;padding:10px 7px;font-size:11px}.quick-votes button.selected{border-color:#f89640;color:var(--orange)}.quick-votes small{opacity:.6}.ballot-time{padding:11px;background:#ffffff05;border-radius:8px;font-size:12px;color:#d9b3e1;margin-bottom:18px;text-align:center}.search-box{position:relative;margin-bottom:24px}.search-box svg{position:absolute;top:16px;left:13px;color:var(--muted)}.search-box input{padding-left:40px;font-weight:400}.ballot-slot{margin-bottom:22px}.slot-heading{display:flex;align-items:center;gap:10px;margin-bottom:10px;font-size:13px}.rank{border-radius:50%;height:28px;width:28px;display:grid;place-items:center;background:#f896401a;color:var(--orange);font-weight:700;font-size:12px}.score{margin-left:auto;font-size:11px;color:#b7a2c0}.worst .rank{color:#ec9fa9;background:#ed829522}.chosen-costume{display:flex;align-items:center;gap:12px;margin-bottom:9px;background:#ffffff04;border-radius:9px;padding:7px;font-size:13px}.chosen-costume .photo{height:55px;width:43px;flex-shrink:0;border-radius:5px}.chosen-costume>span{flex:1}.chosen-costume .missing-photo span{display:none}.saved-note{display:flex;align-items:center;justify-content:center;gap:7px;color:#97d2a6!important}@media(min-width:700px){.gallery-header{padding:25px 35px}.gallery-main{padding:40px 35px 220px}.costume-grid{gap:24px}.card-caption{padding-left:17px;min-height:52px}.card-caption>span{font-size:15px}.columns-2 .photo{aspect-ratio:4/5}.welcome{padding-top:40px}.welcome-logo{width:215px;height:215px}.dock{bottom:15px;border-bottom:1px solid #58425e99;border-radius:18px;padding-bottom:5px}.gallery-title{margin-bottom:32px}}@media(max-width:400px){.gallery-header{padding:18px}.gallery-main{padding-left:16px;padding-right:16px}.gallery-title{gap:8px}.gallery-title h1{font-size:29px}.grid-toggle button{min-width:28px;padding:5px}.costume-grid{gap:10px}.columns-3 .card-caption{padding-left:7px}.columns-3 .card-caption>span{font-size:10px}.columns-3 .card-caption .icon{min-width:27px;width:27px;padding:5px}.dock{padding-left:15px;padding-right:15px}.modal-body{padding:16px}.welcome h1{font-size:47px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;scroll-behavior:auto!important;transition:none!important}}.welcome-logo{width:min(100%,320px);height:auto;margin-bottom:35px}.small-logo{width:240px;height:auto}.gallery-main{position:relative}.choice-trigger{width:100%;justify-content:space-between;border:1px solid var(--border);background:#ffffff07;color:#cbbbd1;padding:13px 15px;min-height:50px;font-size:13px;text-align:left}.choice-trigger:hover:not(:disabled){border-color:#f8964060;background:#f8964008}.picker-list{display:flex;flex-direction:column;gap:8px}.picker-option{width:100%;justify-content:flex-start;gap:12px;text-align:left;padding:8px;border:1px solid var(--border);background:#ffffff03;min-height:76px}.picker-option .photo{width:47px;height:62px;border-radius:6px;flex-shrink:0}.picker-option>span{flex:1;font-size:13px;line-height:1.5}.picker-option>span small{display:block;color:var(--muted);font-size:10px;margin-top:3px}.picker-option>svg{color:var(--orange);flex-shrink:0;margin-right:3px}.picker-option.selected{border-color:#f8964077;background:#f896400a}.picker-empty{padding:20px 5px;text-align:center}.costume-label{margin-top:20px}.entry-page{padding-bottom:calc(72px + env(safe-area-inset-bottom,0px))}.header-actions{display:flex;align-items:center;gap:8px}.header-edit{border:1px solid var(--border);font-size:11px;min-height:36px;padding:6px 10px;white-space:nowrap}.dock{padding-bottom:max(15px,env(safe-area-inset-bottom))}@media(max-width:359px){.header-edit>span{display:none}.header-edit{min-width:36px;padding:7px}}.gallery-party-logo{display:block;width:min(100%,440px);height:auto;margin:0 auto 30px}.year-list button>span{min-width:0;flex:1;line-height:1.5;overflow-wrap:anywhere}.year-list button>svg{flex-shrink:0}.entry .eyebrow{line-height:1.7;letter-spacing:1.8px}.gallery-title>div:first-child{min-width:0}.admin-page{max-width:1000px;margin:0 auto;padding:30px 24px 60px}.admin-header,.admin-toolbar,.admin-section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.admin-header h1{margin-bottom:0}.admin-header .eyebrow{margin-bottom:10px}.admin-toolbar{margin:30px 0 20px}.admin-toolbar select{max-width:600px}.admin-tabs{display:flex;gap:8px;border-bottom:1px solid var(--border);margin-bottom:28px;padding-bottom:10px}.admin-tabs button{padding:10px 18px;color:var(--muted)}.admin-tabs button.active{background:#f896401a;color:var(--orange)}.admin-section-heading{margin-bottom:18px}.admin-section-heading>span{font-size:12px;color:var(--muted)}.admin-section-heading small{font:inherit;color:var(--muted)}.admin-table-scroll{overflow-x:auto;border:1px solid var(--border);border-radius:12px}.admin-page table{width:100%;border-collapse:collapse;text-align:right;font-size:13px;white-space:nowrap}.admin-page th,.admin-page td{padding:14px 12px;border-bottom:1px solid var(--border)}.admin-page thead th{color:var(--muted);font-size:11px}.admin-page th:first-child{text-align:left;white-space:normal;min-width:180px}.admin-page tbody th{font-weight:500}.admin-page tbody tr:last-child>*{border-bottom:0}.admin-page tbody tr:nth-child(odd){background:#ffffff03}.admin-search{margin-bottom:20px}.admin-costumes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.admin-costume{padding:9px;border:1px solid var(--border);text-align:left;justify-content:flex-start;background:var(--panel)}.admin-costume img,.admin-photo-empty{width:58px;height:76px;object-fit:cover;border-radius:6px;flex-shrink:0;background:#302338}.admin-costume>span:not(.admin-photo-empty){flex:1;font-size:13px;overflow-wrap:anywhere}.admin-costume small{display:block;color:var(--muted);font-size:10px;margin-top:5px}.admin-costume>svg{flex-shrink:0;margin:0 6px;color:var(--orange)}.admin-schedule{max-width:500px}.admin-schedule .intro{margin-top:15px}.admin-schedule input{margin-bottom:24px}.admin-login label{text-align:left}.admin-login .primary{margin-top:16px}.admin-footer{border-top:1px solid var(--border);margin-top:40px;padding-top:20px;display:flex;justify-content:space-between;gap:15px;font-size:12px;color:var(--muted)}.admin-edit-photo{width:100%;max-height:280px;object-fit:contain;margin-bottom:20px;border-radius:9px;background:#130d19}.modal #admin-photo{margin-bottom:20px;font-size:12px}.modal #admin-name{margin-bottom:20px}.admin-success{color:#b3dfbd;padding:15px;background:#3e7e4626;border:1px solid #6fac6d55;border-radius:9px;font-size:13px}@media(max-width:600px){.admin-page{padding:24px 16px 45px}.admin-header h1{font-size:32px}.admin-header .secondary{font-size:11px;padding:8px 10px}.admin-costumes{grid-template-columns:1fr}.admin-tabs{gap:3px}.admin-tabs button{padding:10px 13px;font-size:13px}.admin-section-heading{align-items:flex-start}.admin-section-heading>span{max-width:110px;text-align:right}.admin-footer{font-size:11px}.admin-page th,.admin-page td{padding:12px 10px}}
