body{background-color:#fff}.pagination span{padding:5px!important}.filter-panel{background:#eff5fb;background-image:linear-gradient(180deg,#f1f7fc,#e6eef7);border:1px solid #cdd9e6;border-radius:.625rem;box-shadow:0 1px 2px rgba(15,23,42,.05);margin:0;padding:1rem 1.25rem}.filter-panel-wrap{padding:.75rem 0 1.25rem}.filter-panel-header{align-items:center;display:flex;gap:1rem;justify-content:flex-end;margin-bottom:.75rem}.filter-panel-count{color:#334155;font-size:.875rem}.filter-panel-count .badge{margin-left:.375rem;padding:.4rem .65rem}.filter-panel .form-control,.filter-panel .form-select{background-color:#fff;border-color:#c8d3e0}.filter-panel .form-control:focus,.filter-panel .form-select:focus{border-color:#60a5fa;box-shadow:0 0 0 .18rem rgba(59,130,246,.18)}.filter-panel .input-group-text{background-color:#e1eaf3;border-color:#c8d3e0;color:#475569;font-size:.8125rem;font-weight:500}.filter-panel-actions{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.app-navbar{background:linear-gradient(180deg,#fff,#f5f7fa);border-bottom:1px solid #d8dee7;box-shadow:0 1px 2px rgba(15,23,42,.04);padding:.5rem 1rem}.app-navbar .navbar-brand{align-items:center;color:#1e293b;display:inline-flex;font-size:1.125rem;font-weight:700;gap:.5rem;letter-spacing:-.01em;padding-right:.5rem}.app-navbar .navbar-brand:before{align-items:center;background:#2563eb;border-radius:.375rem;color:#fff;content:"FM";display:inline-flex;font-size:.75rem;font-weight:700;height:1.75rem;justify-content:center;letter-spacing:0;width:1.75rem}.app-navbar .nav{gap:.25rem}.app-navbar .nav-link{border-radius:.375rem;color:#475569;font-size:.9rem;font-weight:500;padding:.5rem .85rem;transition:background-color .15s ease,color .15s ease}.app-navbar .nav-link:hover{background-color:rgba(37,99,235,.06);color:#1e293b}.app-navbar .nav-link.active{background-color:rgba(37,99,235,.08);color:#1d4ed8;font-weight:600}.app-navbar .dropdown-menu{--bs-dropdown-link-active-bg:#2563eb;--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-hover-bg:#eff5fb;--bs-dropdown-link-hover-color:#1e293b;--bs-dropdown-link-color:#334155;border:1px solid #e2e8f0;border-radius:.5rem;box-shadow:0 6px 24px rgba(15,23,42,.08);margin-top:.25rem;padding:.375rem}.app-navbar .dropdown-item{border-radius:.375rem;font-size:.875rem;padding:.45rem .75rem}.app-navbar .dropdown-header{color:#64748b;font-size:.7rem;font-weight:600;letter-spacing:.06em;margin:0;padding:.5rem .75rem .25rem;text-transform:uppercase}.app-navbar .dropdown-divider{border-color:#e2e8f0;margin:.25rem 0}.app-navbar .dropdown-item+.dropdown-item{margin-top:2px}.app-navbar .dropdown-item.active{box-shadow:0 2px 6px rgba(37,99,235,.25)}.app-navbar-actions .btn{font-size:.8125rem;padding:.35rem .75rem}.app-navbar-action-btn{background-color:#fff;border:1px solid #d8dee7;color:#334155;font-weight:500;transition:background-color .15s ease,border-color .15s ease,color .15s ease}.app-navbar-action-btn:focus,.app-navbar-action-btn:hover{background-color:#eff5fb;border-color:#b7c4d4;color:#1e293b}.app-navbar-action-btn.dropdown-toggle:after{color:#64748b;margin-left:.45rem}.app-navbar-action-btn.show,.app-navbar-action-btn[aria-expanded=true]{background-color:#eff5fb;border-color:#b7c4d4;color:#1e293b}.pagination{--bs-pagination-padding-x:0.85rem;--bs-pagination-padding-y:0.5rem;--bs-pagination-font-size:0.9rem;--bs-pagination-color:#475569;--bs-pagination-bg:transparent;--bs-pagination-border-width:0;--bs-pagination-border-color:transparent;--bs-pagination-border-radius:0.5rem;--bs-pagination-hover-color:#1e293b;--bs-pagination-hover-bg:rgba(37,99,235,.06);--bs-pagination-hover-border-color:transparent;--bs-pagination-focus-color:#1d4ed8;--bs-pagination-focus-bg:rgba(37,99,235,.08);--bs-pagination-focus-box-shadow:0 0 0 0.18rem rgba(59,130,246,.15);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#2563eb;--bs-pagination-active-border-color:#2563eb;--bs-pagination-disabled-color:#cbd5e1;--bs-pagination-disabled-bg:transparent;--bs-pagination-disabled-border-color:transparent;background:#fff;border:1px solid #e5e9f0;border-radius:.625rem;box-shadow:0 1px 2px rgba(15,23,42,.03);display:inline-flex;gap:.125rem;padding:.375rem}.pagination .page-link{align-items:center;border:none;border-radius:.375rem!important;display:inline-flex;font-weight:500;justify-content:center;line-height:1.25;min-width:2.25rem;text-align:center;transition:background-color .12s ease,color .12s ease,transform .12s ease}.pagination .page-link:hover{transform:translateY(-1px)}.pagination .page-link svg{display:block}.pagination .page-link span{padding:0!important}.pagination nav{display:inline-flex}.pagination .page-item.active .page-link{box-shadow:0 4px 10px rgba(37,99,235,.25);font-weight:600}.pagination .page-item.disabled .page-link{cursor:not-allowed;opacity:.4}.pagination .page-item.disabled .page-link:hover{transform:none}.app-loader-overlay{align-items:center;backdrop-filter:blur(2px);background:rgba(15,23,42,.55);display:flex;inset:0;justify-content:center;opacity:0;pointer-events:none;position:fixed;transition:opacity .2s ease;z-index:9999}.app-loader-overlay.is-visible{opacity:1;pointer-events:auto}.app-loader-card{align-items:center;background:#fff;border-radius:.875rem;box-shadow:0 18px 40px rgba(15,23,42,.25);display:flex;flex-direction:column;gap:1rem;max-width:24rem;min-width:18rem;padding:1.75rem 2.25rem;text-align:center}.app-loader-spinner{animation:app-loader-spin .9s linear infinite;border:4px solid #e2e8f0;border-radius:50%;border-top-color:#2563eb;height:3rem;width:3rem}@keyframes app-loader-spin{to{transform:rotate(1turn)}}.app-loader-title{color:#0f172a;font-size:1rem;font-weight:600;margin:0}.app-loader-hint{color:#64748b;font-size:.8125rem;line-height:1.45;margin:0}.app-footer{background:linear-gradient(180deg,#f5f7fa,#fff);border-top:1px solid #d8dee7;margin-top:1rem;padding:.6rem 1.25rem}.app-footer-inner{align-items:center;color:#94a3b8;display:flex;font-size:.8125rem;justify-content:flex-end}.app-footer-link{color:inherit;text-decoration:none;transition:color .15s ease}.app-footer-link:hover{color:#64748b;text-decoration:underline;text-underline-offset:2px}body{display:flex;flex-direction:column;min-height:100vh}.container-fluid{flex:1 0 auto}.auth-page{background:radial-gradient(circle at 15% 20%,rgba(96,165,250,.18),transparent 55%),radial-gradient(circle at 85% 80%,rgba(59,130,246,.18),transparent 55%),linear-gradient(180deg,#f4f7fb,#e9eff7);justify-content:center;margin:0 calc(var(--bs-gutter-x, .75rem)*-1);min-height:100vh;padding:2rem 1rem}.auth-card-wrap,.auth-page{align-items:center;display:flex}.auth-card-wrap{flex-direction:column;max-width:26rem;width:100%}.auth-brand{margin-bottom:1.75rem;text-align:center}.auth-brand-mark{align-items:center;background:linear-gradient(135deg,#3b82f6,#2563eb);border-radius:.875rem;box-shadow:0 8px 20px rgba(37,99,235,.25);color:#fff;display:inline-flex;font-size:1.125rem;font-weight:700;height:3.25rem;justify-content:center;letter-spacing:.04em;margin-bottom:.875rem;width:3.25rem}.auth-brand-name{color:#0f172a;font-size:1.75rem;font-weight:700;letter-spacing:-.02em;line-height:1.1}.auth-brand-tagline{color:#64748b;font-size:.875rem;margin-top:.25rem}.auth-card{background:#fff;border:1px solid #e2e8f0;border-radius:.875rem;box-shadow:0 12px 32px rgba(15,23,42,.08);padding:2rem;width:100%}.auth-card-title{color:#0f172a;font-size:1.125rem;font-weight:600;margin-bottom:1.25rem;text-align:center}.auth-card .form-label{color:#334155;font-size:.8125rem;font-weight:500;margin-bottom:.35rem}.auth-card .form-control{background-color:#f8fafc;border:1px solid #cbd5e1;transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease}.auth-card .form-control:focus{background-color:#fff;border-color:#60a5fa;box-shadow:0 0 0 .2rem rgba(59,130,246,.18)}.auth-card .btn-primary{background:linear-gradient(135deg,#3b82f6,#2563eb);border:none;font-weight:600;letter-spacing:.01em;transition:transform .05s ease,box-shadow .15s ease}.auth-card .btn-primary:hover{box-shadow:0 8px 20px rgba(37,99,235,.25)}.auth-card .btn-primary:active{transform:translateY(1px)}.auth-alert{font-size:.875rem;margin-bottom:1.25rem;padding:.625rem .875rem}.auth-footer{color:#94a3b8;font-size:.8125rem;margin-top:1.5rem}.auth-footer-link{color:inherit;text-decoration:none;transition:color .15s ease}.auth-footer-link:hover{color:#64748b;text-decoration:underline;text-underline-offset:2px}.app-table{--row-bg:#fff;--row-alt-bg:#f8fafc;--row-hover-bg:#eff5fb;--border-color:#e5e9f0;--text:#334155;--text-muted:#64748b;--text-strong:#0f172a;background:var(--row-bg);border:1px solid var(--border-color);border-collapse:separate;border-radius:.625rem;border-spacing:0;box-shadow:0 1px 2px rgba(15,23,42,.03);color:var(--text);font-size:.875rem;margin:.5rem 0;overflow:hidden;width:100%}.app-table thead th{background:#f1f5f9;border-bottom:1px solid var(--border-color);color:#475569;font-size:.75rem;font-weight:600;letter-spacing:.05em;padding:.65rem .85rem;text-transform:uppercase;vertical-align:middle;white-space:nowrap}.app-table tbody td{border-bottom:1px solid #f1f5f9;line-height:1.45;padding:.75rem .85rem;vertical-align:middle}.app-table tbody tr:last-child td{border-bottom:none}.app-table tbody tr:nth-of-type(2n){background-color:var(--row-alt-bg)}.app-table tbody tr:hover{background-color:var(--row-hover-bg)}.app-table .app-table-num{color:var(--text-muted);font-variant-numeric:tabular-nums;width:2.5rem}.app-table .app-table-img{padding:.5rem .85rem;width:4rem}.app-table .app-table-img img{background:#fff;border:1px solid var(--border-color);border-radius:.5rem;display:block;height:3.25rem;object-fit:cover;width:3.25rem}.app-table .app-table-img-empty{align-items:center;background:#f8fafc;border:1px dashed #cbd5e1;border-radius:.5rem;color:#cbd5e1;display:flex;font-size:.7rem;height:3.25rem;justify-content:center;width:3.25rem}.app-table .app-table-name{color:var(--text-strong);font-weight:500}.app-table .app-table-code{color:var(--text-muted);font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.8125rem}.app-table .app-table-meta{color:var(--text-muted);font-size:.78rem;line-height:1.4}.app-table .app-table-meta strong{color:var(--text);font-weight:500}.app-table .app-table-link{align-items:center;color:#2563eb;display:inline-flex;font-weight:500;gap:.25rem;text-decoration:none}.app-table .app-table-link:hover{text-decoration:underline}.app-table .app-table-empty{color:var(--text-muted);font-style:italic;padding:2rem!important;text-align:center}.status-dot{background:#cbd5e1;border-radius:50%;box-shadow:inset 0 0 0 1px rgba(15,23,42,.08);display:inline-block;height:.7rem;vertical-align:middle;width:.7rem}.status-dot--green{background:#22c55e}.status-dot--yellow{background:#eab308}.status-dot--red{background:#ef4444}.status-dot--gray{background:#cbd5e1}.status-icon{align-items:center;border-radius:.375rem;display:inline-flex;font-size:.85rem;height:1.4rem;justify-content:center;line-height:1;width:1.4rem}.status-icon--yes{background:#dcfce7;color:#15803d}.status-icon--no{background:#fee2e2;color:#b91c1c}.status-icon--muted{background:#f1f5f9;color:#94a3b8}.bookmark-icon{color:#2563eb;display:inline-block;height:1rem;width:1rem}.bookmark-icon--inactive{color:#cbd5e1}.app-table-actions{display:inline-flex;flex-direction:column;gap:.25rem;min-width:6.5rem}.app-table-actions .btn{font-size:.75rem;font-weight:500;padding:.3rem .6rem}.btn-link-icon{align-items:center;border-radius:.375rem;color:#2563eb;display:inline-flex;font-size:.8125rem;font-weight:500;gap:.3rem;padding:.3rem .55rem;text-decoration:none;transition:background-color .12s ease}.btn-link-icon:hover{background-color:#eff5fb;color:#1d4ed8}.app-page-header{align-items:flex-start;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;padding:1rem 0 .5rem}.app-page-header>:first-child{flex:1 1 22rem;min-width:0}.app-page-header h1,.app-page-header h4{color:#0f172a;font-size:1.25rem;font-weight:600;line-height:1.2;margin:0 0 .15rem;overflow-wrap:anywhere}.app-page-header-intro{color:#64748b;font-size:.875rem;margin:0}.app-page-header-actions{align-items:center;display:inline-flex;flex:0 0 auto;flex-wrap:nowrap;gap:.5rem;margin-left:auto}@media (max-width:991.98px){.app-page-header-actions{flex:1 1 100%;flex-wrap:wrap;margin-left:0}}.btn-soft{align-items:center;background-color:#fff;border:1px solid #d8dee7;border-radius:.5rem;color:#334155;display:inline-flex;font-size:.8125rem;font-weight:500;gap:.4rem;justify-content:center;line-height:1.4;padding:.4rem .85rem;text-decoration:none;transition:background-color .12s ease,border-color .12s ease,color .12s ease,box-shadow .12s ease}.btn-soft:focus,.btn-soft:focus-visible{box-shadow:0 0 0 .18rem rgba(59,130,246,.18);outline:none}.btn-soft:hover{background-color:#f1f5f9;border-color:#b7c4d4;color:#1e293b}.btn-soft-success{background-color:#f0fdf4;border-color:#bbf7d0;color:#047857}.btn-soft-success:hover{background-color:#dcfce7;border-color:#86efac;color:#065f46}.btn-soft-danger{background-color:#fef2f2;border-color:#fecaca;color:#b91c1c}.btn-soft-danger:hover{background-color:#fee2e2;border-color:#fca5a5;color:#991b1b}.btn-soft-primary{background-color:#eff6ff;border-color:#bfdbfe;color:#1d4ed8}.btn-soft-primary:hover{background-color:#dbeafe;border-color:#93c5fd;color:#1e3a8a}.btn-soft-warning{background-color:#fffbeb;border-color:#fde68a;color:#a16207}.btn-soft-warning:hover{background-color:#fef3c7;border-color:#fcd34d;color:#854d0e}.btn-soft-info{background-color:#ecfeff;border-color:#a5f3fc;color:#0e7490}.btn-soft-info:hover{background-color:#cffafe;border-color:#67e8f9;color:#155e75}.app-stats{background:#fff;border:1px solid #e5e9f0;border-radius:.625rem;box-shadow:0 1px 2px rgba(15,23,42,.03);margin:.5rem 0 1rem;padding:1rem 1.25rem}.app-stats-row{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));text-align:center}.app-stat-item{border-right:1px solid #f1f5f9;padding:.25rem .5rem}.app-stat-item:last-child{border-right:none}.app-stat-value{color:#0f172a;font-size:1.75rem;font-weight:700;letter-spacing:-.01em;line-height:1.15;margin-bottom:.25rem}.app-stat-value--today{color:#2563eb}.app-stat-value--week{color:#0891b2}.app-stat-value--month{color:#16a34a}.app-stat-meta{color:#64748b;font-size:.75rem}.app-tabs{border-bottom:1px solid #e5e9f0;display:flex;gap:.25rem;list-style:none;margin:.5rem 0 1rem;padding:0}.app-tabs .nav-item{margin:0}.app-tabs .nav-link{border:solid transparent;border-radius:.375rem .375rem 0 0;border-width:1px 1px 2px;color:#64748b;font-size:.875rem;font-weight:500;margin-bottom:-1px;padding:.55rem .95rem;transition:color .12s ease,border-color .12s ease,background-color .12s ease}.app-tabs .nav-link:hover{background-color:#f8fafc;color:#1e293b}.app-tabs .nav-link.active{background-color:transparent;border-bottom-color:#2563eb;color:#1d4ed8;font-weight:600}.app-card{background:#fff;border:1px solid #e5e9f0;border-radius:.625rem;box-shadow:0 1px 2px rgba(15,23,42,.03);padding:1rem 1.25rem}.app-card-title{border-bottom:1px solid #f1f5f9;color:#0f172a;font-size:.95rem;font-weight:600;margin:0 0 .625rem;padding-bottom:.5rem}.app-card .app-table{border:none;border-radius:0;box-shadow:none;margin:0}.app-card .app-table thead th{background:transparent;font-size:.7rem;padding:.4rem 0}.app-card .app-table tbody td{border-bottom:1px solid #f1f5f9;padding:.5rem}.app-card .app-table tbody tr:nth-of-type(2n){background:transparent}.app-card .app-table tbody tr:hover{background:#f8fafc}.app-card code{background:#f1f5f9;border-radius:.3rem;color:#1e40af;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.8125rem;padding:.15rem .4rem;white-space:nowrap}.app-form-panel,.app-settings-panel{background:#fff;border:1px solid #e5e9f0;border-radius:.625rem;box-shadow:0 1px 2px rgba(15,23,42,.03);margin:0 0 1rem;padding:1.25rem 1.5rem}.app-form-panel .form-label,.app-settings-panel .form-label{color:#334155;font-size:.8125rem;font-weight:500}.app-form-panel .form-control,.app-form-panel .form-select,.app-settings-panel .form-control,.app-settings-panel .form-select{border-color:#cbd5e1}.app-form-panel .form-control:focus,.app-form-panel .form-select:focus,.app-settings-panel .form-control:focus,.app-settings-panel .form-select:focus{border-color:#60a5fa;box-shadow:0 0 0 .18rem rgba(59,130,246,.15)}.app-settings-section{background:#f8fafc;border:1px solid #e2e8f0;border-radius:.5rem;margin-bottom:1rem;padding:1rem 1.125rem .75rem}.app-settings-section-title{align-items:center;border-bottom:1px solid #e2e8f0;color:#475569;display:flex;font-size:.75rem;font-weight:600;gap:.5rem;letter-spacing:.08em;margin:0 0 .75rem;padding-bottom:.5rem;text-transform:uppercase}.app-settings-section-title .badge{font-weight:500;letter-spacing:normal;text-transform:none}.check-pill-group{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.25rem}.check-pill{align-items:center;background:#fff;border:1px solid #cbd5e1;border-radius:999px;color:#334155;cursor:pointer;display:inline-flex;font-size:.875rem;font-weight:500;gap:.5rem;padding:.45rem .85rem;transition:background-color .12s ease,border-color .12s ease,color .12s ease,box-shadow .12s ease;user-select:none}.check-pill:hover{background:#f8fafc;border-color:#94a3b8}.check-pill input[type=checkbox]{accent-color:#2563eb;cursor:pointer;height:1rem;margin:0;width:1rem}.check-pill:has(input[type=checkbox]:checked){background:linear-gradient(135deg,#3b82f6,#2563eb);border-color:#2563eb;box-shadow:0 2px 8px rgba(37,99,235,.25);color:#fff}.check-pill:has(input[type=checkbox]:checked) input[type=checkbox]{accent-color:#fff}.check-pill:has(input[type=checkbox]:focus-visible){outline:2px solid #60a5fa;outline-offset:2px}.app-form-actions,.app-settings-actions{display:flex;justify-content:flex-end;padding:.5rem 0 1.5rem}.app-form-actions .btn,.app-form-actions button,.app-settings-actions .btn,.app-settings-actions button{background:linear-gradient(135deg,#3b82f6,#2563eb);border:none;border-radius:.5rem;color:#fff;font-weight:600;padding:.55rem 1.5rem;transition:box-shadow .15s ease,transform .05s ease}.app-form-actions .btn:hover,.app-form-actions button:hover,.app-settings-actions .btn:hover,.app-settings-actions button:hover{box-shadow:0 6px 16px rgba(37,99,235,.25)}.app-form-actions .btn:active,.app-form-actions button:active,.app-settings-actions .btn:active,.app-settings-actions button:active{transform:translateY(1px)}