:root{--zn-primary:#2d5bff;--zn-accent:#7c3aed;--zn-ink:#12142b;--zn-muted:#6b7280;--zn-bg:#f4f5f9;--zn-border:#e3e5ec;--zn-gradient:linear-gradient(120deg,var(--zn-primary),var(--zn-accent))}*{box-sizing:border-box}body,html{padding:0;margin:0;background:var(--zn-bg);color:var(--zn-ink);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:var(--zn-primary)}.zn-gradient-text{background:var(--zn-gradient);-webkit-background-clip:text;background-clip:text;color:transparent}.zn-btn-gradient{background:var(--zn-gradient);border:none;color:#fff;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,opacity .15s ease}.zn-btn-gradient:hover:not(:disabled){box-shadow:0 8px 20px rgba(45,91,255,.32);transform:translateY(-1px)}.zn-btn-gradient:disabled{opacity:.6;cursor:default;transform:none;box-shadow:none}.zn-input:focus{outline:none;border-color:var(--zn-primary)!important;box-shadow:0 0 0 3px rgba(45,91,255,.15)}.zn-card{transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}.zn-card:hover{transform:translateY(-3px);box-shadow:0 12px 28px rgba(18,20,43,.1);border-color:var(--zn-primary)}.zn-touch-link{display:inline-flex;align-items:center;min-height:32px;padding:4px 2px}.zn-touch-btn{min-height:36px;padding:6px 14px;font-size:13px;border-radius:8px;border:1px solid var(--zn-border);background:#fff;cursor:pointer}@media (max-width:640px){.zn-touch-link{min-height:44px;padding:10px 4px}.zn-touch-btn{min-height:44px;min-width:44px;padding:10px 16px;font-size:14px}.zn-stack-mobile{flex-direction:column!important}.zn-stack-mobile>*{flex:1 1 auto!important;min-width:0!important;width:100%!important}}.zn-calendar-agenda,.zn-mobile-only{display:none}@media (max-width:640px){.zn-calendar-grid{display:none}.zn-calendar-agenda,.zn-mobile-only{display:block}}.zn-cal-bar .zn-cal-actions{display:none}.zn-cal-bar:hover .zn-cal-actions{display:flex}.zn-sheet-overlay{position:fixed;inset:0;background:rgba(18,20,43,.45);display:flex;align-items:flex-end;justify-content:center;z-index:1000}.zn-sheet-panel{background:#fff;width:100%;max-width:480px;max-height:80vh;overflow-y:auto;border-radius:16px 16px 0 0;padding:20px}@media (min-width:641px){.zn-sheet-panel{border-radius:16px;margin-bottom:10vh}}@media (max-width:640px){.zn-touchy{padding-left:14px!important;padding-right:14px!important}.zn-touchy button,.zn-touchy input:not([type=checkbox]):not([type=radio]),.zn-touchy select,.zn-touchy textarea{min-height:44px}.zn-touchy a[href]{display:inline-block;padding-top:4px;padding-bottom:4px}}.zn-matrix-wrap{overflow:auto;max-height:70vh}.zn-matrix{border-collapse:collapse;width:100%;--zn-matrix-h1:34px}.zn-matrix .zn-col-check,.zn-matrix .zn-col-name,.zn-matrix .zn-col-status{position:-webkit-sticky;position:sticky;z-index:10;background:#fff}.zn-matrix .zn-col-check{left:0;width:40px;min-width:40px}.zn-matrix .zn-col-name{left:var(--zn-c1,41px);min-width:150px}.zn-matrix .zn-col-status{left:var(--zn-c2,231px);min-width:110px;box-shadow:1px 0 0 0 #ddd}.zn-matrix thead tr:first-child th{position:-webkit-sticky;position:sticky;top:0;height:var(--zn-matrix-h1);z-index:20;background:#f0f1f4}.zn-matrix thead tr:nth-child(2) th{position:-webkit-sticky;position:sticky;top:var(--zn-matrix-h1);z-index:20;background:#fff;box-shadow:0 1px 0 0 #ddd}.zn-matrix thead tr:first-child th.zn-col-check,.zn-matrix thead tr:first-child th.zn-col-name,.zn-matrix thead tr:first-child th.zn-col-status{top:0;z-index:30;background:#f0f1f4}.zn-matrix tbody tr.zn-row-pending .zn-col-check,.zn-matrix tbody tr.zn-row-pending .zn-col-name,.zn-matrix tbody tr.zn-row-pending .zn-col-status{background:#fffbeb}@media (max-width:640px){.zn-matrix-wrap{max-height:65vh}.zn-matrix{--zn-matrix-h1:30px}.zn-matrix .zn-col-name{white-space:normal;overflow-wrap:anywhere;width:104px;min-width:104px;max-width:104px}.zn-matrix .zn-col-status{white-space:normal;width:64px;min-width:64px;max-width:64px}}.zn-detail-wrap{overflow:auto;max-height:70vh}.zn-detail thead th{position:-webkit-sticky;position:sticky;top:0;z-index:20;background:#fff;box-shadow:0 1px 0 0 #ddd}.zn-detail tbody td.zn-detail-sticky{z-index:10}.zn-detail thead th.zn-detail-corner{z-index:30}@media (max-width:640px){.zn-detail-wrap{max-height:65vh}}