:root{--bride:#e4557f;--bride-soft:#fde7ee;--bride-dark:#b83c62;--groom:#3b74d6;--groom-soft:#e3edfb;--groom-dark:#2a56a3;--ink:#1f2430;--muted:#6b7280;--line:#e5e7eb;--bg:#f7f8fb;--card:#fff}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.app{max-width:1180px;margin:0 auto;padding:24px 20px 64px}.app__header{text-align:center;margin-bottom:24px}.app__header h1{letter-spacing:-.02em;margin:0;font-size:2rem}.app__title-accent{color:var(--bride)}.app__subtitle{color:var(--muted);margin:6px 0 0}.app__empty{text-align:center;color:var(--muted);padding:48px 0}.btn{border:1px solid var(--line);color:var(--ink);cursor:pointer;background:#fff;border-radius:8px;padding:8px 14px;font-size:.9rem;font-weight:600;transition:all .15s}.btn:disabled{opacity:.55;cursor:not-allowed}.btn--primary{background:var(--ink);border-color:var(--ink);color:#fff}.btn--ghost{background:0 0}.btn--bride{border-color:var(--bride);color:var(--bride-dark)}.btn--bride:hover:not(:disabled){background:var(--bride-soft)}.btn--bride.is-active{background:var(--bride);color:#fff}.btn--groom{border-color:var(--groom);color:var(--groom-dark)}.btn--groom:hover:not(:disabled){background:var(--groom-soft)}.btn--groom.is-active{background:var(--groom);color:#fff}.project-bar{background:var(--card);border:1px solid var(--line);border-radius:12px;margin-bottom:16px;padding:14px 16px}.project-bar__row{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.project-bar__picker{color:var(--muted);flex-direction:column;flex:1;gap:4px;min-width:220px;font-size:.8rem;display:flex}.project-bar__picker select,.project-form input,.drive-toolbar input{border:1px solid var(--line);color:var(--ink);background:#fff;border-radius:8px;padding:9px 12px;font-size:.95rem}.project-form{border-top:1px dashed var(--line);grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin-top:14px;padding-top:14px;display:grid}.drive-toolbar{gap:10px;margin-bottom:20px;display:flex}.drive-toolbar input{flex:1}.alert{border-radius:8px;margin-bottom:16px;padding:10px 14px;font-size:.9rem}.alert--error{color:#9b1c1c;background:#fde8e8;border:1px solid #f5b5b5}.selection-summary{grid-template-columns:1fr 1fr;gap:16px;margin-bottom:28px;display:grid}.panel{border:1px solid var(--line);background:var(--card);border-radius:12px;overflow:hidden}.panel--bride{border-top:4px solid var(--bride)}.panel--groom{border-top:4px solid var(--groom)}.panel__header{justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.panel__header h3{margin:0;font-size:1rem}.panel__count{color:#fff;border-radius:999px;justify-content:center;align-items:center;min-width:26px;height:26px;padding:0 8px;font-size:.8rem;font-weight:700;display:inline-flex}.panel--bride .panel__count{background:var(--bride)}.panel--groom .panel__count{background:var(--groom)}.panel__empty{color:var(--muted);margin:0;padding:0 16px 16px;font-size:.85rem}.panel__list{flex-direction:column;gap:6px;max-height:240px;margin:0;padding:0 10px 10px;list-style:none;display:flex;overflow-y:auto}.panel__item{background:#fafbfc;border-radius:8px;align-items:center;gap:10px;padding:6px 8px;display:flex}.panel__item img{object-fit:cover;border-radius:6px;width:40px;height:40px}.panel__item-placeholder{background:#eef0f3;border-radius:6px;justify-content:center;align-items:center;width:40px;height:40px;display:inline-flex}.panel__item-name{white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;overflow:hidden}.gallery{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;display:grid}.gallery__hint{text-align:center;color:var(--muted);padding:40px 0}.image-card{background:var(--card);border:1px solid var(--line);border-radius:12px;flex-direction:column;margin:0;display:flex;overflow:hidden}.image-card__media{aspect-ratio:4/3;background:#eef0f3;position:relative}.image-card__media img{object-fit:cover;width:100%;height:100%;display:block}.image-card__badges{gap:6px;display:flex;position:absolute;top:8px;left:8px}.badge{color:#fff;border-radius:999px;padding:3px 8px;font-size:.68rem;font-weight:700}.badge--bride{background:var(--bride)}.badge--groom{background:var(--groom)}.image-card__name{white-space:nowrap;text-overflow:ellipsis;padding:10px 12px 4px;font-size:.82rem;overflow:hidden}.image-card__actions{gap:8px;padding:8px 12px 12px;display:flex}.image-card__actions .btn{flex:1}@media (width<=640px){.selection-summary{grid-template-columns:1fr}}
