/* Smart Secretary v6 module helpers.
   Deliberately does NOT override AdminStack body/header/sidebar/grid/card rules. */
@font-face{font-family:Yekan;src:url('../assets/webfonts/YekanBakh-Regular.woff2') format('woff2');font-display:swap}
:root{--ss-border:var(--border,#e9e9ef);--ss-muted:#7e7e8f}
body,input,button,select,textarea{font-family:Yekan,Tahoma,Arial,sans-serif}
.inline-post{display:inline-flex;margin:0}.center{text-align:center}.muted{color:var(--ss-muted)}
.full-width{width:100%}.section-gap{margin-top:1.5rem}.sticky-card{position:sticky;top:6rem}
.toolbar,.ss-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1.5rem}
.actions,.row-actions,.ss-row-actions{display:flex;align-items:center;gap:.45rem;flex-wrap:wrap}
.grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:1.5rem}.col-8{grid-column:span 8}.col-4{grid-column:span 4}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.form-grid .full{grid-column:1/-1}
.form-stack{display:grid;gap:1rem}.form-grid label,.form-stack label{display:grid;gap:.45rem;font-weight:500;color:var(--bs-heading-color)}
.form-grid input,.form-grid select,.form-grid textarea,.form-stack input,.form-stack select,.form-stack textarea,.ss-table-search,.status-select{width:100%;border:1px solid var(--ss-border);border-radius:.65rem;padding:.7rem .85rem;background:var(--bs-body-bg);color:var(--bs-body-color);outline:none}
.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus,.form-stack input:focus,.form-stack select:focus,.form-stack textarea:focus,.ss-table-search:focus{border-color:var(--primary);box-shadow:0 0 0 .2rem color-mix(in srgb,var(--primary) 15%,transparent)}
.check-label,.switch-row{display:flex!important;align-items:center;gap:.6rem}.check-label input,.switch-row input{width:auto}
.ss-card-head,.card-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}
.ss-card-head h3,.card-head h3{margin:0}.ss-card-head p,.card-head p{margin:.2rem 0 0;color:var(--ss-muted)}
.ss-widget-editor{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem}.ss-widget-edit{display:grid;grid-template-columns:auto auto 1fr 140px;align-items:center;gap:.7rem;border:1px solid var(--ss-border);border-radius:.75rem;padding:.8rem;background:var(--bs-body-bg)}.drag-handle{cursor:grab;color:var(--ss-muted)}
.empty,.ss-empty{padding:2.5rem;text-align:center;color:var(--ss-muted)}.empty i,.ss-empty i{font-size:2rem;display:block;margin-bottom:.5rem}
.task-title{display:flex;align-items:center;gap:.65rem}.task-title>i{width:.6rem;height:2.3rem;border-radius:1rem}.task-title small{display:block;color:var(--ss-muted)}
.compact-progress{display:flex;align-items:center;gap:.5rem}.compact-progress>i,.ss-progress>i{display:block;height:100%;background:var(--primary);border-radius:inherit}.compact-progress{min-width:115px}.compact-progress:before,.ss-progress{content:"";height:.45rem;flex:1;background:#eeeef5;border-radius:2rem;overflow:hidden}.compact-progress>i{position:absolute}.compact-progress{position:relative}.compact-progress>i{left:0;right:auto;top:50%;transform:translateY(-50%);height:.45rem}.compact-progress span{margin-inline-start:auto;font-size:.78rem}
.detail-meta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.detail-meta>div{padding:1rem;border:1px solid var(--ss-border);border-radius:.75rem}.detail-meta span{display:block;color:var(--ss-muted);font-size:.8rem}.task-detail-head{display:flex;justify-content:space-between;gap:2rem}.progress-ring{width:90px;height:90px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--primary) calc(var(--p)*1%),#ececf3 0);position:relative}.progress-ring:after{content:"";position:absolute;inset:9px;background:var(--bs-body-bg);border-radius:50%}.progress-ring strong{position:relative;z-index:1}
.checklist,.compact-list{display:grid;gap:.65rem}.check-row,.compact-list>div{display:flex;align-items:center;justify-content:space-between;gap:.8rem;padding:.75rem 0;border-bottom:1px solid var(--ss-border)}.check-row.done span{text-decoration:line-through;opacity:.6}.check-button{width:30px;height:30px;border:1px solid var(--ss-border);border-radius:.5rem;background:transparent}
.kanban{display:grid;grid-template-columns:repeat(5,minmax(220px,1fr));gap:1rem;overflow:auto;padding-bottom:.5rem}.kanban-col{background:var(--bs-body-bg);border:1px solid var(--ss-border);border-radius:.8rem;padding:.8rem}.kanban-col>header{display:flex;justify-content:space-between;margin-bottom:.8rem}.kanban-list{display:grid;gap:.75rem;min-height:120px}.kanban-card{background:var(--bs-card-bg);border:1px solid var(--ss-border);border-inline-start:4px solid var(--task-color);border-radius:.7rem;padding:.85rem}.kanban-card h4{font-size:.95rem;margin:.5rem 0}.kanban-card footer{display:flex;justify-content:space-between;color:var(--ss-muted);font-size:.75rem}.kanban-card .progress{height:.35rem;margin:.6rem 0}.kanban-card .progress i{background:var(--task-color)}
.day-timeline,.ss-day-timeline{display:grid;gap:.75rem}.time-block,.hour-row{display:grid;grid-template-columns:90px 1fr auto;gap:1rem;align-items:center;padding:.9rem;border:1px solid var(--ss-border);border-radius:.75rem}.time-block time small{display:block;color:var(--ss-muted)}.hour-row{grid-template-columns:70px 1fr}.hour-event{display:block;border-inline-start:4px solid var(--event);background:color-mix(in srgb,var(--event) 10%,transparent);padding:.75rem;border-radius:.5rem;color:inherit}
.ss-week-grid{display:grid;grid-template-columns:repeat(7,minmax(140px,1fr));overflow:auto}.week-col{border-inline-end:1px solid var(--ss-border);min-height:420px;padding:.6rem}.week-col header{display:grid;gap:.2rem;margin-bottom:.8rem}.week-col>a{display:grid;gap:.2rem;border-inline-start:3px solid var(--event);padding:.6rem;background:color-mix(in srgb,var(--event) 9%,transparent);border-radius:.4rem;margin-bottom:.5rem;color:inherit}
.ss-year-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem}.ss-year-month{padding:1.2rem;color:inherit}.ss-year-month span{color:var(--primary)}
.ss-project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.ss-project-card{border:1px solid var(--ss-border);border-inline-start:4px solid var(--project);border-radius:.8rem;padding:1rem;color:inherit}.ss-project-card>div{display:flex;align-items:center;gap:.7rem}.ss-project-card strong{margin-inline-start:auto}.ss-project-card footer{display:flex;justify-content:space-between;color:var(--ss-muted);font-size:.75rem;margin-top:.6rem}
.range-field{display:flex;align-items:center;gap:.7rem}.range-field input{padding:0}.table-progress{height:.4rem;background:#eeeef5;border-radius:2rem;overflow:hidden;min-width:100px}.color-chip{display:inline-block;width:1rem;height:1rem;border-radius:50%;background:var(--color);vertical-align:middle;margin-inline-end:.35rem}
.login-shell{width:min(440px,92vw);margin:4rem auto}.login-brand{text-align:center;margin-bottom:1.5rem}.login-brand>span{display:grid;place-items:center;width:64px;height:64px;margin:auto;border-radius:1rem;background:var(--primary);color:white;font-size:2rem}.login-card{padding:1.5rem;display:grid;gap:1rem}
@media(max-width:1199px){.grid{display:block}.grid>.col-8,.grid>.col-4{margin-bottom:1rem}.sticky-card{position:static}.ss-project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:767px){.form-grid,.ss-widget-editor,.ss-project-grid,.detail-meta,.ss-year-grid{grid-template-columns:1fr}.ss-widget-edit{grid-template-columns:auto auto 1fr}.ss-widget-edit select{grid-column:1/-1}.task-detail-head{display:block}.toolbar,.ss-toolbar{align-items:stretch}.toolbar>* ,.ss-toolbar>*{width:100%}.kanban{grid-template-columns:repeat(5,260px)}}
/* Module-only controls; dynamic dashboards never load this file. */
.filter-bar{display:grid;grid-template-columns:minmax(220px,2fr) repeat(4,minmax(130px,1fr)) auto;gap:.75rem;align-items:end}
.filter-bar input,.filter-bar select{width:100%;border:1px solid var(--ss-border);border-radius:.65rem;padding:.68rem .8rem;background:var(--bs-body-bg);color:var(--bs-body-color)}
.view-tabs{display:flex;gap:.4rem;flex-wrap:wrap}.view-tabs a{padding:.55rem .85rem;border:1px solid var(--ss-border);border-radius:.6rem;color:var(--bs-body-color)}.view-tabs a.active{background:var(--primary);border-color:var(--primary);color:#fff}
.table-card{overflow:hidden}.table-scroll{overflow:auto}.table-scroll table{width:100%;min-width:900px}.table-scroll th,.table-scroll td{padding:.85rem;border-bottom:1px solid var(--ss-border);vertical-align:middle}.table-scroll thead th{white-space:nowrap;color:var(--ss-muted);font-weight:500}
.badge.priority-urgent{background:#fee2e2;color:#b91c1c}.badge.priority-high{background:#ffedd5;color:#c2410c}.badge.priority-medium{background:#dbeafe;color:#1d4ed8}.badge.priority-low{background:#e5e7eb;color:#4b5563}
.status-select{min-width:130px;padding:.45rem .55rem}
.settings-layout{display:grid;grid-template-columns:240px minmax(0,1fr);gap:1.5rem}.settings-nav{position:sticky;top:7rem;align-self:start;display:grid;gap:.25rem;padding:1rem;border:1px solid var(--ss-border);border-radius:.8rem;background:var(--bs-card-bg)}.settings-nav a{padding:.65rem .75rem;border-radius:.55rem;color:var(--bs-body-color)}.settings-nav a:hover{background:color-mix(in srgb,var(--primary) 10%,transparent);color:var(--primary)}.settings-content{display:grid;gap:1.5rem}
.shopping-lists,.shopping-items{display:grid;gap:.75rem}.shopping-list-row{display:grid;grid-template-columns:1fr auto;gap:.5rem;align-items:center}.shopping-list-row>a{display:flex;justify-content:space-between;gap:1rem;padding:.8rem;border:1px solid var(--ss-border);border-radius:.65rem;color:inherit}.shopping-list-row>a.active{border-color:var(--primary);background:color-mix(in srgb,var(--primary) 7%,transparent)}.shopping-list-row small{display:block;color:var(--ss-muted)}.shopping-items article{display:grid;grid-template-columns:auto 1fr auto;gap:.75rem;align-items:center;padding:.85rem;border:1px solid var(--ss-border);border-radius:.7rem}.shopping-items article.purchased{opacity:.6}.shopping-items article.purchased h4{text-decoration:line-through}
.install-body{background:#f6f5fb;min-height:100vh;padding:2rem}.installer{width:min(980px,100%);margin:auto}.installer>header{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem}.installer>header>span{display:grid;place-items:center;width:56px;height:56px;border-radius:1rem;background:var(--primary);color:#fff;font-size:1.5rem}.installer h1{margin:0}.requirement-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem;margin-bottom:1.25rem}.requirement-grid>div{display:flex;align-items:center;gap:.65rem;padding:.8rem 1rem;background:#fff;border:1px solid #eceaf3;border-radius:.75rem}.requirement-grid .ok i{color:#16a34a}.requirement-grid .bad i{color:#dc2626}.installer-form{background:#fff;border:1px solid #eceaf3;border-radius:1rem;padding:1.5rem}.installer-section{margin-bottom:1.5rem}.installer-section h3{margin-bottom:1rem}.installer-actions{display:flex;justify-content:flex-end;gap:.75rem}
@media(max-width:1199px){.filter-bar{grid-template-columns:repeat(2,minmax(0,1fr))}.settings-layout{grid-template-columns:1fr}.settings-nav{position:static;grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:767px){.filter-bar{grid-template-columns:1fr}.requirement-grid{grid-template-columns:1fr}.settings-nav{grid-template-columns:1fr}.install-body{padding:1rem}.installer-form{padding:1rem}}
/* Project, file, note and native dialog helpers for CRUD pages only. */
.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}
.project-card{display:block;border:1px solid var(--ss-border);border-inline-start:4px solid var(--project,#8756e8);border-radius:.8rem;padding:1rem;color:inherit;background:var(--bs-card-bg)}
.project-card:hover{border-color:var(--project,#8756e8);color:inherit}
.project-card header,.project-card footer{display:flex;align-items:center;justify-content:space-between;gap:.75rem}
.project-card footer{margin-top:.75rem;color:var(--ss-muted);font-size:.8rem}
.project-hero{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding:1.25rem;border:1px solid var(--ss-border);border-inline-start:5px solid var(--project,#8756e8);border-radius:.85rem;background:var(--bs-card-bg)}
.project-hero h2{margin:0}.project-hero p{margin:.35rem 0 0;color:var(--ss-muted)}
.detail-list{display:grid;gap:.7rem}.detail-list>div{display:flex;justify-content:space-between;gap:1rem;padding:.75rem 0;border-bottom:1px solid var(--ss-border)}
.file-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.file-grid.large{grid-template-columns:repeat(4,minmax(0,1fr))}
.file-card{display:grid;gap:.65rem;border:1px solid var(--ss-border);border-radius:.75rem;padding:1rem;background:var(--bs-card-bg);color:inherit}.file-card .file-icon{font-size:1.8rem}.file-card small{color:var(--ss-muted)}
.notes-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.note-card{border:1px solid var(--ss-border);border-top:4px solid var(--note-color,#f59e0b);border-radius:.8rem;padding:1rem;background:var(--bs-card-bg)}.note-card header,.note-card footer{display:flex;justify-content:space-between;gap:.75rem;color:var(--ss-muted)}.note-card h3{margin:.75rem 0 .4rem}.note-card p{white-space:pre-wrap}
dialog.modal{position:fixed;inset:0;width:min(760px,calc(100% - 2rem));height:auto;max-height:calc(100vh - 2rem);margin:auto;padding:0;border:0;border-radius:1rem;background:var(--bs-card-bg);color:var(--bs-body-color);box-shadow:0 1.5rem 4rem rgba(0,0,0,.25);overflow:auto;z-index:1100}
dialog.modal:not([open]){display:none}dialog.modal[open]{display:block}dialog.modal::backdrop{background:rgba(20,18,34,.62);backdrop-filter:blur(2px)}
dialog.modal>form{padding:1.35rem}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-bottom:.8rem;border-bottom:1px solid var(--ss-border)}.modal-head h3{margin:0}.modal-head button{border:0;background:transparent;color:inherit;font-size:1.5rem;line-height:1}
.inline-add{display:flex;gap:.6rem;align-items:center}.inline-add input{flex:1;border:1px solid var(--ss-border);border-radius:.65rem;padding:.65rem .8rem;background:var(--bs-body-bg);color:var(--bs-body-color)}
.history-list{display:grid;gap:.8rem}.history-list>div{display:grid;grid-template-columns:10px 1fr;gap:.65rem}.history-list i{width:10px;height:10px;margin-top:.35rem;border-radius:50%;background:var(--primary)}.history-list small{display:block;color:var(--ss-muted)}
.dependency{display:flex;justify-content:space-between;gap:.75rem;padding:.7rem 0;border-bottom:1px solid var(--ss-border)}
.notification-list,.reminder-list{display:grid;gap:.75rem}.notification-list article,.reminder-list article{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:.85rem;border:1px solid var(--ss-border);border-radius:.7rem}.notification-list article.unread{border-inline-start:4px solid var(--primary)}.notification-list article.read{opacity:.72}.notification-list p{margin:.3rem 0}.notification-list small,.reminder-list small{display:block;color:var(--ss-muted)}
.snooze-form{display:flex;gap:.4rem;align-items:center}.snooze-form select{border:1px solid var(--ss-border);border-radius:.5rem;padding:.4rem;background:var(--bs-body-bg);color:var(--bs-body-color)}
.upload-zone{padding:1.2rem;border:2px dashed var(--ss-border);border-radius:.75rem;text-align:center}.upload-zone input{margin-top:.7rem}
@media(max-width:1199px){.project-grid,.notes-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.file-grid,.file-grid.large{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:767px){.project-grid,.notes-grid,.file-grid,.file-grid.large{grid-template-columns:1fr}.project-hero{display:block}.inline-add,.notification-list article,.reminder-list article,.snooze-form{align-items:stretch;flex-direction:column}}
