:root{--color-bg: #f2f5fa;--color-surface: #ffffff;--color-surface-2: #f4f7fb;--color-text: #16233a;--color-text-muted: #5c6a82;--color-link: #1a7fc2;--color-accent: #1a7fc2;--color-border: #e4e9f1;--color-danger: #b91c1c;--color-success: #15803d;--color-warning: #c2410c;--color-header-bg: #ffffff;--color-header-bg-active: #e8f2fb;--color-header-text: #16233a;--color-header-text-muted: #8a97ab;--color-chip-on: #1a7fc2;--color-chip-on-text: #ffffff;--color-cta-bg: #64abd6;--color-cta-text: #ffffff;--color-brand-2: #12a5a0;--color-focus: #1a7fc2;--color-scrim: rgba(31, 43, 61, .45);--color-notice: #eef4fb;--color-notice-border: #c9d8ea;--color-diagnosis-caries-fracture: #dc4c4c;--color-diagnosis-perio-bone: #c17d2e;--color-diagnosis-endodontics: #7c5cbf;--color-diagnosis-missing-teeth: #6b7a93;--color-diagnosis-restoration: #2f9e44;--color-diagnosis-prosthesis: #1a7fc2;--color-primary: #1a7fc2;--color-primary-hover: #1569a3;--color-primary-soft: #e8f2fb;--color-on-primary: #ffffff;--color-border-strong: #cfd8e4;--color-info: #1b6fae;--color-info-soft: #e7f1fa;--color-success-soft: #e6f4ea;--color-warning-soft: #fdf0e6;--color-danger-soft: #fcebeb;--color-tooth-enamel: #f4f0e7;--color-tooth-enamel-mid: #e2dac8;--color-tooth-enamel-shade: #bcb098;--color-tooth-enamel-edge: #a89a7e;--color-tooth-cervical: #dcbc86;--color-tooth-incisal: #b9c2cc;--color-tooth-gloss: #ffffff;--color-tooth-root: #d9bc85;--color-tooth-root-light: #ecd8ab;--color-tooth-root-shade: #a5824b;--color-tooth-root-edge: #8a6a39;--color-tooth-gum: #ef8a1c;--color-tooth-jaw: #9aa3af;--color-tooth-ghost: #f2efe8;--color-tooth-ghost-edge: #a59b87;--color-chart-1: #1a7fc2;--color-chart-2: #d95926;--color-chart-3: #199e70;--color-chart-4: #c98500;--color-chart-5: #d55181;--color-chart-6: #008300;--color-chart-grid: #e4e9f1;--color-chart-axis: #cfd8e4;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-half: 2px;--font-size-2xs: 11px;--font-size-xs: 12px;--font-size-sm: 13px;--font-size-base: 15px;--font-size-lg: 17px;--font-size-xl: 21px;--font-size-2xl: 26px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 10px;--radius-xl: 16px;--radius-pill: 999px;--border-hairline: 1px;--border-thick: 2px;--font-family: "Almarai", Inter, system-ui, sans-serif;--line-height-body: 1.6;--line-height-tight: 1.35;--shadow-sm: 0 1px 2px rgba(22, 35, 58, .04), 0 1px 3px rgba(22, 35, 58, .06);--shadow-md: 0 16px 40px rgba(22, 35, 58, .16), 0 2px 8px rgba(22, 35, 58, .06);--size-control: 40px;--size-control-sm: 32px;--size-sidebar: 96px;--size-topbar: 64px}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--color-bg: #0f141d;--color-surface: #182030;--color-surface-2: #212c3f;--color-text: #e6ebf3;--color-text-muted: #93a1b8;--color-link: #6ab7f0;--color-accent: #6ab7f0;--color-border: #273244;--color-danger: #f87171;--color-success: #4ade80;--color-warning: #fb923c;--color-header-bg: #182030;--color-header-bg-active: #1d2c42;--color-header-text: #e6ebf3;--color-header-text-muted: #93a1b8;--color-chip-on: #6ab7f0;--color-chip-on-text: #0f141d;--color-cta-bg: #2a7fb8;--color-cta-text: #ffffff;--color-brand-2: #0f8f8a;--color-focus: #6ab7f0;--color-scrim: rgba(0, 0, 0, .6);--color-notice: #16233a;--color-notice-border: #2a3b57;--color-diagnosis-caries-fracture: #f28b8b;--color-diagnosis-perio-bone: #e0ac6c;--color-diagnosis-endodontics: #b09ce0;--color-diagnosis-missing-teeth: #93a1b8;--color-diagnosis-restoration: #6bcf84;--color-diagnosis-prosthesis: #6ab7f0;--color-primary: #6ab7f0;--color-primary-hover: #8ec9f4;--color-primary-soft: #17304a;--color-on-primary: #0f141d;--color-border-strong: #34425a;--color-info: #7cc0f2;--color-info-soft: #16304a;--color-success-soft: #133222;--color-warning-soft: #3a2414;--color-danger-soft: #3b1a1d;--color-tooth-enamel: #e6e1d6;--color-tooth-enamel-mid: #cfc7b5;--color-tooth-enamel-shade: #a39880;--color-tooth-enamel-edge: #8a7f68;--color-tooth-cervical: #c9a871;--color-tooth-incisal: #9aa5b3;--color-tooth-gloss: #ffffff;--color-tooth-root: #c3a672;--color-tooth-root-light: #d6bd8c;--color-tooth-root-shade: #8c6c3c;--color-tooth-root-edge: #6f5530;--color-tooth-gum: #f5a24a;--color-tooth-jaw: #6b7a93;--color-tooth-ghost: #4f5b72;--color-tooth-ghost-edge: #aab5c7;--color-chart-1: #3987e5;--color-chart-2: #d95926;--color-chart-3: #199e70;--color-chart-4: #c98500;--color-chart-5: #d55181;--color-chart-6: #008300;--color-chart-grid: #273244;--color-chart-axis: #34425a}}:root[data-theme=dark]{--color-bg: #0f141d;--color-surface: #182030;--color-surface-2: #212c3f;--color-text: #e6ebf3;--color-text-muted: #93a1b8;--color-link: #6ab7f0;--color-accent: #6ab7f0;--color-border: #273244;--color-danger: #f87171;--color-success: #4ade80;--color-warning: #fb923c;--color-header-bg: #182030;--color-header-bg-active: #1d2c42;--color-header-text: #e6ebf3;--color-header-text-muted: #93a1b8;--color-chip-on: #6ab7f0;--color-chip-on-text: #0f141d;--color-cta-bg: #2a7fb8;--color-cta-text: #ffffff;--color-brand-2: #0f8f8a;--color-focus: #6ab7f0;--color-scrim: rgba(0, 0, 0, .6);--color-notice: #16233a;--color-notice-border: #2a3b57;--color-diagnosis-caries-fracture: #f28b8b;--color-diagnosis-perio-bone: #e0ac6c;--color-diagnosis-endodontics: #b09ce0;--color-diagnosis-missing-teeth: #93a1b8;--color-diagnosis-restoration: #6bcf84;--color-diagnosis-prosthesis: #6ab7f0;--color-primary: #6ab7f0;--color-primary-hover: #8ec9f4;--color-primary-soft: #17304a;--color-on-primary: #0f141d;--color-border-strong: #34425a;--color-info: #7cc0f2;--color-info-soft: #16304a;--color-success-soft: #133222;--color-warning-soft: #3a2414;--color-danger-soft: #3b1a1d;--color-tooth-enamel: #e6e1d6;--color-tooth-enamel-mid: #cfc7b5;--color-tooth-enamel-shade: #a39880;--color-tooth-enamel-edge: #8a7f68;--color-tooth-cervical: #c9a871;--color-tooth-incisal: #9aa5b3;--color-tooth-gloss: #ffffff;--color-tooth-root: #c3a672;--color-tooth-root-light: #d6bd8c;--color-tooth-root-shade: #8c6c3c;--color-tooth-root-edge: #6f5530;--color-tooth-gum: #f5a24a;--color-tooth-jaw: #6b7a93;--color-tooth-ghost: #4f5b72;--color-tooth-ghost-edge: #aab5c7;--color-chart-1: #3987e5;--color-chart-2: #d95926;--color-chart-3: #199e70;--color-chart-4: #c98500;--color-chart-5: #d55181;--color-chart-6: #008300;--color-chart-grid: #273244;--color-chart-axis: #34425a}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;display:flex;max-width:100%;max-height:100%;z-index:1000}.cdk-overlay-backdrop{position:absolute;inset:0;pointer-events:auto;-webkit-tap-highlight-color:transparent;opacity:0;touch-action:manipulation;z-index:1000;transition:opacity .4s cubic-bezier(.25,.8,.25,1)}@media(prefers-reduced-motion){.cdk-overlay-backdrop{transition-duration:1ms}}.cdk-overlay-backdrop-showing{opacity:1}@media(forced-colors:active){.cdk-overlay-backdrop-showing{opacity:.6}}.cdk-overlay-dark-backdrop{background:#00000052}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing,.cdk-high-contrast-active .cdk-overlay-transparent-backdrop{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;display:flex;flex-direction:column;min-width:1px;min-height:1px;z-index:1000}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}.cdk-overlay-popover{background:none;border:none;padding:0;outline:0;overflow:visible;position:fixed;pointer-events:none;white-space:normal;color:inherit;text-decoration:none;width:100%;height:100%;inset:0 auto auto 0}.cdk-overlay-popover::backdrop{display:none}.cdk-overlay-popover .cdk-overlay-backdrop{position:fixed;z-index:auto}.photo-viewer-panel{inline-size:100vw;block-size:100dvh}.confirm-dialog-panel{inline-size:min(26rem,100vw - 2rem)}@font-face{font-family:Almarai;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/Almarai-Regular.woff2) format("woff2");unicode-range:U+0600-06FF,U+0750-077F,U+FB50-FDFF,U+FE70-FEFF}@font-face{font-family:Almarai;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/Almarai-Bold.woff2) format("woff2");unicode-range:U+0600-06FF,U+0750-077F,U+FB50-FDFF,U+FE70-FEFF}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-family);font-size:var(--font-size-base);line-height:var(--line-height-body)}button,input,select,textarea{font:inherit}a{color:var(--color-link);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{line-height:var(--line-height-tight)}:focus-visible{outline:var(--border-thick) solid var(--color-focus);outline-offset:var(--space-half)}.page-title{min-inline-size:0;margin:0;overflow:hidden;color:var(--color-text);font-size:var(--font-size-xl);font-weight:700;text-overflow:ellipsis;white-space:nowrap}.section-title{margin:0;font-size:var(--font-size-lg);font-weight:700;color:var(--color-text)}.caption{font-size:var(--font-size-xs);color:var(--color-text-muted)}.num{font-variant-numeric:tabular-nums}.card{background:var(--color-surface);border:var(--border-hairline) solid var(--color-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);padding:var(--space-5)}@media(width<=480px){.card{padding:var(--space-4)}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-block-size:var(--size-control);padding-block:0;padding-inline:var(--space-4);border:var(--border-hairline) solid transparent;border-radius:var(--radius-lg);background:transparent;color:var(--color-text);font-size:var(--font-size-sm);font-weight:700;line-height:var(--line-height-tight);white-space:nowrap;text-decoration:none;cursor:pointer;transition:background-color .12s ease,border-color .12s ease,color .12s ease}.btn:hover{text-decoration:none}.btn:disabled{opacity:.55;cursor:default}.btn-primary{background:var(--color-primary);color:var(--color-on-primary)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-secondary{background:var(--color-surface);border-color:var(--color-border-strong)}.btn-secondary:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-primary)}.btn-ghost{color:var(--color-primary)}.btn-ghost:hover:not(:disabled){background:var(--color-primary-soft)}.btn-danger{background:var(--color-danger-soft);color:var(--color-danger)}.btn-danger:hover:not(:disabled){border-color:var(--color-danger)}.btn-sm{min-block-size:var(--size-control-sm);padding-inline:var(--space-3);border-radius:var(--radius-pill);font-size:var(--font-size-xs)}.btn-block{inline-size:100%}.btn-icon{inline-size:var(--size-control);padding-inline:0;border-radius:var(--radius-pill);color:var(--color-text-muted)}.btn-icon:hover:not(:disabled){background:var(--color-surface-2);color:var(--color-text)}.field{display:flex;flex-direction:column;gap:var(--space-1);min-inline-size:0;margin:0;padding:0;border:0}.field-label{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text)}legend.field-label{padding:0;margin-block-end:var(--space-1)}.req{color:var(--color-danger);font-weight:700}.input{min-inline-size:0;min-block-size:var(--size-control);padding-block:var(--space-2);padding-inline:var(--space-3);background:var(--color-surface);border:var(--border-hairline) solid var(--color-border-strong);border-radius:var(--radius-lg);color:var(--color-text);font-size:var(--font-size-sm);line-height:var(--line-height-tight);transition:border-color .12s ease,box-shadow .12s ease}.input::placeholder{color:var(--color-header-text-muted)}.input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 var(--space-1) color-mix(in srgb,var(--color-focus) 18%,transparent)}.input:disabled{background:var(--color-surface-2);color:var(--color-text-muted)}.input.ng-invalid.ng-touched{border-color:var(--color-danger)}textarea.input{resize:vertical;line-height:var(--line-height-body)}.input-group{display:flex;align-items:stretch;min-inline-size:0;min-block-size:var(--size-control);background:var(--color-surface);border:var(--border-hairline) solid var(--color-border-strong);border-radius:var(--radius-lg);overflow:hidden}.input-group:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 var(--space-1) color-mix(in srgb,var(--color-focus) 18%,transparent)}.input-group:has(.ng-invalid.ng-touched){border-color:var(--color-danger)}.input-group-prefix{display:flex;align-items:center;padding-inline:var(--space-3);background:var(--color-surface-2);border-inline-end:var(--border-hairline) solid var(--color-border);color:var(--color-text-muted);font-size:var(--font-size-sm);white-space:nowrap}.input-group-control{flex:1;min-inline-size:0;padding-inline:var(--space-3);border:0;background:transparent;color:var(--color-text);font-size:var(--font-size-sm);outline:none}.table-wrap{overflow-x:auto}.table{inline-size:100%;min-inline-size:36rem;border-collapse:separate;border-spacing:0;font-size:var(--font-size-sm);font-variant-numeric:tabular-nums}.table th{padding-block:var(--space-3);padding-inline:var(--space-3);background:var(--color-surface-2);border-block:var(--border-hairline) solid var(--color-border);color:var(--color-text-muted);font-size:var(--font-size-xs);font-weight:700;text-align:start;white-space:nowrap}.table th:first-child{border-inline-start:var(--border-hairline) solid var(--color-border);border-start-start-radius:var(--radius-lg);border-end-start-radius:var(--radius-lg)}.table th:last-child{border-inline-end:var(--border-hairline) solid var(--color-border);border-start-end-radius:var(--radius-lg);border-end-end-radius:var(--radius-lg)}.table td{padding-block:var(--space-3);padding-inline:var(--space-3);border-block-end:var(--border-hairline) solid var(--color-border);color:var(--color-text);text-align:start;vertical-align:middle}.table tbody tr:last-child td{border-block-end:0}.table tbody tr:hover td{background:color-mix(in srgb,var(--color-primary-soft) 45%,transparent)}.badge{display:inline-flex;align-items:center;gap:var(--space-1);padding-block:var(--space-half);padding-inline:var(--space-2);border-radius:var(--radius-pill);background:var(--color-surface-2);color:var(--color-text-muted);font-size:var(--font-size-xs);font-weight:700;line-height:var(--line-height-body);white-space:nowrap}.badge:before{content:"";inline-size:.5em;block-size:.5em;border-radius:var(--radius-pill);background:currentcolor}.badge-plain:before{content:none}.badge-info{background:var(--color-info-soft);color:var(--color-info)}.badge-success{background:var(--color-success-soft);color:var(--color-success)}.badge-warning{background:var(--color-warning-soft);color:var(--color-warning)}.badge-danger{background:var(--color-danger-soft);color:var(--color-danger)}.tabs{display:flex;gap:var(--space-5);border-block-end:var(--border-hairline) solid var(--color-border);overflow-x:auto;scrollbar-width:none}.tab{display:inline-flex;align-items:center;flex-shrink:0;padding-block:var(--space-3);padding-inline:var(--space-half);margin-block-end:calc(var(--border-hairline) * -1);border:0;border-block-end:var(--border-thick) solid transparent;background:transparent;color:var(--color-text-muted);font-size:var(--font-size-base);font-weight:500;white-space:nowrap;text-decoration:none;cursor:pointer}.tab:hover{color:var(--color-text);text-decoration:none}.tab.active,.tab.on{border-block-end-color:var(--color-primary);color:var(--color-primary);font-weight:700}.tab.soon{color:var(--color-header-text-muted);cursor:default}.segmented{display:inline-flex;gap:var(--space-half);padding:var(--space-half);background:var(--color-surface-2);border:var(--border-hairline) solid var(--color-border);border-radius:var(--radius-pill)}.segment{min-block-size:var(--size-control-sm);padding-block:0;padding-inline:var(--space-3);border:0;border-radius:var(--radius-pill);background:transparent;color:var(--color-text-muted);font-size:var(--font-size-sm);font-weight:500;white-space:nowrap;cursor:pointer}.segment:hover{color:var(--color-text)}.segment.on,.segment.active{background:var(--color-surface);color:var(--color-primary);box-shadow:var(--shadow-sm)}.alert{margin:0;padding-block:var(--space-2);padding-inline:var(--space-3);border-radius:var(--radius-lg);font-size:var(--font-size-sm)}.alert-info{background:var(--color-info-soft);color:var(--color-info)}.alert-danger{background:var(--color-danger-soft);color:var(--color-danger)}.alert-success{background:var(--color-success-soft);color:var(--color-success)}.empty-state{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding-block:var(--space-6);padding-inline:var(--space-4);text-align:center}.empty-state-art{inline-size:7.5rem;block-size:auto}.empty-state-art .ground{fill:var(--color-surface-2)}.empty-state-art .sheet{fill:var(--color-surface);stroke:var(--color-border-strong);stroke-width:1.5}.empty-state-art .mark{fill:var(--color-primary-soft);stroke:var(--color-primary);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.empty-state-art .stroke{fill:none;stroke:var(--color-primary);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.empty-state-art .rule{fill:none;stroke:var(--color-border-strong);stroke-width:1.5;stroke-linecap:round}.empty-state-message{margin:0;max-inline-size:36ch;color:var(--color-text);font-size:var(--font-size-base);font-weight:500}.empty-state-hint{margin:0;max-inline-size:40ch;color:var(--color-text-muted);font-size:var(--font-size-sm)}.placeholder-text{margin:0;padding-block:var(--space-6);color:var(--color-text-muted);text-align:center}.visually-hidden{position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:0ms!important}}.leaflet-popup .leaflet-popup-content-wrapper{text-align:start}@media(width<=64rem){html.filters-open{overflow:hidden}}@media(width<=40rem){html.menu-open{overflow:hidden}}.frame{max-inline-size:none;margin-inline:auto;padding-inline:clamp(var(--space-4),2vw,var(--space-6))}
