@import url("https://fonts.googleapis.com/css2?family=DM+Sans:opsz,wght@9..40,400;9..40,500;9..40,600;9..40,700&display=swap");:root{--bg:#F4F7FE;--bg-deep:#E9EDF7;--surface:#ffffff;--surface-2:#F4F7FE;--surface-3:#E9EDF7;--ink:#1B2559;--muted:#707EAE;--line:#E0E5F2;--accent:#076C5F;--accent-soft:#E3F2F0;--accent-deep:#054F45;--on-accent:#ffffff;--page:#ffffff;--warn:#FFB547;--warn-soft:#FFF6DA;--danger:#EE5D50;--danger-soft:#FEEFEE;--success:#01B574;--success-soft:#E6FAF5;--info:#3965FF;--shadow:none;--radius:20px;--font-sans:"DM Sans",sans-serif;--font-display:"DM Sans",sans-serif}:root[data-theme=dark]{--bg:#0A1411;--bg-deep:#070F0D;--surface:#122019;--surface-2:#182920;--surface-3:#1E3328;--ink:#EAF4EE;--muted:#94B5A8;--line:rgba(126,184,158,0.16);--accent:#076C5F;--accent-soft:rgba(7,108,95,0.24);--accent-deep:#14A390;--on-accent:#ffffff;--page:#ffffff;--warn:#FFB547;--warn-soft:rgba(255,181,71,0.16);--danger:#EE5D50;--danger-soft:rgba(238,93,80,0.16);--success:#01B574;--success-soft:rgba(1,181,116,0.16);--info:#3965FF;--shadow:none}*{box-sizing:border-box}body,html{margin:0;padding:0;min-height:100%}body{font-family:var(--font-sans);color:var(--ink);background:var(--bg);letter-spacing:-.5px}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.app-shell{min-height:100vh;display:flex;width:100%}.app-shell.no-sidebar{display:block}.main-panel{flex:1 1;display:flex;flex-direction:column}.top-bar{justify-content:space-between;gap:16px;padding:20px 24px 0}.top-bar,.top-bar-start{display:flex;align-items:center}.top-bar-start{gap:8px}.search-field{flex:1 1;display:flex;align-items:center;gap:10px;max-width:560px;padding:12px 14px;border-radius:999px;border:1px solid var(--line);background:var(--surface-2);color:var(--muted);box-shadow:var(--shadow)}.search-field input{border:0;outline:none;width:100%;background:transparent;color:var(--ink)}.top-bar-actions{display:flex;align-items:center;gap:10px}.icon-button,.user-chip{display:inline-flex;align-items:center;gap:10px;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:10px 12px;cursor:pointer;box-shadow:var(--shadow)}.icon-button{width:44px;justify-content:center;padding:10px}.user-chip{padding-right:14px}.user-avatar{width:32px;height:32px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--accent-soft);color:var(--accent-deep);font-weight:600}.user-copy{display:flex;flex-direction:column;align-items:flex-start;line-height:1.15}.user-copy strong{font-size:.95rem}.user-copy span{font-size:.75rem;color:var(--muted)}.user-menu{position:relative}.user-menu-chevron{color:var(--muted);transition:transform .15s ease;flex-shrink:0}.user-menu-chevron.is-open{transform:rotate(180deg)}.user-dropdown{position:absolute;top:calc(100% + 10px);right:0;min-width:200px;display:flex;flex-direction:column;padding:6px;border:1px solid var(--line);border-radius:14px;background:var(--surface);box-shadow:0 12px 32px rgba(27,37,89,.14);z-index:60}.user-dropdown-item{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border:0;border-radius:10px;background:transparent;color:var(--ink);font-size:.95rem;text-align:left;cursor:pointer}.user-dropdown-item span[aria-hidden]{color:var(--muted);display:inline-flex}.user-dropdown-item:hover{background:var(--surface-2)}.user-dropdown-logout{color:var(--danger);margin-top:4px;border-top:1px solid var(--line);border-radius:0 0 10px 10px}.user-dropdown-logout span[aria-hidden]{color:var(--danger)}.user-dropdown-logout:hover{background:var(--danger-soft)}.main-content{flex:1 1;max-width:1200px;width:100%;margin:0 auto;padding:28px 24px 64px}.sidebar{width:280px;flex-shrink:0;padding:24px 18px;border-right:1px solid var(--line);background:var(--surface);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);display:flex;flex-direction:column;gap:0;min-height:100vh;overflow:hidden;transition:width .2s ease}.sidebar.is-collapsed{width:84px}.sidebar-brand{display:flex;align-items:center;justify-content:flex-start;padding:6px 10px 18px;margin-bottom:8px;border-bottom:1px solid var(--line);transition:padding .2s ease}.sidebar.is-collapsed .sidebar-brand{justify-content:center;padding:6px 0 18px}.sidebar-brand-logo{width:150px;height:auto;display:block}.sidebar-brand-icon{height:44px;width:auto;display:block}.sidebar-toggle{border:1px solid var(--line);background:var(--surface);color:var(--ink);width:40px;height:40px;border-radius:12px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:1rem}.sidebar.is-collapsed .sidebar-link span:last-child{display:none}.sidebar-nav{display:grid;grid-gap:8px;gap:8px}.sidebar-footer{margin-top:auto;padding-top:14px;border-top:1px solid var(--line)}.sidebar-footer .sidebar-link{width:100%}.sidebar-link-logout{color:var(--danger);background:transparent;border:0;font:inherit;cursor:pointer;text-align:left}.sidebar-link-logout:hover{background:var(--danger-soft)}.proof-preview{padding:16px;display:flex;align-items:center;justify-content:center;background:var(--accent-soft);border-radius:12px;margin:0 4px 4px}.proof-image{max-width:100%;max-height:70vh;border-radius:8px;box-shadow:0 4px 16px rgba(15,23,42,.12)}.proof-frame{width:100%;height:70vh;border:0;border-radius:8px;background:#fff}.sidebar-link{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;color:var(--muted);transition:background .15s ease,color .15s ease}.sidebar-link.is-active,.sidebar-link:hover{background:var(--accent-soft);color:var(--accent-deep)}.sidebar-link.is-active{font-weight:600}.sidebar-link-primary{background:var(--accent);color:var(--on-accent)}.sidebar-link-primary:hover{background:var(--accent-deep);color:var(--on-accent)}.brand{display:inline-flex;align-items:center}.brand-logo{display:block;height:auto}.brand-logo-header{width:80px}.login-brand .brand-logo{width:44px}.nav-actions{display:flex;gap:10px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:16px;padding:.7rem 1.15rem;cursor:pointer;font-weight:500;transition:transform .15s ease,background .15s ease,border-color .15s ease,box-shadow .15s ease}.btn:hover{transform:translateY(-1px)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.btn-primary{background:var(--accent);color:var(--on-accent)}.btn-primary:hover{background:var(--accent-deep)}.btn-secondary{background:var(--accent-soft);border-color:transparent;color:var(--accent-deep)}.btn-ghost{background:transparent;color:var(--muted)}.btn-danger,.btn-ghost{border-color:transparent}.btn-danger{background:var(--danger-soft);color:var(--danger)}.hero{display:grid;grid-template-columns:1.4fr 1fr;grid-gap:24px;gap:24px;margin-bottom:28px;animation:rise .65s ease both}.hero-copy{padding:8px 4px}.hero-copy h2{margin:0 0 10px;font-family:var(--font-display);font-weight:400;font-size:clamp(2.2rem,4vw,3.3rem);line-height:1.05;letter-spacing:-.03em}.hero-copy p{margin:0;max-width:38ch;color:var(--muted);font-size:1.05rem;line-height:1.55}.stat-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow);display:grid;grid-template-columns:1fr 1fr;grid-gap:18px;gap:18px}.status-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:16px;gap:16px;margin-top:12px}.status-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}.status-card h4{margin:0 0 10px;color:var(--muted);font-size:.85rem;text-transform:uppercase;letter-spacing:.05em}.status-card strong{display:block;font-family:var(--font-display);font-size:1.7rem;font-weight:400}.status-card span{color:var(--muted)}.analytics-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:16px;gap:16px;padding:20px}.analytics-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px}.analytics-card h4{margin:0 0 10px;color:var(--muted);font-size:.82rem;text-transform:uppercase;letter-spacing:.05em}.analytics-card strong{display:block;font-family:var(--font-display);font-size:1.55rem;font-weight:400;margin-bottom:6px}.analytics-card span{color:var(--muted);font-size:.95rem}.stat h3{margin:0 0 6px;color:var(--muted);font-size:.78rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.stat strong{display:block;font-family:var(--font-display);font-size:1.85rem;font-weight:400}.stat-boxes{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:16px;gap:16px}.stat-box{position:relative;display:flex;align-items:center;gap:14px;padding:18px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.stat-box:before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:var(--stat-color,var(--accent))}.stat-box-chip{flex-shrink:0;width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;border-radius:12px;background:var(--stat-soft);color:var(--stat-color)}.stat-box-body{display:flex;flex-direction:column;gap:2px;min-width:0}.stat-box-label{color:var(--muted);font-size:.78rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.stat-box-value{font-family:var(--font-display);font-size:1.6rem;font-weight:500;color:var(--ink);line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stat-box-sub{color:var(--muted);font-size:.85rem}@media (max-width:900px){.stat-boxes{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:520px){.stat-boxes{grid-template-columns:1fr}}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;animation:rise .7s ease both}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 20px;border-bottom:1px solid var(--line);background:linear-gradient(90deg,var(--accent-soft) 0,transparent 100%)}.panel-header h3{margin:0;font-size:1.05rem}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}td,th{text-align:left;padding:14px 18px;border-bottom:1px solid var(--line);white-space:nowrap}th{font-size:.75rem;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-weight:600;background:var(--surface-2)}tr:last-child td{border-bottom:none}tr:hover td{background:var(--surface-2)}.badge{display:inline-flex;align-items:center;padding:.25rem .65rem;border-radius:999px;font-size:.75rem;font-weight:600;text-transform:capitalize}.badge-draft{background:var(--surface-3);color:var(--muted)}.badge-sent{background:var(--accent-soft);color:var(--accent-deep)}.badge-paid{background:var(--success-soft);color:var(--success)}.badge-overdue{background:var(--warn-soft);color:var(--warn)}.badge-cancelled{background:var(--danger-soft);color:var(--danger)}.form-page{display:grid;grid-gap:20px;gap:20px;animation:rise .55s ease both}.form-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px}.field{display:grid;grid-gap:6px;gap:6px;text-align:left}.field.full{grid-column:1/-1}.field label{font-size:.82rem;color:var(--muted);font-weight:600;text-align:left}.field input,.field select,.field textarea{width:100%;border:1px solid var(--line);background:var(--surface-2);border-radius:10px;padding:.75rem .85rem;color:var(--ink)}.field textarea{min-height:100px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.field-vat{display:flex;align-items:flex-end}.field-vat .vat-label{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:.85rem;color:var(--ink)}.field-vat .vat-label input[type=checkbox]{flex-shrink:0;width:18px;height:18px;margin:0;padding:0;border:1px solid var(--line);border-radius:4px;background:var(--surface-2);accent-color:var(--accent);cursor:pointer}.items-table input{width:100%;border:1px solid var(--line);border-radius:8px;padding:.55rem .65rem;background:var(--surface-2);color:var(--ink)}.items-table input::placeholder{color:var(--muted);opacity:.8}.field input::placeholder,.field textarea::placeholder{color:var(--muted);opacity:.8}.totals{display:grid;justify-content:end;grid-gap:8px;gap:8px;padding:8px 4px 0;min-width:240px;margin-left:auto}.totals div{display:flex;justify-content:space-between;gap:32px;color:var(--muted)}.totals .grand{color:var(--ink);font-size:1.15rem;font-weight:700;padding-top:8px;border-top:1px solid var(--line)}.detail-layout{display:grid;grid-template-columns:1.5fr .9fr;grid-gap:20px;gap:20px;animation:rise .55s ease both}.invoice-sheet{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:28px;box-shadow:var(--shadow)}.invoice-sheet header{display:flex;justify-content:space-between;gap:16px;margin-bottom:28px}.invoice-sheet h2{margin:0;font-family:var(--font-display);font-size:2rem;font-weight:400}.meta-block h4{margin:0 0 6px;font-size:.75rem;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}.meta-block p{margin:0;white-space:pre-line;line-height:1.45}.side-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);display:grid;grid-gap:12px;gap:12px;align-content:start}.autocomplete{position:relative}.autocomplete-list{position:absolute;top:100%;left:0;right:0;z-index:50;background:var(--surface);border:1px solid var(--line);border-radius:10px;margin-top:4px;max-height:240px;overflow-y:auto;animation:rise .2s ease both}.autocomplete-item{display:flex;flex-direction:column;gap:2px;padding:10px 14px;cursor:pointer;transition:background .12s ease}.autocomplete-item.active,.autocomplete-item:hover{background:var(--accent-soft)}.autocomplete-primary{font-size:.92rem;color:var(--ink);font-weight:500}.autocomplete-secondary{font-size:.8rem;color:var(--muted)}.new-client-hint{border-top:1px solid var(--line)}.new-client-hint .autocomplete-primary{color:var(--accent-deep);font-weight:600}.row-actions{gap:6px}.icon-btn,.row-actions{display:inline-flex;align-items:center}.icon-btn{justify-content:center;width:32px;height:32px;border-radius:8px;border:1px solid transparent;background:transparent;color:var(--muted);cursor:pointer;transition:background .15s ease,color .15s ease,border-color .15s ease;padding:0}.icon-btn:hover{transform:none}.icon-btn-edit:hover{background:var(--accent-soft);color:var(--accent-deep);border-color:var(--accent-soft)}.icon-btn-delete:hover{background:var(--danger-soft);color:var(--danger);border-color:var(--danger)}.icon-btn:disabled{opacity:.55;cursor:not-allowed}.empty{padding:48px 24px;text-align:center;color:var(--muted)}.error{color:var(--danger);font-size:.9rem}.clients-list{display:grid;grid-gap:10px;gap:10px}.client-card{border:1px solid var(--line);border-radius:18px;background:var(--surface);box-shadow:var(--shadow);overflow:hidden}.client-card summary{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 20px;cursor:pointer;list-style:none}.client-card summary::-webkit-details-marker{display:none}.client-card summary:after{content:"";width:10px;height:10px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg);transition:transform .25s ease}.client-card[open] summary:after{transform:rotate(225deg)}.client-card summary strong,.client-summary strong{display:block}.client-subtitle{color:var(--muted);font-size:.92rem;margin-top:4px}.client-count{color:var(--muted);font-size:.95rem}.client-panel{border-top:1px solid var(--line);padding:0 20px 20px;max-height:0;overflow:hidden;opacity:0;transition:max-height .35s ease,opacity .35s ease,padding .35s ease}.client-card[open] .client-panel{max-height:1000px;opacity:1;padding:16px 20px 20px}.invoice-summary-list{display:grid;grid-gap:12px;gap:12px}.invoice-summary{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border-radius:14px;background:var(--surface);border:1px solid var(--line)}.invoice-meta{text-align:right;display:grid;grid-gap:6px;gap:6px}.invoice-meta span{color:var(--muted);font-size:.92rem}.invoice-meta strong{font-family:var(--font-display);font-size:1rem}.clients-table td,.clients-table th{vertical-align:middle}.client-name-btn{display:inline-flex;flex-direction:column;align-items:flex-start;gap:2px;background:transparent;border:none;padding:0;cursor:pointer;text-align:left;color:var(--ink);font-weight:600;transition:color .15s ease}.client-name-btn:hover{color:var(--accent)}.client-name-primary{font-size:.98rem}.client-name-sub{color:var(--muted);font-size:.82rem;font-weight:400}.owed-amount{font-weight:700;color:var(--ink);font-family:var(--font-display)}.owed-amount.owed-zero{color:var(--muted);font-weight:500}.invoice-link{background:transparent;border:none;padding:0;cursor:pointer;color:var(--accent);font-weight:600;font-family:var(--font-display)}.invoice-link:hover{text-decoration:underline}.muted-count{color:var(--muted);font-weight:400;font-size:.9rem}.modal-wide{width:min(880px,100%)}.details-stats{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:12px;gap:12px;margin-bottom:20px}.details-stat{display:grid;grid-gap:4px;gap:4px;padding:14px 16px;border-radius:16px;background:var(--surface-2);border:1px solid var(--line)}.details-stat-label{font-size:.74rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600}.details-stat-value{font-size:1.5rem;font-weight:700;font-family:var(--font-display);color:var(--ink)}.details-contact{padding:16px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-bottom:18px}.details-contact h4{margin:0 0 10px;font-size:.82rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.details-list{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px 24px;gap:10px 24px;margin:0}.details-list>div{display:grid;grid-gap:2px;gap:2px}.details-list dt{font-size:.78rem;color:var(--muted)}.details-list dd{margin:0;font-size:.95rem;color:var(--ink);white-space:pre-wrap}.details-actions{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:20px}.details-invoices h4{margin:0 0 10px;font-size:.82rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.details-invoice-table td,.details-invoice-table th{padding:11px 14px}.client-toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:14px;padding:12px 18px;border-radius:14px;background:var(--danger);color:#fff;box-shadow:var(--shadow);z-index:60;font-size:.9rem}.client-toast .btn{color:#fff;border-color:rgba(255,255,255,.4)}.profile-card{gap:16px;padding:4px}.profile-avatar,.profile-card{display:flex;align-items:center}.profile-avatar{justify-content:center;width:56px;height:56px;border-radius:50%;background:var(--accent);color:#fff;font-size:1.5rem;font-weight:700;font-family:var(--font-display);flex-shrink:0}.profile-info{display:grid;grid-gap:4px;gap:4px}.profile-name{font-size:1.15rem;font-weight:700;color:var(--ink);display:flex;align-items:center;flex-wrap:wrap}.profile-email{color:var(--muted);font-size:.95rem}.role-badge{display:inline-flex;align-items:center;padding:.22rem .6rem;border-radius:999px;font-size:.74rem;font-weight:600;background:var(--surface-3);color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.role-badge.role-admin{background:var(--accent-soft);color:var(--accent-deep)}.you-tag{color:var(--muted);font-weight:400;font-size:.85rem}.users-table td,.users-table th{vertical-align:middle}.user-avatar-img{width:100%;height:100%;border-radius:50%;object-fit:cover}.user-cell{display:inline-flex;align-items:center;gap:10px}.avatar-upload{display:flex;align-items:center;gap:14px}.avatar-upload-actions{display:inline-flex;align-items:center;gap:8px}.profile-meta{display:grid;grid-gap:2px;gap:2px;margin-top:4px;color:var(--ink);font-size:.9rem}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.login-shell{min-height:calc(100vh - 40px);display:flex;align-items:center;justify-content:center;padding:20px;position:relative}.login-shell:after,.login-shell:before{content:"";position:absolute;border-radius:999px;filter:blur(8px);pointer-events:none}.login-shell:before{width:220px;height:220px;background:rgba(15,118,110,.12);top:8%;left:8%}.login-shell:after{width:180px;height:180px;background:rgba(180,83,9,.1);bottom:10%;right:10%}.login-card{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow);padding:44px 36px 36px;width:100%;max-width:420px;animation:rise .6s ease both;overflow:hidden;text-align:center}.login-card:before{content:"";position:absolute;inset:0 0 auto 0;height:4px;background:linear-gradient(90deg,var(--accent) 0,#5bb1a4 100%)}.login-badge{display:inline-flex;justify-content:center;align-items:center;padding:.3rem .95rem;border-radius:999px;background:var(--accent-soft);color:var(--accent-deep);font-size:.84rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;margin:0 auto 18px}.login-brand{display:flex;justify-content:center;gap:12px;margin:0 auto 22px}.login-brand .brand-logo{width:144px;height:auto}.login-brand h1{margin:0;font-family:var(--font-display);font-weight:400;font-size:1.8rem;letter-spacing:-.02em}.login-brand .brand-mark{width:14px;height:14px;border-radius:999px;background:var(--accent);box-shadow:0 0 0 6px var(--accent-soft)}.login-card h2{margin:0 0 8px;font-family:var(--font-display);font-size:1.85rem;font-weight:400;text-align:center}.login-sub{margin:0 0 24px;text-align:center;color:var(--muted);font-size:.96rem;line-height:1.6}.login-form{display:grid;grid-gap:16px;gap:16px}.modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.45);display:flex;align-items:safe center;justify-content:center;padding:20px;overflow-y:auto;z-index:50}.modal-card{width:min(640px,100%);background:var(--surface);border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow);padding:28px;position:relative}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}.modal-header h3{margin:0;font-size:1.35rem}.login-submit{width:100%;padding:.9rem 1rem;margin-top:4px}.login-footer{margin:16px 0 0;text-align:center;color:var(--muted);font-size:.82rem;padding-top:12px;border-top:1px solid var(--line)}.login-footer strong{color:var(--ink)}@media (max-width:860px){.detail-layout,.form-grid,.hero{grid-template-columns:1fr}.topbar{flex-direction:column;align-items:flex-start}}@media (max-width:640px){.brand-logo-header{width:60px}.login-brand{gap:8px}.login-brand .brand-logo{width:36px}}.template-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:18px;gap:18px}.template-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:14px}.template-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.template-card-head h3{margin:0 0 4px;font-size:1.05rem;font-weight:600}.template-card-actions{display:flex;gap:8px;flex-wrap:wrap}.badge-default{background:var(--accent-soft);color:var(--accent-deep);font-size:.72rem;font-weight:600;padding:4px 10px;border-radius:999px;white-space:nowrap}.template-thumb{display:flex;align-items:center;justify-content:center;gap:8px;padding:22px 12px;border:1px dashed var(--line);border-radius:10px;color:var(--muted);font-size:.85rem;font-weight:500;transition:background .15s ease,color .15s ease}.template-thumb:hover{background:var(--accent-soft);color:var(--accent-deep)}.btn-sm{padding:.45rem .85rem;font-size:.85rem}.muted{color:var(--muted)}.small{font-size:.8rem}.template-editor{display:flex;flex-direction:column;gap:14px}.editor-toolbar{justify-content:space-between;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;box-shadow:var(--shadow)}.editor-toolbar,.editor-toolbar-group{display:flex;align-items:center;flex-wrap:wrap}.editor-toolbar-group{gap:8px}.editor-toolbar-label{font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:600}.template-name-input{border:1px solid var(--line);border-radius:8px;padding:.45rem .75rem;background:var(--surface);color:var(--ink);min-width:200px;font-weight:600}.editor-body{display:grid;grid-template-columns:1fr 320px;grid-gap:16px;gap:16px;align-items:start}@media (max-width:980px){.editor-body{grid-template-columns:1fr}}.editor-canvas-wrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);overflow:auto;display:flex;justify-content:center}.editor-page{background:var(--page);border:1px solid var(--line);position:relative;flex-shrink:0}.editor-page-inner{position:absolute;top:0;left:0;transform-origin:top left;color:#0f172a}.editor-properties{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);position:-webkit-sticky;position:sticky;top:16px;max-height:calc(100vh - 32px);overflow:auto}.properties-empty h3,.properties-panel h3{margin:0 0 8px;font-size:1rem;text-transform:capitalize}.properties-empty p{margin:0 0 10px;color:var(--muted);font-size:.9rem}.properties-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:14px;padding-bottom:12px;border-bottom:1px solid var(--line)}.properties-head-actions{display:flex;gap:4px}.property-field{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.property-label{font-size:.78rem;font-weight:600;color:var(--muted)}.property-field input,.property-field select,.property-field textarea{border:1px solid var(--line);border-radius:8px;padding:.45rem .6rem;background:var(--surface);color:var(--ink);font-size:.9rem}.property-field textarea{resize:vertical;font-family:var(--font-sans)}.properties-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px}.placeholder-chips{display:flex;flex-wrap:wrap;gap:6px;max-height:120px;overflow:auto}.chip{border:1px solid var(--line);background:var(--surface);color:var(--muted);border-radius:999px;padding:3px 9px;font-size:.72rem;cursor:pointer}.chip:hover{background:var(--accent-soft);color:var(--accent-deep);border-color:transparent}.segmented{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}.segmented button{border:none;background:var(--surface);color:var(--muted);padding:.4rem .85rem;cursor:pointer;font-size:.85rem}.segmented button.active{background:var(--accent);color:var(--on-accent)}.color-input{display:flex;align-items:center;gap:8px}.color-input input[type=text]{flex:1 1;border:1px solid var(--line);border-radius:8px;padding:.4rem .55rem;background:var(--surface);color:var(--ink);font-size:.85rem}.editor-message{background:var(--accent-soft);color:var(--accent-deep);border-radius:8px;padding:8px 14px;font-size:.9rem;font-weight:500}:root[data-theme=dark] .login-shell:before{background:rgba(20,163,144,.18)}:root[data-theme=dark] .login-shell:after{background:rgba(7,108,95,.16)}.filter-chips{display:flex;flex-wrap:wrap;gap:8px}.filter-chip{display:inline-flex;align-items:center;gap:8px;padding:.45rem .9rem;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--muted);font-size:.85rem;font-weight:500;cursor:pointer;transition:background .15s ease,color .15s ease,border-color .15s ease}.filter-chip:hover{border-color:var(--accent);color:var(--accent)}.filter-chip.is-active{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.filter-chip-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;padding:0 6px;border-radius:999px;background:var(--surface-3);color:var(--muted);font-size:.72rem;font-weight:600}.filter-chip.is-active .filter-chip-count{background:rgba(255,255,255,.18);color:var(--on-accent)}.items-grip-col{width:34px;padding-left:12px;padding-right:0}.items-grip{display:inline-flex;align-items:center;justify-content:center;cursor:-webkit-grab;cursor:grab;color:var(--muted);padding:4px;border-radius:6px;transition:color .15s ease,background .15s ease}.items-grip:hover{color:var(--accent);background:var(--accent-soft)}.items-grip:active{cursor:-webkit-grabbing;cursor:grabbing}.items-table tr.is-dragging{opacity:.4;background:var(--accent-soft)}.item-row-actions{display:inline-flex;align-items:center;gap:4px}.item-row-actions .btn-sm{padding:.35rem .55rem;font-size:.9rem;line-height:1}.payments-progress{padding:18px 20px;display:grid;grid-gap:10px;gap:10px}.payments-progress-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}.payments-progress-label{font-weight:700;color:var(--ink);font-family:var(--font-display)}.payments-progress-remaining{color:var(--warn);font-weight:600;font-size:.92rem}.payments-progress-remaining.is-zero{color:var(--success)}.payments-progress-track{height:8px;border-radius:999px;background:var(--surface-2);overflow:hidden}.payments-progress-fill{height:100%;border-radius:999px;background:var(--accent);transition:width .35s ease}.payments-table td,.payments-table th{vertical-align:middle}.payments-note-cell{max-width:260px;overflow:hidden;text-overflow:ellipsis}.quick-amounts{display:flex;gap:6px;margin-top:2px}.route-loader{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:rgba(244,247,254,.78);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);animation:route-loader-fade .18s ease both}:root[data-theme=dark] .route-loader{background:rgba(10,20,17,.78)}.route-loader-brand{display:flex;align-items:center;justify-content:center}.route-loader-logo{width:min(280px,62vw);height:auto;animation:route-loader-flash .9s ease-in-out infinite}.route-loader-logo-dark,:root[data-theme=dark] .route-loader-logo-light{display:none}:root[data-theme=dark] .route-loader-logo-dark{display:block}@keyframes route-loader-flash{0%,to{opacity:1;transform:scale(1)}50%{opacity:.25;transform:scale(.96)}}@keyframes route-loader-fade{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){.route-loader{backdrop-filter:none;-webkit-backdrop-filter:none}.route-loader,.route-loader-logo{animation:none}}