@font-face{font-family:"Noto Serif Display Variable";font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/noto-serif-display-cyrillic-ext-wght-normal-H0EkCrRc.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Noto Serif Display Variable";font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/noto-serif-display-cyrillic-wght-normal-BkRNFNOU.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:"Noto Serif Display Variable";font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/noto-serif-display-greek-ext-wght-normal-C8BmqigA.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:"Noto Serif Display Variable";font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/noto-serif-display-greek-wght-normal-fF26NVkV.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:"Noto Serif Display Variable";font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/noto-serif-display-vietnamese-wght-normal-BF64gvp4.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Noto Serif Display Variable";font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/noto-serif-display-latin-ext-wght-normal-DZej46sE.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Noto Serif Display Variable";font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/noto-serif-display-latin-wght-normal-DZCd2g7q.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Commissioner Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/commissioner-cyrillic-ext-wght-normal-BnWI7fIG.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Commissioner Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/commissioner-cyrillic-wght-normal-bgdX5wL6.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Commissioner Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/commissioner-greek-wght-normal-M9Lxztrh.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Commissioner Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/commissioner-vietnamese-wght-normal-DEkWUU3X.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Commissioner Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/commissioner-latin-ext-wght-normal-rva7dkhN.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Commissioner Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/commissioner-latin-wght-normal-BAwLJtOy.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root,[data-theme=light]{--font-display: "Noto Serif Display Variable", "Noto Serif Display", Georgia, "Times New Roman", serif;--font-text: "Commissioner Variable", "Commissioner", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-pill: 999px;--shadow-color: 35, 33, 30;--bg: #eeede9;--surface: #fbfaf8;--surface-sunken: #f4f2ee;--border: #dddad2;--border-strong: #c7c2b7;--text: #23211e;--muted: #6b665e;--primary: #7a5b33;--primary-text: #ffffff;--bronze: #a07c4b;--bronze-soft: #efe9de;--btn-bg: #23211e;--btn-bg-hover: #3b3833;--btn-text: #f7f5f0;--danger: #a5402f;--danger-soft: #f3e3de;--success: #4f7a5b;--success-soft: #e3ecdf;--warning: #b8842a;--sidebar-bg: #f8f7f4;--sidebar-border: #dddad2;--sidebar-text: #3d3a35;--sidebar-text-muted: #7b766d;--sidebar-active-bg: #efe9de;--sidebar-active-text: #23211e;--sidebar-hover-bg: #f0eeea;--sidebar-card-bg: #23211e;--sidebar-card-text: #ffffff;--color-surface: var(--surface)}[data-theme=dark]{--shadow-color: 0, 0, 0;--bg: #161513;--surface: #1f1d1a;--surface-sunken: #1a1917;--border: #34312c;--border-strong: #4a4640;--text: #ece8e0;--muted: #a39c90;--primary: #cda873;--primary-text: #1a1815;--bronze: #b8935c;--bronze-soft: #2c261d;--btn-bg: #cda873;--btn-bg-hover: #dcbb8a;--btn-text: #1a1815;--danger: #e07a69;--danger-soft: #3a2621;--success: #86b892;--success-soft: #1f2c22;--warning: #d6a64f;--sidebar-bg: #1a1917;--sidebar-border: #34312c;--sidebar-text: #cdc6ba;--sidebar-text-muted: #8b8478;--sidebar-active-bg: #2c261d;--sidebar-active-text: #f1ece3;--sidebar-hover-bg: #23211e;--sidebar-card-bg: #2c261d;--sidebar-card-text: #ffffff;--color-surface: var(--surface)}*{box-sizing:border-box}html{color-scheme:light}html[data-theme=dark]{color-scheme:dark}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-text);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;transition:background .15s ease}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}::selection{background:var(--bronze-soft);color:var(--text)}h1,h2{font-family:var(--font-display);font-weight:500;color:var(--text);text-wrap:balance}h1{font-size:2rem;line-height:1.15;letter-spacing:-.012em;margin:0 0 1.25rem}h2{font-size:1.35rem;line-height:1.25;letter-spacing:-.005em;font-weight:560}h3{font-family:var(--font-text);font-weight:600;font-size:1rem;color:var(--text)}p{margin:.5rem 0}a{color:var(--primary);text-underline-offset:.18em;text-decoration-thickness:1px}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--bronze);outline-offset:2px;border-radius:var(--radius-sm)}.muted{color:var(--muted)}code{font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:.9em}.full-screen-center{display:flex;align-items:center;justify-content:center;height:100vh;color:var(--muted)}button,.link-button{font-family:inherit;background:var(--btn-bg);color:var(--btn-text);border:1px solid var(--btn-bg);padding:.55rem 1.1rem;border-radius:var(--radius-sm);cursor:pointer;font-size:.9rem;font-weight:600;letter-spacing:.005em;line-height:1.3;transition:background .12s ease,border-color .12s ease,color .12s ease}button:hover{background:var(--btn-bg-hover);border-color:var(--btn-bg-hover)}button:disabled{opacity:.5;cursor:default}button:disabled:hover{background:var(--btn-bg);border-color:var(--btn-bg)}button.secondary,.secondary{background:var(--surface);color:var(--text);border:1px solid var(--border-strong)}button.secondary:hover{background:var(--surface-sunken);border-color:var(--text)}button.secondary:disabled:hover{background:var(--surface);border-color:var(--border-strong)}.link-button,button.link-button{background:transparent;color:var(--primary);border:none;padding:0;font-weight:600;text-decoration:none}.link-button:hover,button.link-button:hover{background:transparent;text-decoration:underline;text-underline-offset:.18em}button.link-button:disabled:hover{background:transparent;text-decoration:none}.icon-button,button.icon-button{background:transparent;color:var(--muted);border:1px solid transparent;padding:.35rem;border-radius:var(--radius-sm);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.icon-button:hover,button.icon-button:hover{background:var(--surface-sunken);border-color:var(--border);color:var(--text)}.icon-muted{opacity:.4}.form-error{color:var(--danger);font-size:.9rem}.form-success{color:var(--success);font-size:.9rem}:where(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]),select,textarea){font-family:inherit;font-size:.92rem;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:.5rem .65rem;line-height:1.35;transition:border-color .12s ease,box-shadow .12s ease}:where(input,select,textarea):focus{outline:none;border-color:var(--bronze);box-shadow:0 0 0 3px #a07c4b33}:where(input,textarea)::placeholder{color:var(--muted);opacity:.75}input[type=checkbox],input[type=radio]{accent-color:var(--primary);width:1rem;height:1rem}label{color:var(--text)}.auth-screen{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:1.25rem;background:var(--bg)}.auth-card{background:var(--surface);padding:2.25rem 2rem;border-radius:var(--radius-lg);border:1px solid var(--border);border-top:2px solid var(--bronze);width:100%;max-width:380px;box-shadow:0 24px 60px -30px rgba(var(--shadow-color),.35);display:flex;flex-direction:column;gap:1.25rem}.auth-brand{display:flex;align-items:center;gap:.65rem;font-family:var(--font-display);font-weight:600;font-size:1rem;line-height:1.2;justify-content:center;margin-bottom:.25rem;text-align:left}.auth-split{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(360px,1fr);min-height:100vh;background:var(--surface)}.auth-slab{position:relative;overflow:hidden;color:#f1ece3;padding:3rem;background:#1c1a17;display:flex;flex-direction:column;justify-content:flex-end}.auth-slab-stone{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}.auth-slab:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:linear-gradient(180deg,#1c1a1700 50%,#1c1a17c7)}.auth-slab-edge,.auth-slab-name,.auth-slab-sub{position:relative;z-index:1}.auth-slab-name{font-family:var(--font-display);font-weight:400;font-size:clamp(2.6rem,5vw,4.2rem);line-height:1.02;letter-spacing:-.01em;margin:0;max-width:8ch;color:#fff}.auth-slab-sub{font-family:var(--font-text);font-size:.95rem;font-weight:500;letter-spacing:.04em;color:#ffffffb8;margin:.9rem 0 0}.auth-slab-edge{width:56px;height:2px;background:#c8a472;margin-bottom:1.5rem}.auth-panel{display:flex;align-items:center;justify-content:center;padding:2.5rem 1.5rem}.auth-panel-inner{width:100%;max-width:340px;display:flex;flex-direction:column;gap:1.5rem}.auth-panel-inner h1{font-size:1.9rem;margin:0}.auth-panel .auth-brand{justify-content:flex-start;font-size:1.05rem;margin:0;color:var(--muted)}.auth-tabs{display:flex;background:var(--surface-sunken);border-radius:var(--radius-md);padding:3px;gap:3px}.auth-tab{flex:1;display:flex;align-items:center;justify-content:center;gap:.4rem;background:transparent;color:var(--muted);border:none;padding:.5rem 0;border-radius:var(--radius-sm);font-size:.85rem}.auth-tab-active{background:var(--surface);color:var(--text);box-shadow:0 1px 2px rgba(var(--shadow-color),.12);font-weight:600}.auth-form{display:flex;flex-direction:column;gap:1.1rem}.auth-form label{display:flex;flex-direction:column;gap:.4rem;font-size:.85rem;font-weight:600;color:var(--text)}.auth-form input{padding:.7rem .8rem;font-size:1rem;background:var(--surface);font-weight:400}.auth-form button{padding:.8rem;font-size:.95rem;margin-top:.25rem}.auth-code-input{text-transform:uppercase;letter-spacing:.1em;font-weight:600;text-align:center}.auth-pin-input{letter-spacing:.6em;text-align:center;font-size:1.3rem;font-weight:700}.auth-switch-link{text-align:center;font-size:.82rem;color:var(--primary);text-decoration:none}.auth-switch-link:hover{text-decoration:underline}@media (max-width: 820px){.auth-split{grid-template-columns:1fr;grid-template-rows:auto 1fr}.auth-slab{padding:2rem 1.5rem 1.5rem;min-height:32vh}.auth-slab-name{max-width:none;font-size:clamp(1.6rem,8.6vw,2.4rem)}.auth-slab-sub{margin-top:.4rem;font-size:.85rem}.auth-slab-edge{margin-bottom:1rem}.auth-panel{align-items:flex-start;padding:2rem 1.5rem}.auth-panel-inner{max-width:none}}.credentials-box{background:var(--bronze-soft);border:1px solid var(--border);border-left:2px solid var(--bronze);border-radius:var(--radius-md);padding:1rem 1.1rem;margin-bottom:1rem;font-size:.9rem}.credentials-values{margin:.4rem 0;font-size:1rem}.credentials-values code{background:var(--surface);padding:.2rem .5rem;border-radius:var(--radius-sm);font-weight:700;letter-spacing:.05em}.code-prefix-input{display:flex;align-items:stretch}.code-prefix-input .code-prefix{display:flex;align-items:center;justify-content:center;padding:0 .6rem;background:var(--bronze-soft);color:var(--primary);font-weight:700;border:1px solid var(--border-strong);border-right:none;border-radius:var(--radius-sm) 0 0 var(--radius-sm)}.code-prefix-input input{border-radius:0 var(--radius-sm) var(--radius-sm) 0;flex:1;letter-spacing:.1em}.app-shell{display:flex;min-height:100vh}.sidebar{width:256px;flex-shrink:0;background:var(--sidebar-bg);border-right:1px solid var(--sidebar-border);display:flex;flex-direction:column;padding:1.25rem .85rem 1rem;transition:width .15s ease;height:100vh;position:sticky;top:0}.sidebar-collapsed{width:68px;align-items:center}.sidebar-brand{display:flex;align-items:center;gap:.7rem;padding:.25rem .55rem 1.5rem}.sidebar-collapsed .sidebar-brand{padding:.25rem 0 1.5rem}.brand-icon{width:30px;height:30px;border-radius:var(--radius-sm);background:var(--sidebar-card-bg);color:#d9bb8a;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-family:var(--font-display);font-weight:600;font-size:1.05rem;line-height:1}.brand-name{font-family:var(--font-display);font-weight:600;font-size:1.05rem;line-height:1.15;letter-spacing:-.005em;color:var(--text);display:flex;flex-direction:column;white-space:nowrap}.brand-sub{font-family:var(--font-text);font-size:.72rem;font-weight:500;letter-spacing:.03em;color:var(--muted);margin-top:.1rem}.sidebar-nav{flex:1;overflow-y:auto;width:100%}.nav-group{margin-bottom:1.4rem}.nav-group-label{font-size:.74rem;color:var(--sidebar-text-muted);padding:0 .65rem .45rem;font-weight:600;letter-spacing:.01em}.nav-item{display:flex;align-items:center;gap:.7rem;padding:.5rem .65rem;border-radius:var(--radius-sm);color:var(--sidebar-text);text-decoration:none;font-size:.9rem;margin-bottom:.1rem;white-space:nowrap;transition:background .12s ease,color .12s ease}.sidebar-collapsed .nav-item{justify-content:center;padding:.55rem}.nav-item:hover{background:var(--sidebar-hover-bg);text-decoration:none;color:var(--text)}.nav-item .nav-icon{color:var(--sidebar-text-muted)}.nav-item-active{background:var(--sidebar-active-bg);color:var(--sidebar-active-text);font-weight:600;box-shadow:inset 2px 0 0 var(--bronze)}.nav-item-active .nav-icon{color:var(--primary)}.nav-icon{display:flex;align-items:center;flex-shrink:0}.sidebar-footer{width:100%;display:flex;flex-direction:column;gap:.15rem;padding-top:.75rem;border-top:1px solid var(--sidebar-border)}.theme-toggle,.collapse-toggle,.bell-toggle{display:flex;align-items:center;gap:.7rem;background:transparent;color:var(--sidebar-text-muted);border:none;padding:.45rem .65rem;border-radius:var(--radius-sm);font-size:.85rem;font-weight:500;cursor:pointer;width:100%;text-align:left}.sidebar-collapsed .theme-toggle,.sidebar-collapsed .collapse-toggle,.sidebar-collapsed .bell-toggle{justify-content:center;padding:.5rem}.theme-toggle:hover,.collapse-toggle:hover,.bell-toggle:hover{background:var(--sidebar-hover-bg);color:var(--text)}.sidebar-user{display:flex;align-items:center;gap:.65rem;padding:.75rem .4rem 0;margin-top:.4rem;border-top:1px solid var(--sidebar-border)}.avatar{width:34px;height:34px;border-radius:50%;background:var(--bronze-soft);color:var(--primary);border:1px solid var(--border);font-family:var(--font-display);display:flex;align-items:center;justify-content:center;font-size:1rem;font-weight:600;flex-shrink:0}.sidebar-user-info{flex:1;min-width:0}.user-name{font-size:.85rem;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-role{font-size:.75rem;color:var(--sidebar-text-muted)}.logout-icon,button.logout-icon{background:transparent;color:var(--sidebar-text-muted);border:none;padding:.35rem;border-radius:var(--radius-sm);flex-shrink:0}.logout-icon:hover,button.logout-icon:hover{background:var(--sidebar-hover-bg);color:var(--danger)}.sidebar-collapsed .logout-icon{display:none}.app-main{flex:1;min-width:0;padding:2.25rem 2.5rem 3rem;max-width:1240px}.section-header{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:1.25rem}.section-header h1{margin:0}.section-title{margin:2.5rem 0 1rem;padding-bottom:.55rem;border-bottom:1px solid var(--border);font-size:1.35rem}.project-table{width:100%;border-collapse:separate;border-spacing:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;font-variant-numeric:tabular-nums}.project-table th,.project-table td{text-align:left;padding:.7rem .9rem;border-bottom:1px solid var(--border);font-size:.9rem;vertical-align:top}.project-table th{font-weight:600;font-size:.78rem;color:var(--muted);background:transparent;border-bottom-color:var(--border-strong);white-space:nowrap}.project-table tbody tr:last-child td{border-bottom:none}.project-table tbody tr:hover td{background:var(--surface-sunken)}.project-table a{color:var(--primary);font-weight:600;text-decoration:none}.project-table a:hover{text-decoration:underline}p+.project-table,p+.project-groups{margin-top:1rem}.status-badge{display:inline-flex;align-items:center;gap:.4rem;background:var(--bronze-soft);color:var(--primary);padding:.18rem .55rem;border-radius:var(--radius-sm);font-family:var(--font-text);font-size:.76rem;font-weight:600;letter-spacing:0;line-height:1.4;margin-left:.5rem;white-space:nowrap;vertical-align:middle}.status-badge:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--bronze);flex-shrink:0}td>.status-badge:first-child{margin-left:0}.status-badge-success{background:var(--success-soft);color:var(--success)}.status-badge-success:before{background:var(--success)}.status-badge-danger{background:var(--danger-soft);color:var(--danger)}.status-badge-danger:before{background:var(--danger)}.appointment-list,.history-list{list-style:none;padding:0}.appointment-list li{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:.85rem 1rem;margin-bottom:.6rem;font-size:.9rem}.history-list{position:relative;padding-left:1.15rem;margin-top:.5rem}.history-list li{position:relative;font-size:.86rem;padding:0 0 1rem .9rem;border-bottom:none;color:var(--text)}.history-list li:before{content:"";position:absolute;left:-1.15rem;top:.4rem;width:7px;height:7px;border-radius:50%;background:var(--surface);border:1.5px solid var(--bronze)}.history-list li:after{content:"";position:absolute;left:calc(-1.15rem + 3px);top:1rem;bottom:0;width:1px;background:var(--border)}.history-list li:last-child:after{display:none}.history-list li:last-child{padding-bottom:0}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:2.5rem;margin-top:1.25rem}.detail-grid h2{font-family:var(--font-text);font-size:.82rem;font-weight:600;color:var(--muted);margin:1.5rem 0 .5rem;padding-bottom:.35rem;border-bottom:1px solid var(--border);letter-spacing:.01em}.detail-grid>div>h2:first-child{margin-top:0}.calendar-table{width:100%;border-collapse:collapse;background:var(--surface);margin-top:.5rem}.calendar-table th,.calendar-table td{padding:.5rem;text-align:center;border-bottom:1px solid var(--border);font-size:.85rem}.project-form{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.75rem;display:flex;flex-direction:column;gap:.85rem;margin-bottom:1.5rem}.project-form h2{font-family:var(--font-display);font-size:1.2rem;font-weight:500;color:var(--text);margin:1.25rem 0 .25rem;padding-bottom:.45rem;border-bottom:1px solid var(--border)}.project-form>h2:first-child{margin-top:0}.project-form button{align-self:flex-start}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:.9rem 1.1rem}.form-grid label,.project-form>label{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem;font-weight:600}.form-grid label>input,.form-grid label>select,.form-grid label>textarea{font-weight:400}.form-grid .span-2{grid-column:span 2}.form-grid input,.form-grid select,.project-form input:not([type=checkbox]):not([type=radio]),.project-form select,.project-form textarea{padding:.55rem .65rem;border:1px solid var(--border-strong);border-radius:var(--radius-sm);font-size:.92rem;font-family:inherit;background:var(--surface);color:var(--text);transition:border-color .12s ease,box-shadow .12s ease}.form-grid input:focus,.form-grid select:focus,.project-form input:focus,.project-form select:focus,.project-form textarea:focus{border-color:var(--bronze);outline:none;box-shadow:0 0 0 3px #a07c4b33}.customer-picker .mode-toggle{display:flex;gap:1.5rem;font-size:.9rem;margin-bottom:.5rem}.customer-picker .mode-toggle label{display:flex;align-items:center;gap:.35rem}.autocomplete{position:relative;max-width:360px}.autocomplete input{width:100%}.autocomplete-results{list-style:none;margin:.25rem 0 0;padding:.25rem;position:absolute;z-index:10;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);width:100%;box-shadow:0 18px 40px -18px rgba(var(--shadow-color),.35)}.autocomplete-results li{padding:.45rem .6rem;cursor:pointer;font-size:.88rem;border-radius:var(--radius-sm)}.autocomplete-results li:hover{background:var(--surface-sunken)}.dropzone{border:1px dashed var(--border-strong);border-radius:var(--radius-md);padding:1.5rem;text-align:center;cursor:pointer;font-size:.9rem;color:var(--muted);background:var(--surface-sunken);margin-top:.75rem;transition:border-color .15s,background .15s}.dropzone:hover{border-color:var(--bronze)}.dropzone-active{border-color:var(--bronze);background:var(--bronze-soft)}.drawing-checkbox{display:flex;align-items:center;gap:.4rem;font-size:.82rem;color:var(--muted);margin-top:.5rem}.mobile-nav-toggle,button.mobile-nav-toggle{display:none;position:fixed;top:.75rem;left:.75rem;z-index:60;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.5rem;width:42px;height:42px;align-items:center;justify-content:center}.mobile-nav-backdrop{display:none}.directions-link{display:inline-flex;align-items:center;gap:.35rem;color:var(--primary);text-decoration:none;font-size:.85rem;font-weight:600}.appointment-cards{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.6rem}.appointment-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:1rem 1.15rem}.appointment-time{font-size:.82rem;color:var(--muted);font-weight:600;margin-bottom:.3rem;display:flex;align-items:center;gap:.5rem}.appointment-project{display:block;font-size:1.02rem;font-weight:600;color:var(--text);text-decoration:none;margin-bottom:.15rem}.appointment-project:hover{color:var(--primary);text-decoration:none}.appointment-address{font-size:.88rem;margin-bottom:.6rem}.appointment-actions{display:flex;gap:1.25rem;flex-wrap:wrap;align-items:center}.day-checkboxes{display:flex;flex-wrap:wrap;gap:.75rem;margin:.5rem 0}.day-checkbox{display:flex;align-items:center;gap:.35rem;font-size:.9rem}.search-box{position:relative;max-width:520px}.search-box input{width:100%;padding:.65rem .85rem;font-size:.95rem;background:var(--surface)}.search-results{max-height:320px;overflow-y:auto}.search-results li{padding:.5rem .7rem}.search-results a{color:var(--text);text-decoration:none}.search-results a:hover{color:var(--primary)}.kpi-cards{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.75rem}.kpi-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:1rem 1.25rem;min-width:160px;flex:1}.kpi-value{font-family:var(--font-display);font-size:1.9rem;font-weight:500;line-height:1.1}.kpi-label{font-size:.82rem;color:var(--muted);margin-top:.2rem}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem;margin-top:1rem}.breakdown-table{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:1.1rem 1.2rem}.breakdown-table h3{font-family:var(--font-text);font-size:.9rem;font-weight:600;color:var(--text);margin:0 0 .8rem}.breakdown-table table{width:100%;border-collapse:collapse}.breakdown-table td{padding:.3rem 0;font-size:.9rem;border-bottom:1px solid var(--border)}.breakdown-table .count-cell{text-align:right;font-weight:600;font-variant-numeric:tabular-nums}.stat-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem;margin-top:.75rem}.stat-cards-thirds{grid-template-columns:repeat(3,1fr);flex:1;margin-top:0}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:1.1rem 1.15rem;display:flex;flex-direction:column;gap:.7rem}.stat-card-icon{width:36px;height:36px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center}.stat-card-label{font-size:.82rem;color:var(--muted)}.stat-card-value{font-family:var(--font-display);font-size:2rem;font-weight:500;line-height:1.1;margin-top:.1rem;font-variant-numeric:lining-nums}.stat-card-bar-track{height:3px;border-radius:var(--radius-pill);background:var(--surface-sunken);overflow:hidden}.stat-card-bar-fill{height:100%;border-radius:var(--radius-pill);transition:width .3s ease}.kpi-overview-row{display:flex;gap:1rem;align-items:stretch;margin-top:.75rem;flex-wrap:wrap}.donut-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:1.25rem;display:flex;align-items:center;justify-content:center;min-width:180px}.donut-stat{display:flex;flex-direction:column;align-items:center;gap:.6rem}.donut-ring{width:110px;height:110px;border-radius:50%;display:flex;align-items:center;justify-content:center}.donut-ring-inner{width:90px;height:90px;border-radius:50%;background:var(--surface);display:flex;align-items:center;justify-content:center}.donut-value{font-family:var(--font-display);font-size:1.4rem;font-weight:500}.donut-label{font-size:.82rem;color:var(--muted)}.breakdown-bars{display:flex;flex-direction:column;gap:.7rem}.breakdown-row-top{display:flex;justify-content:space-between;gap:.75rem;font-size:.88rem;margin-bottom:.25rem}.breakdown-bar-track{height:3px;border-radius:var(--radius-pill);background:var(--surface-sunken);overflow:hidden;margin-top:.3rem}.breakdown-bar-fill{height:100%;border-radius:var(--radius-pill);background:var(--bronze)}.project-groups{display:flex;flex-direction:column;gap:.75rem}.project-group{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden}.project-group-header,button.project-group-header{width:100%;display:flex;align-items:center;gap:.5rem;padding:.8rem 1rem;background:transparent;color:var(--text);border:none;border-radius:0;font-weight:600;font-size:.92rem;text-align:left}.project-group-header:hover,button.project-group-header:hover{background:var(--surface-sunken)}.project-group-title{flex:1}.project-group-count{background:var(--bronze-soft);color:var(--primary);font-variant-numeric:tabular-nums;font-size:.76rem;font-weight:700;padding:.1rem .5rem;border-radius:var(--radius-sm)}.project-group .project-table{border:none;border-radius:0;border-top:1px solid var(--border);table-layout:fixed}.project-group .project-table th:first-child{width:11rem}.edit-link{font-size:.85rem;margin-left:.75rem}.status-changer{margin:.75rem 0 1rem;font-size:.9rem;color:var(--muted)}.status-changer select{padding:.45rem .65rem;background:var(--surface);color:var(--text);font-weight:600}.month-calendar{margin-top:1.5rem}.month-calendar>h2,.month-calendar h2{margin:0 0 .25rem}.calendar-nav{display:flex;align-items:center;justify-content:center;gap:.75rem;margin:.5rem 0 .9rem}.calendar-month-label{font-family:var(--font-display);font-weight:560;font-size:1.2rem;min-width:180px;text-align:center;text-transform:capitalize}.calendar-nav>button:not(.link-button){background:var(--surface);color:var(--text);border:1px solid var(--border-strong);width:36px;height:36px;padding:0;display:inline-flex;align-items:center;justify-content:center;font-size:1.1rem;line-height:1}.calendar-nav>button:not(.link-button):hover{background:var(--surface-sunken);border-color:var(--text)}.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.calendar-weekdays{font-size:.76rem;color:var(--muted);text-align:center;margin-bottom:6px;font-weight:600}.calendar-cell{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.35rem .4rem;min-height:68px;display:flex;flex-direction:column;gap:.25rem;min-width:0}.calendar-cell-outside{opacity:.4;background:transparent}.calendar-cell-holiday{background:repeating-linear-gradient(135deg,var(--surface) 0 7px,var(--surface-sunken) 7px 14px)}.calendar-day-number{font-size:.8rem;color:var(--muted);text-align:right;font-variant-numeric:tabular-nums}.calendar-halves{display:flex;flex-direction:column;gap:3px;flex:1}.calendar-halves-empty{background:transparent}.calendar-half,button.calendar-half{flex:1;min-height:16px;border:none;border-radius:3px;cursor:default;padding:0}.calendar-half-available,button.calendar-half-available{background:var(--success);cursor:pointer}.calendar-half-available:hover{background:var(--success);filter:brightness(.9)}.calendar-half-pending,button.calendar-half-pending{background:var(--warning)}.calendar-half-unavailable,button.calendar-half-unavailable{background:var(--border-strong);opacity:.55}.calendar-half-unavailable:hover{background:var(--border-strong)}.calendar-half:disabled{opacity:1}.calendar-half-unavailable:disabled{opacity:.55}.calendar-half:disabled:hover{filter:none}.calendar-half-booked{color:var(--text)}.calendar-half-selected,button.calendar-half-selected{background:var(--text);cursor:pointer;box-shadow:0 0 0 2px var(--bronze)}.calendar-legend{display:flex;flex-wrap:wrap;gap:.5rem 1.25rem;font-size:.8rem;color:var(--muted);margin-top:.9rem}.legend-dot{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:.35rem;vertical-align:-1px}.legend-available{background:var(--success)}.legend-pending{background:var(--warning)}.legend-unavailable{background:var(--border-strong);opacity:.55}.calendar-confirm{margin-top:1rem;background:var(--bronze-soft);border:1px solid var(--border);border-left:2px solid var(--bronze);border-radius:var(--radius-md);padding:.95rem 1.1rem;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.75rem;font-size:.92rem}.calendar-confirm-actions{display:flex;gap:1rem;align-items:center}.notification-bell{position:relative;width:100%}.bell-toggle{position:relative}.bell-badge{position:absolute;left:19px;top:1px;background:var(--danger);color:#fff;font-size:.6rem;font-weight:700;border-radius:var(--radius-pill);min-width:14px;height:14px;line-height:1;display:flex;align-items:center;justify-content:center;padding:0 3px}.notification-panel{position:absolute;left:calc(100% + .6rem);bottom:0;width:340px;max-height:420px;overflow-y:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:0 24px 60px -24px rgba(var(--shadow-color),.45);padding:.4rem;z-index:30}.sidebar-collapsed .notification-panel{left:calc(100% + .6rem)}.notification-panel ul{list-style:none;margin:0;padding:0}.notification-panel li{padding:.7rem;border-radius:var(--radius-sm);cursor:pointer;border-bottom:1px solid var(--border)}.notification-panel li:last-child{border-bottom:none}.notification-panel li:hover{background:var(--surface-sunken)}.notification-unread{background:var(--bronze-soft);box-shadow:inset 2px 0 0 var(--bronze)}.notification-title{font-size:.85rem;font-weight:600;color:var(--text)}.notification-message{font-size:.82rem;color:var(--muted);margin-top:.15rem;white-space:pre-line}.notification-time{font-size:.72rem;color:var(--sidebar-text-muted);margin-top:.3rem}.user-row-actions{display:flex;gap:.4rem;white-space:nowrap}td.user-row-actions{display:table-cell}td.user-row-actions>*+*{margin-left:.25rem}.project-table td select,.project-table td input:not([type=checkbox]){padding:.35rem .45rem;font-size:.86rem;width:100%}.breadcrumb{margin:0 0 .75rem;font-size:.85rem}.breadcrumb a{color:var(--muted);text-decoration:none}.breadcrumb a:hover{color:var(--primary)}.project-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-wrap:wrap;padding-bottom:1rem;border-bottom:1px solid var(--border)}.project-title{display:flex;align-items:center;gap:.75rem;margin:0;flex-wrap:wrap;font-variant-numeric:lining-nums}.project-title .status-badge{margin-left:0}.project-header-actions{display:flex;align-items:center;gap:.9rem;padding-top:.5rem}.file-list{list-style:none;margin:0 0 1rem;padding:0;display:flex;flex-direction:column;gap:0;border-top:1px solid var(--border)}.file-list li{padding:.5rem .1rem;border-bottom:1px solid var(--border);background:transparent;font-size:.88rem;overflow-wrap:anywhere}.field-action-box{margin-top:1.5rem;background:var(--surface);border:1px solid var(--border);border-top:2px solid var(--bronze);border-radius:var(--radius-md);padding:1.15rem 1.35rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.field-action-title{font-family:var(--font-display);font-weight:560;font-size:1.2rem;margin-bottom:.35rem}.field-action-duration{display:flex;flex-direction:column;gap:.25rem;font-size:.82rem;color:var(--muted);max-width:220px}.field-action-duration input{padding:.45rem .55rem;font-size:.9rem}@media (max-width: 640px){body{font-size:15.5px}h1{font-size:1.65rem}.detail-grid{grid-template-columns:1fr;gap:1.5rem}.mobile-nav-toggle,button.mobile-nav-toggle{display:flex}.mobile-nav-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#14121080;z-index:40}.sidebar{position:fixed;z-index:50;left:0;top:0;height:100vh;height:100dvh;transform:translate(-100%);transition:transform .2s ease;width:264px!important}.mobile-nav-open .sidebar{transform:translate(0);box-shadow:0 0 60px rgba(var(--shadow-color),.3)}.sidebar-brand .brand-icon{visibility:hidden}.stat-cards-thirds{grid-template-columns:1fr}.donut-card{flex:1}.app-main{padding:4.25rem 1rem 2rem;max-width:100%}button:where(:not(.icon-button):not(.link-button):not(.calendar-half):not(.project-group-header):not(.mobile-nav-toggle):not(.logout-icon)){min-height:44px}.project-form>button,.auth-form button{width:100%;font-size:1rem}.field-action-box button:where(:not(.icon-button):not(.link-button):not(.calendar-half)){width:100%;font-size:1rem}.field-action-box .calendar-confirm-actions button{width:auto}.form-grid{grid-template-columns:1fr}.form-grid .span-2{grid-column:span 1}.project-form{padding:1.15rem}.project-table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}.calendar-cell{min-height:50px;padding:.25rem}.calendar-month-label{min-width:auto;font-size:1.05rem}.field-action-box{flex-direction:column;align-items:stretch;padding:1rem}.notification-panel{position:fixed;left:.75rem;right:.75rem;bottom:.75rem;width:auto;max-height:70vh}.section-title{margin-top:2rem}}@media print{body{background:#fff}.sidebar,.mobile-nav-toggle,.mobile-nav-backdrop{display:none!important}.app-main{padding:0;max-width:none}}
