:root{--teal:#0b8c90;--orange:#fd7e00;--navy:#1c2a35;--bg:#fff;--surface:#f3f6f7;--text:#1c2a35;--muted:#55636d;--tap:48px}@media (prefers-color-scheme:dark){:root{--bg:#121a21;--surface:#1c2a35;--text:#eef3f5;--muted:#a9b6bf}}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:18px;line-height:1.5}a{color:inherit}.appHeader{background:var(--navy);color:#fff;justify-content:space-between;align-items:center;min-height:56px;padding:0 8px 0 16px;display:flex}.appHeader .brand{font-weight:700;text-decoration:none}.appHeader .gear{min-width:var(--tap);min-height:var(--tap);justify-content:center;align-items:center;font-size:24px;text-decoration:none;display:flex}.page{margin:0 auto;padding:24px 16px 48px}.narrow{max-width:480px}h1{margin:8px 0 16px;font-size:26px}.authLogo{height:auto;margin:8px auto;display:block}.page.narrow>h1:first-of-type{text-align:center}.form{gap:16px;margin-bottom:24px;display:grid}.form fieldset{border:0;gap:12px;margin:0;padding:0;display:grid}.form legend{margin-bottom:4px;font-size:20px;font-weight:700}.form label{gap:6px;font-weight:600;display:grid}.form label.check{min-height:var(--tap);align-items:center;gap:12px;font-weight:400;display:flex}.form input[type=checkbox]{width:24px;height:24px;accent-color:var(--teal)}.form input:not([type=checkbox]),.form textarea{font:inherit;min-height:var(--tap);border:1px solid var(--muted);background:var(--bg);color:var(--text);border-radius:10px;padding:10px 12px}.form input:focus-visible,.form textarea:focus-visible,button:focus-visible,a:focus-visible{outline:3px solid var(--orange);outline-offset:2px}.hint{color:var(--muted);font-size:15px;font-weight:400}button.primary,button.secondary{font:inherit;cursor:pointer;border-radius:12px;width:100%;min-height:56px;font-weight:700}button.primary{background:var(--teal);color:#fff;border:0}button.primary:disabled{opacity:.6}button.secondary{color:var(--text);border:2px solid var(--muted);background:0 0}.error,.notice{border-radius:10px;margin:0 0 16px;padding:12px 14px}.error{color:#8a1c13;background:#fdecea}.notice{color:#075c5f;background:#e3f4f4}.setupLink{font-weight:700;text-decoration:none;display:block}.links{text-align:center;gap:4px;display:grid}.links a{min-height:var(--tap);color:var(--teal);justify-content:center;align-items:center;font-weight:600;display:inline-flex}@media (prefers-color-scheme:dark){.error{color:#ffd7d2;background:#4a1f1b}.notice{color:#c9f1f1;background:#0f3b3d}.links a{color:#4fc6ca}}.backLink{min-height:var(--tap);color:var(--teal);align-items:center;font-weight:600;text-decoration:none;display:inline-flex}.stack{grid-template-columns:minmax(0,1fr);gap:12px;margin-bottom:16px;display:grid}a.primary,a.secondary{border-radius:12px;justify-content:center;align-items:center;min-height:56px;font-weight:700;text-decoration:none;display:flex}a.primary{background:var(--teal);color:#fff}a.secondary{border:2px solid var(--muted)}button.danger{font:inherit;cursor:pointer;color:#b42318;background:0 0;border:2px solid #b42318;border-radius:12px;width:100%;min-height:56px;font-weight:700}.search{font:inherit;width:100%;min-height:var(--tap);border:1px solid var(--muted);background:var(--bg);color:var(--text);border-radius:10px;padding:10px 12px}.list{background:var(--surface);border-radius:12px;margin-bottom:16px;overflow:hidden}.listHead{color:var(--muted);border-bottom:1px solid #55636d40;justify-content:space-between;padding:6px 14px;font-size:15px;font-weight:700;display:flex}.row{border-bottom:1px solid #55636d26;align-items:center;gap:12px;min-height:64px;padding:8px 14px;text-decoration:none;display:flex}.row:last-child{border-bottom:0}.row .grow{flex:1;min-width:0}.row .grow b,.row .grow small{overflow-wrap:anywhere;display:block}.row small,.muted{color:var(--muted);font-size:15px}.row .amount{white-space:nowrap;font-weight:700}.chevron{color:var(--muted);font-size:22px}.avatar{background:var(--teal);color:#fff;border-radius:50%;flex:none;justify-content:center;align-items:center;width:40px;height:40px;font-size:15px;font-weight:700;display:flex}.star{font:inherit;width:var(--tap);height:var(--tap);color:var(--muted);cursor:pointer;background:0 0;border:0;flex:none;font-size:28px;line-height:1}.star.on{color:#e0a100}.tiles{grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:16px;display:grid}.tile{background:var(--surface);text-align:center;border-radius:12px;padding:10px 8px}.tile b{font-size:20px;display:block}.tile small{color:var(--muted);font-size:13px}.code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:700}.form select{font:inherit;min-height:var(--tap);border:1px solid var(--muted);background:var(--bg);color:var(--text);border-radius:10px;padding:10px 12px}@media (prefers-color-scheme:dark){.backLink{color:#4fc6ca}button.danger{color:#ff8f84;border-color:#ff8f84}}h2{margin:24px 0 10px;font-size:20px}.card{background:var(--surface);border-radius:12px;margin-bottom:12px;padding:14px}.card.form{margin-bottom:12px}.refBox{color:var(--muted);flex-wrap:wrap;gap:6px 14px;margin:4px 0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;display:flex}.refBox .on{color:var(--text);width:100%;font-size:24px;font-weight:700}.lineTop{align-items:center;gap:6px;display:flex}.lineTop input{flex:1;min-width:0}.iconButton{font:inherit;width:var(--tap);height:var(--tap);border:1px solid var(--muted);background:var(--bg);color:var(--text);cursor:pointer;border-radius:10px;flex:none}.grid2,.grid3{gap:8px;display:grid}.grid2{grid-template-columns:1fr 1fr}.grid3{grid-template-columns:1fr 1fr 1fr}.grid2 label,.grid3 label{min-width:0;font-size:15px}.grid2 input,.grid3 input,.grid2 select{width:100%;min-width:0}.toggles{gap:24px;display:flex}.lineTotal{color:var(--teal);margin:0;font-weight:700}.quickAdd{flex-wrap:wrap;gap:8px;display:flex}.quickAdd button{font:inherit;min-height:40px;color:var(--text);cursor:pointer;background:0 0;border:1px solid #e0a100;border-radius:20px;padding:6px 12px;font-size:15px}.qtyBox{font:inherit;width:80px;min-height:var(--tap);border:1px solid var(--muted);background:var(--bg);color:var(--text);text-align:right;border-radius:10px;padding:8px 10px}.breakdown table{border-collapse:collapse;width:100%}.breakdown td{vertical-align:top;border-bottom:1px solid #55636d26;padding:6px 0}.breakdown td small{color:var(--muted);font-size:14px;display:block}.breakdown .money{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;padding-left:12px}.breakdown .sub td{font-weight:600}.breakdown .total td{border-bottom:0;padding-top:10px;font-size:22px;font-weight:800}.saveBar{padding:12px 0 calc(12px + env(safe-area-inset-bottom,0px));background:var(--bg);margin-top:16px;position:sticky;bottom:0}.linkButton{font:inherit;color:var(--teal);cursor:pointer;background:0 0;border:0;justify-self:start;padding:8px 0;font-size:15px;text-decoration:underline}.segmented{border:2px solid var(--teal);border-radius:12px;grid-template-columns:1fr 1fr;display:grid;overflow:hidden}.segmented a{min-height:var(--tap);justify-content:center;align-items:center;font-weight:600;text-decoration:none;display:flex}.segmented a.on{background:var(--teal);color:#fff}.chip{color:#33424c;background:#e6ebee;border-radius:10px;padding:2px 8px;font-size:13px;font-weight:700;display:inline-block}.chip-sent{color:#1e3a8a;background:#dbeafe}.chip-booked,.chip-in_progress,.chip-finished{color:#78350f;background:#fef3c7}.chip-invoiced{color:#4c1d95;background:#ede9fe}.chip-paid{color:#14532d;background:#dcfce7}.chip-lost{color:#7f1d1d;background:#fee2e2}@media (prefers-color-scheme:dark){.lineTotal,.linkButton{color:#4fc6ca}}.form select,.form input:not([type=checkbox]),.form textarea{width:100%;min-width:0;max-width:100%}.form label,.form fieldset{min-width:0}.groupHead{justify-content:space-between;align-items:baseline;margin:12px 0 0;font-size:18px;display:flex}.groupHead h2{margin:0;font-size:18px}.segmented.three{grid-template-columns:1fr 1fr 1fr}.calNav{text-align:center;grid-template-columns:56px 1fr 56px;align-items:center;gap:8px;display:grid}.calDayHead{color:inherit;border-bottom:1px solid #55636d40;justify-content:space-between;padding:10px 14px;font-weight:700;text-decoration:none;display:flex}.calDayHead.today{background:var(--teal);color:#fff}.stageBar{border-radius:3px;flex:none;align-self:stretch;width:6px}.stage-booked{background:#2563eb}.stage-in_progress{background:#e08a00}.stage-finished{background:#2b8a3e}.stage-invoiced{background:#7c3aed}.stage-paid{background:#9aa3ad}.monthGrid{text-align:center;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px;display:grid}.monthGrid>b{color:var(--muted);font-size:13px}.monthDay{background:var(--surface);min-height:56px;color:inherit;border-radius:8px;flex-direction:column;gap:2px;padding:4px 2px;font-size:14px;text-decoration:none;display:flex}.monthDay.other{opacity:.45}.monthDay.today{outline:2px solid var(--teal)}.monthDay i,.legend i{border-radius:3px;height:5px;display:block}.monthDay small{font-size:11px}.legend{flex-wrap:wrap;gap:4px 14px;margin:0;font-size:14px;display:flex}.legend span{align-items:center;gap:6px;display:flex}.legend i{width:18px}.filterChips{flex-wrap:wrap;gap:6px;display:flex}.filterChips a{border:1px solid var(--muted);white-space:nowrap;color:inherit;border-radius:16px;flex:none;padding:6px 12px;font-size:15px;text-decoration:none}.filterChips a.on{background:var(--teal);border-color:var(--teal);color:#fff}.segmented.four{grid-template-columns:repeat(4,1fr)}.amount.good{color:#1d7a3a}@media (prefers-color-scheme:dark){.amount.good{color:#5fd38a}}.form textarea.messageText{min-height:260px}.heldBack{opacity:.4;pointer-events:none}
