:root{--bg:#fbf7ef;--card:#fff;--ink:#2b241b;--muted:#6f675b;--gold:#b7934a;--gold-dark:#8f6f2f;--line:#e7dcc8;--soft:#f4ecdd;--danger:#9b2c2c;--ok:#2f6b3a}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:16px;line-height:1.5}h1,h2,h3{color:#3d3020;margin:0;font-family:Georgia,Times New Roman,serif;font-weight:600}a{color:var(--gold-dark)}button{font:inherit;cursor:pointer}button:disabled{cursor:default;opacity:.6}.shell{flex-direction:column;min-height:100vh;display:flex}.topbar{background:var(--card);border-bottom:1px solid var(--line)}.topbar-inner{flex-wrap:wrap;align-items:center;gap:12px;max-width:960px;margin:0 auto;padding:14px 16px;display:flex}.brand{flex-direction:column;gap:2px;margin-right:auto;display:flex}.brand-word{letter-spacing:4px;color:#5d4824;font-family:Georgia,serif;font-size:20px}.brand-sub{letter-spacing:2px;text-transform:uppercase;color:var(--gold-dark);font-size:11px}.logos{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.logos img{width:auto;height:30px}.top-actions{align-items:center;gap:8px;display:flex}.lang{border:1px solid var(--line);border-radius:999px;display:inline-flex;overflow:hidden}.lang button{color:var(--muted);background:0 0;border:0;padding:4px 10px;font-size:13px}.lang button.on{background:var(--soft);color:var(--ink);font-weight:600}.link-button{color:var(--gold-dark);background:0 0;border:0;padding:4px;font-size:14px;text-decoration:underline}main{flex:1;width:100%;max-width:960px;margin:0 auto;padding:24px 16px 48px}.foot{text-align:center;color:var(--muted);padding:18px 16px 28px;font-size:13px}.auth-card{background:var(--card);border:1px solid var(--line);border-radius:12px;max-width:420px;margin:24px auto;padding:28px 24px}.auth-card h1{margin-bottom:6px;font-size:26px}.auth-card p{color:var(--muted);margin:0 0 18px;font-size:15px}.field{flex-direction:column;gap:6px;margin-bottom:14px;font-size:14px;font-weight:600;display:flex}.field input{font:inherit;background:#fffdf9;border:1px solid #d9ccb4;border-radius:8px;padding:11px 12px;font-weight:400}.field input:focus{border-color:var(--gold);outline:2px solid #b7934a59}.primary{background:var(--gold);color:#fff;letter-spacing:.3px;border:0;border-radius:8px;width:100%;padding:12px 16px;font-weight:700}.primary:hover:not(:disabled){background:var(--gold-dark)}.notice{border-radius:8px;margin-bottom:14px;padding:10px 12px;font-size:14px}.notice.error{color:var(--danger);background:#fbeaea}.notice.ok{color:var(--ok);background:#eaf4ec}.auth-links{text-align:center;margin-top:14px}.greeting{margin-bottom:22px}.greeting h1{font-size:30px}.greeting p{color:var(--muted);margin:4px 0 0}.section{margin-top:26px}.section h2{margin-bottom:12px;font-size:20px}.empty{background:var(--card);border:1px dashed var(--line);color:var(--muted);border-radius:12px;padding:18px}.event{background:var(--card);border:1px solid var(--line);border-radius:12px;margin-bottom:14px;padding:18px}.event-where{color:#3d3020;font-family:Georgia,serif;font-size:20px}.event-what{color:var(--muted);margin-top:2px}.event-meta{color:var(--ink);flex-wrap:wrap;gap:8px 16px;margin-top:10px;font-size:14px;display:flex}.pill{background:var(--soft);color:#5d4824;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:700;display:inline-block}.pill.confirmed{color:var(--ok);background:#e6f2e8}.pill.hold{color:#8a6412;background:#fdf3dc}.services{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;margin-top:14px;display:grid}.service-group{border-top:3px solid var(--gold);background:#fffdf9;border-radius:8px;padding:10px 12px}.service-group.decorations{border-top-color:#7d9a6a}.service-group.boutique{border-top-color:#c27a8e}.service-group strong{font-size:13px;display:block}.service-group span{color:var(--muted);font-size:14px}.appointments{background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden}.appt{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:14px;padding:14px 16px;display:flex}.appt:last-child{border-bottom:0}.appt-when{font-weight:700}.appt-what{color:var(--muted);font-size:14px}.coming{color:var(--muted);margin-top:26px;font-size:14px}.muted{color:var(--muted)}.small{font-size:13px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.button{background:var(--gold);color:#fff;border-radius:8px;padding:9px 14px;font-size:14px;font-weight:700;text-decoration:none;display:inline-block}.button:hover{background:var(--gold-dark)}.button.secondary{background:var(--soft);color:#5d4824}.button.small{padding:6px 12px;font-size:13px}.actions{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;display:grid}.action{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--gold);border-radius:12px;padding:14px 16px}.action strong{font-size:16px;display:block}.action p{margin:6px 0;font-size:14px}.action .button{margin-top:6px}.action.overdue{border-left-color:var(--danger)}.action.overdue strong{color:var(--danger)}.action.ready{border-left-color:#c27a8e}.pill.overdue{color:var(--danger);background:#fbeaea}.progress{gap:12px;margin-top:14px;display:grid}.timeline-head{margin-bottom:6px;font-size:13px;font-weight:700}.timeline ol{flex-wrap:wrap;gap:6px 4px;margin:0;padding:0;list-style:none;display:flex}.timeline li{color:var(--muted);align-items:center;gap:6px;padding-right:10px;font-size:13px;display:flex;position:relative}.timeline li:not(:last-child):after{content:"";background:var(--line);width:14px;height:2px;margin-left:4px}.timeline .dot{border:2px solid var(--line);color:#fff;background:#fff;border-radius:50%;flex:none;justify-content:center;align-items:center;width:18px;height:18px;font-size:11px;font-weight:700;display:inline-flex}.timeline li.done{color:var(--ink)}.timeline li.done .dot{background:var(--ok);border-color:var(--ok)}.timeline li.current{color:var(--ink);font-weight:700}.timeline li.current .dot{border-color:var(--gold);box-shadow:inset 0 0 0 3px #fff, inset 0 0 0 9px var(--gold)}.timeline.decorations li.current .dot{border-color:#7d9a6a;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 9px #7d9a6a}.timeline.boutique li.current .dot{border-color:#c27a8e;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 9px #c27a8e}.contract{background:var(--card);border:1px solid var(--line);border-top:4px solid var(--gold);border-radius:12px;margin-bottom:14px;padding:18px}.contract.decorations{border-top-color:#7d9a6a}.contract.boutique{border-top-color:#c27a8e}.contract-head{flex-wrap:wrap;justify-content:space-between;gap:12px;display:flex}.contract-business{letter-spacing:1px;text-transform:uppercase;color:var(--gold-dark);font-size:12px;font-weight:700}.contract h3{font-size:19px}.contract h4{margin:16px 0 6px;font-family:inherit;font-size:14px}.contract-status{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.totals{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin:16px 0 0;display:grid}.totals div{border:1px solid var(--line);background:#fffdf9;border-radius:8px;padding:10px 12px}.totals dt{color:var(--muted);font-size:12px}.totals dd{margin:2px 0 0;font-size:18px;font-weight:700}.totals .owed dd{color:#8a6412}.totals .settled dd{color:var(--ok);font-size:16px}.lines{margin-top:12px;font-size:14px}.lines summary{cursor:pointer;color:var(--gold-dark);font-weight:600}.lines ul,.payments{margin:8px 0 0;padding:0;list-style:none}.lines li{border-bottom:1px solid var(--soft);justify-content:space-between;gap:12px;padding:6px 0;display:flex}.payments li{border-bottom:1px solid var(--soft);grid-template-columns:minmax(130px,1fr) minmax(90px,auto) 1.4fr;align-items:center;gap:6px 12px;padding:8px 0;font-size:14px;display:grid}.payments li:last-child,.lines li:last-child{border-bottom:0}.pay-amount{font-weight:700}.pay-meta{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;display:flex}.how-to-pay{background:var(--soft);border-radius:12px;padding:16px 18px}.how-to-pay h3{margin-bottom:6px;font-size:17px}.how-to-pay p{margin:4px 0;font-size:14px}@media (width<=560px){.logos img{height:22px}.greeting h1{font-size:24px}.event-where{font-size:18px}.timeline ol{flex-direction:column;gap:4px}.timeline li:after{display:none}.contract-status{flex-flow:wrap;align-items:flex-start}.totals{grid-template-columns:1fr 1fr}.payments li{grid-template-columns:1fr auto}.pay-meta{grid-column:1/-1;justify-content:flex-start}}
