:root{--background: #f4f5f3;--border: #e3e6e2;--text: #1d2420;--text-muted: #5b6560;color-scheme:light;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}html,body,#root{height:100%}body{margin:0;background:var(--background);color:var(--text)}.app-top{position:sticky;top:env(safe-area-inset-top,0px);z-index:10}.app-header{display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid var(--border)}.app-header-start{display:flex;align-items:center;gap:20px;min-width:0}.app-brand{display:flex;align-items:center;gap:10px;min-width:0;color:inherit;text-decoration:none;border-radius:4px;line-height:1.2}a.app-brand:hover{color:inherit}.app-brand .initials{flex:none;width:30px;height:30px;border-radius:6px;background:var(--app-color);color:#fff;display:grid;place-items:center;font-weight:700;font-size:13px;letter-spacing:.02em}.app-brand .logo{flex:none;display:block;width:30px;height:30px;object-fit:contain}.app-brand .names{min-width:0;max-width:200px;line-height:1.2}.app-brand .names strong{display:block;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-brand .names span{font-size:12px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.context-bar{display:flex;align-items:center;gap:12px;min-width:0}.context-bar .label{font-size:12px;color:var(--text-muted)}.entity-select{min-width:200px;max-width:280px}.account-button{background:none;border:0;padding:0;cursor:pointer;border-radius:50%}.app-top a:focus-visible,.account-button:focus-visible,.admin-back:focus-visible{outline:2px solid var(--app-color);outline-offset:2px}.app-nav{background:#fff;border-bottom:1px solid var(--border);padding:4px 14px}.app-nav .ant-menu-horizontal{border-bottom:0;line-height:36px}.app-nav .ant-menu-horizontal>.ant-menu-item,.app-nav .ant-menu-horizontal>.ant-menu-submenu{margin:0 2px;padding-inline:12px}.app-nav .ant-menu-horizontal>.ant-menu-submenu-selected,.app-nav .ant-menu-horizontal>.ant-menu-item-selected{color:var(--app-color);background:var(--app-tint)}.app-nav .ant-menu-horizontal>.ant-menu-submenu-selected>.ant-menu-submenu-title{color:var(--app-color)}.ant-layout-sider.admin-sider{border-right:1px solid var(--border)}.admin-back{display:flex;align-items:center;gap:8px;padding:14px 24px;color:var(--text);border-bottom:1px solid var(--border)}.admin-back:hover{color:var(--app-color);background:var(--app-tint-hover)}.admin-nav .admin-search{display:block;width:auto;margin:16px 16px 12px}.admin-nav .ant-menu-item .ant-menu-title-content{white-space:normal;line-height:1.3}.admin-nav .ant-menu-inline .ant-menu-item{height:auto;min-height:40px;display:flex;align-items:center;padding-block:6px}.coming-soon .ant-empty{margin:48px 0}.coming-soon .ant-empty-description strong{display:block;font-size:16px;color:var(--text);margin-bottom:4px}.app-content{padding:20px 28px 40px;min-width:0}@media (max-width: 767px){.ant-layout-header.app-header{padding:0 12px;gap:8px}.app-header-start{gap:8px;flex:1}.context-bar{flex:1}.entity-select{min-width:0;max-width:none;width:100%}}@media (max-width: 720px){.app-content{padding:16px}.hide-mobile{display:none!important}}.page-title{font-size:22px;font-weight:600;margin:4px 0 16px;letter-spacing:-.01em}.list-toolbar{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-bottom:12px}.modified-banner{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;padding:8px 12px;margin-bottom:12px;border-left:3px solid var(--app-color);background:#fff}.record-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;flex-wrap:wrap}.record-header h1{font-size:24px;font-weight:600;margin:0 0 6px;letter-spacing:-.01em;overflow-wrap:anywhere}.record-bar{background:#fff;border:1px solid var(--border);padding:14px 20px;margin-bottom:0}.page-actions-bar{background:#fff;border-bottom:1px solid var(--border)}.page-actions-bar:empty{display:none}.page-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:8px 20px;flex-wrap:wrap}.page-actions-title{min-width:0;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-actions-title .record-type{display:inline;margin-right:6px}.record-summary{background:#fff;border:1px solid var(--border);border-top:0;padding:12px 20px 4px}.record-bar,.record-summary:last-of-type{margin-bottom:12px}.record-bar:has(+.record-summary){margin-bottom:0}.record-dialog .ant-modal-body{max-height:calc(100vh - 240px);overflow-y:auto}.record-type{font-size:13px;color:var(--app-color);font-weight:600;margin-bottom:2px}.record-section{background:#fff;border:1px solid var(--border);padding:16px 20px 6px;margin-bottom:12px}.record-section>h3{font-size:14px;font-weight:600;margin:0 0 14px}.entry{min-height:100%;display:grid;place-items:center;padding:24px}.entry-panel{width:100%;max-width:460px}.entry-panel h1{font-size:26px;font-weight:650;margin:14px 0 6px;letter-spacing:-.015em}.entry-panel p{color:var(--text-muted);margin:0 0 20px;line-height:1.5}.choice{width:100%;text-align:left;display:flex;gap:14px;align-items:center;padding:12px 14px;margin-bottom:8px;background:#fff;border:1px solid var(--border);border-radius:6px;cursor:pointer;font:inherit;color:inherit}.choice:hover{border-color:var(--app-color)}.choice:focus-visible{outline:2px solid var(--app-color);outline-offset:2px}.choice strong{display:block;font-weight:600}.choice span{display:block;font-size:13px;color:var(--text-muted)}.home h1{font-size:26px;font-weight:600;margin:4px 0;letter-spacing:-.015em}.home>p{color:var(--text-muted);margin:0 0 28px}.shortcuts{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:28px}.shortcuts h2{font-size:13px;font-weight:600;color:var(--text-muted);margin:0 0 8px}.shortcuts ul{list-style:none;margin:0;padding:0}.shortcuts li a{display:flex;align-items:center;gap:10px;padding:7px 0;color:var(--text);border-bottom:1px solid var(--border)}.shortcuts li a:hover{color:var(--app-color)}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}.loading-bar{position:absolute;top:0;left:0;right:0;height:2px;overflow:hidden;z-index:5;pointer-events:none;opacity:0;transition:opacity .15s}.loading-bar.active{opacity:1}.loading-bar.active:after{content:"";position:absolute;top:0;bottom:0;width:35%;background:var(--app-color);animation:loading-bar-slide 1.1s ease-in-out infinite}@keyframes loading-bar-slide{0%{left:-35%}to{left:100%}}@media (prefers-reduced-motion: reduce){.loading-bar.active:after{animation:none;left:0;width:100%;opacity:.6}}.list-skeleton{background:#fff;border:1px solid var(--border);padding:12px 16px}.skeleton-row{display:grid;gap:16px;padding:10px 0;border-bottom:1px solid var(--border)}.skeleton-row:last-child{border-bottom:0}.active-filters{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:12px}.calendar-view{background:#fff;border:1px solid var(--border)}.calendar-toolbar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;padding:10px 12px;border-bottom:1px solid var(--border)}.calendar-view .ant-picker-calendar{padding:0 8px 8px}.calendar-day{display:grid;gap:2px;margin-top:2px}.calendar-event{all:unset;cursor:pointer;display:block;min-width:0}.calendar-event:focus-visible{outline:2px solid var(--app-color);outline-offset:1px}.calendar-more{all:unset;cursor:pointer;font-size:11px;color:var(--text-muted)}.calendar-more:focus-visible,.day-header:focus-visible{outline:2px solid var(--app-color);outline-offset:1px}.calendar-week{display:grid;grid-template-columns:repeat(7,minmax(120px,1fr));overflow-x:auto}.day-column{min-height:360px;border-right:1px solid var(--border);padding:6px;display:flex;flex-direction:column;gap:4px}.day-column:last-child{border-right:0}.day-column.today{background:#f7f8f6}.day-header{all:unset;cursor:pointer;padding:4px 2px 8px;color:var(--text-muted);text-transform:capitalize}.day-header strong{color:var(--text);font-size:16px}.day-list{display:grid;gap:6px;padding:16px;max-width:520px}.attendance-grid{border-collapse:separate;border-spacing:3px;font-variant-numeric:tabular-nums}.attendance-grid th{font-weight:500;font-size:12px;color:var(--text-muted);padding:2px 6px;text-align:right}.attendance-grid thead th{text-align:center}.attendance-cell{width:56px;height:24px;display:grid;place-items:center;font-size:11px;border-radius:3px;background:color-mix(in srgb,var(--app-color) calc(var(--intensity) * 100%),#f1f2ef);color:var(--text)}.attendance-total td{text-align:center;font-weight:600;font-size:12px;padding-top:6px}.statement{border:1px solid var(--border);padding:12px;margin-bottom:12px}.simulation-result{padding-bottom:16px;border-left:4px solid var(--border)}.simulation-result.allowed{border-left-color:#2f7d4f}.simulation-result.denied{border-left-color:#b42318}.simulation-result .decision{font-size:22px;font-weight:650;margin-bottom:6px}.simulation-result.allowed .decision{color:#2f7d4f}.simulation-result.denied .decision{color:#b42318}.waiting{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:16px;color:var(--text-muted)}.ant-table-tbody>tr.row-alert-danger>td{background:#fff1f0}.ant-table-tbody>tr.row-alert-warning>td{background:#fff7e6}.ant-table-tbody>tr.row-alert-info>td{background:#e6f4ff}.ant-table-tbody>tr.row-alert-success>td{background:#f6ffed}.cell-with-alert{display:inline-flex;align-items:center;gap:6px}.alert-dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex:none}.alert-dot-danger{background:#ff4d4f}.alert-dot-warning{background:#fa8c16}.alert-dot-info{background:#1677ff}.alert-dot-success{background:#52c41a}.calendar-event.row-alert{border-inline-start:3px solid transparent;padding-inline-start:2px}.calendar-event.row-alert-danger{border-inline-start-color:#ff4d4f}.calendar-event.row-alert-warning{border-inline-start-color:#fa8c16}.calendar-event.row-alert-info{border-inline-start-color:#1677ff}.calendar-event.row-alert-success{border-inline-start-color:#52c41a}.rule-warnings{margin:8px 0 0;padding-inline-start:18px}
