:root{--bg:#f6f7f9;--surface:#fff;--surface-2:#f3f4f7;--surface-3:#e9ecf0;--border:#e3e6ea;--border-strong:#cbd1d9;--text:#111827;--text-2:#4b5563;--text-3:#6b7280;--text-4:#9ca3af;--inverse:#111827;--inverse-fg:#f9fafb;--overlay:#1118276b;--accent:#b5ed37;--accent-fg:#0b0d0a;--accent-soft:#f3fbdd;--accent-ink:#5b7f00;--accent-ring:#b5ed3773;--success:#15803d;--success-bg:#ecfdf3;--success-border:#bbf7d0;--warning:#b45309;--warning-bg:#fffbeb;--warning-border:#fde68a;--danger:#b91c1c;--danger-bg:#fef2f2;--danger-border:#fecaca;--info:#1d4ed8;--info-bg:#eff6ff;--info-border:#bfdbfe;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-6:24px;--s-8:32px;--s-12:48px;--r-s:6px;--r-m:10px;--r-l:14px;--r-full:999px;--font:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--fs-12:12px;--fs-13:13px;--fs-14:14px;--fs-16:16px;--fs-20:20px;--fs-24:24px;--lh:1.45;--shadow-card:0 1px 2px #1018280a, 0 1px 3px #1018280f;--shadow-pop:0 8px 24px -8px #1018282e, 0 2px 6px #1018280f;--shadow-panel:0 16px 48px -12px #10182847, 0 2px 8px #10182814;--ease:cubic-bezier(.2, .8, .2, 1);--dur-1:.15s;--dur-2:.2s;--nav-w:248px;--nav-w-min:64px;--topbar-h:56px;--row-h:40px;--control-h:36px;--control-h-s:30px;--content-max:1360px;--focus:0 0 0 3px var(--accent-ring)}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font:400 var(--fs-14) / var(--lh) var(--font);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"cv11", "ss01";margin:0}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0;margin:0;padding:0}button:disabled{cursor:not-allowed}a{color:var(--accent-ink);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4,p{margin:0}h1{font-size:var(--fs-20);letter-spacing:-.01em;font-weight:600;line-height:1.3}h2{font-size:var(--fs-16);font-weight:600;line-height:1.35}h3{font-size:var(--fs-14);font-weight:600}small{font-size:var(--fs-12)}code,.mono{font-family:var(--mono);font-size:12.5px}.num,.tabular{font-variant-numeric:tabular-nums}.muted{color:var(--text-3)}.text-2{color:var(--text-2)}.danger-text{color:var(--danger)}.success-text{color:var(--success)}.warning-text{color:var(--warning)}.fs-12{font-size:var(--fs-12)}.fs-13{font-size:var(--fs-13)}.fw-500{font-weight:500}.fw-600{font-weight:600}.nowrap{white-space:nowrap}.ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.right{text-align:right}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}:focus{outline:none}:focus-visible{box-shadow:var(--focus);outline:none}.stack{gap:var(--s-3);flex-direction:column;display:flex}.stack-2{gap:var(--s-2);flex-direction:column;display:flex}.stack-4{gap:var(--s-4);flex-direction:column;display:flex}.stack-6{gap:var(--s-6);flex-direction:column;display:flex}.row{align-items:center;gap:var(--s-2);display:flex}.row-3{align-items:center;gap:var(--s-3);display:flex}.row-wrap{align-items:center;gap:var(--s-2);flex-wrap:wrap;display:flex}.between{justify-content:space-between}.grow{flex:auto;min-width:0}.grid-2{gap:var(--s-4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.grid-3{gap:var(--s-4);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.grid-4{gap:var(--s-4);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}@media (width<=1100px){.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=760px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border-strong);background-clip:padding-box;border:3px solid #0000;border-radius:10px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.btn{justify-content:center;align-items:center;gap:var(--s-2);height:var(--control-h);border-radius:var(--r-s);font-size:var(--fs-14);white-space:nowrap;-webkit-user-select:none;user-select:none;border:1px solid #0000;padding:0 12px;font-weight:500;line-height:1;transition:transform .16s cubic-bezier(.23,1,.32,1),background-color .12s,border-color .12s,color .12s,box-shadow .12s;display:inline-flex;position:relative}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.55}.btn--primary{background:var(--accent);color:var(--accent-fg)}.btn--primary:hover:not(:disabled){filter:brightness(.96)}.btn--secondary{background:var(--surface);border-color:var(--border-strong);color:var(--text);box-shadow:var(--shadow-card)}.btn--secondary:hover:not(:disabled){background:var(--surface-2)}.btn--tertiary{color:var(--text-2);background:0 0}.btn--tertiary:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.btn--destructive{background:var(--danger);color:#fff}.btn--destructive:hover:not(:disabled){filter:brightness(.94)}.btn--destructive-soft{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-border)}.btn--destructive-soft:hover:not(:disabled){background:#fee2e2}.btn--s{height:var(--control-h-s);font-size:var(--fs-13);padding:0 10px}.btn--block{width:100%}.btn svg{flex:none;width:16px;height:16px}.btn[data-loading]{pointer-events:none;color:#0000!important}.btn[data-loading]>.spinner{color:var(--text);margin:auto;position:absolute;inset:0}.btn--primary[data-loading]>.spinner{color:var(--accent-fg)}.btn--destructive[data-loading]>.spinner{color:#fff}.iconbtn{border-radius:var(--r-s);width:32px;height:32px;color:var(--text-2);flex:none;justify-content:center;align-items:center;transition:background-color .12s,color .12s,transform .16s cubic-bezier(.23,1,.32,1);display:inline-flex}.iconbtn:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.iconbtn:active:not(:disabled){transform:scale(.96)}.iconbtn:disabled{opacity:.45}.iconbtn--s{width:28px;height:28px}.iconbtn svg{width:16px;height:16px}.iconbtn--danger:hover:not(:disabled){background:var(--danger-bg);color:var(--danger)}.spinner{border:2px solid;border-right-color:#0000;border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.input,.textarea,.select-trigger{width:100%;height:var(--control-h);border:1px solid var(--border-strong);border-radius:var(--r-s);background:var(--surface);color:var(--text);font-size:var(--fs-14);padding:0 10px;transition:border-color .12s,box-shadow .12s}.input::placeholder,.textarea::placeholder{color:var(--text-4)}.input:hover,.textarea:hover,.select-trigger:hover{border-color:#b4bcc6}.input:focus,.textarea:focus,.select-trigger:focus,.select-trigger[data-state=open]{border-color:var(--accent-ink);box-shadow:var(--focus);outline:none}.input:disabled,.textarea:disabled,.select-trigger:disabled{background:var(--surface-2);color:var(--text-3)}.input[aria-invalid=true],.textarea[aria-invalid=true]{border-color:var(--danger)}.input--s{height:var(--control-h-s);font-size:var(--fs-13);padding:0 8px}.input--mono{font-family:var(--mono);font-size:13px}.textarea{resize:vertical;height:auto;min-height:84px;padding:8px 10px;line-height:1.45}input[type=date].input,input[type=time].input{width:auto}input[type=number].input{width:120px}.input-wrap{width:100%;height:var(--control-h);border:1px solid var(--border-strong);border-radius:var(--r-s);background:var(--surface);align-items:center;transition:border-color .12s,box-shadow .12s;display:inline-flex}.input-wrap:hover{border-color:#b4bcc6}.input-wrap:focus-within{border-color:var(--accent-ink);box-shadow:var(--focus)}.input-wrap .input{background:0 0;border:0;flex:1;min-width:0;height:100%;box-shadow:none!important}.input-wrap>.affix{color:var(--text-3);font-size:var(--fs-13);white-space:nowrap;align-items:center;padding:0 10px;display:inline-flex}.input-wrap>.affix svg{width:16px;height:16px}.input-wrap>.affix--leading{padding-right:0}.input-wrap>.affix--trailing{padding-left:0}.input-wrap--s{height:var(--control-h-s)}.input-wrap--s .input{font-size:var(--fs-13)}.input-wrap[data-disabled]{background:var(--surface-2)}.field{flex-direction:column;display:flex}.field>label,.field-label{font-size:var(--fs-13);align-items:baseline;gap:6px;margin-bottom:6px;font-weight:500;display:flex}.field-label .optional{color:var(--text-3);font-weight:400}.field-hint{font-size:var(--fs-12);color:var(--text-3);margin-top:6px}.field-error{font-size:var(--fs-12);color:var(--danger);margin-top:6px}.form{gap:var(--s-4);flex-direction:column;max-width:560px;display:flex}.form-row{gap:var(--s-3);grid-template-columns:1fr 1fr;display:grid}@media (width<=760px){.form-row{grid-template-columns:1fr}}.select-trigger{text-align:left;cursor:pointer;justify-content:space-between;align-items:center;gap:8px;display:inline-flex}.select-trigger>span:first-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.select-trigger[data-placeholder]{color:var(--text-4)}.select-trigger .chev{color:var(--text-3);flex:none;width:16px;height:16px}.select-trigger--s{height:var(--control-h-s);font-size:var(--fs-13);padding:0 8px}.select-content,.menu,.popover,.listbox-pop{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-m);box-shadow:var(--shadow-pop);z-index:60;transform-origin:var(--radix-select-content-transform-origin,var(--radix-dropdown-menu-content-transform-origin,var(--radix-popover-content-transform-origin,top left)));padding:4px}.select-content{min-width:var(--radix-select-trigger-width);max-height:min(360px, var(--radix-select-content-available-height));overflow:hidden}.select-viewport{padding:0}.select-item,.menu-item,.listbox-item{border-radius:var(--r-s);height:32px;font-size:var(--fs-14);cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--text);outline:none;align-items:center;gap:8px;padding:0 8px 0 28px;display:flex;position:relative}.menu-item,.listbox-item{padding-left:8px}.select-item[data-highlighted],.menu-item[data-highlighted],.listbox-item[data-active]{background:var(--surface-2)}.select-item[data-disabled],.menu-item[data-disabled]{color:var(--text-4);pointer-events:none}.select-item .check{width:14px;height:14px;color:var(--accent-ink);position:absolute;left:8px}.select-item__hint{color:var(--text-3);font-size:var(--fs-12);margin-left:auto}.menu-item svg{width:16px;height:16px;color:var(--text-3)}.menu-item--danger,.menu-item--danger svg{color:var(--danger)}.menu-separator{background:var(--border);height:1px;margin:4px -4px}.menu-label{font-size:var(--fs-12);color:var(--text-3);padding:6px 8px 2px;font-weight:500}.menu{min-width:200px}.popover{padding:var(--s-4);min-width:240px}.listbox-pop{max-height:320px;padding:4px;overflow:auto}.listbox-item .sub{color:var(--text-3);font-size:var(--fs-12);white-space:nowrap;text-overflow:ellipsis;max-width:50%;margin-left:auto;overflow:hidden}.listbox-empty{color:var(--text-3);font-size:var(--fs-13);padding:10px 8px}.select-content[data-state=open],.menu[data-state=open],.popover[data-state=open],.tooltip[data-state=delayed-open],.tooltip[data-state=instant-open],.listbox-pop[data-state=open]{animation:pop-in var(--dur-1) cubic-bezier(.23, 1, .32, 1)}.select-content[data-state=closed],.menu[data-state=closed],.popover[data-state=closed],.tooltip[data-state=closed],.listbox-pop[data-state=closed]{animation:.1s ease-in forwards pop-out}@keyframes pop-in{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}@keyframes pop-out{to{opacity:0;transform:scale(.98)}}.switch{border-radius:var(--r-full);background:var(--border-strong);cursor:pointer;flex:none;width:36px;height:20px;transition:background-color .15s;position:relative}.switch[data-state=checked]{background:var(--accent-ink)}.switch:disabled{opacity:.5;cursor:not-allowed}.switch-thumb{will-change:transform;background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .15s cubic-bezier(.23,1,.32,1);display:block;transform:translate(2px);box-shadow:0 1px 2px #00000040}.switch[data-state=checked] .switch-thumb{transform:translate(18px)}.switch-row{cursor:pointer;align-items:center;gap:10px;display:inline-flex}.checkbox{border:1px solid var(--border-strong);background:var(--surface);cursor:pointer;border-radius:4px;flex:none;justify-content:center;align-items:center;width:16px;height:16px;transition:background-color .12s,border-color .12s;display:inline-flex}.checkbox:hover:not(:disabled){border-color:var(--text-3)}.checkbox[data-state=checked],.checkbox[data-state=indeterminate]{background:var(--accent-ink);border-color:var(--accent-ink);color:#fff}.checkbox:disabled{opacity:.5;cursor:not-allowed}.checkbox svg{width:12px;height:12px}.check-row{cursor:pointer;align-items:flex-start;gap:10px;display:inline-flex}.check-row .check-text{flex-direction:column;display:flex}.check-row .check-hint{font-size:var(--fs-12);color:var(--text-3)}.radio-group{flex-direction:column;gap:8px;display:flex}.radio-group--row{flex-flow:wrap;gap:16px}.radio-row{cursor:pointer;align-items:center;gap:8px;display:inline-flex}.radio{border:1px solid var(--border-strong);background:var(--surface);border-radius:50%;flex:none;justify-content:center;align-items:center;width:16px;height:16px;display:inline-flex}.radio[data-state=checked]{border-color:var(--accent-ink)}.radio-dot{background:var(--accent-ink);border-radius:50%;width:8px;height:8px}.seg{background:var(--surface-2);border-radius:8px;gap:2px;padding:2px;display:inline-flex}.seg-item{height:28px;font-size:var(--fs-13);color:var(--text-2);border-radius:6px;align-items:center;gap:6px;padding:0 10px;font-weight:500;transition:background-color .12s,color .12s,box-shadow .12s;display:inline-flex}.seg-item[data-active]{background:var(--surface);color:var(--text);box-shadow:var(--shadow-card)}.seg-item svg{width:14px;height:14px}.badge{border-radius:var(--r-full);height:22px;font-size:var(--fs-12);white-space:nowrap;background:var(--surface-2);color:var(--text-2);border:1px solid #0000;align-items:center;gap:6px;padding:0 8px;font-weight:500;display:inline-flex}.badge:before{content:"";opacity:.8;background:currentColor;border-radius:50%;flex:none;width:6px;height:6px}.badge--nodot:before{display:none}.badge--success{background:var(--success-bg);color:var(--success)}.badge--warning{background:var(--warning-bg);color:var(--warning)}.badge--danger{background:var(--danger-bg);color:var(--danger)}.badge--info{background:var(--info-bg);color:var(--info)}.badge--accent{background:var(--accent-soft);color:var(--accent-ink)}.badge--outline{border-color:var(--border);background:0 0}.tag{border-radius:var(--r-s);background:var(--surface-2);height:22px;color:var(--text-2);font-size:var(--fs-12);white-space:nowrap;align-items:center;gap:4px;padding:0 8px;display:inline-flex}.tag--accent{background:var(--accent-soft);color:var(--accent-ink)}.tag--danger{background:var(--danger-bg);color:var(--danger)}.tag--warning{background:var(--warning-bg);color:var(--warning)}.tag--info{background:var(--info-bg);color:var(--info)}.dot{background:var(--text-4);border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.dot--success{background:var(--success)}.dot--warning{background:#d97706}.dot--danger{background:var(--danger)}.dot--info{background:var(--info)}.kbd{border:1px solid var(--border);background:var(--surface);min-width:20px;height:20px;color:var(--text-3);font-size:11px;font-family:var(--font);border-radius:5px;justify-content:center;align-items:center;padding:0 5px;font-weight:500;display:inline-flex}.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-m);box-shadow:var(--shadow-card);overflow:auto}.table{border-collapse:separate;border-spacing:0;width:100%;font-size:var(--fs-14)}.table th{z-index:1;background:var(--surface-2);text-align:left;height:36px;font-size:var(--fs-12);color:var(--text-2);border-bottom:1px solid var(--border);white-space:nowrap;padding:0 12px;font-weight:600;position:sticky;top:0}.table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.table th.sortable:hover{color:var(--text)}.table th .th-inner{align-items:center;gap:4px;display:inline-flex}.table th .th-inner svg{width:14px;height:14px;color:var(--text-4)}.table th[aria-sort] .th-inner svg{color:var(--text)}.table th.right .th-inner{flex-direction:row-reverse}.table td{height:var(--row-h);border-bottom:1px solid var(--border);vertical-align:middle;padding:6px 12px}.table tr:last-child td{border-bottom:0}.table tbody tr[data-clickable]{cursor:pointer}.table tbody tr[data-clickable]:hover td{background:var(--surface-2)}.table tbody tr[data-active] td{background:var(--accent-soft)}.table tbody tr:focus-visible{outline:none}.table tbody tr:focus-visible td{background:var(--surface-2);box-shadow:inset 0 0 0 2px var(--accent-ring)}.table .row-link{color:inherit;text-decoration:none;display:block}.table .row-link:hover{text-decoration:none}.table td.right,.table th.right{text-align:right}.table td.center,.table th.center{text-align:center}.table td.num{font-variant-numeric:tabular-nums;text-align:right}.table td.actions{text-align:right;white-space:nowrap}.table .cell-sub{font-size:var(--fs-12);color:var(--text-3);margin-top:1px}.table .cell-main{font-weight:500}.table td.check,.table th.check{width:40px;padding:0 0 0 12px}.table--dense td{height:34px;padding:4px 10px}.table-foot{justify-content:space-between;align-items:center;gap:var(--s-3);border-top:1px solid var(--border);font-size:var(--fs-13);color:var(--text-3);background:var(--surface);padding:8px 12px;display:flex}.table-empty{padding:var(--s-8) var(--s-4)}.bulkbar{align-items:center;gap:var(--s-3);background:var(--accent-soft);border:1px solid var(--border);border-radius:var(--r-m) var(--r-m) 0 0;font-size:var(--fs-13);border-bottom:0;padding:8px 12px;display:flex}.bulkbar+.table-wrap{border-top-left-radius:0;border-top-right-radius:0}.pagination{align-items:center;gap:4px;display:flex}.pagination .page-info{font-size:var(--fs-13);color:var(--text-3);font-variant-numeric:tabular-nums;margin-right:6px}.tabs{border-bottom:1px solid var(--border);gap:2px;display:flex;overflow-x:auto}.tab{height:38px;font-size:var(--fs-14);color:var(--text-3);white-space:nowrap;border-bottom:2px solid #0000;border-radius:6px 6px 0 0;align-items:center;gap:6px;margin-bottom:-1px;padding:0 12px;font-weight:500;transition:color .12s;display:inline-flex}.tab:hover{color:var(--text)}.tab[data-state=active]{color:var(--text);border-bottom-color:var(--text)}.tab .count{font-size:var(--fs-12);color:var(--text-3);background:var(--surface-2);border-radius:var(--r-full);font-variant-numeric:tabular-nums;align-items:center;height:18px;padding:0 6px;display:inline-flex}.tab[data-state=active] .count{background:var(--accent-soft);color:var(--accent-ink)}.tabs--pill{border-bottom:0;gap:4px}.tabs--pill .tab{border-radius:var(--r-s);border-bottom:0;height:32px;margin:0}.tabs--pill .tab[data-state=active]{background:var(--surface-2)}.overlay{background:var(--overlay);z-index:50;position:fixed;inset:0}.overlay[data-state=open]{animation:fade-in var(--dur-2) ease-out}.overlay[data-state=closed]{animation:fade-out var(--dur-1) ease-in forwards}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{to{opacity:0}}.drawer{background:var(--surface);width:min(640px,100vw);box-shadow:var(--shadow-panel);z-index:51;outline:none;flex-direction:column;display:flex;position:fixed;top:0;bottom:0;right:0}.drawer--l{width:min(760px,100vw)}.drawer[data-state=open]{animation:drawer-in var(--dur-2) cubic-bezier(.32, .72, 0, 1)}.drawer[data-state=closed]{animation:drawer-out var(--dur-1) ease-in forwards}@keyframes drawer-in{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}@keyframes drawer-out{to{opacity:0;transform:translate(16px)}}.drawer-head{align-items:flex-start;gap:var(--s-3);border-bottom:1px solid var(--border);padding:16px 20px;display:flex}.drawer-head .drawer-title{font-size:var(--fs-16);flex-wrap:wrap;align-items:center;gap:8px;font-weight:600;display:flex}.drawer-head .drawer-sub{font-size:var(--fs-13);color:var(--text-3);margin-top:2px}.drawer-head .drawer-actions{flex:none;align-items:center;gap:8px;margin-left:auto;display:flex}.drawer-body{gap:var(--s-6);flex-direction:column;flex:1;padding:20px;display:flex;overflow:auto}.drawer-body>.tabs{margin:-8px 0 0}.drawer-foot{border-top:1px solid var(--border);background:var(--surface);justify-content:flex-end;gap:8px;padding:12px 20px;display:flex}.modal{background:var(--surface);border-radius:var(--r-l);width:min(440px,100vw - 32px);max-height:calc(100vh - 48px);box-shadow:var(--shadow-panel);z-index:51;outline:none;flex-direction:column;display:flex;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.modal--l{width:min(600px,100vw - 32px)}.modal[data-state=open]{animation:modal-in var(--dur-2) cubic-bezier(.23, 1, .32, 1)}.modal[data-state=closed]{animation:modal-out var(--dur-1) ease-in forwards}@keyframes modal-in{0%{opacity:0;transform:translate(-50%,-50%)scale(.97)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}@keyframes modal-out{to{opacity:0;transform:translate(-50%,-50%)scale(.98)}}.modal-head{align-items:flex-start;gap:12px;padding:20px 24px 0;display:flex}.modal-head .modal-title{font-size:var(--fs-16);font-weight:600}.modal-head .modal-desc{font-size:var(--fs-13);color:var(--text-2);margin-top:6px;line-height:1.5}.modal-head .iconbtn{margin-top:-6px;margin-left:auto;margin-right:-8px}.modal-body{gap:var(--s-4);flex-direction:column;padding:16px 24px;display:flex;overflow:auto}.modal-foot{justify-content:flex-end;gap:8px;padding:0 24px 20px;display:flex}.modal-icon{background:var(--danger-bg);width:40px;height:40px;color:var(--danger);border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex}.modal-icon svg{width:20px;height:20px}.modal-icon--info{background:var(--info-bg);color:var(--info)}.modal-icon--warning{background:var(--warning-bg);color:var(--warning)}.toast-viewport{z-index:70;outline:none;flex-direction:column;gap:8px;width:360px;max-width:calc(100vw - 32px);margin:0;padding:0;list-style:none;display:flex;position:fixed;bottom:24px;right:24px}.toast{background:var(--inverse);color:var(--inverse-fg);border-radius:var(--r-m);box-shadow:var(--shadow-panel);font-size:var(--fs-14);align-items:flex-start;gap:10px;padding:12px 14px;display:flex}.toast svg{flex:none;width:18px;height:18px;margin-top:1px}.toast--success svg{color:#4ade80}.toast--error svg{color:#f87171}.toast--info svg{color:#93c5fd}.toast-title{font-weight:500}.toast-desc{font-size:var(--fs-13);color:#cbd5e1;margin-top:2px}.toast-close{color:#94a3b8;margin-left:auto}.toast-close:hover{color:#fff}.toast[data-state=open]{animation:toast-in var(--dur-2) cubic-bezier(.23, 1, .32, 1)}.toast[data-state=closed]{animation:toast-out var(--dur-1) ease-in forwards}.toast[data-swipe=move]{transform:translateX(var(--radix-toast-swipe-move-x))}.toast[data-swipe=cancel]{transition:transform .15s ease-out;transform:translate(0)}.toast[data-swipe=end]{animation:.1s ease-out forwards toast-swipe-out}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes toast-out{to{opacity:0;transform:translateY(8px)}}@keyframes toast-swipe-out{0%{transform:translateX(var(--radix-toast-swipe-end-x))}to{transform:translate(calc(100% + 24px))}}.tooltip{background:var(--inverse);color:var(--inverse-fg);font-size:var(--fs-12);border-radius:var(--r-s);box-shadow:var(--shadow-pop);z-index:80;max-width:280px;transform-origin:var(--radix-tooltip-content-transform-origin);padding:6px 8px;line-height:1.4}.skeleton{background:var(--surface-3);border-radius:var(--r-s);animation:1.4s ease-in-out infinite pulse;display:block}@keyframes pulse{0%,to{opacity:1}50%{opacity:.45}}.empty{text-align:center;padding:var(--s-12) var(--s-6);flex-direction:column;align-items:center;gap:6px;display:flex}.empty .empty-icon{background:var(--surface-2);width:44px;height:44px;color:var(--text-3);border-radius:50%;justify-content:center;align-items:center;margin-bottom:6px;display:inline-flex}.empty .empty-icon svg{width:20px;height:20px}.empty .empty-title{font-weight:600;font-size:var(--fs-14)}.empty .empty-desc{color:var(--text-3);font-size:var(--fs-13);max-width:440px;line-height:1.5}.empty .empty-action{margin-top:10px}.empty--compact{padding:var(--s-6) var(--s-4)}.banner{border-radius:var(--r-m);border:1px solid var(--border);background:var(--surface);align-items:flex-start;gap:12px;padding:12px 14px;display:flex}.banner svg{flex:none;width:18px;height:18px;margin-top:1px}.banner--info{background:var(--info-bg);border-color:var(--info-border)}.banner--info svg{color:var(--info)}.banner--warning{background:var(--warning-bg);border-color:var(--warning-border)}.banner--warning svg{color:var(--warning)}.banner--danger{background:var(--danger-bg);border-color:var(--danger-border)}.banner--danger svg{color:var(--danger)}.banner--success{background:var(--success-bg);border-color:var(--success-border)}.banner--success svg{color:var(--success)}.banner .banner-title{font-weight:600;font-size:var(--fs-14)}.banner .banner-desc{font-size:var(--fs-13);color:var(--text-2);margin-top:2px;line-height:1.5}.banner .banner-actions{flex:none;align-items:center;gap:6px;margin-left:auto;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-m);box-shadow:var(--shadow-card);padding:var(--s-4)}.card--flush{padding:0;overflow:hidden}.card--soft{background:var(--surface-2);box-shadow:none}.section{gap:var(--s-3);flex-direction:column;display:flex}.section-head{align-items:flex-start;gap:var(--s-3);display:flex}.section-head .section-title{font-size:var(--fs-14);font-weight:600}.section-head .section-hint{font-size:var(--fs-13);color:var(--text-3);margin-top:2px;line-height:1.5}.section-head .section-actions{flex:none;gap:8px;margin-left:auto;display:flex}.card>.section-head{margin-bottom:4px}.card .section-body{flex-direction:column;display:flex}.card--settings{padding:4px 16px}.dl{font-size:var(--fs-13);grid-template-columns:minmax(140px,36%) 1fr;gap:8px 16px;margin:0;display:grid}.dl dt{color:var(--text-3)}.dl dd{overflow-wrap:anywhere;min-width:0;margin:0;font-weight:500}.dl--right dd{text-align:right}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-m);box-shadow:var(--shadow-card);flex-direction:column;gap:4px;min-width:0;padding:14px 16px;display:flex}.kpi .kpi-value{font-size:var(--fs-24);font-variant-numeric:tabular-nums;letter-spacing:-.01em;align-items:baseline;gap:6px;font-weight:600;line-height:1.2;display:flex}.kpi .kpi-value small{font-size:var(--fs-14);color:var(--text-3);font-weight:500}.kpi .kpi-label{font-size:var(--fs-13);color:var(--text-3)}.kpi .kpi-delta{font-size:var(--fs-12);align-items:center;gap:4px;display:inline-flex}.kpi .kpi-delta svg{width:12px;height:12px}.kpi--warning .kpi-value{color:var(--warning)}.kpi--danger .kpi-value{color:var(--danger)}.avatar{background:var(--accent-soft);color:var(--accent-ink);letter-spacing:.02em;border-radius:50%;flex:none;justify-content:center;align-items:center;width:32px;height:32px;font-size:12px;font-weight:600;display:inline-flex}.avatar--s{width:26px;height:26px;font-size:11px}.avatar--l{width:40px;height:40px;font-size:14px}.filterbar{align-items:center;gap:var(--s-2);flex-wrap:wrap;display:flex}.filterbar .filterbar-right{align-items:center;gap:var(--s-2);margin-left:auto;display:flex}.filterbar .counter{font-size:var(--fs-13);color:var(--text-3);white-space:nowrap}.search{width:280px;max-width:100%}.chip{border-radius:var(--r-full);border:1px solid var(--border-strong);background:var(--surface);height:30px;font-size:var(--fs-13);color:var(--text-2);white-space:nowrap;align-items:center;gap:6px;padding:0 10px;font-weight:500;transition:background-color .12s,border-color .12s,color .12s;display:inline-flex}.chip:hover{background:var(--surface-2)}.chip[data-active]{background:var(--accent-soft);border-color:var(--accent-ink);color:var(--accent-ink)}.chip svg{width:14px;height:14px}.chip .chip-count{font-variant-numeric:tabular-nums;opacity:.8}.chip-select{padding-right:8px}.chip-select .chip-value{color:var(--text);font-weight:500}.chip-select[data-active] .chip-value{color:inherit}.page{gap:var(--s-4);flex-direction:column;display:flex}.page-header{align-items:flex-start;gap:var(--s-4);display:flex}.page-header .page-title{font-size:var(--fs-20);letter-spacing:-.01em;align-items:center;gap:10px;font-weight:600;display:flex}.page-header .page-desc{font-size:var(--fs-13);color:var(--text-3);max-width:760px;margin-top:2px;line-height:1.5}.page-header .page-actions{flex-wrap:wrap;flex:none;justify-content:flex-end;align-items:center;gap:8px;margin-left:auto;display:flex}.savebar{z-index:20;margin:var(--s-4) calc(-1 * var(--s-8)) calc(-1 * var(--s-8));padding:12px var(--s-8);background:var(--surface);border-top:1px solid var(--border);align-items:center;gap:var(--s-3);animation:savebar-in var(--dur-2) cubic-bezier(.23, 1, .32, 1);display:flex;position:sticky;bottom:0;box-shadow:0 -8px 24px -12px #1018282e}.savebar .savebar-text{font-size:var(--fs-13);color:var(--text-2);align-items:center;gap:8px;display:flex}.savebar .savebar-actions{gap:8px;margin-left:auto;display:flex}@keyframes savebar-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.setting-row{border-bottom:1px solid var(--border);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px 24px;padding:12px 0;display:grid}.setting-row:last-child{border-bottom:0}.setting-row .setting-title{font-weight:500;font-size:var(--fs-14);flex-wrap:wrap;align-items:center;gap:8px;display:flex}.setting-row .setting-hint{font-size:var(--fs-13);color:var(--text-3);margin-top:2px;line-height:1.5}.setting-row .setting-control{justify-content:flex-end;align-items:center;gap:8px;min-width:0;display:flex}.setting-row .setting-control .input,.setting-row .setting-control .select-trigger{width:220px}.setting-row .setting-control input[type=number].input{width:110px}.setting-row .setting-control .input-wrap{width:150px}.setting-row .setting-error{color:var(--danger);font-size:var(--fs-12);grid-column:1/-1}.setting-row--child{margin-left:28px}.setting-row--child:before{display:none}.setting-row .setting-meta{font-size:var(--fs-12);color:var(--text-3);align-items:center;gap:4px;display:inline-flex}.setting-row .setting-meta svg{width:12px;height:12px}@media (width<=760px){.setting-row{grid-template-columns:1fr}.setting-row .setting-control{justify-content:flex-start}}.list{flex-direction:column;display:flex}.list-item{align-items:center;gap:var(--s-3);border-bottom:1px solid var(--border);min-width:0;padding:10px 0;display:flex}.list-item:last-child{border-bottom:0}.list-item .list-main{flex:1;min-width:0}.list-item .list-title{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.list-item .list-sub{font-size:var(--fs-12);color:var(--text-3)}.list-item[data-clickable]{cursor:pointer;border-radius:var(--r-s);margin:0 -8px;padding:10px 8px}.list-item[data-clickable]:hover{background:var(--surface-2)}.swatch{cursor:pointer;border:2px solid #0000;border-radius:8px;width:26px;height:26px;box-shadow:inset 0 0 0 1px #0000001a}.swatch[data-active]{border-color:var(--text)}.color-input{border:1px solid var(--border-strong);border-radius:var(--r-s);background:var(--surface);cursor:pointer;width:36px;height:36px;padding:2px}.token-box{font-family:var(--mono);word-break:break-all;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-s);-webkit-user-select:all;user-select:all;padding:10px 12px;font-size:13px}.shell{min-height:100%;display:flex}.nav{width:var(--nav-w);background:var(--surface);border-right:1px solid var(--border);z-index:40;transition:width var(--dur-2) var(--ease), transform var(--dur-2) var(--ease);flex-direction:column;display:flex;position:fixed;top:0;bottom:0;left:0}.nav-logo{height:var(--topbar-h);border-bottom:1px solid var(--border);flex:none;align-items:center;gap:10px;padding:0 16px;display:flex}.nav-logo img{width:auto;height:24px;display:block}.nav-logo .nav-logo-text{font-size:var(--fs-12);color:var(--text-3);letter-spacing:.06em;text-transform:uppercase;font-weight:600}.nav-logo .iconbtn{margin-left:auto}.nav-scroll{flex-direction:column;flex:1;gap:2px;min-height:0;padding:10px 10px 16px;display:flex;overflow:hidden auto}.nav-group{color:var(--text-4);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;padding:14px 10px 4px;font-size:11px;font-weight:600}.nav-item{border-radius:var(--r-s);height:34px;color:var(--text-2);font-size:var(--fs-14);white-space:nowrap;align-items:center;gap:10px;padding:0 10px;font-weight:500;text-decoration:none;transition:background-color .12s,color .12s;display:flex;position:relative}.nav-item:hover{background:var(--surface-2);color:var(--text);text-decoration:none}.nav-item[data-active]{background:var(--accent-soft);color:var(--text)}.nav-item[data-active] svg{color:var(--accent-ink)}.nav-item svg{width:18px;height:18px;color:var(--text-3);flex:none}.nav-item .nav-count{font-size:var(--fs-12);background:var(--surface-2);color:var(--text-2);border-radius:var(--r-full);font-variant-numeric:tabular-nums;align-items:center;height:18px;margin-left:auto;padding:0 6px;display:inline-flex}.nav-item[data-active] .nav-count{background:var(--surface)}.nav-foot{border-top:1px solid var(--border);flex-direction:column;flex:none;gap:6px;padding:10px;display:flex}.nav-sync{border-radius:var(--r-s);font-size:var(--fs-12);color:var(--text-2);align-items:center;gap:8px;min-width:0;padding:6px 8px;display:flex}.nav-sync:hover{background:var(--surface-2)}.nav-sync .nav-sync-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.nav-user{border-radius:var(--r-s);text-align:left;align-items:center;gap:10px;width:100%;min-width:0;padding:6px 8px;display:flex}.nav-user:hover{background:var(--surface-2)}.nav-user .nav-user-name{font-size:var(--fs-13);text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.nav-user .nav-user-role{font-size:var(--fs-12);color:var(--text-3);white-space:nowrap}.nav-user svg{color:var(--text-3);flex:none;width:16px;height:16px;margin-left:auto}.nav-version{color:var(--text-4);white-space:nowrap;padding:0 8px;font-size:11px}.shell[data-nav=min] .nav{width:var(--nav-w-min)}.shell[data-nav=min] .nav-logo{justify-content:center;padding:0}.shell[data-nav=min] .nav-logo img,.shell[data-nav=min] .nav-logo .nav-logo-text{display:none}.shell[data-nav=min] .nav-logo .iconbtn{margin:0}.shell[data-nav=min] .nav-group{background:var(--border);color:#0000;height:1px;margin:10px 8px 6px;padding:0;overflow:hidden}.shell[data-nav=min] .nav-item{justify-content:center;padding:0}.shell[data-nav=min] .nav-item span,.shell[data-nav=min] .nav-item .nav-count{display:none}.shell[data-nav=min] .nav-scroll{padding:10px 8px}.shell[data-nav=min] .nav-foot{align-items:center;padding:8px}.shell[data-nav=min] .nav-sync .nav-sync-text,.shell[data-nav=min] .nav-user>div,.shell[data-nav=min] .nav-user>svg,.shell[data-nav=min] .nav-version{display:none}.shell[data-nav=min] .nav-user{justify-content:center;padding:6px 0}.shell[data-nav=min] .nav-sync{justify-content:center;padding:8px 0}.main{min-width:0;margin-left:var(--nav-w);min-height:100vh;transition:margin-left var(--dur-2) var(--ease);flex-direction:column;flex:1;display:flex}.shell[data-nav=min] .main{margin-left:var(--nav-w-min)}.topbar{z-index:30;height:var(--topbar-h);-webkit-backdrop-filter:saturate(1.4)blur(8px);border-bottom:1px solid var(--border);align-items:center;gap:var(--s-3);padding:0 var(--s-8);background:#f6f7f9d9;display:flex;position:sticky;top:0}.topbar .topbar-menu{display:none}.topbar-search{border:1px solid var(--border-strong);border-radius:var(--r-s);background:var(--surface);width:360px;max-width:100%;height:36px;color:var(--text-3);font-size:var(--fs-14);text-align:left;align-items:center;gap:10px;padding:0 10px;transition:border-color .12s,box-shadow .12s;display:inline-flex}.topbar-search:hover{border-color:#b4bcc6}.topbar-search svg{flex:none;width:16px;height:16px}.topbar-search .kbd{margin-left:auto}.topbar-right{align-items:center;gap:6px;margin-left:auto;display:flex}.topbar .notif-badge{border-radius:var(--r-full);background:var(--danger);color:#fff;justify-content:center;align-items:center;min-width:16px;height:16px;padding:0 4px;font-size:10px;font-weight:600;display:inline-flex;position:absolute;top:4px;right:4px}.content{padding:var(--s-6) var(--s-8) var(--s-12);width:100%;max-width:var(--content-max);flex:1;margin:0 auto}.nav-backdrop{display:none}@media (width<=1023px){.nav{box-shadow:none;transform:translate(-100%);width:var(--nav-w)!important}.shell[data-nav=open] .nav{box-shadow:var(--shadow-panel);transform:translate(0)}.shell[data-nav=open] .nav-backdrop{background:var(--overlay);z-index:39;display:block;position:fixed;inset:0}.shell[data-nav=min] .nav-logo img,.shell[data-nav=min] .nav-logo .nav-logo-text,.shell[data-nav=min] .nav-item span,.shell[data-nav=min] .nav-item .nav-count,.shell[data-nav=min] .nav-sync .nav-sync-text,.shell[data-nav=min] .nav-user>div,.shell[data-nav=min] .nav-user>svg,.shell[data-nav=min] .nav-version{display:initial}.shell[data-nav=min] .nav-item{justify-content:flex-start;padding:0 10px}.shell[data-nav=min] .nav-group{height:auto;color:var(--text-4);background:0 0;margin:0;padding:14px 10px 4px}.shell[data-nav=min] .nav-logo{justify-content:flex-start;padding:0 16px}.shell[data-nav=min] .nav-logo .iconbtn{margin-left:auto}.main,.shell[data-nav=min] .main{margin-left:0}.topbar{padding:0 var(--s-4)}.topbar .topbar-menu{display:inline-flex}.topbar-search{width:240px}.content{padding:var(--s-4) var(--s-4) var(--s-8)}.savebar{margin-left:calc(-1 * var(--s-4));margin-right:calc(-1 * var(--s-4));margin-bottom:calc(-1 * var(--s-8));padding-left:var(--s-4);padding-right:var(--s-4)}}@media (width<=640px){.topbar-search{justify-content:center;width:40px;padding:0}.topbar-search span,.topbar-search .kbd{display:none}.page-header{flex-direction:column}.page-header .page-actions{margin-left:0}}.login{min-height:100vh;padding:var(--s-6);background:var(--bg);place-items:center;display:grid}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-l);width:400px;max-width:100%;box-shadow:var(--shadow-card);gap:var(--s-4);flex-direction:column;padding:32px;display:flex}.login-card img{align-self:flex-start;width:auto;height:36px}.login-card h1{font-size:var(--fs-20)}.login-card .login-sub{font-size:var(--fs-13);color:var(--text-3);margin-top:-8px}.login-foot{font-size:var(--fs-12);color:var(--text-4);text-align:center}.palette{background:var(--surface);border-radius:var(--r-l);width:min(620px,100vw - 32px);box-shadow:var(--shadow-panel);z-index:61;outline:none;flex-direction:column;max-height:70vh;display:flex;position:fixed;top:12vh;left:50%;overflow:hidden;transform:translate(-50%)}.palette-input{border-bottom:1px solid var(--border);align-items:center;gap:10px;height:52px;padding:0 16px;display:flex}.palette-input svg{width:18px;height:18px;color:var(--text-3);flex:none}.palette-input input{font-size:var(--fs-16);background:0 0;border:0;outline:none;flex:1;min-width:0;height:100%}.palette-list{padding:8px;overflow:auto}.palette-group{font-size:var(--fs-12);color:var(--text-3);padding:8px 8px 4px;font-weight:500}.palette-item{border-radius:var(--r-s);cursor:pointer;height:40px;font-size:var(--fs-14);align-items:center;gap:10px;padding:0 10px;display:flex}.palette-item[data-active]{background:var(--surface-2)}.palette-item svg{width:16px;height:16px;color:var(--text-3);flex:none}.palette-item .palette-sub{color:var(--text-3);font-size:var(--fs-12);white-space:nowrap;text-overflow:ellipsis;max-width:45%;margin-left:auto;overflow:hidden}.palette-foot{border-top:1px solid var(--border);font-size:var(--fs-12);color:var(--text-3);gap:14px;padding:8px 16px;display:flex}.palette-foot span{align-items:center;gap:6px;display:inline-flex}.overview-cols{gap:var(--s-4);grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;display:grid}@media (width<=1100px){.overview-cols{grid-template-columns:1fr}}.attention-item{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:10px 0;display:flex}.attention-item:last-child{border-bottom:0}.attention-item .attention-icon{background:var(--warning-bg);width:32px;height:32px;color:var(--warning);border-radius:8px;flex:none;justify-content:center;align-items:center;display:inline-flex}.attention-item .attention-icon svg{width:16px;height:16px}.attention-item .attention-icon--danger{background:var(--danger-bg);color:var(--danger)}.attention-item .attention-icon--info{background:var(--info-bg);color:var(--info)}.events{flex-direction:column;display:flex}.event{grid-template-columns:56px 28px minmax(0,1fr);gap:0 12px;padding:8px 0;display:grid;position:relative}.event .event-time{font-size:var(--fs-13);color:var(--text-3);font-variant-numeric:tabular-nums;padding-top:4px}.event .event-icon{background:var(--surface-2);width:28px;height:28px;color:var(--text-2);z-index:1;border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.event .event-icon svg{width:14px;height:14px}.event .event-icon--day{background:var(--info-bg);color:var(--info)}.event .event-icon--visit{background:var(--accent-soft);color:var(--accent-ink)}.event .event-icon--doc{background:var(--success-bg);color:var(--success)}.event .event-icon--office{background:var(--surface-3);color:var(--text-2)}.event .event-icon--warning{background:var(--warning-bg);color:var(--warning)}.event .event-body{min-width:0;padding-top:4px}.event .event-title{font-weight:500}.event .event-sub{font-size:var(--fs-13);color:var(--text-3)}.event:before{content:"";background:var(--border);width:2px;position:absolute;top:36px;bottom:-8px;left:81px}.event:last-child:before{display:none}.event-day{font-size:var(--fs-12);color:var(--text-3);text-transform:uppercase;letter-spacing:.04em;padding:12px 0 4px;font-weight:600}.week{gap:var(--s-2);grid-template-columns:repeat(7,minmax(0,1fr));align-items:start;display:grid}.day-col{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-m);flex-direction:column;min-width:0;min-height:220px;display:flex}.day-col[data-today]{border-color:var(--accent-ink)}.day-col .day-head{border-bottom:1px solid var(--border);font-size:var(--fs-13);align-items:center;gap:6px;padding:8px 10px;display:flex}.day-col .day-head .day-name{text-transform:capitalize;font-weight:600}.day-col .day-head .day-date{color:var(--text-3)}.day-col .day-head .day-count{color:var(--text-3);font-size:var(--fs-12);font-variant-numeric:tabular-nums;margin-left:auto}.day-col .day-body{flex-direction:column;flex:1;gap:6px;padding:8px;display:flex}.day-col .day-add{margin:0 8px 8px}.visit-card{border:1px solid var(--border);border-radius:var(--r-s);font-size:var(--fs-13);background:var(--surface);flex-direction:column;gap:2px;min-width:0;padding:6px 8px;display:flex;position:relative}.visit-card[data-status=done]{border-color:var(--success-border);background:var(--success-bg)}.visit-card[data-status=active]{border-color:var(--accent-ink);background:var(--accent-soft)}.visit-card[data-status=missed]{border-color:var(--danger-border);background:var(--danger-bg)}.visit-card .visit-top{align-items:center;gap:6px;display:flex}.visit-card .visit-ord{color:var(--text-3);font-variant-numeric:tabular-nums;font-size:11px}.visit-card .visit-time{font-variant-numeric:tabular-nums;font-weight:600}.visit-card .visit-name{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.visit-card .visit-tasks{color:var(--text-3);font-size:var(--fs-12);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.visit-card .visit-menu{opacity:0;transition:opacity .12s;position:absolute;top:4px;right:4px}.visit-card:hover .visit-menu,.visit-card:focus-within .visit-menu{opacity:1}@media (width<=1100px){.week{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (width<=760px){.week{grid-template-columns:repeat(2,minmax(0,1fr))}}.wd{gap:3px;display:inline-flex}.wd button{border:1px solid var(--border-strong);background:var(--surface);width:28px;height:28px;color:var(--text-3);border-radius:6px;font-size:12px;font-weight:600}.wd button[data-on]{background:var(--accent-soft);color:var(--accent-ink);border-color:var(--accent-ink)}.photos-grid{gap:var(--s-3);grid-template-columns:repeat(auto-fill,minmax(168px,1fr));display:grid}.photo-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-m);box-shadow:var(--shadow-card);flex-direction:column;display:flex;position:relative;overflow:hidden}.photo-card[data-selected]{outline:2px solid var(--accent-ink);outline-offset:-2px}.photo-card .photo-img,.photo-card .photo-empty{aspect-ratio:1;object-fit:cover;cursor:pointer;background:var(--surface-2);width:100%;display:block}.photo-card .photo-empty{color:var(--text-4);font-size:var(--fs-12);place-items:center;display:grid}.photo-card .photo-cap{font-size:var(--fs-12);flex-direction:column;gap:2px;min-width:0;padding:8px 10px;display:flex}.photo-card .photo-cap b{font-weight:500;font-size:var(--fs-13);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.photo-card .photo-check{z-index:2;background:var(--surface);box-shadow:var(--shadow-card);border-radius:6px;padding:4px;display:flex;position:absolute;top:8px;left:8px}.viewer-img{object-fit:contain;border-radius:var(--r-s);background:var(--surface-2);max-width:100%;max-height:64vh;margin:0 auto;display:block}.viewer-empty{border-radius:var(--r-s);background:var(--surface-2);width:100%;height:240px;color:var(--text-4);place-items:center;display:grid}.settings-layout{gap:var(--s-6);grid-template-columns:220px minmax(0,1fr);align-items:start;display:grid}.settings-nav{top:calc(var(--topbar-h) + var(--s-4));flex-direction:column;gap:2px;display:flex;position:sticky}.settings-nav a{border-radius:var(--r-s);height:34px;color:var(--text-2);font-size:var(--fs-14);align-items:center;gap:8px;padding:0 10px;font-weight:500;text-decoration:none;display:flex}.settings-nav a:hover{background:var(--surface-2);color:var(--text);text-decoration:none}.settings-nav a[data-active]{background:var(--accent-soft);color:var(--text)}.settings-nav a svg{width:16px;height:16px;color:var(--text-3)}.settings-nav a[data-active] svg{color:var(--accent-ink)}.settings-body{gap:var(--s-6);flex-direction:column;max-width:820px;display:flex}@media (width<=900px){.settings-layout{grid-template-columns:1fr}.settings-nav{flex-flow:wrap;position:static}}.preview-phone{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-l);padding:14px}.preview-phone .preview-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px;font-weight:600;display:flex}.inline-list{flex-wrap:wrap;gap:4px;display:flex}.subtle-link{color:var(--text-3);font-size:var(--fs-12)}.steps-grid td.num{color:var(--text-2)}
