:root{--paper:#fffdf8;--cream:#f8f3e8;--linen:#efe5d1;--gold:#b98a35;--gold-dark:#8f6625;--charcoal:#2c2b29;--muted:#756f66;--sage:#6b7d6b;--danger:#a94442;--success:#55765b;--line:rgba(44,43,41,0.14);--shadow:0 24px 70px rgba(87,72,42,0.18)}*{box-sizing:border-box}html{background:var(--cream)}body,html{min-height:100%}body{margin:0;color:var(--charcoal);background:linear-gradient(135deg,rgba(255,253,248,.92),rgba(248,243,232,.92)),url(/wedding-texture.svg);background-size:cover;font-family:Arial,Helvetica,sans-serif}button,input{font:inherit}button{-webkit-tap-highlight-color:transparent}.shell{width:100%;min-height:100svh;display:grid;place-items:center;padding:20px}.shell-centered{text-align:center}.state-panel,.upload-panel{width:min(100%,520px);border:1px solid rgba(185,138,53,.24);border-radius:8px;background:rgba(255,253,248,.94);box-shadow:var(--shadow);padding:22px}.panel-topline{min-height:28px;display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--gold-dark);font-size:.78rem;font-weight:700;letter-spacing:0;text-transform:uppercase}.hero-copy{padding:18px 0 20px}.brand-mark,.drop-icon,.state-icon{display:inline-grid;place-items:center;color:var(--gold-dark);background:#f3ead9;border:1px solid rgba(185,138,53,.28)}.brand-mark{width:42px;height:42px;border-radius:50%}.eyebrow{margin:14px 0 8px;color:var(--sage);font-size:.86rem;font-weight:700}h1{margin:0;font-family:Georgia,Times New Roman,serif;font-size:2rem;font-weight:500;line-height:1.14;letter-spacing:0}.drop-zone{min-height:188px;display:grid;place-items:center;grid-gap:8px;gap:8px;padding:22px;border:1.5px dashed rgba(143,102,37,.48);border-radius:8px;background:#fbf7ef;color:var(--charcoal);text-align:center;cursor:pointer;transition:border-color .16s ease,background .16s ease,transform .16s ease}.drop-zone-active,.drop-zone:focus-visible{outline:3px solid rgba(185,138,53,.18);border-color:var(--gold);background:#fffaf0}.drop-zone:active{transform:scale(.99)}.drop-icon{width:62px;height:62px;border-radius:8px;color:var(--gold-dark)}.drop-zone strong{font-size:1.08rem}.drop-zone span{max-width:260px;color:var(--muted);font-size:.92rem;line-height:1.45}.queue{margin-top:18px}.queue-summary{min-height:28px;display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:.88rem}.file-list{display:grid;grid-gap:10px;gap:10px}.file-row{overflow:hidden;border:1px solid var(--line);border-radius:8px;background:var(--paper)}.file-row-main{min-height:64px;display:grid;grid-template-columns:28px minmax(0,1fr) 38px;align-items:center;grid-gap:10px;gap:10px;padding:10px 10px 8px}.status-dot{width:26px;height:26px;display:grid;place-items:center;color:var(--muted)}.status-uploading svg{animation:spin .9s linear infinite}.status-done{color:var(--success)}.status-error{color:var(--danger)}.file-copy{min-width:0;display:grid;grid-gap:4px;gap:4px}.file-copy span,.file-copy strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-copy strong{font-size:.92rem}.file-copy span{color:var(--muted);font-size:.82rem}.icon-button{width:36px;height:36px;display:grid;place-items:center;border:0;border-radius:8px;color:var(--muted);background:transparent;cursor:pointer}.icon-button:hover{background:#f3ead9;color:var(--gold-dark)}.progress-track{height:5px;background:#ece4d5}.progress-track span{display:block;width:0;height:100%;background:linear-gradient(90deg,var(--sage),var(--gold));transition:width .18s ease}.primary-action{width:100%;min-height:54px;display:inline-flex;align-items:center;justify-content:center;gap:10px;margin-top:18px;border:0;border-radius:8px;color:white;background:#2f3a32;font-weight:800;cursor:pointer;box-shadow:0 12px 30px rgba(47,58,50,.22)}.primary-action:disabled{cursor:not-allowed;color:rgba(255,255,255,.68);background:#9b998f;box-shadow:none}.primary-action svg{flex:0 0 auto}.primary-action:disabled svg{opacity:.85}.primary-action-loading svg:first-child{animation:spin .9s linear infinite}.state-panel{display:grid;justify-items:center;grid-gap:14px;gap:14px;padding:34px 24px}.state-icon{width:54px;height:54px;border-radius:8px;color:var(--danger)}.state-panel h1{font-size:1.7rem}.state-panel p{max-width:320px;margin:0;color:var(--muted);line-height:1.5}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes spin{to{transform:rotate(1turn)}}@media (max-width:430px){.shell{padding:12px;align-items:stretch}.upload-panel{min-height:calc(100svh - 24px);padding:18px}h1{font-size:1.72rem}.drop-zone{min-height:178px}}