@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff")}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{color-scheme:light;--bg: #f1f4f9;--bg-dot: rgba(35, 66, 124, .07);--surface: #ffffff;--surface-2: #f6f8fc;--surface-3: #e9eef6;--line: #dbe2ee;--line-strong: #c2cddf;--text: #16202e;--text-2: #45546b;--text-3: #5f6e86;--accent: #2a5bd0;--accent-hover: #2149b0;--accent-text: #2a5bd0;--accent-soft: #e8eefc;--on-accent: #ffffff;--mint: #34c3a1;--mint-text: #0b7a64;--mint-soft: #e1f5ef;--amber-text: #8a5800;--amber-soft: #fdf1d8;--danger: #c23a32;--danger-text: #b3302a;--danger-soft: #fdecea;--ring: rgba(42, 91, 208, .32);--scrim: rgba(8, 16, 30, .5);--shadow-pop: 0 12px 36px rgba(15, 30, 60, .16), 0 2px 6px rgba(15, 30, 60, .08);--brand-gradient: linear-gradient(90deg, #2a5bd0 0%, #34c3a1 100%);--radius-sm: 8px;--radius: 10px;--radius-lg: 14px;--font-sans: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--safe-top: env(safe-area-inset-top, 0px);--safe-bot: env(safe-area-inset-bottom, 0px)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--bg: #0a101a;--bg-dot: rgba(130, 165, 235, .07);--surface: #111a29;--surface-2: #0d1522;--surface-3: #1a2639;--line: #212f46;--line-strong: #30425f;--text: #e8edf6;--text-2: #aab6ca;--text-3: #8896ae;--accent: #3b6be0;--accent-hover: #4a79ee;--accent-text: #7ea2ff;--accent-soft: #16264a;--on-accent: #ffffff;--mint: #4fd3b3;--mint-text: #5fdcbc;--mint-soft: #0f2d2c;--amber-text: #f0bf5e;--amber-soft: #33280f;--danger: #e0594f;--danger-text: #ff8f86;--danger-soft: #351a1b;--ring: rgba(126, 162, 255, .4);--scrim: rgba(2, 6, 14, .66);--shadow-pop: 0 12px 36px rgba(0, 0, 0, .5), 0 2px 6px rgba(0, 0, 0, .3)}}:root[data-theme=dark]{color-scheme:dark;--bg: #0a101a;--bg-dot: rgba(130, 165, 235, .07);--surface: #111a29;--surface-2: #0d1522;--surface-3: #1a2639;--line: #212f46;--line-strong: #30425f;--text: #e8edf6;--text-2: #aab6ca;--text-3: #8896ae;--accent: #3b6be0;--accent-hover: #4a79ee;--accent-text: #7ea2ff;--accent-soft: #16264a;--on-accent: #ffffff;--mint: #4fd3b3;--mint-text: #5fdcbc;--mint-soft: #0f2d2c;--amber-text: #f0bf5e;--amber-soft: #33280f;--danger: #e0594f;--danger-text: #ff8f86;--danger-soft: #351a1b;--ring: rgba(126, 162, 255, .4);--scrim: rgba(2, 6, 14, .66);--shadow-pop: 0 12px 36px rgba(0, 0, 0, .5), 0 2px 6px rgba(0, 0, 0, .3)}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;overscroll-behavior:none}#root{display:flex;flex-direction:column}button{font-family:inherit}img{max-width:100%}a{color:var(--accent-text)}:focus-visible{outline:2px solid var(--accent-text);outline-offset:2px}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:500;letter-spacing:-.01em}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.brand{display:inline-flex;align-items:center;line-height:0}.brand img{display:block;width:auto}.brand-compact img{height:34px}.brand-in-side img{height:40px}.brand-full img{height:96px}.brand .logo-dark{display:none}:root[data-theme=dark] .brand:not(.brand-fixed) .logo-light{display:none}:root[data-theme=dark] .brand:not(.brand-fixed) .logo-dark{display:block}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .brand:not(.brand-fixed) .logo-light{display:none}:root:not([data-theme=light]) .brand:not(.brand-fixed) .logo-dark{display:block}}.brand-fixed .logo-light{display:none}.brand-fixed .logo-dark{display:block}.app-shell{height:100%;display:flex;flex-direction:column;min-height:0}.app-header{flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:calc(var(--safe-top) + .55rem) 1rem .55rem;background:var(--surface);border-bottom:1px solid var(--line);z-index:100}.app-header-actions{display:flex;align-items:center;gap:.25rem}.side{order:3;flex-shrink:0;background:var(--surface);border-top:1px solid var(--line);padding-bottom:var(--safe-bot)}.side-brand,.side-foot{display:none}.nav{display:flex}.nav-btn{flex:1;min-width:0;min-height:58px;background:none;border:none;color:var(--text-3);cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:.7rem;font-weight:500;-webkit-tap-highlight-color:transparent;transition:color .15s}.nav-btn .nav-ico{display:grid;place-items:center;width:44px;height:26px;border-radius:13px;transition:background .15s,color .15s}.nav-btn:hover{color:var(--text)}.nav-btn[aria-current=page]{color:var(--accent-text)}.nav-btn[aria-current=page] .nav-ico{background:var(--accent-soft)}.app-body{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:1.1rem 1rem 2rem;-webkit-overflow-scrolling:touch;background-image:radial-gradient(var(--bg-dot) 1px,transparent 1px);background-size:22px 22px}.app-content{max-width:720px;margin:0 auto}.app-content.wide{max-width:1040px}.page-head{margin-bottom:1rem}.page-head h1{font-size:1.4rem;line-height:1.25;font-weight:600;letter-spacing:-.02em}.page-head p{color:var(--text-2);font-size:.9rem;margin-top:.1rem}@media(min-width:960px){.app-shell{display:grid;grid-template-columns:252px minmax(0,1fr)}.app-shell.is-bare{display:flex}.app-header{display:none}.side{order:0;border-top:none;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:1.5rem;padding:calc(var(--safe-top) + 1.4rem) .85rem calc(var(--safe-bot) + 1rem)}.side-brand{display:block;padding:0 .5rem}.side-foot{display:flex;flex-direction:column;gap:.5rem;margin-top:auto;padding:.75rem .5rem 0;border-top:1px solid var(--line)}.nav{flex-direction:column;gap:2px}.nav-btn{flex:none;flex-direction:row;justify-content:flex-start;gap:.7rem;min-height:42px;padding:0 .75rem;border-radius:var(--radius-sm);font-size:.9rem}.nav-btn .nav-ico{width:auto;height:auto;background:none!important}.nav-btn:hover{background:var(--surface-2)}.nav-btn[aria-current=page]{background:var(--accent-soft)}.app-body{padding:2rem 2.25rem 3rem}}.side-user{display:flex;align-items:center;gap:.6rem;min-width:0;font-size:.8rem;color:var(--text-2)}.side-user .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.avatar{flex-shrink:0;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent-text);font-size:.75rem;font-weight:600}.avatar-lg{width:44px;height:44px;font-size:1rem}.icon-btn{display:inline-grid;place-items:center;width:38px;height:38px;border-radius:var(--radius-sm);background:none;border:none;cursor:pointer;color:var(--text-2);-webkit-tap-highlight-color:transparent;transition:background .12s,color .12s}.icon-btn:hover{background:var(--surface-3);color:var(--text)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:1.1rem;margin-bottom:.9rem}.card:last-child{margin-bottom:0}.card-title{display:flex;align-items:center;gap:.6rem;font-size:.95rem;font-weight:600;letter-spacing:-.005em;margin-bottom:1rem}.card-title .ico{flex-shrink:0;width:28px;height:28px;padding:6px;border-radius:var(--radius-sm);background:var(--accent-soft);color:var(--accent-text)}.card-title .card-title-action{margin-left:auto}.card-note{font-size:.82rem;color:var(--text-2);margin-bottom:.9rem}.section-label{font-size:.8rem;font-weight:600;color:var(--text-2);margin-bottom:.6rem}.field{margin-bottom:.9rem}.field:last-child{margin-bottom:0}label{display:block;font-size:.8rem;font-weight:500;color:var(--text-2);margin-bottom:.3rem}input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],input[type=url],textarea,select{width:100%;min-height:44px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);padding:.6rem .8rem;font-family:var(--font-sans);font-size:1rem;color:var(--text);outline:none;transition:border-color .15s,box-shadow .15s,background .15s;-moz-appearance:none;appearance:none;-webkit-appearance:none}input[type=number]{font-family:var(--font-mono);font-variant-numeric:tabular-nums}select{padding-right:2.2rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%237a8aa5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .7rem center}input:hover,textarea:hover,select:hover{border-color:var(--line-strong)}input:focus,textarea:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--ring);background:var(--surface)}input::placeholder,textarea::placeholder{color:var(--text-3);opacity:.8}textarea{resize:vertical;min-height:72px}input[type=checkbox]{accent-color:var(--accent)}.field-row{display:grid;gap:.75rem}.cols-2{grid-template-columns:1fr 1fr}.cols-3{grid-template-columns:1fr 1fr 1fr}@media(max-width:420px){.cols-3.collapse-sm{grid-template-columns:1fr 1fr}.cols-3.collapse-sm>:first-child{grid-column:1 / -1}}.input-group{position:relative}.input-group input{padding-right:2.9rem}.input-group .icon-btn{position:absolute;right:3px;top:3px;width:38px;height:38px}.invoice-number-input{display:flex;align-items:stretch;min-height:44px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-2);overflow:hidden;transition:border-color .15s,box-shadow .15s}.invoice-number-input:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--ring);background:var(--surface)}.invoice-prefix-chip{display:flex;align-items:center;padding:0 .7rem;background:var(--surface-3);color:var(--text-2);font-family:var(--font-mono);font-weight:500;font-size:.9rem;border-right:1px solid var(--line);flex-shrink:0}.invoice-number-input input[type=number]{border:none;background:none;box-shadow:none;border-radius:0;min-height:0}.invoice-number-input input[type=number]:focus{border:none;box-shadow:none;background:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-height:44px;padding:.55rem 1.1rem;border-radius:var(--radius);font-size:.9rem;font-weight:500;cursor:pointer;border:1px solid transparent;transition:background .15s,border-color .15s,color .15s,transform .05s;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;text-decoration:none;white-space:nowrap}.btn svg{flex-shrink:0}.btn:active:not(:disabled){transform:translateY(1px)}.btn-primary{background:var(--accent);color:var(--on-accent)}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-secondary{background:var(--surface-3);color:var(--text);border-color:var(--line)}.btn-secondary:hover:not(:disabled){border-color:var(--line-strong);background:var(--surface-3);filter:brightness(.97)}.btn-ghost{background:none;color:var(--accent-text);padding:.4rem .7rem;min-height:36px;font-size:.85rem}.btn-ghost:hover:not(:disabled){background:var(--accent-soft)}.btn-danger{background:none;color:var(--danger-text);padding:.4rem .7rem;min-height:36px;font-size:.85rem}.btn-danger:hover:not(:disabled){background:var(--danger-soft)}.btn-danger-solid{background:var(--danger);color:#fff}.btn-danger-solid:hover:not(:disabled){filter:brightness(.92)}.btn-sm{min-height:34px;padding:.3rem .7rem;font-size:.8rem;border-radius:var(--radius-sm)}.btn-full{width:100%}.btn-lg{min-height:52px;padding:.8rem 1.4rem;font-size:1rem;border-radius:var(--radius-lg)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-row{display:flex;gap:.5rem;flex-wrap:wrap}.btn-row>.btn{flex:1}.chip{display:inline-flex;align-items:center;gap:.3rem;padding:.12rem .55rem;border-radius:999px;font-size:.72rem;font-weight:500;white-space:nowrap;background:var(--accent-soft);color:var(--accent-text)}.chip-ok{background:var(--mint-soft);color:var(--mint-text)}.chip-warn{background:var(--amber-soft);color:var(--amber-text)}.chip-bad{background:var(--danger-soft);color:var(--danger-text)}.cal-invoiced-pill{display:inline-flex;align-items:center;gap:.3rem;padding:.12rem .55rem;border-radius:999px;font-size:.72rem;font-weight:500;white-space:nowrap;background:var(--accent-soft);color:var(--accent-text)}.status-pending{color:var(--danger-text)}.status-received{color:var(--mint-text)}.status-mixed{color:var(--amber-text)}.info-strip{background:var(--accent-soft);border:1px solid transparent;border-radius:var(--radius);padding:.65rem .8rem;font-size:.82rem;color:var(--text-2);display:flex;gap:.55rem;align-items:flex-start;margin-bottom:.9rem}.info-strip>svg{flex-shrink:0;margin-top:2px;color:var(--accent-text)}.info-strip strong{color:var(--text);font-weight:600}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:var(--scrim);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:flex-end;justify-content:center}.overlay.center{align-items:center;padding:1rem}.sheet{background:var(--surface);border:1px solid var(--line);border-bottom:none;border-radius:18px 18px 0 0;width:100%;max-height:92vh;max-height:92dvh;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:calc(var(--safe-bot) + 1.25rem);box-shadow:var(--shadow-pop);animation:sheetUp .24s cubic-bezier(.2,.8,.2,1)}.sheet-handle{width:36px;height:4px;background:var(--line-strong);border-radius:2px;margin:.7rem auto 0}.sheet-head{display:flex;justify-content:space-between;align-items:center;gap:.75rem;padding:1rem 1.25rem 0}.sheet-title{font-size:1.1rem;font-weight:600;letter-spacing:-.01em}.sheet-body{padding:1.1rem 1.25rem}.sheet-foot{padding:.9rem 1.25rem 0;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:.75rem}.sheet-close{display:inline-grid;place-items:center;flex-shrink:0;width:34px;height:34px;border-radius:50%;background:var(--surface-3);border:none;cursor:pointer;color:var(--text-2)}.sheet-close:hover{color:var(--text)}.dialog{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);width:100%;max-width:400px;padding:1.25rem;box-shadow:var(--shadow-pop);animation:popIn .16s ease-out}.dialog h2{font-size:1.05rem;font-weight:600;letter-spacing:-.01em;margin-bottom:.35rem}.dialog p{color:var(--text-2);font-size:.9rem;white-space:pre-line}.dialog-actions{display:flex;gap:.5rem;justify-content:flex-end;margin-top:1.1rem}@keyframes sheetUp{0%{transform:translateY(32px);opacity:0}to{transform:none;opacity:1}}@keyframes popIn{0%{transform:scale(.97);opacity:0}to{transform:none;opacity:1}}@media(min-width:720px){.overlay{align-items:center;padding:1.5rem}.sheet{max-width:540px;border-radius:18px;border-bottom:1px solid var(--line);max-height:88vh;padding-bottom:1.25rem;animation-name:popIn}.sheet-handle{display:none}.sheet-head{padding-top:1.25rem}}.client-dropdown{position:relative}.dropdown-list{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:60;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius);box-shadow:var(--shadow-pop);max-height:260px;overflow-y:auto;-webkit-overflow-scrolling:touch}.dropdown-item{padding:.7rem .85rem;cursor:pointer;border-bottom:1px solid var(--line);-webkit-tap-highlight-color:transparent}.dropdown-item:last-child{border-bottom:none}.dropdown-item:hover,.dropdown-item:active{background:var(--accent-soft)}.dropdown-item-name{font-weight:500;font-size:.9rem}.dropdown-item-addr{font-size:.75rem;color:var(--text-3);margin-top:1px}.dropdown-item-add{color:var(--accent-text);font-weight:500;font-size:.9rem;display:flex;align-items:center;gap:.4rem}.addr-results{margin-top:.5rem;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--surface)}.addr-result{padding:.65rem .85rem;cursor:pointer;font-size:.85rem;border-bottom:1px solid var(--line);-webkit-tap-highlight-color:transparent}.addr-result:last-child{border-bottom:none}.addr-result:hover,.addr-result:active{background:var(--accent-soft)}.inset-card{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);padding:.95rem}.invoice-layout{display:grid;gap:.9rem}.invoice-main{min-width:0}@media(min-width:1024px){.invoice-layout{grid-template-columns:minmax(0,1fr) 340px;gap:1.25rem;align-items:start}.summary{position:sticky;top:0}}.session-row{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);padding:.85rem;margin-bottom:.6rem}.session-row-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.65rem;font-size:.8rem;font-weight:600;color:var(--text-2)}.session-amount{display:flex;justify-content:space-between;align-items:baseline;margin-top:.7rem;padding-top:.6rem;border-top:1px dashed var(--line-strong);font-size:.8rem;color:var(--text-3)}.session-amount .num{font-size:1.05rem;color:var(--text)}.logged-box{background:var(--accent-soft);border:1px solid var(--line);border-radius:var(--radius-lg);padding:1.1rem;margin-bottom:.9rem}.logged-list{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin-bottom:.75rem;background:var(--surface)}.logged-item{display:flex;align-items:center;gap:.65rem;padding:.65rem .8rem;border-bottom:1px solid var(--line);font-size:.85rem;cursor:pointer;margin:0;color:var(--text)}.logged-item:last-child{border-bottom:none}.logged-item:hover{background:var(--surface-2)}.logged-item input[type=checkbox]{width:17px;height:17px;flex-shrink:0}.logged-item-details{flex:1;min-width:0}.logged-item-amount{font-family:var(--font-mono);font-weight:500;font-variant-numeric:tabular-nums}.summary{position:relative;overflow:hidden;padding-top:1.35rem}.summary:before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:var(--brand-gradient)}.summary-head{display:flex;justify-content:space-between;align-items:baseline;gap:.75rem}.summary-no{font-family:var(--font-mono);font-size:1.05rem;font-weight:500}.summary-date{color:var(--text-3);font-size:.8rem}.summary-party{margin-top:.9rem;padding-bottom:.9rem;border-bottom:1px dashed var(--line-strong)}.summary-party-label{font-size:.75rem;color:var(--text-3)}.summary-party-name{font-weight:600}.summary-party-addr{font-size:.8rem;color:var(--text-2);white-space:pre-line}.summary-empty{color:var(--text-3);font-size:.85rem}.summary-lines{list-style:none;margin:.8rem 0 .2rem;display:grid;gap:.5rem}.summary-line{display:flex;justify-content:space-between;gap:.75rem;font-size:.82rem;color:var(--text-2)}.summary-line .num{color:var(--text)}.summary-line small{display:block;color:var(--text-3);font-size:.72rem}.summary-totals{margin-top:.8rem;border-top:1px solid var(--line-strong);padding-top:.7rem}.totals-row{display:flex;justify-content:space-between;align-items:baseline;font-size:.85rem;color:var(--text-2);padding:.15rem 0}.totals-row.grand{font-size:.95rem;font-weight:600;color:var(--text);margin-top:.3rem}.totals-row.grand .num{font-size:1.55rem}.totals-panel{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);padding:.85rem 1rem}.summary-checks{list-style:none;display:grid;gap:.35rem;margin:1rem 0;font-size:.8rem;color:var(--text-2)}.summary-checks li{display:flex;align-items:center;gap:.5rem}.summary-checks .done{color:var(--text-3)}.summary-checks .done svg{color:var(--mint-text)}.summary-checks .todo svg{color:var(--text-3)}.cal-toolbar{display:flex;align-items:center;margin-bottom:.9rem}.cal-month-nav{flex:1;display:flex;justify-content:space-between;align-items:center}.cal-month-title{font-size:1rem;font-weight:600;letter-spacing:-.01em}.stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;margin-bottom:.9rem}.stat{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);padding:.55rem .7rem;min-width:0}.stat-label{font-size:.72rem;color:var(--text-3)}.stat-value{font-family:var(--font-mono);font-weight:500;font-size:clamp(.85rem,3.6vw,1.1rem);font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-weekdays{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:.4rem}.cal-weekday{text-align:center;font-size:.72rem;font-weight:500;color:var(--text-3)}.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.cal-cell{position:relative;min-width:0;min-height:76px;border-radius:var(--radius-sm);background:var(--surface-2);border:1px solid var(--line);display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;transition:background .12s,border-color .12s;-webkit-tap-highlight-color:transparent;padding:4px 2px 7px;overflow:hidden}.cal-cell:after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:transparent}.cal-cell:hover{border-color:var(--line-strong);background:var(--accent-soft)}.cal-cell-empty{background:none;border:none;cursor:default}.cal-cell-empty:hover{background:none}.cal-cell-empty:after{display:none}.cal-cell-num{font-size:clamp(.66rem,3vw,.82rem);color:var(--text-2)}.cal-cell-today{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.cal-cell-today .cal-cell-num{color:var(--accent-text);font-weight:600}.cal-cell-pending{background:var(--danger-soft)}.cal-cell-pending:after{background:var(--danger)}.cal-cell-received{background:var(--mint-soft)}.cal-cell-received:after{background:var(--mint)}.cal-cell-mixed{background:var(--amber-soft)}.cal-cell-mixed:after{background:#e0a21b}.cal-cell-amount{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:clamp(.46rem,2.4vw,.62rem);font-weight:500;margin-top:1px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 1px}.cal-cell-client{font-size:clamp(.4rem,2vw,.54rem);font-weight:500;max-width:100%;padding:0 1px;line-height:1.15;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-word;text-align:center}.cal-cell-chase-btn,.cal-cell-toggle-btn{position:absolute;top:3px;width:18px;height:18px;border-radius:50%;border:1px solid var(--line);background:var(--surface);color:var(--text-2);display:grid;place-items:center;padding:0;cursor:pointer;z-index:1;-webkit-tap-highlight-color:transparent}.cal-cell-chase-btn{left:3px}.cal-cell-toggle-btn{right:3px}.cal-cell-chase-btn:hover,.cal-cell-toggle-btn:hover{color:var(--accent-text);border-color:var(--accent)}.cal-cell-toggle-btn.is-paid{color:var(--mint-text)}.status-toggle-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-top:.75rem;padding:.7rem .1rem .1rem;border:none;border-top:1px solid var(--line);background:none;color:inherit;cursor:pointer;text-align:left;-webkit-tap-highlight-color:transparent}.status-toggle-label{font-size:.85rem;font-weight:500;display:inline-flex;align-items:center;gap:.4rem}.toggle-track{width:46px;height:26px;border-radius:999px;background:var(--line-strong);position:relative;flex-shrink:0;transition:background .18s}.toggle-track.on{background:var(--mint-text)}.toggle-knob{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0000004d;transition:transform .18s}.toggle-track.on .toggle-knob{transform:translate(20px)}.client-card{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);padding:.85rem;margin-bottom:.6rem;display:flex;gap:.75rem;align-items:flex-start}.client-card-info{flex:1;min-width:0}.client-card-name{font-weight:600;font-size:.9rem;margin-bottom:.15rem}.client-card-addr{font-size:.78rem;color:var(--text-2);line-height:1.45}.client-card-actions{display:flex;flex-direction:column;gap:.2rem;flex-shrink:0}.logo-preview{display:flex;align-items:center;gap:.9rem;padding:.7rem;margin-bottom:.75rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-2)}.logo-preview img{width:60px;height:72px;object-fit:contain;border-radius:6px;background:#fff;border:1px solid var(--line)}.segmented{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;padding:3px;background:var(--surface-3);border-radius:var(--radius)}.segmented button{display:flex;align-items:center;justify-content:center;gap:.4rem;min-height:38px;border:none;border-radius:var(--radius-sm);background:none;color:var(--text-2);font-size:.85rem;font-weight:500;cursor:pointer}.segmented button[aria-pressed=true]{background:var(--surface);color:var(--text);box-shadow:0 1px 2px #0f1e3c1f}.app-version{text-align:center;color:var(--text-3);font-size:.75rem;margin-top:1.25rem}.tst-card{padding-bottom:1rem}.tst-quote{font-size:1.02rem;line-height:1.55;color:var(--text);margin-bottom:.7rem}.tst-meta{display:flex;justify-content:space-between;align-items:center;gap:.75rem;font-size:.8rem;color:var(--text-2);flex-wrap:wrap}.tst-link{color:var(--accent-text);font-weight:500;text-decoration:none;white-space:nowrap;display:inline-flex;align-items:center;gap:.25rem}.tst-link:hover{text-decoration:underline}.tst-draft{border-top:1px solid var(--line);padding-top:1rem;margin-top:.25rem}.tst-draft:first-of-type{border-top:none;padding-top:0;margin-top:0}.stars{display:inline-flex;gap:2px;color:#e0a21b;vertical-align:middle}.stars .off{color:var(--line-strong)}.star-picker{display:flex;gap:.2rem}.star-picker button{background:none;border:none;cursor:pointer;padding:.2rem;line-height:0;color:#e0a21b;border-radius:6px}.star-picker button.off{color:var(--line-strong)}.step-pills{display:flex;gap:.35rem;margin:.9rem 0 .25rem}.step-pill{flex:1;height:4px;border-radius:2px;background:var(--surface-3);transition:background .2s}.step-pill.done{background:var(--accent)}.step-pill.active{background:var(--brand-gradient)}.choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.choice{display:flex;align-items:center;gap:.6rem;min-height:56px;padding:.6rem .75rem;background:var(--surface-2);color:var(--text);border:1px solid var(--line);border-radius:var(--radius);font-size:.85rem;font-weight:500;text-align:left;line-height:1.3;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:border-color .12s,background .12s}.choice:hover{border-color:var(--line-strong)}.choice[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft)}.choice .ico{flex-shrink:0;color:var(--accent-text)}.auth-page{min-height:100%;width:100%;overflow-y:auto;display:flex;flex-direction:column;background:var(--bg)}.auth-hero{position:relative;overflow:hidden;color:#e8edf6;background:radial-gradient(60% 90% at 90% 0%,rgba(59,107,224,.35),transparent 70%),radial-gradient(50% 70% at 0% 100%,rgba(52,195,161,.18),transparent 70%),linear-gradient(rgba(130,165,235,.06) 1px,transparent 1px) 0 0 / 34px 34px,linear-gradient(90deg,rgba(130,165,235,.06) 1px,transparent 1px) 0 0 / 34px 34px,#0b1220;padding:calc(var(--safe-top) + 1.4rem) 1.25rem 1.5rem}.auth-hero-inner{max-width:440px;margin:0 auto}.auth-hero h2{font-size:1.3rem;line-height:1.25;font-weight:600;letter-spacing:-.02em;margin-top:1rem}.auth-hero p.lead{color:#aab6ca;font-size:.9rem;margin-top:.4rem}.auth-features{display:none;list-style:none;margin-top:2rem;gap:1.1rem}.auth-features li{display:flex;gap:.8rem}.auth-features .ico{flex-shrink:0;width:36px;height:36px;padding:8px;border-radius:10px;background:#7ea2ff24;color:#8fb0ff}.auth-features strong{display:block;font-size:.9rem;font-weight:600}.auth-features span{color:#98a6bd;font-size:.82rem}.auth-main{flex:1;display:flex;align-items:flex-start;justify-content:center;padding:1.25rem 1rem calc(var(--safe-bot) + 2rem)}.auth-card{width:100%;max-width:400px}.auth-card .card{padding:1.4rem}.auth-title{font-size:1.15rem;font-weight:600;letter-spacing:-.015em;margin-bottom:.2rem}.auth-sub{color:var(--text-2);font-size:.85rem;margin-bottom:1.1rem}.auth-error{display:flex;gap:.5rem;align-items:flex-start;background:var(--danger-soft);color:var(--danger-text);border:1px solid var(--danger);border-radius:var(--radius);padding:.65rem .8rem;font-size:.85rem;margin-bottom:.9rem}.auth-error svg{flex-shrink:0;margin-top:2px}.auth-links{display:flex;flex-direction:column;align-items:center;gap:.15rem;margin-top:.9rem}.field-hint{font-size:.78rem;color:var(--text-3);margin-top:.3rem}.field-hint.bad{color:var(--danger-text)}@media(min-width:900px){.auth-page{flex-direction:row}.auth-hero{flex:1.05;display:flex;align-items:center;padding:3rem}.auth-hero-inner{max-width:460px;margin:0 0 0 auto}.auth-hero h2{font-size:1.9rem;margin-top:2rem}.auth-hero p.lead{font-size:1rem}.auth-features{display:grid}.auth-main{flex:1;align-items:center;padding:3rem}}.splash{flex:1;display:grid;place-content:center;justify-items:center;gap:.9rem;color:var(--text-3);font-size:.85rem;padding:3rem 1rem}.splash img{width:64px;height:auto;animation:breathe 1.8s ease-in-out infinite}@keyframes breathe{0%,to{opacity:.55;transform:scale(.97)}50%{opacity:1;transform:scale(1)}}.spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;display:inline-block;flex-shrink:0}.spinner-dark{border-color:var(--line-strong);border-top-color:var(--accent-text)}@keyframes spin{to{transform:rotate(360deg)}}.toast-container{position:fixed;z-index:999;top:calc(var(--safe-top) + 64px);left:1rem;right:1rem;display:flex;flex-direction:column;gap:.5rem;pointer-events:none}.toast{background:var(--surface);color:var(--text);border:1px solid var(--line-strong);border-left-width:3px;padding:.7rem .9rem;border-radius:var(--radius);font-size:.875rem;box-shadow:var(--shadow-pop);display:flex;align-items:flex-start;gap:.55rem;animation:toastIn .2s ease}.toast svg{flex-shrink:0;margin-top:2px}.toast.default{border-left-color:var(--accent)}.toast.default svg{color:var(--accent-text)}.toast.success{border-left-color:var(--mint)}.toast.success svg{color:var(--mint-text)}.toast.error{border-left-color:var(--danger)}.toast.error svg{color:var(--danger-text)}@keyframes toastIn{0%{transform:translateY(-8px);opacity:0}to{transform:none;opacity:1}}@media(min-width:720px){.toast-container{left:auto;right:1.25rem;top:1.25rem;width:380px}}.empty-state{text-align:center;padding:2rem 1rem;color:var(--text-3)}.empty-state-icon{display:inline-grid;place-items:center;width:52px;height:52px;border-radius:50%;background:var(--surface-3);color:var(--text-3);margin-bottom:.75rem}.empty-state p{font-size:.875rem}.crash{flex:1;display:grid;place-content:center;justify-items:center;gap:.75rem;text-align:center;padding:2rem}.crash h1{font-size:1.2rem;font-weight:600}.crash p{color:var(--text-2);max-width:36ch;font-size:.9rem}hr{border:none;border-top:1px solid var(--line);margin:1rem 0}.text-muted{color:var(--text-3);font-size:.8rem}.flex-between{display:flex;justify-content:space-between;align-items:center;gap:.75rem}.mt-1{margin-top:.5rem}.mt-2{margin-top:.9rem}.mb-1{margin-bottom:.5rem}.mb-2{margin-bottom:.9rem}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.wizard-mark{width:38px;height:auto;flex-shrink:0}.wizard-sheet{min-height:82vh;min-height:82dvh;display:flex;flex-direction:column}.wizard-sheet .sheet-body{flex:1}@media(min-width:720px){.wizard-sheet{min-height:0}}
