:root{--dash-bg:#fff;--dash-border:#ddd;--dash-text:#1a1a1a;--dash-muted:#6b7280;--dash-hover-border:#999;--dash-note-bg:#fdf6d8;--dash-note-border:#e6d98a;--dash-note-focus:#d8c65a;--dash-note-text:#3a3420}[data-bs-theme=dark]{--dash-bg:#23262b;--dash-border:#3a3f47;--dash-text:#e8e8e8;--dash-muted:#9aa0a6;--dash-hover-border:#6b7280;--dash-note-bg:#3a341a;--dash-note-border:#7a6a2a;--dash-note-focus:#b8a23a;--dash-note-text:#f1e9c8}.dashboard-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:1rem;margin-top:1rem}.dashboard-widget{grid-column:span 2;border:1px solid var(--dash-border);border-radius:8px;padding:1rem;background:var(--dash-bg);color:var(--dash-text);cursor:grab;display:flex;flex-direction:column;min-width:0}.dashboard-widget--xs{grid-column:span 2}.dashboard-widget--sm{grid-column:span 3}.dashboard-widget--md{grid-column:span 4}.dashboard-widget--lg{grid-column:span 6}.dashboard-widget--xl{grid-column:span 8}.dashboard-widget--xxl{grid-column:span 12}.dashboard-widget--collapsed{align-self:start}.dashboard-widget--collapsed .dashboard-widget__body{display:none}.dashboard-widget__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem;font-weight:600;color:var(--dash-text)}.dashboard-widget__title{display:inline-flex;align-items:center;gap:.45rem;min-width:0;overflow:hidden}.dashboard-widget__header:has(button[data-action=collapse]) .dashboard-widget__title{cursor:pointer}.dashboard-widget__controls{display:flex;gap:.4rem;flex-shrink:0}.dashboard-widget__body{flex:1 1 auto;min-height:0;min-width:0}.dashboard-widget__controls button{background:0 0;border:none;cursor:pointer;font-size:1.1rem;line-height:1;opacity:.7;padding:.2rem .3rem;color:var(--dash-text)}.dashboard-widget__controls button:hover{opacity:1}.dashboard-widget__controls button[data-action=size]{font-size:.75rem;font-weight:700;text-transform:uppercase;border:1px solid var(--dash-border);border-radius:4px;padding:.1rem .4rem}.dashboard-toolbar{display:flex;justify-content:space-between;align-items:center;gap:1rem;color:var(--dash-text)}.dashboard-toolbar__actions{display:flex;align-items:center;gap:.5rem}.dashboard-toolbar button{border:1px solid var(--dash-border);background:var(--dash-bg);color:var(--dash-text);border-radius:999px;padding:.4rem .9rem;cursor:pointer;font-size:.9rem}.dashboard-toolbar button:hover{border-color:var(--dash-hover-border)}.dashboard-toolbar button.dashboard-btn--danger{color:var(--bs-danger);border-color:var(--bs-danger)}.dashboard-toolbar button.dashboard-btn--danger:hover{background:var(--bs-danger-bg-subtle,transparent)}.dashboard-add{position:relative}.dashboard-add #dashboard-add-toggle{padding:.4rem .75rem;font-weight:700;line-height:1}.dashboard-add__menu{position:absolute;top:calc(100% + .4rem);left:0;min-width:180px;background:var(--dash-bg);border:1px solid var(--dash-border);border-radius:8px;box-shadow:0 4px 16px rgba(0,0,0,.15);padding:.4rem;display:flex;flex-direction:column;gap:.2rem;z-index:20}.dashboard-add__menu[hidden]{display:none}.dashboard-add__item{border:none;background:0 0;color:var(--dash-text);text-align:left;padding:.4rem .6rem;border-radius:4px;cursor:pointer;font-size:.9rem;display:flex;align-items:center;gap:.5rem}.dashboard-add__item:hover{background:var(--dash-border)}.dashboard-add__empty{margin:0;padding:.4rem .6rem;color:var(--dash-muted);font-size:.85rem}@media (max-width:700px){.dashboard-grid{grid-template-columns:1fr !important}.dashboard-widget{grid-column:span 1 !important}}.dashboard-note{width:100%;min-height:120px;resize:vertical;border:1px solid var(--dash-note-border);background:var(--dash-note-bg);color:var(--dash-note-text);border-radius:6px;padding:.6rem;font-family:inherit;font-size:.9rem;box-sizing:border-box}.dashboard-note::placeholder{color:var(--dash-muted)}.dashboard-note:focus{outline:2px solid var(--dash-note-focus);outline-offset:1px}.dashboard-note__status{font-size:.75rem;color:var(--dash-muted);height:1.2em;margin-top:.25rem;opacity:0;transition:opacity .3s}.dashboard-note__status.is-visible{opacity:1}.dashboard-info{white-space:pre-line;line-height:1.5;color:var(--dash-text)}