:root{--ink: #1c2422;--ink-soft: #3d4a46;--paper: #f3efe6;--paper-deep: #e4ddd0;--sea: #1a3a3a;--sea-mid: #2a5554;--copper: #b85c38;--copper-deep: #8f4024;--fog: rgba(28, 36, 34, .08);--ok: #2f6b4f;--danger: #9b2c2c;--radius: 14px;--shadow: 0 18px 40px rgba(26, 58, 58, .12);font-family:"Source Sans 3",system-ui,sans-serif;color:var(--ink);background:var(--paper);line-height:1.45}*{box-sizing:border-box}html,body,#app{min-height:100%}body{margin:0;background:radial-gradient(1200px 600px at 10% -10%,rgba(42,85,84,.18),transparent 55%),radial-gradient(900px 500px at 100% 0%,rgba(184,92,56,.14),transparent 50%),linear-gradient(180deg,#f7f3eb 0%,var(--paper) 40%,#ebe4d6 100%);color:var(--ink)}button,input,textarea,select{font:inherit}a{color:inherit;text-decoration:none}.app-shell{width:min(640px,100%);margin:0 auto;min-height:100dvh;padding:calc(16px + env(safe-area-inset-top)) 16px calc(28px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:18px}.brand-bar{display:flex;align-items:center;justify-content:space-between;gap:12px}.brand-actions{display:flex;align-items:center;gap:10px}.user-chip{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.85rem;font-weight:600;color:var(--sea)}.export-error{margin:0 0 10px;padding:10px 12px;border-radius:12px;background:#9b2c2c1a;color:var(--danger);font-size:.9rem}.btn-small{padding:8px 12px;font-size:.85rem}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;gap:10px}.auth-tabs-3{grid-template-columns:repeat(3,minmax(0,1fr))}.auth-tabs-3 .choice{font-size:.9rem;padding:12px 8px}.brand{font-family:Fraunces,Georgia,serif;font-weight:700;font-size:clamp(1.6rem,5vw,2rem);letter-spacing:-.02em;color:var(--sea);line-height:1.1}.brand span{display:block;font-family:"Source Sans 3",sans-serif;font-size:.78rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--copper);margin-top:4px}.home-hero{display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px;padding:8px 0 4px}.home-logo{width:min(220px,48vw);height:auto;display:block;object-fit:contain}.featured-photo{display:block;width:min(100%,420px);margin-top:8px;text-decoration:none;color:inherit;border-radius:var(--radius);overflow:hidden;border:1px solid rgba(26,58,58,.1);background:#ffffff73;transition:transform .18s ease,box-shadow .18s ease}.featured-photo:hover{transform:translateY(-2px);box-shadow:0 10px 24px #1a3a3a1f}.featured-photo-img{display:block;width:100%;aspect-ratio:4 / 3;object-fit:cover;background:#1a3a3a0f}.featured-photo-caption{display:flex;flex-direction:column;gap:2px;padding:10px 12px 12px;text-align:left}.featured-photo-caption strong{font-family:Fraunces,Georgia,serif;font-size:1.05rem;font-weight:600}.panel{background:#fffcf6d1;border:1px solid rgba(26,58,58,.08);border-radius:calc(var(--radius) + 4px);box-shadow:var(--shadow);padding:18px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}h1,h2{font-family:Fraunces,Georgia,serif;margin:0 0 8px;letter-spacing:-.02em}.lead{margin:0;color:var(--ink-soft)}.stack{display:flex;flex-direction:column;gap:14px}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.field label{display:block;font-size:.85rem;font-weight:700;margin-bottom:6px;color:var(--sea)}.stats-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.stat{background:#fffdf8;border:1px solid rgba(26,58,58,.08);border-radius:12px;padding:12px 14px}.stat-label{display:block;font-size:.75rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:4px}.stat strong{font-family:Fraunces,Georgia,serif;font-size:1.15rem;color:var(--sea)}.field input,.field textarea,.field select{width:100%;border:1px solid rgba(26,58,58,.18);background:#fffdf8;border-radius:12px;padding:14px;color:var(--ink)}.field textarea{min-height:96px;resize:vertical}.choice-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.choice{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid rgba(26,58,58,.16);background:#fffdf8;border-radius:12px;padding:14px 12px;text-align:left;font-weight:600;color:var(--ink);transition:transform .15s ease,border-color .15s ease,background .15s ease}.choice.active{border-color:var(--sea);background:linear-gradient(180deg,#e8f1ef,#dceae8);color:var(--sea);box-shadow:inset 0 0 0 1px #1a3a3a14}.choice:active{transform:scale(.98)}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;border-radius:999px;padding:14px 18px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:transform .15s ease,opacity .15s ease}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:linear-gradient(180deg,var(--sea-mid),var(--sea));color:#f7f3eb}.btn-secondary{background:transparent;color:var(--sea);border:1px solid rgba(26,58,58,.25)}.btn-danger{background:transparent;color:var(--danger);border:1px solid rgba(155,44,44,.35)}.btn-block{width:100%}.actions{display:flex;flex-direction:column;gap:10px;margin-top:6px}.project-list{display:flex;flex-direction:column;gap:12px}.project-card{display:grid;grid-template-columns:72px 1fr;gap:12px;align-items:center;padding:12px;border-radius:16px;background:#fffdf8;border:1px solid rgba(26,58,58,.08);color:inherit;text-decoration:none}.project-card-deleted{grid-template-columns:1fr;opacity:.92;background:#1a3a3a0a}.project-card-main{display:grid;grid-template-columns:72px 1fr;gap:12px;align-items:center;color:inherit;text-decoration:none}.trash-section{margin-top:8px;padding-top:20px;border-top:1px solid rgba(26,58,58,.12);display:flex;flex-direction:column;gap:12px}.trash-heading{font-family:Fraunces,Georgia,serif;font-size:1.25rem;margin:0}.trash-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.step-block-deleted{opacity:.92;background:#1a3a3a0a}.badge-deleted{color:#7a2e1f;background:#b85c382e}.label-chip-row{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 0}.label-chip-row.compact{margin-top:6px}.label-chip{display:inline-flex;align-items:center;font-size:.75rem;font-weight:700;letter-spacing:.02em;padding:4px 9px;border-radius:999px;line-height:1.2}.label-picker .label-choice-grid{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.label-choice{display:inline-flex;align-items:center;gap:6px;border:1px solid rgba(26,58,58,.16);background:#fffdf8;color:var(--ink);border-radius:999px;padding:7px 11px;font-size:.88rem;font-weight:600;cursor:pointer}.label-choice.active{border-color:transparent}.label-dot{width:10px;height:10px;border-radius:50%;flex:0 0 auto}.selected-labels{display:flex;flex-direction:column;gap:10px;margin-bottom:12px}.selected-label-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;align-items:center}.color-swatches{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.color-swatches.compact{flex:1 1 auto}.color-swatch{width:22px;height:22px;border-radius:50%;border:2px solid rgba(255,253,248,.9);box-shadow:0 0 0 1px #1a3a3a40;padding:0;cursor:pointer}.color-swatch.active{box-shadow:0 0 0 2px var(--sea)}.color-custom{width:26px;height:26px;border-radius:50%;overflow:hidden;border:1px dashed rgba(26,58,58,.35);display:grid;place-items:center;cursor:pointer;background:#fffdf8}.color-custom input{width:34px;height:34px;border:0;padding:0;background:transparent;cursor:pointer}.new-label-row{display:grid;grid-template-columns:1fr;gap:10px}@media(min-width:520px){.new-label-row{grid-template-columns:1fr auto;align-items:center}.new-label-row .btn{grid-column:2;grid-row:1 / span 2}.selected-label-row{grid-template-columns:auto 1fr auto}}.deleted-banner{margin:0;padding:12px 14px;border-radius:12px;background:#b85c381f;color:var(--copper-deep);font-size:.95rem}.thumb{width:72px;height:72px;border-radius:12px;object-fit:cover;background:linear-gradient(135deg,var(--paper-deep),#d7e3e1)}.thumb.placeholder{display:grid;place-items:center;color:var(--sea-mid);font-size:.75rem;font-weight:700;text-align:center;padding:6px}.meta-title{font-family:Fraunces,Georgia,serif;font-size:1.15rem;margin:0 0 4px}.badge{display:inline-block;font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--copper-deep);background:#b85c381f;padding:4px 8px;border-radius:999px}.badge+.badge{margin-left:6px}.badge-soft{color:var(--sea);background:#1a3a3a14}.step-section{display:flex;flex-direction:column;gap:16px;padding-top:8px;border-top:1px solid rgba(26,58,58,.1)}.step-section-head h2{margin-bottom:4px}.step-block{display:flex;flex-direction:column;gap:12px;padding:14px 0;border-top:1px dashed rgba(26,58,58,.14)}.step-block:first-of-type{border-top:0;padding-top:0}.step-block-head h3{font-family:Fraunces,Georgia,serif;font-size:1.2rem;margin:8px 0 4px}.step-photos-title{margin:0;font-size:.95rem}.step-actions{display:flex;flex-wrap:wrap;gap:8px}.empty-step{color:var(--ink-soft);font-size:.95rem}.totals-row .stat{background:linear-gradient(180deg,#e8f1ef,#dceae8)}.muted{color:var(--ink-soft);font-size:.9rem}.error{background:#9b2c2c14;color:var(--danger);border:1px solid rgba(155,44,44,.2);border-radius:12px;padding:12px 14px}.success{background:#2f6b4f1a;color:var(--ok);border:1px solid rgba(47,107,79,.2);border-radius:12px;padding:12px 14px}.photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.photo-grid img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px;background:var(--paper-deep)}.file-drop{border:1.5px dashed rgba(26,58,58,.28);border-radius:16px;padding:22px 16px;text-align:center;background:#fffdf8b3;position:relative}.file-drop input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.file-drop strong{display:block;margin-bottom:4px;color:var(--sea)}.photo-upload-picker{border:1.5px dashed rgba(26,58,58,.28);border-radius:16px;padding:16px;background:#fffdf8b3}.photo-upload-picker.disabled{opacity:.7}.photo-upload-title{margin:0;font-weight:700;color:var(--sea);text-align:center}.photo-upload-hint{margin:4px 0 12px;text-align:center;font-size:.9rem}.photo-source-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.photo-source{display:flex;flex-direction:column;gap:4px;align-items:flex-start;text-align:left;padding:14px 12px;border-radius:14px;border:1px solid rgba(26,58,58,.14);background:#fffdf8;color:var(--ink);cursor:pointer}.photo-source strong{font-size:.95rem;color:var(--sea)}.photo-source span{font-size:.8rem;color:var(--ink-soft)}.photo-source:disabled{cursor:not-allowed;opacity:.6}.photo-source:not(:disabled):active{border-color:#b85c3873;background:#b85c380f}.photo-upload-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.thumb-chip-static{pointer-events:none;cursor:default;opacity:.9}.empty{text-align:center;padding:28px 12px;color:var(--ink-soft)}.status-dot{width:10px;height:10px;border-radius:50%;background:#b0b0b0;display:inline-block}.status-dot.ok{background:var(--ok);box-shadow:0 0 0 4px #2f6b4f26}.photo-tile{position:relative}.photo-tile.cover .photo-thumb{box-shadow:0 0 0 2px var(--copper);border-radius:10px}.photo-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;padding:0;margin:0;background:transparent;border-radius:10px;overflow:hidden;cursor:pointer;display:block;width:100%}.photo-thumb img{width:100%;aspect-ratio:1;object-fit:cover;display:block;background:var(--paper-deep)}.cover-badge{position:absolute;top:6px;left:6px;z-index:2;border-radius:999px;padding:4px 8px;font-size:.72rem;font-weight:700;color:#fffdf8;background:#8f4024eb;pointer-events:none}.photo-delete{-webkit-appearance:none;-moz-appearance:none;appearance:none;position:absolute;top:6px;right:6px;z-index:2;width:30px;height:30px;border:0;border-radius:999px;padding:0;font-size:1.25rem;line-height:1;font-weight:700;cursor:pointer;color:#fffdf8;background:#9b2c2ce6;box-shadow:0 4px 12px #0003}.photo-delete:disabled{opacity:.55;cursor:wait}.cover-chip{-webkit-appearance:none;-moz-appearance:none;appearance:none;position:absolute;right:6px;bottom:6px;z-index:2;border:0;border-radius:999px;padding:5px 8px;font-size:.72rem;font-weight:700;cursor:pointer;color:var(--sea);background:#fffcf6f2;box-shadow:0 6px 16px #0000002e}.cover-chip:disabled{opacity:.55;cursor:wait}.thumb-chip,.lightbox-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;display:inline-flex;align-items:center;gap:6px;font-weight:700;cursor:pointer;color:var(--sea);background:#fffcf6f2;box-shadow:0 6px 16px #0000002e}.thumb-chip:disabled,.lightbox-thumb:disabled{opacity:.6;cursor:wait}.thumb-chip.done,.lightbox-thumb.done{color:var(--copper-deep);background:#b85c3829;cursor:default;opacity:1}.thumb-icon{width:1em;height:1em;display:block;flex-shrink:0}.thumb-chip{position:absolute;left:6px;bottom:6px;border-radius:999px;padding:5px 9px;font-size:.8rem}.lightbox-thumb{position:static;border-radius:999px;padding:12px 18px;font-size:1.05rem}.lightbox-actions{position:absolute;left:50%;bottom:calc(18px + env(safe-area-inset-bottom));transform:translate(-50%);display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:center;max-width:calc(100% - 24px);z-index:1001}.lightbox-action{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;border-radius:999px;padding:12px 16px;font-weight:700;cursor:pointer;color:var(--sea);background:#f7f3eb;box-shadow:0 8px 24px #00000040}.lightbox-action:disabled{opacity:.6;cursor:wait}.lightbox-action-static{pointer-events:none;background:#b85c3838;color:var(--copper-deep)}.lightbox-action-danger{color:#fffdf8;background:var(--danger)}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#0c1211eb;display:flex;align-items:center;justify-content:center;padding:calc(16px + env(safe-area-inset-top)) 16px calc(16px + env(safe-area-inset-bottom))}.lightbox-close{position:absolute;top:calc(12px + env(safe-area-inset-top));right:12px;z-index:1001;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;border-radius:999px;padding:12px 18px;font-weight:700;background:#f7f3eb;color:var(--sea);cursor:pointer;box-shadow:0 8px 24px #00000040}.lightbox-image{max-width:100%;max-height:calc(100dvh - 96px);width:auto;height:auto;object-fit:contain;border-radius:8px}@media(min-width:640px){.actions{flex-direction:row}.actions .btn{flex:1}}
