:root { --primary:#176b5b; --primary-dark:#0f5145; --accent:#e9f5f2; --text:#172622; --muted:#65736f; --line:#dce5e2; --surface:#fff; --bg:#f5f8f7; --danger:#b42318; --success:#18794e; --shadow:0 8px 24px rgba(22,55,47,.07); }
* { box-sizing:border-box; }
html, body { margin:0; min-height:100%; direction:rtl; background:var(--bg); color:var(--text); font-family:Tahoma,"Segoe UI",sans-serif; font-size:14px; }
body { min-width:320px; }
button, input { font:inherit; }
button { cursor:pointer; }
a { color:inherit; text-decoration:none; }
.app-shell { min-height:100vh; padding-bottom:72px; }
.app-header { height:60px; padding:0 max(18px,calc((100vw - 1120px)/2)); background:rgba(255,255,255,.96); border-bottom:1px solid var(--line); display:flex; align-items:center; justify-content:space-between; position:sticky; top:0; z-index:20; backdrop-filter:blur(10px); }
.brand { display:flex; align-items:center; gap:9px; font-weight:700; }
.brand-mark,.auth-logo { display:grid; place-items:center; background:var(--primary); color:white; border-radius:10px; font-weight:800; }
.brand-mark { width:34px; height:34px; }
.header-user { display:flex; align-items:center; gap:12px; }.user-name { color:var(--muted); font-size:.9rem; }
.page-content { width:min(100% - 32px,1080px); margin:0 auto; padding:28px 0 36px; }
.page-head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:22px; }
h1 { margin:0 0 7px; font-size:1.45rem; line-height:1.5; } p { margin:0; color:var(--muted); line-height:1.8; }
.button { min-height:40px; border:1px solid transparent; border-radius:9px; padding:8px 16px; transition:.15s; }
.button:disabled { opacity:.6; cursor:default; }.button-primary { background:var(--primary); color:#fff; }.button-primary:hover:not(:disabled) { background:var(--primary-dark); }.button-ghost { background:#fff; border-color:var(--line); color:var(--text); }.button-small { min-height:34px; padding:5px 12px; }.button-block { width:100%; }
.bottom-nav { position:fixed; bottom:0; right:0; left:0; height:64px; background:#fff; border-top:1px solid var(--line); display:flex; justify-content:center; gap:12px; z-index:20; }
.bottom-nav a { width:130px; display:flex; flex-direction:column; justify-content:center; align-items:center; gap:2px; color:var(--muted); font-size:.78rem; border-top:2px solid transparent; }.bottom-nav a.active { color:var(--primary); border-color:var(--primary); }.nav-icon { font-size:1.35rem; line-height:1; }
.laboratory-list { display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:12px; }
.laboratory-card { border:1px solid var(--line); background:var(--surface); border-radius:13px; min-height:88px; padding:15px; display:flex; align-items:center; text-align:right; color:var(--text); box-shadow:0 2px 8px rgba(22,55,47,.03); }.laboratory-card:hover { border-color:#9fc9bf; box-shadow:var(--shadow); transform:translateY(-1px); }.laboratory-icon { width:46px; height:46px; border-radius:11px; background:var(--accent); color:var(--primary); display:grid; place-items:center; font-size:1.15rem; font-weight:700; }.laboratory-info { display:flex; flex-direction:column; gap:5px; flex:1; margin:0 12px; }.laboratory-info strong { font-size:1rem; }.laboratory-info small { color:var(--muted); }.card-arrow { font-size:1.6rem; color:#84928e; }
.laboratory-actions,.request-actions { display:flex; gap:7px; }.request-list { display:grid;grid-template-columns:repeat(auto-fit,minmax(310px,1fr));gap:13px; }.request-card,.editor-card { background:linear-gradient(180deg,#fff 0%,#fdfefe 100%);border:1px solid var(--line);border-radius:15px;padding:17px;box-shadow:0 3px 12px rgba(22,55,47,.035); }.request-card{transition:transform .15s,border-color .15s,box-shadow .15s}.request-card:hover{transform:translateY(-2px);border-color:#b8d5ce;box-shadow:var(--shadow)}.request-card-head,.details-head,.request-status-bar { display:flex;align-items:center;justify-content:space-between;gap:12px; }.request-meta { display:flex;flex-wrap:wrap;gap:8px 14px;color:var(--muted);font-size:.82rem;margin:11px 0; }.emergency { color:var(--danger);font-weight:700; }.lab-comment { background:#fff4f2;padding:9px;border-radius:8px;margin-bottom:10px; }.status-rejected { background:#fff0ee;color:var(--danger); }
.tooth-input{width:100%;min-height:42px;border:1px solid var(--line);border-radius:8px;background:#fff;text-align:right;padding:8px}.modal-backdrop{position:fixed;inset:0;background:#17212b99;z-index:1000;display:grid;place-items:center;padding:12px;backdrop-filter:blur(2px)}.tooth-modal{width:min(590px,calc(100vw - 24px));max-height:calc(100vh - 24px);overflow:auto;background:#fff;border-radius:15px;padding:15px;box-shadow:0 24px 70px rgba(0,0,0,.22)}.modal-close{border:0;background:transparent;font-size:1.65rem;line-height:1}.modal-actions{display:flex;justify-content:flex-end;margin-top:12px}.tooth-chart{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);direction:ltr;margin:12px auto;max-width:550px;overflow:hidden}.tooth-quadrant{display:flex;min-width:0;padding:5px}.quadrant-a,.quadrant-c{justify-content:flex-end;border-right:2px solid #667}.quadrant-a,.quadrant-b{border-bottom:2px solid #667}.tooth{flex:0 1 31px;width:31px;min-width:0;height:35px;border:1px solid var(--line);background:#fff;color:var(--text);margin:1px;border-radius:6px;padding:0}.tooth.selected{background:var(--primary);color:#fff;border-color:var(--primary)}.tooth-chart-compact{max-width:300px;margin:4px 0}.tooth-chart-compact .tooth{width:18px;height:21px;padding:0;font-size:.62rem}.request-teeth{display:grid;gap:6px;margin:8px 0}.request-teeth>div{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:.8rem}
.tooth-input-chart{display:flex;align-items:center;justify-content:center;cursor:pointer;height:40px;min-height:40px;padding:2px 8px}.tooth-input-chart.disabled{cursor:default;background:#f3f5f4}.tooth-input-chart .tooth-chart{pointer-events:none;width:100%;margin:0}.tooth-input-chart .tooth-chart-compact .tooth{width:17px;height:19px}.selected-teeth{display:grid;grid-template-columns:1fr 1fr;direction:ltr;width:110px;height:34px;margin:auto;line-height:1}.selected-quadrant{display:flex;align-items:center;min-width:0;padding:2px 5px;font-size:.78rem;white-space:nowrap}.selected-teeth .quadrant-a,.selected-teeth .quadrant-c{justify-content:flex-end;border-right:1px solid #61706c}.selected-teeth .quadrant-a,.selected-teeth .quadrant-b{border-bottom:1px solid #61706c}.selected-teeth .quadrant-b,.selected-teeth .quadrant-d{justify-content:flex-start}
@media(max-width:600px){.tooth-modal{width:min(440px,calc(100vw - 16px));padding:11px}.tooth{flex-basis:25px;height:31px;font-size:.78rem}.tooth-quadrant{padding:3px}.tooth-chart{margin:9px auto}.tooth-modal .section-note{display:none}}
.editor-grid { display:grid;grid-template-columns:2fr 1fr;gap:16px;align-items:end; }.check-field { display:flex;align-items:center;gap:7px;height:40px; }.details-head { margin:22px 0 12px; }.details-head h2 { font-size:1.05rem;margin:0; }.detail-list { display:grid;gap:10px; }.detail-editor { display:grid;grid-template-columns:32px 1.5fr 1fr 1fr .7fr 2fr auto;gap:9px;align-items:end;background:#f7faf9;border:1px solid var(--line);border-radius:11px;padding:12px; }.detail-number { width:27px;height:27px;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:var(--primary);align-self:center; }.field select { width:100%;height:40px;border:1px solid #cbd8d4;border-radius:8px;padding:6px;background:#fff; }.remove-detail { border:0;background:none;color:var(--danger);height:40px; }.attachments-section { margin-top:14px; }.section-note { font-size:.82rem; }.attachment-list,.selected-file-list { display:grid;gap:7px;margin-top:12px; }.attachment-item,.selected-file-list>div { display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:8px;padding:9px; }.attachment-item span,.selected-file-list span { flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }.attachment-item small,.selected-file-list small { color:var(--muted); }.attachment-item button,.selected-file-list button { border:0;background:none;color:var(--primary); }.compact { min-height:70px; }
.upload-tray{position:fixed;left:18px;bottom:78px;width:min(390px,calc(100vw - 28px));z-index:1100;background:#fff;border:1px solid #d6dfdc;border-radius:12px;box-shadow:0 14px 40px rgba(23,38,34,.2);overflow:hidden}.upload-tray-title{display:flex;justify-content:space-between;align-items:center;background:#263b36;color:#fff;padding:11px 14px}.upload-tray-title span{font-size:.78rem;opacity:.8}.upload-row{padding:10px 13px;border-top:1px solid #edf1f0}.upload-row-info{display:flex;align-items:center;gap:8px;margin-bottom:7px}.upload-row-info span{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.upload-row-info small{color:var(--muted);font-size:.75rem}.upload-row-info button{border:0;background:none;color:var(--primary);padding:0;font-size:.78rem}.upload-error{color:var(--danger)!important}.upload-progress{height:4px;background:#e5ecea;border-radius:5px;overflow:hidden;direction:ltr}.upload-progress i{display:block;height:100%;background:var(--primary);transition:width .15s}.upload-progress i.failed{background:var(--danger)}
.file-picker-input{position:absolute!important;width:1px!important;height:1px!important;opacity:0;pointer-events:none}.file-picker label{display:flex;align-items:center;gap:10px;min-width:225px;padding:8px 12px;border:1px dashed #91bcb2;border-radius:10px;background:#f3faf8;color:var(--primary);cursor:pointer;transition:.15s}.file-picker label:hover{background:#e7f5f1;border-color:var(--primary);transform:translateY(-1px)}.file-picker-icon{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;background:var(--primary);color:#fff;font-size:1.3rem}.file-picker label>span:last-child{display:flex;flex-direction:column;gap:2px}.file-picker label strong{font-size:.85rem}.file-picker label small{font-size:.7rem;color:var(--muted);font-weight:400}
.auth-page { min-height:calc(100vh - 145px); display:grid; place-items:center; }.auth-card,.settings-card { width:min(100%,420px); background:#fff; border:1px solid var(--line); border-radius:15px; padding:26px; box-shadow:var(--shadow); }.auth-card { text-align:center; }.auth-logo { width:50px; height:50px; margin:0 auto 16px; font-size:1.25rem; }.auth-card p { margin-bottom:20px; }.auth-card .field,.settings-card .field { text-align:right; }
.field { display:flex; flex-direction:column; gap:6px; min-width:0; }.field label { font-size:.83rem; color:#4b5a56; font-weight:600; }.field input { width:100%; height:40px; border:1px solid #cbd8d4; border-radius:8px; padding:7px 10px; color:var(--text); background:#fff; outline:none; }.field input:focus { border-color:var(--primary); box-shadow:0 0 0 3px rgba(23,107,91,.1); }.auth-card .field,.settings-card .field { margin-bottom:15px; }
.persian-date-input{position:relative;display:flex}.persian-date-input>input{padding-left:42px}.calendar-button{position:absolute;left:2px;top:2px;width:36px;height:36px;border:0;background:transparent;color:var(--primary);font-size:1.2rem}.calendar-dismiss{position:fixed;inset:0;z-index:99}.persian-calendar{position:absolute;top:45px;right:0;width:270px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px;box-shadow:0 14px 38px rgba(20,45,38,.18);z-index:100}.calendar-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}.calendar-head button,.calendar-footer button{border:0;background:var(--accent);color:var(--primary);border-radius:7px;padding:5px 9px}.calendar-head button{font-size:1.2rem}.calendar-weekdays,.calendar-days{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;gap:3px}.calendar-weekdays{color:var(--muted);font-size:.72rem;margin-bottom:4px}.calendar-days button{aspect-ratio:1;border:0;border-radius:7px;background:transparent;color:var(--text)}.calendar-days button:hover{background:var(--accent)}.calendar-days button.selected{background:var(--primary);color:#fff}.calendar-footer{display:flex;justify-content:space-between;margin-top:9px;padding-top:8px;border-top:1px solid var(--line)}
.filter-panel { background:#fff; border:1px solid var(--line); border-radius:13px; padding:16px; margin-bottom:18px; }.filter-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:13px; }.filter-actions { display:flex; gap:8px; margin-top:15px; }.back-link { border:0; background:none; color:var(--primary); padding:0 0 7px; }
.orders-filter{display:flex;align-items:flex-end;gap:13px}.orders-filter .filter-grid{flex:1;grid-template-columns:180px 180px minmax(150px,1fr) minmax(180px,1.35fr)}.orders-filter .filter-actions{flex:none;margin-top:0}.orders-filter .persian-date-input{width:180px}
.alert { padding:11px 13px; border-radius:9px; margin:0 0 16px; line-height:1.7; }.alert-error { background:#fff0ee; color:var(--danger); border:1px solid #ffd3cd; }.alert-success { background:#edf9f3; color:var(--success); border:1px solid #c8ebda; }
.content-loader,.page-loader,.empty-state { min-height:180px; display:flex; align-items:center; justify-content:center; gap:10px; color:var(--muted); }.empty-state { flex-direction:column; background:#fff; border:1px dashed #cbd8d4; border-radius:13px; }.empty-state strong { color:var(--text); }.spinner { width:22px; height:22px; border:3px solid #dbe8e4; border-top-color:var(--primary); border-radius:50%; animation:spin .7s linear infinite; } @keyframes spin { to { transform:rotate(360deg); } }
.orders-page-wide{width:90vw;margin-inline:calc((100% - 90vw)/2)}.result-summary { color:var(--muted); font-size:.85rem; margin:0 2px 8px; }.orders-table-wrap { background:#fff; border:1px solid var(--line); border-radius:12px; overflow:auto; }.orders-table { width:100%; border-collapse:collapse; min-width:1250px; }.orders-table th { background:#f0f5f3; color:#50605b; font-size:.8rem; text-align:right; font-weight:600; }.orders-table th,.orders-table td { padding:11px 12px; border-bottom:1px solid #e8eeec; white-space:nowrap; }.orders-table tbody tr:last-child td { border-bottom:0; }.orders-table .tooth-column{box-sizing:border-box;width:210px;min-width:210px;max-width:210px}.orders-table .tooth-column .selected-teeth{width:186px}.status { display:inline-block; padding:4px 8px; border-radius:20px; font-size:.75rem; }.status-open { background:#fff6dd; color:#8a5b00; }.status-done { background:#e9f7f0; color:#14734a; }.order-cards { display:none; }.order-card { background:#fff; border:1px solid var(--line); border-radius:12px; padding:13px; }.order-card-head { display:flex; justify-content:space-between; align-items:center; }.order-main { margin:13px 0; font-weight:600; display:flex; flex-direction:column; gap:4px; }.order-main small { color:var(--muted); font-weight:400; }.order-card dl { margin:0; display:grid; grid-template-columns:1fr 1fr; gap:10px; }.order-card dl div { min-width:0; }.order-card dt { color:var(--muted); font-size:.75rem; }.order-card dd { margin:3px 0 0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
#blazor-error-ui { background:#fff1d6; bottom:0; box-shadow:0 -1px 3px rgba(0,0,0,.2); display:none; left:0; padding:12px 20px; position:fixed; width:100%; z-index:1000; }.loading-progress { position:absolute; display:block; width:5rem; height:5rem; inset:20vh 0 auto; margin:0 auto; }.loading-progress circle { fill:none; stroke:var(--line); stroke-width:.6rem; transform-origin:50% 50%; transform:rotate(-90deg); }.loading-progress circle:last-child { stroke:var(--primary); stroke-dasharray:calc(3.141 * var(--blazor-load-percentage,0%)),500%; transition:stroke-dasharray .05s ease-in-out; }
@media (max-width:720px) { .app-header { height:56px; padding:0 14px; }.user-name { display:none; }.page-content { width:calc(100% - 24px); padding-top:20px; }.page-head { margin-bottom:17px; } h1 { font-size:1.25rem; }.filter-grid { grid-template-columns:1fr 1fr; }.orders-table-wrap { display:none; }.order-cards { display:grid; gap:9px; }.auth-card,.settings-card { padding:20px; }.laboratory-list { grid-template-columns:1fr; } }
@media (max-width:980px) { .orders-filter{display:block}.orders-filter .filter-grid{grid-template-columns:1fr 1fr}.orders-filter .filter-actions{margin-top:15px}.orders-filter .persian-date-input{width:100%} }
@media (max-width:720px) { .laboratory-card { flex-wrap:wrap; }.laboratory-actions { width:100%;margin-top:12px;justify-content:flex-end; }.request-list{grid-template-columns:1fr}.editor-grid { grid-template-columns:1fr 1fr; }.editor-grid .field { grid-column:1/-1; }.detail-editor { grid-template-columns:30px 1fr 1fr; }.detail-editor .detail-comment { grid-column:2/-1; }.attachment-item { flex-wrap:wrap; }.upload-tray{left:14px;bottom:74px} }
@media (max-width:440px) { .filter-grid { grid-template-columns:1fr; }.filter-actions .button { flex:1; padding-inline:8px; }.page-head { align-items:center; }.page-head p { font-size:.85rem; }.brand { font-size:.9rem; } }
@media (display-mode:standalone) { .app-header { padding-top:env(safe-area-inset-top); height:calc(58px + env(safe-area-inset-top)); }.bottom-nav { height:calc(64px + env(safe-area-inset-bottom)); padding-bottom:env(safe-area-inset-bottom); } }

/* Task request editor */
.editor-action-row{display:flex;justify-content:flex-start;margin:0 0 10px}
.request-detail-grid{overflow:auto;border:1px solid var(--line);border-radius:10px}
.request-detail-grid-head,.request-detail-grid-row{display:grid;grid-template-columns:55px minmax(155px,1.35fr) 150px minmax(100px,.8fr) 70px minmax(180px,1.5fr) 115px;align-items:center;gap:8px;min-width:900px;padding:8px 10px}
.request-detail-grid-head{background:#eff5f3;color:#52625d;font-size:.76rem;font-weight:700}
.request-detail-grid-row{min-height:58px;border-top:1px solid #e8eeec;font-size:.8rem}
.request-detail-grid-row:first-of-type{border-top:0}.detail-row-number{color:var(--muted);text-align:center}
.detail-grid-tooth{display:flex;align-items:center;justify-content:center;min-height:36px}.detail-grid-tooth .selected-teeth{margin:0;width:125px}
.detail-grid-comment{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.detail-grid-actions{display:flex;gap:4px}.detail-grid-actions button{border:0;background:transparent;color:var(--primary);padding:4px;font-size:.76rem}.detail-grid-actions button.danger{color:var(--danger)}
.detail-modal{width:min(760px,calc(100vw - 24px));max-height:calc(100vh - 24px);overflow:auto;background:#fff;border-radius:15px;padding:16px;box-shadow:0 24px 70px rgba(0,0,0,.22)}
.detail-modal .details-head{margin:0 0 14px}.detail-modal-fields{display:grid;grid-template-columns:1.5fr 1fr .6fr;gap:10px}.detail-modal-comment{grid-column:1/-1}
.detail-modal-teeth{margin-top:14px}.detail-modal-teeth>label{display:block;margin-bottom:6px;color:#4b5a56;font-size:.83rem;font-weight:600}.detail-modal-teeth .tooth-chart{margin:6px auto}
.attachments-section .editor-action-row{margin-top:0}.attachments-section .file-picker{margin-left:auto}
@media(max-width:720px){.detail-modal{width:calc(100vw - 16px);padding:12px}.detail-modal-fields{grid-template-columns:1fr 1fr}.detail-modal-comment{grid-column:1/-1}.detail-modal-teeth .tooth{flex-basis:25px;height:31px;font-size:.76rem}}
